{"version":3,"file":"bundle.aac074f45b0b7bf8ea01.js","mappings":"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CA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,WA+BSC,GAAc,EACvBxyJ,KACA24G,SACAznH,OACAuhK,OACAp+B,QACAq+B,WACAC,gBACAC,WACAC,UACAC,gBACAC,cACA7yJ,OACAuhB,OACAuxI,cACAC,aACA/xJ,UACA/B,WACA+zJ,UACAC,cACAC,cAEA,MAAMC,GAAa,IAAAC,QAAO,GACpBj8C,GAAQ,EAAAk8C,GAAA,KACRC,GAAW,IAAAF,QAAyB,OAEnC9vJ,EAAOD,IAAY,IAAAkwJ,UAA4B,CAClD7lJ,KAAM,KACN8lJ,iBAAkB,IAAKvtJ,gBAAgBnG,EAAI,OAGzC2zJ,EAAkB,KACpB58I,aAAas8I,EAAWO,SACxBP,EAAWO,QAAU,CAAC,EAGpBC,EAAmBC,IAErBT,EAAWO,QAAUnoK,OAAOurB,YAAW,KAEnC28I,IACAR,GAAa,GACdJ,EAAY,EAGbgB,EAAqBD,IAEnBT,EAAWO,QAAU,IACrBD,IACIzyJ,GACAA,IAER,EAGJ,aAAgB,KACZqC,GAAUywJ,IAAS,sIACZA,KADY,CAEfN,iBAAkB,IAAKvtJ,gBAAgBkuH,GAASo+B,EAAO,GAAKzyJ,EAAI,yBAClE,GAAC,GACJ,CAACA,EAAIq0H,IA6BR,IAAI4/B,EAAc/iK,EAAOA,EAAKqD,OAAS,GACnC0/J,EAAY5nK,OAAS,GAAwB,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","sources":["webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Js/array.js","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Js/date.js","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Js/fetch.js","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Js/number.js","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Js/string.js","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/components/framework/Dropdown/CheckboxDropdown/CheckboxDropdown.tsx","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/components/framework/Dropdown/TreeCheckboxDropdown/TreeCheckboxDropdownItems/TreeCheckboxDropdownItems.tsx","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/components/framework/Dropdown/TreeCheckboxDropdown/TreeCheckboxDropdownValueWithComment/TreeCheckboxDropdownLineWithComment.tsx","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/components/framework/Dropdown/TreeCheckboxDropdown/TreeCheckboxDropdown.tsx","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/framework/base.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/editItem.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/fileAttachment.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/idTitle.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/dictionary.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/idTitleNode.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/company/companyMenuItem.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/consts.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/enums.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/task/taskDataRowCol.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/task/taskTypeCol.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/translations.en-US.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/translations.sv-FI.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/translations.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/shared/styles/globalStyles.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/user/modifyUser.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/instantMessage/instantMessageListItem.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/instantMessage/instantMessageChannelInvitation.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/instantMessage/instantMessageChannelItem.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/signalrNotification.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/signalR/signalRConnectionManager.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/lockedRecord.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/indexedDb/indexedDbManager.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/session/session.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/services/tokenService.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/apiSuccess.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/common/webConsts.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/front/modifiedRecordListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/front/modifiedRecordListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/front/frontToDoItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/front/frontToDoItemGroup.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/front/frontToDoItemGroups.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/services/frontService.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/saveSuccess.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/framework/listItems.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/instantMessage/instantMessageListItems.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/numberTitle.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/instantMessage/instantMessagePage.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/company/companyListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/company/companyListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/unit/effectiveUnitNodeCompanyIds.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/unit/unitNodePermission.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/unit/unitNodePermissionCompanyGroupPermission.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/unit/unitNodeGetChildPermissionsResult.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/unit/unitNodeSavePermission.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/unit/unitNodeSave.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/unit/unitNode.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/userGroup/unitPermissionUserGroup.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/unit/unitNodePermissions.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/instantMessage/instantMessagePermission.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/services/instantMessageService.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/common/savedListFilter.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/calendarTask/calendarTaskItem.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/calendarTask/calendarTaskItems.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/calendarTaskCategory/calendarTaskCategoryListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/common/codeTitle.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/calendarTask/calendarTaskPageData.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/calendarTask/calendarTaskPage.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/calendarTaskCategory/calendarTaskCategoryListItems.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/calendarTaskCategory/calendarTaskCategoryEditItem.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/calendarTaskCategory/calendarTaskCategoryEdit.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/calendarTask/calendarTaskEditItem.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/calendarTask/calendarTaskEdit.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/saveSuccessItems.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/userGroup/userGroupListItemUser.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/userGroup/userGroupListItem.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/userGroup/userGroupListItems.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/calendarTask/calendarTaskListItems.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/calendarTask/calendarTaskAmount.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/calendarTask/calendarTaskPermissions.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/services/calendarTaskService.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/common/applicationPermission.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/companyGroup/companyGroupListItemCompany.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/companyGroup/companyGroupListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/externalSystem/userExternalSystem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/fileFilter/fileFilterListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/intraModule/companyIntraModule.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/messageType/messageTypeListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/unit/unitModuleNodeUsage.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/unit/unitModuleNode.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/company/companyEditItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/company/companyEdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/company/companyPageList.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/company/companyPage.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/company/companyEditSaveAdminSuccess.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/company/companyEditSaveSuccess.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/services/companyService.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/companyGroup/companyGroupForPermissionListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/companyGroup/companyGroupForPermissionListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/companyGroup/companyGroupListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/companyGroup/companyGroupPage.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/companyGroup/companyGroupEditItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/companyGroup/companyGroupEdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/services/companyGroupService.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/log/logListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/log/logListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/log/logPage.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/log/logProperties.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/document/documentContentPreview.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/document/documentFilePreview.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/document/folderTreeNode.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/document/documentFolders.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/document/documentListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/document/documentListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/document/documentPageData.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/document/documentPage.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/document/documentVersionPreview.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/documentFile/documentFileEditItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/documentFile/documentFileEdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/keyword/keywordListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/keyword/keywordListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/keyword/keywordEditItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/keyword/keywordEdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/documentTemplate/documentTemplateListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/documentTemplate/documentTemplateListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/documentTemplate/documentTemplateEditItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/documentTemplate/documentTemplateEdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/fileFilter/fileFilterListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/fileFilter/fileFilterEditItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/fileFilter/fileFilterEdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/documentSettings/documentSettings.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/documentSettings/documentSettingsSave.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/user/userListItemUserGroup.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/user/userListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/user/userListItems.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/document/folderNodePermission.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/document/folderNodeSave.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/document/folderNode.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/documentFolder/documentFolderItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/documentFolder/documentFolderEdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/documentDocument/documentDocumentEditItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/documentDocument/documentDocumentEdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/documentDocument/documentPublishResult.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/documentVersion/documentVersionListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/documentVersion/documentVersionListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/documentVersion/documentVersionEditItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/documentVersion/documentVersionEdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/documentDocument/documentDocumentNew.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/documentDocument/documentDocumentTemplateContent.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/document/uploadFilesCheckResult.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/services/documentService.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/eventUrgencyClass/eventUrgencyClassListItem.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/eventUrgencyClass/eventUrgencyClassListItems.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/eventUrgencyClass/eventUrgencyClassEditItem.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/eventUrgencyClass/eventUrgencyClassEdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/event/eventChartOptions.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/event/eventChartPropertiesDialogData.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/eventSettings/eventSettingSimple.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/event/eventDefaultEventHandlers.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/eventType/eventTypeNode.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/event/eventEditItemMessage.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/event/eventEditItem.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/idColorTitle.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/event/eventEdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/event/eventEditNew.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/event/eventListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/event/eventListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/report/reportParameterValue.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/report/savedReport.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/chart/savedChartPanel.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/record/recordPagePanel.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/common/savedPrint.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/event/eventPageData.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/event/eventPagePanel.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/event/eventPage.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/eventPartner/eventPartnerEditItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/eventPartner/eventPartnerEdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/eventPartner/eventPartnerListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/eventPartner/eventPartnerListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/eventType/eventTypeEditItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/eventType/eventTypeEdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/eventType/eventTypeNodes.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/front/frontToDoItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/report/reportChartDataSet.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/report/reportChartData.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/editItemLockable.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/task/taskDataRow.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/task/taskValidationRowCol.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/task/taskValidationRow.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/task/taskTypePage.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/task/taskEditTypeItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/report/reportGeneratedTableData.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/report/reportGenerated2.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/chart/chartItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/report/reportItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/report/reportItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/unit/moduleUnits.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/unit/unitDefaultHandlersNodeUser.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/unit/unitDefaultHandlersNodeSave.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/unit/unitDefaultHandlersNode.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/unit/unitNodeDefaultHandlers.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/eventSettings/eventSetting.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/idRowId.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/unit/unitModuleSaveResult.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/services/eventService.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/recordEducation/recordEducationListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/record/recordEditItemEmployment.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/recordFurtherEducation/recordFurtherEducationNode.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/recordFurtherEducationGroup/recordFurtherEducationGroupNode.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/record/recordEditItemFurtherEducation.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/record/recordEditItemTransferredProperty.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/record/recordEditItemFamiliarization.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/recordUserQualification/recordQualificationUserFurtherEducation.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/recordUserQualification/recordListItemUserQualification.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/record/recordEditItemQualification.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/record/recordEditItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/recordFamiliarization/recordFamiliarizationListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/record/recordEdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/record/recordEditItemLogListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/record/recordEditItemLogListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/record/recordEditNew.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/record/recordExpiredFurtherEducationListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/record/recordExpiredFurtherEducationListItems.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/recordUserFurtherEducation/recordListItemUserFurtherEducation.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/record/recordListItemUserFamiliarization.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/record/recordListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/record/recordListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/record/recordPageEdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/record/recordPageList.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/record/recordPage.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/record/recordPageUnitsAndJobTitles.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/recordEducation/recordEducationEditItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/recordEducation/recordEducationEdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/recordEducation/recordEducationListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/recordFamiliarization/recordFamiliarizationEditItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/recordFamiliarization/recordFamiliarizationEdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/recordFamiliarization/recordFamiliarizationListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/record/recordExpiredFamiliarizationListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/record/recordExpiredFamiliarizationListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/recordFurtherEducation/recordFurtherEducationEditItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/recordFurtherEducation/recordFurtherEducationEdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/recordFurtherEducationGroup/recordFurtherEducationGroupEditItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/recordFurtherEducationGroup/recordFurtherEducationGroupEdit.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/recordFurtherEducationGroup/recordFurtherEducationGroupNodes.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/services/recordService.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/message/messageShortListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/message/messageShortListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/message/messagePageData.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/message/messageListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/message/messageListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/message/messagePage.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/messageType/messageTypeListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/messageType/messageTypeEditItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/messageType/messageTypeEdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/common/groupPermission.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/companyGroup/companyGroupPermissions.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/message/messageEditItemTargetUnit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/message/messageEditItemTargetCompanyGroup.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/message/messageEditItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/message/messageEdit.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/readReceipt/readReceiptListItem.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/readReceipt/readReceiptListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/messageSendEnmail/messageSendEnmailListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/messageSendEnmail/messageSendEnmailListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/services/messageService.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/task/taskListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/task/taskListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/task/taskPageData.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/task/taskPagePanel.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/task/taskPage.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/taskState/taskStateEditItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/taskState/taskStateEdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/taskState/taskStateListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/taskState/taskStateListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/taskPriority/taskPriorityListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/taskPriority/taskPriorityListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/taskPriority/taskPriorityEditItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/taskPriority/taskPriorityEdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/taskType/taskTypeListItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/taskType/taskTypeListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/taskType/taskTypeEditItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/taskType/taskTypeEdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/task/taskEditItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/task/taskEditItemTaskState.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/task/taskEditItemTaskPriority.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/task/taskdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/task/taskDataRowEdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/task/taskDataRowListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/taskType/taskTypeNew.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/taskType/taskTypePrintHtml.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/task/taskDataRowDefaultValues.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/services/taskService.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/intraModule/userIntraModule.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/user/userEditItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/user/userTokenData.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/user/userEdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/user/userEditSaveSuccess.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/user/userProfileEditItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/user/userProfileEdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/user/usersPage.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/user/usersPageUserGroups.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/user/userPasswordEmailResult.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/services/userService.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/intraModule/userGroupIntraModule.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/userGroup/userGroupEditItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/userGroup/userGroupEdit.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/userGroup/userGroupEditUserSaveSuccess.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/userGroup/userGroupPage.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/userGroup/userGroupPageAuthorizationLevels.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/services/userGroupService.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/user/modifyUserItems.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/whistleBlowCategory/whistleBlowCategoryListItem.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/whistleBlow/whistleBlowEditItemMessage.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/whistleBlow/whistleBlowEditItem.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/whistleBlow/whistleBlowEdit.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/whistleBlowChannel/whistleBlowChannelEditItem.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/whistleBlowChannel/whistleBlowChannelEditResourceItem.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/whistleBlowChannel/whistleBlowChannelEdit.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/whistleBlow/whistleBlowListItem.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/whistleBlow/whistleBlowListItems.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/whistleBlowCategory/whistleBlowCategoryEditItem.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/whistleBlowCategory/whistleBlowCategoryEdit.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/whistleBlowCategory/whistleBlowCategoryListItems.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/whistleBlow/whistleBlowEventLogListItem.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/whistleBlow/whistleBlowEventLogListItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/whistleBlow/whistleBlowPageData.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/whistleBlow/whistleBlowPagePanel.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/whistleBlow/whistleBlowPage.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/report/reportGenerated.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/services/whistleBlowService.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/framework/customHistory.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/store/storeEffects.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/common/listFilterItem.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/components/framework/Avatar/AvatarImage/AvatarImage.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/company/Company/CompanyItem/CompanyItem.tsx","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/components/framework/Dropdown/Dropdown/Dropdown.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/company/Company/PageNavMenuItemCompany/PageNavMenuItemCompany.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Icon/NewMessageIcon/NewMessageIcon.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Icon/SectionIcon/SectionIcon.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/app/NavigationMenu/NavigationMenu.styles.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/app/NavigationMenu/NavigationMenu.tsx","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/components/framework/button.tsx","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/components/framework/checkbox.tsx","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/components/framework/dropdown.tsx","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/components/framework/toolButton.tsx","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/components/framework/avatarImage.tsx","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/saveAttachmentBase64.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/framework/saveData.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/components/framework/Button/AppButton/AppButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/ConfirmationButton/ConfirmationButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/DangerButton/DangerButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Dialog/DraggablePaper/DraggablePaper.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Dialog/AppBaseDialog/AppBaseDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Dialog/Dialog/Dialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Grid/GridRow/GridRow.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/User/AvatarName/AvatarName.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/User/ModifyUserInfo/ModifyUserInfo.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/user/UserChangePasswordDialog/UserChangePasswordDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/ChangePasswordButton/ChangePasswordButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/user/UserProfileDialog/UserProfileDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/shared/icons/FlagEn.svg.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/shared/icons/FlagFi.svg.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/shared/icons/Report.svg.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/shared/icons/ReportSmall.svg.tsx","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/components/framework/Button/ToolButtonDropdownMenu/ToolButtonDropdownMenu.tsx","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/components/framework/Button/ToolButtonDropdown/ToolButtonDropdown.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/app/UserMenu/UserMenu.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Page/PageContainer/PageContainer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Page/PageContent/PageContent.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Page/PageTopBar/PageTopBar.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/PageNavMenuItem/FilterTabs/FilterTabs.styles.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/PageNavMenuItem/FilterTabs/FilterTabs.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/PageNav/PageNavMenuItem/PageNavMenuItem.styles.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/PageNav/PageNavMenuItem/PageNavMenuItem.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/PageNav/PageNavMenuItems/PageNavMenuItems.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Panel/PanelTitle/PanelTitle.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Container/DialogSettingsCard/DialogSettingsCard.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListStateIcon/ListStateIcon.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListStateIconTool/ListStateIconTool.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/unit/Unit/UnitPermissionTree/UnitPermissionTree.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/ActionContainer/ActionContainer.tsx","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/components/framework/Button/AppToolButton/AppToolButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/CopyToolButton/CopyToolButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/EditToolButton/EditToolButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/PasteToolButton/PasteToolButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListIconButtons/ListIconButtonsPermission/ListIconButtonsPermission.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Typography/EllipsisTypography/EllipsisTypography.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListCardRow/ListCardRow.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Typography/ClipTypography/ClipTypography.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListColumn/ListColumn.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListLine/ListLine.styles.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListLine/ListLine.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Loading/CircularLoading/CircularLoading.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Loading/LocalLoading/LocalLoading.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/List/List.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListSearchFilter/listSearchFilter.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/company/SelectCompanyDialog/SelectCompanyDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Form/FormSectionTitle/FormSectionTitle.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/DownloadToolButton/DownloadToolButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/RemoveToolButton/RemoveToolButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/PrintToolButton/PrintToolButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/AddToolButton/AddToolButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Unit/UnitGroupPermissionDialogPartnerCompanyList/UnitGroupPermissionDialogPartnerCompanyList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Unit/UnitGroupPermissionDialog/UnitGroupPermissionDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Unit/UnitApplicationPermissions/UnitApplicationPermissions.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/unit/unitSummaryUserGroup.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/unit/unitSummaryNode.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/unit/Unit/UnitPermissionSummaryTable/UnitPermissionSummaryTable.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/unit/Unit/UnitPermissionSummaryDialog/UnitPermissionSummaryDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/unit/Unit/UnitPermissionSettings/UnitPermissionSettings.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListStateIconSuccess/ListStateIconSuccess.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListLinkValue/ListLinkValue.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskStateListChip/TaskStateListChip.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/UnlockToolButton/UnlockToolButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Dialog/DialogItemsNav/DialogItemsNav.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/FormCheckBox/FormCheckBox.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/ColorPicker/ColorPicker.styles.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/ColorPicker/ColorPicker.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Dialog/DialogButtons/DialogButtons.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/calendarTask/CalendarTaskSettingsDialog/CalendarTaskCategoryList/CalendarTaskCategoryDialog/CalendarTaskCategoryDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/calendarTask/CalendarTaskSettingsDialog/CalendarTaskCategoryList/CalendarTaskCategoryList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/calendarTask/CalendarTaskSettingsDialog/CalendarTaskSettingsDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/AppToggleButton/AppToggleButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/PreviewToggleButton/PreviewToggleButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/AddButton/AddButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/SettingsButton/SettingsButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Calendar/CalendarDatePicker/CalendarDatePicker.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Typography/MultirowEllipsisTypography/MultirowEllipsisTypography.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Calendar/CalendarItemDetailPopup/CalendarItemDetailPopup.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListStateIconPrivate/ListStateIconPrivate.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Calendar/Calendar.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/FilterButton/FilterButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/PrintButton/PrintButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/RefreshButton/RefreshButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListActionButtons/ListActionButtons.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListContainer/ListContainer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListSearchContainer/ListSearchContainer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Page/PageTitle/PageTitle.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Dialog/DialogTabs/DialogTabs.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/services/attachmentService.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/PopupMenu/PopupMenu.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/attachments/AttachmentIcon/AttachmentIcon.styles.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/attachments/AttachmentIcon/AttachmentIcon.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/UploadButton/UploadButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/attachments/AttachmentList/AttachmentList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Dialog/DialogSectionCard/DialogSectionCard.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Tool/ToolTitle/ToolTitle.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/AddUserToolButton/AddUserToolButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/RemoveUserToolButton/RemoveUserToolButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Dialog/DialogListContainer/DialogListContainer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/userGroup/SelectUserGroupDialogList/SelectUserGroupDialogList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/userGroup/SelectUserGroupDialog/SelectUserGroupDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/userGroup/UserGroupBlocks/UserGroupBlocks.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/calendarTask/CalendarTaskEditDialog/CalendarTaskBasicInformation/CalendarTaskBasicInformation.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/calendarTask/CalendarTaskEditDialog/CalendarTaskRepetitionSettings/CalendarTaskRepetitionSettings.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/services/recordLockService.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/store/storeUtils.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/calendarTask/CalendarTaskEditDialog/CalendarTaskEditDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListDetailsPanel/ListDetailsPanel.styles.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/DrawerHeader/DrawerHeader.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListDetailsPanel/ListDetailsPanel.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListStateIconStarted/ListStateIconStarted.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListStateIconNotStarted/ListStateIconNotStarted.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/calendarTask/CalendarTaskList/CalendarTaskListItem/CalendarTaskListItem.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/calendarTask/CalendarTaskList/ICalendarTaskListUtils.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/calendarTask/CalendarTaskList/CalendarTaskList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/calendarTask/CalendarTaskPageFilter/calendarTaskPageFilter.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/calendarTask/CalendarTaskView/CalendarTaskView.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Drawer/DrawerContent/DrawerContent.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Filters/FilterButtons/FilterButtons.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Filters/FilterSearchField/FilterSearchField.styles.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Filters/FilterSearchField/FilterSearchField.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Page/PageDrawer/PageDrawer.styles.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Page/PageDrawer/PageDrawer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Page/PageFilterConditionDrawer/PageFilterConditionDrawer.tsx","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/components/framework/Button/InputButtonGroup/InputButtonGroup.tsx","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/components/framework/Dropdown/IdTitleDropdown/IdTitleDropdown.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/calendarTask/CalendarTaskFilterDrawer/CalendarTaskFilterDrawer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/services/filterService.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Filters/ListFilterSaveDialog/ListFilterSaveDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/calendarTask/CalendarTaskPage/CalendarTaskPage.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/containers/calendarTask/calendarTaskConnected.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/unit/Unit/UnitPermissionDialog/UnitPermissionDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/company/CompanyFilterDrawer/CompanyFilterDrawer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListCardField/ListCardField.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListDetailsButton/ListDetailsButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListToggleButtons/ListToggleButtons.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/ProgressBar/ProgressBar.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/unit/unitModuleNodeUsageSave.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/unit/unitModuleNodeSave.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/company/Company/CompanyUnitDialog/CompanyUnitDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Form/TextFieldWithButtonLabel/TextFieldWithButtonLabel.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/company/CompanyEditBasicInformation/CompanyEditBasicInformation.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/companyGroup/SelectCompanyGroupDialog/SelectCompanyGroupDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/company/CompanyEditCompanyGroupList/CompanyEditCompanyGroupList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListExternalSystemLine/ListExternalSystemLine.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/company/CompanyEditExternalSystems/CompanyEditExternalSystems.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/company/CompanyEditIntraModules/CompanyEditIntraModules.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Form/TextFieldWithButtonGroup/TextFieldWithButtonGroup.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/company/CompanyEditNewCompanyFileFilterList/CompanyEditNewCompanyFileFilterList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/company/CompanyEditNewCompanyMessageTypeList/CompanyEditNewCompanyMessageTypeList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/company/CompanyEditNewCompany/CompanyEditNewCompany.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/company/CompanyEditPartnerCompanyList/CompanyEditPartnerCompanyList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Icon/PermissionIcon/PermissionIcon.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/company/CompanyEditPermissions/CompanyEditPermissions.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListStateIconExpanded/ListStateIconExpanded.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListStateIconHome/ListStateIconHome.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/unit/Unit/UnitModuleTreeNode/UnitModuleTreeNode.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/unit/Unit/UnitModuleTree/UnitModuleTree.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/company/CompanyEditUnits/CompanyEditUnits.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/company/CompanyEdit/CompanyEdit.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/company/CompanyEditDialog/CompanyEditDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/company/CompanyList/CompanyList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/company/CompanyPageList/CompanyPageList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Page/PageTabs/PageTabs.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/company/CompanyPageEdit/CompanyPageEdit.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/company/CompanyPage/CompanyPage.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/containers/company/companyConnected.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/companyGroup/CompanyGroupEditDialogCompanyList/CompanyGroupEditDialogCompanyList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/companyGroup/CompanyGroupEditDialog/CompanyGroupEditDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/companyGroup/CompanyGroupList/CompanyGroupList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/companyGroup/CompanyGroupPage/CompanyGroupPage.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/containers/companyGroup/companyGroupConnected.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/FormRadio/FormRadio.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentFilterDrawer/DocumentFilterDrawer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentFolders/DocumentFolderTreeNode/DocumentFolderTreeNode.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListDetailsPanel/ListDetailsPanelAccordion/ListDetailsPanelAccordion.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentListDetailsPanel/DocumentListDetailsPanelDocumentContent/DocumentListDetailsPanelDocumentContent.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentListDetailsPanel/DocumentListDetailsPanelFileContent/DocumentListDetailsPanelFileContent.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/ChangeToolButton/ChangeToolButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentListDetailsPanel/DocumentListDetailsPanel.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListStateIconBall/ListStateIconBall.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/document/documentRemoveItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentFolderPath/DocumentFolderPath.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentFileEditDialog/DocumentFileEditDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/company/CompanyDropdown/CompanyDropdown.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/user/SelectUserDialog/SelectUserDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentCopyMoveDialog/DocumentCopyMoveDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/User/LockedUserInfo/LockedUserInfo.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/FormFieldLockedToUser/FormFieldLockedToUser.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/AppCkEditor/AppCkEditor.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentDocumentEditDialog/DocumentVersionList/DocumentVersionDialog/DocumentVersionDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentDocumentEditDialog/DocumentVersionList/DocumentVersionList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentSettingsDialog/DocumentTemplateList/DocumentTemplateDialog/DocumentTemplateDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentSettingsDialog/DocumentTemplateList/DocumentTemplateList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentSaveAsTemplateDialog/DocumentSaveAsTemplateDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/ApproveButton/ApproveButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/PublishButton/PublishButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentDocumentEditDialog/DocumentDocumentEditDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentDocumentNewDialog/DocumentDocumentNewDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/EditToggleButtonHeader/EditToggleButtonHeader.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/PageListActionContainer/PageListActionContainer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/DashboardChart/DashboardChart.styles.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/DashboardCard/DashboardCardTitle/DashboardCardTitle.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/DashboardCard/DashboardCardProgress/DashboardCardProgress.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/GenericChart/chartInitialize.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/GenericChart/HtmlLegendPlugIn/HtmlLegendPlugIn.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/GenericChart/BarChart/BarChart.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/GenericChart/PieChart/PieChart.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/DashboardChart/DashboardChart.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentPageDashboardChart/DocumentPageDashboardChart.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentList/DocumentList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentFolderNewDialog/DocumentFolderNewDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentFolderEditDialog/FolderPermissionTree/FolderPermissionTree.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentFolderEditDialog/FolderNodePermissionDialog/FolderNodePermissionDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentFolderEditDialog/FolderPermissions/FolderPermissions.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentFolderEditDialog/DocumentFolderEditDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentFolders/DocumentFolders.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentSettingsDialog/DocumentKeywordList/DocumentKeywordDialog/DocumentKeywordDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentSettingsDialog/DocumentKeywordList/DocumentKeywordList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentSettingsDialog/FileFilterList/FileFilterDialog/FileFilterDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentSettingsDialog/FileFilterList/FileFilterList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentSettingsDialog/DocumentOtherSettings/DocumentOtherSettings.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentSettingsDialog/DocumentSettingsDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/document/DocumentPage/DocumentPage.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/containers/document/documentConnected.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/idTitleClass.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Page/PagePanelsDrawer/PagePanelsDrawer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/front/FrontPanelPropertiesDrawer/FrontPanelPropertiesDrawer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/app/DashboardPanelList/DashboardPanelList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Dashboard/DashboardContainer/DashboardContainer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Panel/PanelContainer/PanelContainer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/CardContainer/CardContainer.styles.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/CardContainer/CardContainer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/DashboardStatistics/DashboardStatistics.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/app/DashboardPanelFiltersReports/DashboardPanelNoReport/DashboardPanelNoReport.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/app/DashboardPanelFiltersReports/DashboardPanelFiltersReports.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Page/PageDashboard/PageDashboard.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Page/PageListAndReportsContainer/PageListAndReportsContainer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Page/PageReportsContainer/PageReportsContainer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/ReportSettings/ReportSettings.styles.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/ReportSettings/ReportSettings.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/report/PageNavMenuItemReportList/PageNavMenuItemReportItem/PageNavMenuItemReportItem.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/report/PageNavMenuItemReportList/PageNavMenuItemReportList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/services/reportService.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/report/PageNavMenuItemReportList/SaveReportDialog/SaveReportDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventPageDashboardChart/EventPageDashboardChart.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventFilterDrawer/EventFilterDrawer.tsx","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/components/event/eventListStateCol.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/PrintOptionsDialog/PrintOptionsDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/services/printService.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/components/framework/mapMarker.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/common/treeNode.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListStateIconCanceled/ListStateIconCanceled.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Tree/UiTreeNode/UiTreeNode.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Tree/UiTree/UiTree.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Unit/SelectUnitDialog/SelectUnitDialog.tsx","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/components/framework/Button/ToolButton/ToolButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Form/LongText/LongText.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/user/UserBlocks/UserBlocks.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Message/MessageContainer/MessageContainer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Message/MessageListContainer/MessageListContainer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Message/NewMessage/NewMessageAttachmentImage/NewMessageAttachmentImage.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Message/NewMessage/NewMessageAttachmentItem/NewMessageAttachmentItem.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Message/MessageLine/MessageLine.styles.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/shared/icons/BubbleTipLeft.svg.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/shared/icons/ButtleTipRight.svg.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Message/MessageLine/MessageLine.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Message/MessageListEvent/MessageListEvent.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventEditDialogMessageListLine/EventEditDialogMessageListLine.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Message/NewMessage/NewMessage.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventEditDialogMessageListNew/EventEditDialogMessageListNew.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventEditDialogMessageList/EventEditDialogMessageList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventEditDialogAction/EventEditDialogAction.tsx","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/components/event/EventEditUrgencyClassStateText/EventEditUrgencyClassStateText.tsx","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/components/event/EventEditUrgencyClassField/EventEditUrgencyClassField.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventEditDialogBasicInformation/EventEditDialogBasicInformation.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Select/SelectIdTitleNodeDialog/SelectIdTitleNodeDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventEditDialogIdentificationEventTypeList/EventEditDialogIdentificationEventTypeList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventEditDialogIdentification/EventEditDialogIdentification.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventEditDialog/EventEditDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventEditNewEventDialog/EventEditNewEventDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventListDetailsPanel/EventListDetailsPanel.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventList/EventList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventReportFilterSettings/EventReportFilterSettings.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/services/chartPanelService.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/DownloadButton/DownloadButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Report/ReportExcelReport/ReportExcelReportstyles.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Report/ReportExcelReport/ReportExcelReportTables/ReportExcelReportTableRowData.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Report/ReportExcelReport/ReportExcelReportTables/ReportExcelReportTables.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Report/ReportExcelReport/ReportExcelReport.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Report/ReportPdfReport/ReportPdfReport.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/ReportContainer/ReportContainer.styles.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/ReportContainer/ReportContainer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Report/PageReport/PageReport.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventReportList/EventReportList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/unit/Unit/UnitDefaultHandlersEditDialog/UnitDefaultHandlersEditDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/unit/Unit/UnitDefaultHandlersTree/UnitDefaultHandlersTree.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/unit/Unit/UnitDefaultHandlers/UnitDefaultHandlers.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/unit/Unit/UnitDefaultHandlersSettings/UnitDefaultHandlersSettings.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/unit/Unit/UnitModuleSettings/UnitModuleSettings.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventPartnerEditDialog/EventPartnerEditDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventPartnersDialogCompanyList/EventPartnersDialogCompanyList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventPartnersSettings/EventPartnersSettings.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventSettings/EventSettings.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventUrgencyClassDialog/EventUrgencyClassDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventUrgencyClassList/EventUrgencyClassList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventTypeEditDialog/EventTypeEditDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListStateIconAdd/ListStateIconAdd.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventTypeTreeNode/EventTypeTreeNode.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventTypeTree/EventTypeTree.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventTypesSettings/EventTypesSettings.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventSettingsDialog/EventSettingsDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventPage/EventPage.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/containers/event/eventConnected.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/GenericChart/GenericChart.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/event/EventChart/EventChart.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/message/MessageList/MessageList.styles.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/message/MessageListAttachments/MessageListAttachments.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/ForwardToolButton/ForwardToolButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListStateIconLocked/ListStateIconLocked.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/message/MessageListHeader/MessageListHeader.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/message/MessageReadReceiptDialog/MessageReadReceiptDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/message/MessageShortList/MessageShortList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/front/FrontPanelPropertiesDialog/FrontPanelPropertiesDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/front/FrontToDoItems/FrontToDoItems.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/front/ModifiedRecordList/ModifiedRecordList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/front/FrontBanner/FrontBanner.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/front/FrontImages/FrontImages.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/front/ModifiedRecordList/ModifiedRecordPropertiesDialog/ModifiedRecordPropertiesDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/front/FrontPanelMessagePropertiesDialog/FrontPanelMessagePropertiesDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/front/Front/Front.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/containers/front/frontConnected.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/instantMessage/instantMessageChannelEditItem.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/instantMessage/instantMessageChannelNew.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/instantMessage/instantMessageChannelUserEditItem.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/instantMessage/instantMessageChannelEdit.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/instantMessage/instantMessageChannelAddedUser.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/instantMessage/instantMessageChannelAddUsersSuccess.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/instantMessage/instantMessageChannelItems.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/services/instantMessageChannelService.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/instantMessage/instantMessageChannelHelper.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/instantMessage/InstantMessageChannelEditDialogUserList/InstantMessageChannelEditDialogUserList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/instantMessage/InstantMessageChannelEditDialog/InstantMessageChannelEditDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/user/SelectUserList/SelectUserList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/instantMessage/InstantMessageChannelEditNewDialog/InstantMessageChannelEditNewDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/instantMessage/InstantMessageListLine/InstantMessageListLine.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/instantMessage/InstantMessageList/InstantMessageList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/instantMessage/InstantMessagePartnersDialogCompanyList/InstantMessagePartnersDialogCompanyList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/instantMessage/InstantMessagePartnersSettings/InstantMessagePartnersSettings.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/instantMessage/InstantMessageSettingsDialog/InstantMessageSettingsDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/instantMessage/PageNavMenuItemInstantMessageChannel/PageNavMenuItemInstantMessageChannel.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/instantMessage/InstantMessagePage/InstantMessagePage.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/containers/instantMessage/instantMessageConnected.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/log/LogFilterDialog/LogFilterDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/LongTextField/LongTextField.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/log/LogList/LogList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/services/logService.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/log/LogPropertiesDialog/LogPropertiesDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/log/LogPage/LogPage.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/containers/log/logConnected.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/message/MessageFilterDrawer/MessageFilterDrawer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/unit/UnitBlocks/UnitBlocks.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/companyGroup/SelectCompanyGroupForPermissionsDialog/SelectCompanyGroupForPermissionsDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/message/MessageEditDialog/MessageEditDialogCompanyGroupBlocks/MessageEditDialogCompanyGroupBlocks.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/message/MessageEditDialog/MessageEditDialogGeneralInformation/MessageEditDialogGeneralInformation.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/message/MessageEditDialog/MessageEditDialogAttachments/MessageEditDialogAttachments.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/readReceipt/readReceiptList/ReadReceiptList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/message/MessageSendEmailList/MessageSendEmailList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/message/MessageEditDialog/MessageEditDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/message/MessagePageFilter/messagePageFilter.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/message/MessageList/MessageList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/message/MessageSettingsDialog/MessageTypeList/MessageTypeDialog/MessageTypeDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/message/MessageSettingsDialog/MessageTypeList/MessageTypeList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/companyGroup/CompanyGroupPermissionSettings/CompanyGroupPermissionSettings.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/message/MessageSettingsDialog/MessageSettingsDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/message/MessagePage/MessagePage.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/containers/message/messageConnected.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordFilterDrawer/RecordFilterDrawer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListStateIconCertificate/ListStateIconCertificate.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordExpiredFamiliarizationsList/RecordExpiredFamiliarizationsList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordArchiveExpiredFamiliarizationsDialog/RecordArchiveExpiredFamiliarizationsDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordExpiredFurtherEducationsList/RecordExpiredFurtherEducationsList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordArchiveExpiredFurtherEducationsDialog/RecordArchiveExpiredFurtherEducationsDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/user/UserEditChangePasswordDialog/UserEditChangePasswordDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/userGroup/SelectUserGroupDialogWithCompanySelect/SelectUserGroupDialogWithCompanySelect.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/user/UserEditDialogUserGroupList/UserEditDialogUserGroupList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/user/UserEditRemoveSelectTypeDialog/UserEditRemoveSelectTypeDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/SendButton/SendButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/user/UserEditSendEmailDialog/UserEditSendEmailDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/user/UserEditDialog/UserEditDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordEditAttachmentList/RecordEditAttachmentList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordEditAttachmentSubList/RecordEditAttachmentSubList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Form/Autocomplete/Autocomplete.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordEditBasicInformation/RecordEditBasicInformation.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListStateIconAttachment/ListStateIconAttachment.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordEditListFirstCol/RecordEditListFirstCol.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordUserFurtherEducationDialog/RecordUserFurtherEducationDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordEditFurtherEducationList/RecordEditFurtherEducationList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordEditEducation/RecordEditEducation.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordUserEmploymentDialog/RecordUserEmploymentDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordEditEmploymentList/RecordEditEmploymentList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordEditEmployment/RecordEditEmployment.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordUserFamiliarizationDialog/RecordUserFamiliarizationDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordEditFamiliarizationList/RecordEditFamiliarizationList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordEditLogList/RecordEditLogList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordEditNextOfKin/RecordEditNextOfKin.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/SelectQualificationDialog/SelectQualificationDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordEditQualificationList/RecordEditQualificationList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordEditSheetDataRowDialog/RecordEditSheetDataRowDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordEditSheetDataRowList/RecordEditSheetDataRowList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordUserTransferredPropertyDialog/RecordUserTransferredPropertyDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordEditTransferredPropertyList/RecordEditTransferredPropertyList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordEdit/RecordEdit.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordEditRemoveSelectTypeDialog/RecordEditRemoveSelectTypeDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordEditDialog/RecordEditDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordEditNewRecordDialog/RecordEditNewRecordDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/PageNavMenuItem/PageNavMenuItemCheckBox/PageNavMenuItemCheckBox.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/PageNavMenuItem/PageNavMenuItemRadio/PageNavMenuItemRadio.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/PageNavMenuItem/PageNavMenuItemTreeCheckBox/PageNavMenuItemTreeCheckBox.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/SelectRecordDialog/SelectRecordDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordList/RecordList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordReportFilterSettings/RecordReportFilterSettings.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordReportListHtmlReport/RecordReportListHtmlReport.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordReportList/RecordReportList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordEducationDialog/RecordEducationDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordEducationList/RecordEducationList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordFamiliarizationDialog/RecordFamiliarizationDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordFamiliarizationList/RecordFamiliarizationList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/FormSelect/FormSelect.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordFurtherEducationDialog/RecordFurtherEducationDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordFurtherEducationGroupDialog/RecordFurtherEducationGroupDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordFurtherEducationTreeNode/RecordFurtherEducationTreeNode.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordFurtherEducationTree/RecordFurtherEducationTree.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordFurtherEducationList/RecordFurtherEducationList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordSettingsDialog/RecordSettingsDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordPageList/RecordPageList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordPageEdit/RecordPageEdit.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/record/RecordPage/RecordPage.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/containers/record/recordConnected.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskDynamicFormContainer/TaskDynamicFormContainer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFilterDrawer/TaskFilterDrawerTaskTypeParameters.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFilterDrawer/TaskFilterDrawer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Report/ReportFilterPanelChartProperties/ReportFilterPanelChartProperties.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Report/ReportFilterPanelExtraParameters/ReportFilterPanelExtraParameters.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Report/ReportFilterPanelShowInFrontPage/ReportFilterPanelShowInFrontPage.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskReportFilterPanel/TaskReportFilterPanel.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Page/PageChartFilterDrawer/PageChartFilterDrawer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskChartFilterDrawer/TaskChartFilterDrawer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskPageDashboardChart/TaskPageDashboardChart.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListStateIconFresh/ListStateIconFresh.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListStateIconUnread/ListStateIconUnread.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/ListStateIconNotification/ListStateIconNotification.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskList/TaskListStateCol.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskList/TaskListHandlersCol.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/ToggleButtons/ToggleButtons.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskEditDialog/TaskEditDialogGeneraView/TaskEditDialogGeneraView.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskDataRowDialog/TaskDataRowDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskDataRowList/TaskDataRowList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskEditDialog/TaskEditDialogFormView/TaskEditDialogFormView.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskNewDialog/TaskNewDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskEditDialog/TaskEditDialogGeneralViewReadOnly/TaskEditDialogGeneralViewReadOnly.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/calendarTask/CalendarTaskListOfRecord/CalendarTaskListOfRecord.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/FormAccordion/FormAccordion.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/EditToggleButton/EditToggleButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskEditDialog/TaskEditDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/TrashBinButton/TrashBinButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/RestoreFromTrashBinButton/RestoreFromTrashBinButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/EmptyTrashBinButton/EmptyTrashBinButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskListDetailsPanel/TaskListDetailsPanel.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/taskPrintDialog/TaskPrintDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskList/TaskList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskPageReport/TaskPageReport.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskSettingsDialog/TaskPriorityList/TaskPriorityDialog/TaskPriorityDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskSettingsDialog/TaskPriorityList/TaskPriorityList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskSettingsDialog/TaskStateList/TaskStateDialog/TaskStateDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskSettingsDialog/TaskStateList/TaskStateList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerComponentPicker/TaskFormDesignerComponentPickerItem/TaskFormDesignComponentPickerItem.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerComponentPicker/TaskFormDesignerComponentPicker.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskTypeBasicInformation/TaskTypeBasicInformation.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerBuilder/TaskFormDesignerFormBuilder/TaskFormDesignerFormBuilder.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerBuilder/TaskFormDesignerRowBuilder/TaskFormDesignerRowBuilder.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerBuilder/TaskFormDesignerBuilder.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerComponentProperties/TaskFormDesignerComponentPropertiesBold/TaskFormDesignerComponentPropertiesBold.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/FormInteger/FormInteger.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/FormDecimal/FormDecimal.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/FormTimeSpan/FormTimeSpan.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerComponentProperties/TaskFormDesignerComponentPropertiesDefaultValue/TaskFormDesignerComponentPropertiesDefaultValue.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerComponentProperties/TaskFormDesignerComponentPropertiesFontSize/TaskFormDesignerComponentPropertiesFontSize.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerComponentProperties/TaskFormDesignerComponentPropertiesWidth/TaskFormDesignerComponentPropertiesWidth.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerComponentProperties/TaskFormDesignerComponentPropertiesRow/TaskFormDesignerComponentPropertiesRow.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerComponentProperties/TaskFormDesignerComponentPropertiesTextAlignment/TaskFormDesignerComponentPropertiesTextAlignment.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerComponentProperties/TaskFormDesignerComponentPropertiesTextareaSize/TaskFormDesignerComponentPropertiesTextareaSize.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerComponentProperties/TaskFormDesignerComponentPropertiesNoTitleInRow/TaskFormDesignerComponentPropertiesNoTitleInRow.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerComponentProperties/TaskFormOptionsDialog/TaskFormOptionDialog/TaskFormOptionDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/ArrowUpToolButton/ArrowUpToolButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Button/ArrowDownToolButton/ArrowDownToolButton.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerComponentProperties/TaskFormOptionsDialog/TaskFormOptionsDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerComponentProperties/TaskFormDesignerComponentPropertiesMinMax/TaskFormDesignerComponentPropertiesMinMax.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerComponentProperties/TaskFormDesignerComponentPropertiesExpression/TaskFormDesignerComponentPropertiesExpression.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerComponentProperties/TaskFormDesignerComponentPropertiesHeight/TaskFormDesignerComponentPropertiesHeight.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerComponentProperties/TaskFormDesignerComponentPropertiesName/TaskFormDesignerComponentPropertiesName.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerComponentProperties/TaskFormInitializeFromRowDialog/TaskFormInitializeFromRowDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerComponentProperties/TaskFormDesignerComponentProperties.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesigner.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerBuilder/TaskFormDesignerSchemaDialog/TaskFormDesignerSchemaDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Report/ReportExcelReport/ReportExcelReportTable/ReportExcelReportTable.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskDynamicFormTableContainer/TaskDynamicFormTableContainer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerPreview/TaskFormDesignerPreviewWeb/TaskFormDesignerPreviewWeb.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerPreview/TaskFormDesignerPreviewComponentPropertiesRow/TaskFormDesignerPreviewComponentPropertiesRow.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerPreview/TaskFormDesignerPreviewComponentProperties/TaskFormDesignerPreviewComponentProperties.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerPreview/TaskFormDesignerPreviewPrint/TaskFormDesignerPreviewPrint.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerPreview/TaskFormDesignerPreview.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerDialog/TaskFormDesignerDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/List/TreeList/TreeList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskFormDesigner/TaskFormDesignerNewDialog/TaskFormDesignerNewDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskSettingsDialog/TaskTypeGrid/TaskTypeGrid.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskSettingsDialog/TaskSettingsDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskTrashBinDialog/TaskTrashBinDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskPage/TaskPage.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/containers/task/taskConnected.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/user/UserFilterDrawer/UserFilterDrawer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/user/userImportItem.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/user/ImportUsersDialog/ImportUsersDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/user/UserList/UserList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/user/UserPage/UserPage.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/containers/user/userConnected.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/user/userPasswordChangePageData.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/user/public/UserInvitationPageContent.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/services/publicUserService.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/user/public/UserInvitationPage.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/containers/user/userInvitationConnected.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/user/public/UserForgotPasswordPageContent.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/user/public/UserForgotPasswordPage.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/containers/user/userForgotPasswordConnected.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/userGroup/UserGroupFilterDrawer/UserGroupFilterDrawer.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/userGroup/UserGroupEditDialogUserList/UserGroupEditDialogUserList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/userGroup/UserGroupEditDialog/UserGroupEditDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/userGroup/UserGroupList/UserGroupList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/userGroup/UserGroupPage/UserGroupPage.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/containers/userGroup/userGroupConnected.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/whistleBlow/WhistleBlowArchiveSelectTypeDialog/WhistleBlowArchiveSelectTypeDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/SearchField/SearchField.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/whistleBlow/WhistleBlowEditDialogLogList/WhistleBlowEditDialogLogList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/whistleBlow/WhistleBlowEditDialogMessageListLine/WhistleBlowEditDialogMessageListLine.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/whistleBlow/WhistleBlowEditDialogMessageListNew/WhistleBlowEditDialogMessageListNew.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/whistleBlow/WhistleBlowEditDialogMessageList/WhistleBlowEditDialogMessageList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/whistleBlow/WhistleBlowEditDialog/WhistleBlowEditDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/whistleBlow/WhistleBlowNewDialog/WhistleBlowNewDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/whistleBlow/WhistleBlowPageDashboardChart/WhistleBlowPageDashboardChart.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/whistleBlow/WhistleBlowList/WhistleBlowList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/whistleBlow/WhistleBlowArchiveWhistleBlowList/WhistleBlowArchiveWhistleBlowList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/whistleBlow/WhistleBlowFilterSettings/WhistleBlowFilterSettings.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/whistleBlow/WhistleBlowArchiveDialog/WhistleBlowArchiveDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/whistleBlow/WhistleBlowCategoryDialog/WhistleBlowCategoryDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/whistleBlow/WhistleBlowCategoryList/WhistleBlowCategoryList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/whistleBlow/WhistleBlowChannelEditDialogUserList/WhistleBlowChannelEditDialogUserList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/whistleBlow/WhistleBlowChannelEditDialog/WhistleBlowChannelEditDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/whistleBlow/WhistleBlowReportFilterDialog/WhistleBlowReportFilterDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/whistleBlow/WhistleBlowReportList/WhistleBlowReportList.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/whistleBlow/WhistleBlowPage/WhistleBlowPage.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/containers/whistleBlow/whistleBlowConnected.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/AppNotification/AppNotification.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Dialog/ConfirmationDialog/ConfirmationDialog.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/Notification/InstantMessageNotification/InstantMessageNotification.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/app/privateRoute.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/app/app.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/DateTime/DatePicker.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/DateTime/TimePicker.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/FormField/FormField.styles.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/framework/FormField/FormField.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/components/task/TaskDynamicForm/TaskDynamicForm.tsx","webpack://qteamsystems.qteamintra.web/./Scripts/source/framework/appUtils.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/store/storeReducers.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/framework/customStore.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/common/pagePanel.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/common/typedOption.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/front/frontPageBannerImage.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/front/frontPageBanner.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/front/frontPagePanel.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/front/frontPageRecords.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/front/frontPageMessages.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/front/frontPage.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/front/frontPageImages.ts","webpack://qteamsystems.qteamintra.web/../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/apiError.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/services/baseService.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/common/codeNameUrl.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/session/sessionState.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/store/storeActions.ts","webpack://qteamsystems.qteamintra.web/./Scripts/source/models/store/storeTypes.ts","webpack://qteamsystems.qteamintra.web/./node_modules/moment/locale/ sync ^\\.\\/.*$","webpack://qteamsystems.qteamintra.web/webpack/bootstrap","webpack://qteamsystems.qteamintra.web/webpack/runtime/chunk loaded","webpack://qteamsystems.qteamintra.web/webpack/runtime/create fake namespace object","webpack://qteamsystems.qteamintra.web/webpack/runtime/compat get default export","webpack://qteamsystems.qteamintra.web/webpack/runtime/define property getters","webpack://qteamsystems.qteamintra.web/webpack/runtime/global","webpack://qteamsystems.qteamintra.web/webpack/runtime/hasOwnProperty shorthand","webpack://qteamsystems.qteamintra.web/webpack/runtime/make namespace object","webpack://qteamsystems.qteamintra.web/webpack/runtime/node module decorator","webpack://qteamsystems.qteamintra.web/webpack/runtime/publicPath","webpack://qteamsystems.qteamintra.web/webpack/runtime/jsonp chunk loading","webpack://qteamsystems.qteamintra.web/webpack/startup"],"sourcesContent":["(function (window) {\r\n //ES5 Polyfill\r\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\r\n if (!Array.prototype.find) {\r\n Object.defineProperty(Array.prototype, \"find\", {\r\n value: function(predicate) {\r\n // 1. Let O be ? ToObject(this value).\r\n if (this == null) {\r\n throw new TypeError(\"'this' is null or not defined\");\r\n }\r\n var o = Object(this);\r\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\r\n var len = o.length >>> 0;\r\n // 3. If IsCallable(predicate) is false, throw a TypeError exception.\r\n if (typeof predicate !== \"function\") {\r\n throw new TypeError(\"predicate must be a function\");\r\n }\r\n // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\r\n var thisArg = arguments[1];\r\n // 5. Let k be 0.\r\n var k = 0;\r\n // 6. Repeat, while k < len\r\n while (k < len) {\r\n // a. Let Pk be ! ToString(k).\r\n // b. Let kValue be ? Get(O, Pk).\r\n // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\r\n // d. If testResult is true, return kValue.\r\n var kValue = o[k];\r\n if (predicate.call(thisArg, kValue, k, o)) {\r\n return kValue;\r\n }\r\n // e. Increase k by 1.\r\n k++;\r\n }\r\n // 7. Return undefined.\r\n return undefined;\r\n },\r\n configurable: true,\r\n writable: true\r\n });\r\n }\r\n //ES5 Polyfill\r\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\r\n if (!Array.prototype.findIndex) {\r\n Object.defineProperty(Array.prototype, \"findIndex\", {\r\n value: function(predicate) {\r\n // 1. Let O be ? ToObject(this value).\r\n if (this == null) {\r\n throw new TypeError(\"'this' is null or not defined\");\r\n }\r\n var o = Object(this);\r\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\r\n var len = o.length >>> 0;\r\n // 3. If IsCallable(predicate) is false, throw a TypeError exception.\r\n if (typeof predicate !== \"function\") {\r\n throw new TypeError(\"predicate must be a function\");\r\n }\r\n // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\r\n var thisArg = arguments[1];\r\n // 5. Let k be 0.\r\n var k = 0;\r\n // 6. Repeat, while k < len\r\n while (k < len) {\r\n // a. Let Pk be ! ToString(k).\r\n // b. Let kValue be ? Get(O, Pk).\r\n // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\r\n // d. If testResult is true, return k.\r\n var kValue = o[k];\r\n if (predicate.call(thisArg, kValue, k, o)) {\r\n return k;\r\n }\r\n // e. Increase k by 1.\r\n k++;\r\n }\r\n // 7. Return -1.\r\n return -1;\r\n },\r\n configurable: true,\r\n writable: true\r\n });\r\n }\r\n //ES5 Polyfill\r\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\r\n if (!Array.prototype.includes) {\r\n Object.defineProperty(Array.prototype, \"includes\", {\r\n value: function(searchElement, fromIndex) {\r\n if (this == null) {\r\n throw new TypeError('\"this\" is null or not defined');\r\n }\r\n // 1. Let O be ? ToObject(this value).\r\n var o = Object(this);\r\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\r\n var len = o.length >>> 0;\r\n // 3. If len is 0, return false.\r\n if (len === 0) {\r\n return false;\r\n }\r\n // 4. Let n be ? ToInteger(fromIndex).\r\n // (If fromIndex is undefined, this step produces the value 0.)\r\n var n = fromIndex | 0;\r\n // 5. If n ≥ 0, then\r\n // a. Let k be n.\r\n // 6. Else n < 0,\r\n // a. Let k be len + n.\r\n // b. If k < 0, let k be 0.\r\n var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\r\n function sameValueZero(x, y) {\r\n return x === y || (typeof x === \"number\" && typeof y === \"number\" && isNaN(x) && isNaN(y));\r\n }\r\n // 7. Repeat, while k < len\r\n while (k < len) {\r\n // a. Let elementK be the result of ? Get(O, ! ToString(k)).\r\n // b. If SameValueZero(searchElement, elementK) is true, return true.\r\n if (sameValueZero(o[k], searchElement)) {\r\n return true;\r\n }\r\n // c. Increase k by 1. \r\n k++;\r\n }\r\n // 8. Return false\r\n return false;\r\n }\r\n });\r\n }\r\n //Array union\r\n if (!Array.prototype.union) {\r\n Object.defineProperty(Array.prototype, \"union\", {\r\n value: function(array) {\r\n if (array === null || array === \"undefined\") {\r\n return this;\r\n }\r\n var x = this.concat(array);\r\n return x.filter(function(elem, index) { return x.indexOf(elem) === index; });\r\n }\r\n });\r\n }\r\n //Array difference\r\n if (!Array.prototype.difference) {\r\n Object.defineProperty(Array.prototype, \"difference\", {\r\n value: function(array) {\r\n if (array === null || array === \"undefined\") {\r\n return this;\r\n }\r\n return this.filter(function(i) { return array.indexOf(i) < 0; });\r\n }\r\n });\r\n }\r\n})(typeof window !== \"undefined\" ? window : this);\r\n","(function (window) {\r\n //Polyfill\r\n if (!Date.now) {\r\n Date.now = function () {\r\n return new Date().getTime();\r\n };\r\n }\r\n\r\n $date_type = Date;\r\n $date_type.__typeName = \"Number\";\r\n $date_type.__class = true;\r\n $date_prototype = $date_type.prototype;\r\n \r\n $date_prototype.addYears = function (years) {\r\n if (years === null || years === undefined) {\r\n years = 1;\r\n }\r\n var result = new Date(this.valueOf());\r\n result.setFullYear(result.getFullYear() + years);\r\n return result;\r\n };\r\n \r\n $date_prototype.addMonths = function (months) {\r\n if (months === null || months === undefined) {\r\n months = 1;\r\n }\r\n var result = new Date(this.valueOf());\r\n result.setMonth(result.getMonth() + months);\r\n return result;\r\n };\r\n \r\n $date_prototype.addDays = function (days) {\r\n if (days === null || days === undefined) {\r\n days = 1;\r\n }\r\n var result = new Date(this.valueOf());\r\n result.setDate(result.getDate() + days);\r\n return result;\r\n };\r\n\r\n $date_prototype.addHours = function (hours) {\r\n if (hours === null || hours === undefined) {\r\n hours = 1;\r\n }\r\n var result = new Date(this.valueOf());\r\n result.setHours(result.getHours() + hours);\r\n return result;\r\n };\r\n\r\n $date_prototype.addMinutes = function (minutes) {\r\n if (minutes === null || minutes === undefined) {\r\n minutes = 1;\r\n }\r\n var result = new Date(this.valueOf());\r\n result.setMinutes(result.getMinutes() + minutes);\r\n return result;\r\n };\r\n\r\n $date_prototype.firstDayOfWeek = function () {\r\n var result = new Date(this.valueOf());\r\n var dayOfWeek = this.getDay();\r\n result.setDate(result.getDate() - dayOfWeek + (dayOfWeek === 0 ? -6 : 1));\r\n result.setHours(0, 0, 0, 0);\r\n return result;\r\n };\r\n})(typeof window !== \"undefined\" ? window : this);\r\n","(function(self) {\r\n 'use strict';\r\n\r\n if (self.fetch) {\r\n return\r\n }\r\n\r\n var support = {\r\n searchParams: 'URLSearchParams' in self,\r\n iterable: 'Symbol' in self && 'iterator' in Symbol,\r\n blob: 'FileReader' in self && 'Blob' in self && (function() {\r\n try {\r\n new Blob()\r\n return true\r\n } catch(e) {\r\n return false\r\n }\r\n })(),\r\n formData: 'FormData' in self,\r\n arrayBuffer: 'ArrayBuffer' in self\r\n }\r\n\r\n if (support.arrayBuffer) {\r\n var viewClasses = [\r\n '[object Int8Array]',\r\n '[object Uint8Array]',\r\n '[object Uint8ClampedArray]',\r\n '[object Int16Array]',\r\n '[object Uint16Array]',\r\n '[object Int32Array]',\r\n '[object Uint32Array]',\r\n '[object Float32Array]',\r\n '[object Float64Array]'\r\n ]\r\n\r\n var isDataView = function(obj) {\r\n return obj && DataView.prototype.isPrototypeOf(obj)\r\n }\r\n\r\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\r\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\r\n }\r\n }\r\n\r\n function normalizeName(name) {\r\n if (typeof name !== 'string') {\r\n name = String(name)\r\n }\r\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\r\n throw new TypeError('Invalid character in header field name')\r\n }\r\n return name.toLowerCase()\r\n }\r\n\r\n function normalizeValue(value) {\r\n if (typeof value !== 'string') {\r\n value = String(value)\r\n }\r\n return value\r\n }\r\n\r\n // Build a destructive iterator for the value list\r\n function iteratorFor(items) {\r\n var iterator = {\r\n next: function() {\r\n var value = items.shift()\r\n return {done: value === undefined, value: value}\r\n }\r\n }\r\n\r\n if (support.iterable) {\r\n iterator[Symbol.iterator] = function() {\r\n return iterator\r\n }\r\n }\r\n\r\n return iterator\r\n }\r\n\r\n function Headers(headers) {\r\n this.map = {}\r\n\r\n if (headers instanceof Headers) {\r\n headers.forEach(function(value, name) {\r\n this.append(name, value)\r\n }, this)\r\n } else if (Array.isArray(headers)) {\r\n headers.forEach(function(header) {\r\n this.append(header[0], header[1])\r\n }, this)\r\n } else if (headers) {\r\n Object.getOwnPropertyNames(headers).forEach(function(name) {\r\n this.append(name, headers[name])\r\n }, this)\r\n }\r\n }\r\n\r\n Headers.prototype.append = function(name, value) {\r\n name = normalizeName(name)\r\n value = normalizeValue(value)\r\n var oldValue = this.map[name]\r\n this.map[name] = oldValue ? oldValue+','+value : value\r\n }\r\n\r\n Headers.prototype['delete'] = function(name) {\r\n delete this.map[normalizeName(name)]\r\n }\r\n\r\n Headers.prototype.get = function(name) {\r\n name = normalizeName(name)\r\n return this.has(name) ? this.map[name] : null\r\n }\r\n\r\n Headers.prototype.has = function(name) {\r\n return this.map.hasOwnProperty(normalizeName(name))\r\n }\r\n\r\n Headers.prototype.set = function(name, value) {\r\n this.map[normalizeName(name)] = normalizeValue(value)\r\n }\r\n\r\n Headers.prototype.forEach = function(callback, thisArg) {\r\n for (var name in this.map) {\r\n if (this.map.hasOwnProperty(name)) {\r\n callback.call(thisArg, this.map[name], name, this)\r\n }\r\n }\r\n }\r\n\r\n Headers.prototype.keys = function() {\r\n var items = []\r\n this.forEach(function(value, name) { items.push(name) })\r\n return iteratorFor(items)\r\n }\r\n\r\n Headers.prototype.values = function() {\r\n var items = []\r\n this.forEach(function(value) { items.push(value) })\r\n return iteratorFor(items)\r\n }\r\n\r\n Headers.prototype.entries = function() {\r\n var items = []\r\n this.forEach(function(value, name) { items.push([name, value]) })\r\n return iteratorFor(items)\r\n }\r\n\r\n if (support.iterable) {\r\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\r\n }\r\n\r\n function consumed(body) {\r\n if (body.bodyUsed) {\r\n return Promise.reject(new TypeError('Already read'))\r\n }\r\n body.bodyUsed = true\r\n }\r\n\r\n function fileReaderReady(reader) {\r\n return new Promise(function(resolve, reject) {\r\n reader.onload = function() {\r\n resolve(reader.result)\r\n }\r\n reader.onerror = function() {\r\n reject(reader.error)\r\n }\r\n })\r\n }\r\n\r\n function readBlobAsArrayBuffer(blob) {\r\n var reader = new FileReader()\r\n var promise = fileReaderReady(reader)\r\n reader.readAsArrayBuffer(blob)\r\n return promise\r\n }\r\n\r\n function readBlobAsText(blob) {\r\n var reader = new FileReader()\r\n var promise = fileReaderReady(reader)\r\n reader.readAsText(blob)\r\n return promise\r\n }\r\n\r\n function readArrayBufferAsText(buf) {\r\n var view = new Uint8Array(buf)\r\n var chars = new Array(view.length)\r\n\r\n for (var i = 0; i < view.length; i++) {\r\n chars[i] = String.fromCharCode(view[i])\r\n }\r\n return chars.join('')\r\n }\r\n\r\n function bufferClone(buf) {\r\n if (buf.slice) {\r\n return buf.slice(0)\r\n } else {\r\n var view = new Uint8Array(buf.byteLength)\r\n view.set(new Uint8Array(buf))\r\n return view.buffer\r\n }\r\n }\r\n\r\n function Body() {\r\n this.bodyUsed = false\r\n\r\n this._initBody = function(body) {\r\n this._bodyInit = body\r\n if (!body) {\r\n this._bodyText = ''\r\n } else if (typeof body === 'string') {\r\n this._bodyText = body\r\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\r\n this._bodyBlob = body\r\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\r\n this._bodyFormData = body\r\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\r\n this._bodyText = body.toString()\r\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\r\n this._bodyArrayBuffer = bufferClone(body.buffer)\r\n // IE 10-11 can't handle a DataView body.\r\n this._bodyInit = new Blob([this._bodyArrayBuffer])\r\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\r\n this._bodyArrayBuffer = bufferClone(body)\r\n } else {\r\n throw new Error('unsupported BodyInit type')\r\n }\r\n\r\n if (!this.headers.get('content-type')) {\r\n if (typeof body === 'string') {\r\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\r\n } else if (this._bodyBlob && this._bodyBlob.type) {\r\n this.headers.set('content-type', this._bodyBlob.type)\r\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\r\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\r\n }\r\n }\r\n }\r\n\r\n if (support.blob) {\r\n this.blob = function() {\r\n var rejected = consumed(this)\r\n if (rejected) {\r\n return rejected\r\n }\r\n\r\n if (this._bodyBlob) {\r\n return Promise.resolve(this._bodyBlob)\r\n } else if (this._bodyArrayBuffer) {\r\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\r\n } else if (this._bodyFormData) {\r\n throw new Error('could not read FormData body as blob')\r\n } else {\r\n return Promise.resolve(new Blob([this._bodyText]))\r\n }\r\n }\r\n\r\n this.arrayBuffer = function() {\r\n if (this._bodyArrayBuffer) {\r\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\r\n } else {\r\n return this.blob().then(readBlobAsArrayBuffer)\r\n }\r\n }\r\n }\r\n\r\n this.text = function() {\r\n var rejected = consumed(this)\r\n if (rejected) {\r\n return rejected\r\n }\r\n\r\n if (this._bodyBlob) {\r\n return readBlobAsText(this._bodyBlob)\r\n } else if (this._bodyArrayBuffer) {\r\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\r\n } else if (this._bodyFormData) {\r\n throw new Error('could not read FormData body as text')\r\n } else {\r\n return Promise.resolve(this._bodyText)\r\n }\r\n }\r\n\r\n if (support.formData) {\r\n this.formData = function() {\r\n return this.text().then(decode)\r\n }\r\n }\r\n\r\n this.json = function() {\r\n return this.text().then(JSON.parse)\r\n }\r\n\r\n return this\r\n }\r\n\r\n // HTTP methods whose capitalization should be normalized\r\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\r\n\r\n function normalizeMethod(method) {\r\n var upcased = method.toUpperCase()\r\n return (methods.indexOf(upcased) > -1) ? upcased : method\r\n }\r\n\r\n function Request(input, options) {\r\n options = options || {}\r\n var body = options.body\r\n\r\n if (input instanceof Request) {\r\n if (input.bodyUsed) {\r\n throw new TypeError('Already read')\r\n }\r\n this.url = input.url\r\n this.credentials = input.credentials\r\n if (!options.headers) {\r\n this.headers = new Headers(input.headers)\r\n }\r\n this.method = input.method\r\n this.mode = input.mode\r\n if (!body && input._bodyInit != null) {\r\n body = input._bodyInit\r\n input.bodyUsed = true\r\n }\r\n } else {\r\n this.url = String(input)\r\n }\r\n\r\n this.credentials = options.credentials || this.credentials || 'omit'\r\n if (options.headers || !this.headers) {\r\n this.headers = new Headers(options.headers)\r\n }\r\n this.method = normalizeMethod(options.method || this.method || 'GET')\r\n this.mode = options.mode || this.mode || null\r\n this.referrer = null\r\n\r\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\r\n throw new TypeError('Body not allowed for GET or HEAD requests')\r\n }\r\n this._initBody(body)\r\n }\r\n\r\n Request.prototype.clone = function() {\r\n return new Request(this, { body: this._bodyInit })\r\n }\r\n\r\n function decode(body) {\r\n var form = new FormData()\r\n body.trim().split('&').forEach(function(bytes) {\r\n if (bytes) {\r\n var split = bytes.split('=')\r\n var name = split.shift().replace(/\\+/g, ' ')\r\n var value = split.join('=').replace(/\\+/g, ' ')\r\n form.append(decodeURIComponent(name), decodeURIComponent(value))\r\n }\r\n })\r\n return form\r\n }\r\n\r\n function parseHeaders(rawHeaders) {\r\n var headers = new Headers()\r\n rawHeaders.split(/\\r?\\n/).forEach(function(line) {\r\n var parts = line.split(':')\r\n var key = parts.shift().trim()\r\n if (key) {\r\n var value = parts.join(':').trim()\r\n headers.append(key, value)\r\n }\r\n })\r\n return headers\r\n }\r\n\r\n Body.call(Request.prototype)\r\n\r\n function Response(bodyInit, options) {\r\n if (!options) {\r\n options = {}\r\n }\r\n\r\n this.type = 'default'\r\n this.status = 'status' in options ? options.status : 200\r\n this.ok = this.status >= 200 && this.status < 300\r\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\r\n this.headers = new Headers(options.headers)\r\n this.url = options.url || ''\r\n this._initBody(bodyInit)\r\n }\r\n\r\n Body.call(Response.prototype)\r\n\r\n Response.prototype.clone = function() {\r\n return new Response(this._bodyInit, {\r\n status: this.status,\r\n statusText: this.statusText,\r\n headers: new Headers(this.headers),\r\n url: this.url\r\n })\r\n }\r\n\r\n Response.error = function() {\r\n var response = new Response(null, {status: 0, statusText: ''})\r\n response.type = 'error'\r\n return response\r\n }\r\n\r\n var redirectStatuses = [301, 302, 303, 307, 308]\r\n\r\n Response.redirect = function(url, status) {\r\n if (redirectStatuses.indexOf(status) === -1) {\r\n throw new RangeError('Invalid status code')\r\n }\r\n\r\n return new Response(null, {status: status, headers: {location: url}})\r\n }\r\n\r\n self.Headers = Headers\r\n self.Request = Request\r\n self.Response = Response\r\n\r\n self.fetch = function(input, init) {\r\n return new Promise(function(resolve, reject) {\r\n var request = new Request(input, init)\r\n var xhr = new XMLHttpRequest()\r\n\r\n xhr.onload = function() {\r\n var options = {\r\n status: xhr.status,\r\n statusText: xhr.statusText,\r\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\r\n }\r\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\r\n var body = 'response' in xhr ? xhr.response : xhr.responseText\r\n resolve(new Response(body, options))\r\n }\r\n\r\n xhr.onerror = function() {\r\n reject(new TypeError('Network request failed'))\r\n }\r\n\r\n xhr.ontimeout = function() {\r\n reject(new TypeError('Network request failed'))\r\n }\r\n\r\n xhr.open(request.method, request.url, true)\r\n\r\n if (request.credentials === 'include') {\r\n xhr.withCredentials = true\r\n }\r\n\r\n if ('responseType' in xhr && support.blob) {\r\n xhr.responseType = 'blob'\r\n }\r\n\r\n request.headers.forEach(function(value, name) {\r\n xhr.setRequestHeader(name, value)\r\n })\r\n\r\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\r\n })\r\n }\r\n self.fetch.polyfill = true\r\n})(typeof self !== 'undefined' ? self : this);\r\n","(function (window) {\r\n $number_type = Number;\r\n $number_type.__typeName = \"Number\";\r\n $number_type.__class = true;\r\n $number_prototype = $number_type.prototype;\r\n \r\n $number_prototype.toLocaleFixed = function (decimals, languageTag) {\r\n if (languageTag === null || languageTag === undefined) {\r\n languageTag = \"fi-fi\";\r\n }\r\n return this.toLocaleString(languageTag,\r\n {\r\n minimumFractionDigits: decimals,\r\n maximumFractionDigits: decimals\r\n });\r\n };\r\n\r\n $number_prototype.roundToDecimals = function (decimals) {\r\n if (decimals === null || decimals === undefined) {\r\n decimals = 2;\r\n }\r\n var divider = Math.pow(10, decimals);\r\n return Math.round(this * divider) / divider;\r\n };\r\n\r\n //isInteger: Polyfill\r\n if (!$number_type.isInteger) {\r\n $number_type.isInteger = function(value) {\r\n return typeof value === \"number\" && \r\n isFinite(value) && \r\n Math.floor(value) === value;\r\n };\r\n }\r\n})(typeof window !== \"undefined\" ? window : this);\r\n\r\n","// String.js - liberated from MicrosoftAjax.js on 03/28/10 by Sky Sanders \r\n// permalink: http://stackoverflow.com/a/2534834/2343\r\n\r\n/*\r\n Copyright (c) 2009, CodePlex Foundation\r\n All rights reserved.\r\n\r\n Redistribution and use in source and binary forms, with or without modification, are permitted \r\n provided that the following conditions are met:\r\n\r\n * Redistributions of source code must retain the above copyright notice, this list of conditions \r\n and the following disclaimer.\r\n\r\n * Redistributions in binary form must reproduce the above copyright notice, this list of conditions \r\n and the following disclaimer in the documentation and/or other materials provided with the distribution.\r\n\r\n * Neither the name of CodePlex Foundation nor the names of its contributors may be used to endorse or \r\n promote products derived from this software without specific prior written permission.\r\n\r\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY EXPRESS OR IMPLIED \r\n WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR \r\n A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE \r\n FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT \r\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS \r\n INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, \r\n OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN \r\n IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r\n*/\r\n\r\n(function (window) {\r\n\r\n $String_type = String;\r\n $String_type.__typeName = 'String';\r\n $String_type.__class = true;\r\n $String_type.__numbers = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"];\r\n\r\n $String_prototype = $String_type.prototype;\r\n $String_prototype.endsWith = function string$endsWith(suffix) {\r\n /// Determines whether the end of this instance matches the specified string.\r\n /// A string to compare to.\r\n /// true if suffix matches the end of this instance; otherwise, false.\r\n return (this.substr(this.length - suffix.length) === suffix);\r\n };\r\n\r\n $String_prototype.startsWith = function string$startsWith(prefix) {\r\n /// Determines whether the beginning of this instance matches the specified string.\r\n /// The String to compare.\r\n /// true if prefix matches the beginning of this string; otherwise, false.\r\n return (this.substr(0, prefix.length) === prefix);\r\n };\r\n\r\n $String_prototype.trim = function string$trim() {\r\n /// Removes all leading and trailing white-space characters from the current String object.\r\n /// The string that remains after all white-space characters are removed from the start and end of the current String object.\r\n return this.replace(/^\\s+|\\s+$/g, '');\r\n };\r\n\r\n $String_prototype.trimEnd = function string$trimEnd() {\r\n /// Removes all trailing white spaces from the current String object.\r\n /// The string that remains after all white-space characters are removed from the end of the current String object.\r\n return this.replace(/\\s+$/, '');\r\n };\r\n\r\n $String_prototype.trimStart = function string$trimStart() {\r\n /// Removes all leading white spaces from the current String object.\r\n /// The string that remains after all white-space characters are removed from the start of the current String object.\r\n return this.replace(/^\\s+/, '');\r\n };\r\n\r\n $String_prototype.repeat = String.prototype.repeat || function (n) { return new Array(n + 1).join(this.toString()) };\r\n\r\n $String_prototype.numberString = function (allowNegative) {\r\n if (allowNegative === void 0) { allowNegative = false; }\r\n var result = \"\";\r\n var prefix = \"\";\r\n var wasNumber = false;\r\n var i;\r\n var chr;\r\n for (i = 0; i <= this.length - 1; i++) {\r\n chr = this.charAt(i);\r\n if ($String_type.__numbers.indexOf(chr) > -1) {\r\n result = result + chr;\r\n wasNumber = true;\r\n }\r\n else {\r\n if (!wasNumber && allowNegative && prefix === \"\" && (chr === \"-\" || chr === \"−\")) {\r\n prefix = \"-\";\r\n }\r\n wasNumber = false;\r\n }\r\n }\r\n return prefix + result;\r\n };\r\n\r\n $String_prototype.toInteger = function (allowNegative, minValue) {\r\n if (allowNegative === void 0) { allowNegative = false; }\r\n if (minValue === void 0) { minValue = 0; }\r\n var temp = this.numberString(allowNegative);\r\n if (minValue === null || minValue === undefined) {\r\n minValue = 0;\r\n }\r\n if (temp === \"\" || temp === \"-\" || temp === \"−\") {\r\n temp = minValue;\r\n }\r\n return Math.max(parseInt(temp, 10), minValue);\r\n };\r\n\r\n $String_prototype.toDecimal = function (allowNegative, removeSpaces) {\r\n if (allowNegative === void 0) { allowNegative = false; }\r\n if (removeSpaces === void 0) { removeSpaces = true; }\r\n var temp = this.trim();\r\n if (removeSpaces) {\r\n temp = temp.replace(/\\s/g, \"\");\r\n }\r\n var multiplier = 1;\r\n var integer = 0;\r\n var decimal = 0;\r\n if (temp.length > 0) {\r\n var integerStr = \"\";\r\n var decimalStr = \"\";\r\n var index = 0;\r\n var wasNumber = false;\r\n var i;\r\n for (i = 0; i <= temp.length - 1; i++) {\r\n var chr = temp.charAt(i);\r\n if (removeSpaces && chr === \" \") {\r\n continue;\r\n }\r\n if ($String_type.__numbers.indexOf(chr) > -1) {\r\n switch (index) {\r\n case 0:\r\n integerStr = integerStr + chr;\r\n break;\r\n case 1:\r\n decimalStr = decimalStr + chr;\r\n break;\r\n }\r\n wasNumber = true;\r\n }\r\n else {\r\n if (wasNumber) {\r\n index = index + 1;\r\n }\r\n else if (index === 0) {\r\n if (chr === \"-\" || chr === \"−\") {\r\n if (allowNegative && multiplier === 1) {\r\n multiplier = -1;\r\n }\r\n } else if (integerStr === \"\") { //decimal separator in the start of the string\r\n integerStr = \"0\";\r\n index = index + 1;\r\n }\r\n }\r\n wasNumber = false;\r\n }\r\n }\r\n if (integerStr.length > 0) {\r\n if (integerStr.length > 9) {\r\n integerStr = integerStr.substr(0, 9);\r\n }\r\n integer = parseInt(integerStr, 10);\r\n if (decimalStr.length > 0) {\r\n if (decimalStr.length > 6) {\r\n decimalStr = decimalStr.substr(0, 6);\r\n }\r\n else if (decimalStr.length < 6) {\r\n var j = decimalStr.length;\r\n var k;\r\n for (k = 1; k <= 6 - j; k++) {\r\n decimalStr = decimalStr + \"0\";\r\n }\r\n }\r\n decimal = parseInt(decimalStr, 10);\r\n }\r\n }\r\n }\r\n return multiplier * (integer + decimal / 1000000);\r\n };\r\n\r\n $String_prototype.parseDateParts = function (defaultDate) {\r\n var d = defaultDate;\r\n var year = d.getFullYear();\r\n var month = d.getMonth() + 1;\r\n var day = d.getDate();\r\n var temp = this.trim();\r\n if (temp.length > 0) {\r\n var yearStr = \"\";\r\n var monthStr = \"\";\r\n var dayStr = \"\";\r\n var index = 0;\r\n var wasNumber = false;\r\n var wasIncreased = false;\r\n var i;\r\n for (i = 0; i <= temp.length - 1; i++) {\r\n var chr = temp.charAt(i);\r\n if ($String_type.__numbers.indexOf(chr) > -1) {\r\n wasIncreased = false;\r\n switch (index) {\r\n case 0:\r\n dayStr = dayStr + chr;\r\n if (dayStr.length > 1) {\r\n index = index + 1;\r\n wasIncreased = true;\r\n }\r\n break;\r\n case 1:\r\n monthStr = monthStr + chr;\r\n if (monthStr.length > 1) {\r\n index = index + 1;\r\n wasIncreased = true;\r\n }\r\n break;\r\n case 2:\r\n yearStr = yearStr + chr;\r\n if (yearStr.length > 3) {\r\n index = index + 1;\r\n wasIncreased = true;\r\n }\r\n break;\r\n }\r\n wasNumber = true;\r\n }\r\n else {\r\n if (wasNumber && !wasIncreased) {\r\n index = index + 1;\r\n }\r\n wasNumber = false;\r\n }\r\n }\r\n if (dayStr.length > 0) {\r\n day = Math.min(31, Math.max(1, parseInt(dayStr, 10)));\r\n if (monthStr.length > 0) {\r\n month = Math.min(12, Math.max(1, parseInt(monthStr, 10)));\r\n if (yearStr.length > 0) {\r\n year = Math.min(2100, Math.max(10, parseInt(yearStr, 10)));\r\n if (year < 100) {\r\n year = 2000 + year;\r\n }\r\n }\r\n }\r\n if ((month === 4 || month === 6 || month === 9 || month === 11) && (day > 30)) {\r\n day = 30;\r\n }\r\n else if (month === 2) {\r\n if (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0)) {\r\n day = Math.min(29, day);\r\n }\r\n else {\r\n day = Math.min(28, day);\r\n }\r\n }\r\n }\r\n }\r\n return {\r\n year: year, \r\n month: month - 1, \r\n day: day\r\n };\r\n };\r\n\r\n $String_prototype.toDate = function (defaultDate) {\r\n if (defaultDate === void 0) { defaultDate = new Date(); }\r\n var parts = this.parseDateParts(defaultDate);\r\n return new Date(parts.year, parts.month, parts.day, 0, 0, 0, 0);\r\n };\r\n\r\n $String_prototype.toUtcDate = function (defaultDate) {\r\n if (defaultDate === void 0) {\r\n var newDate = new Date();\r\n defaultDate = new Date(Date.UTC(newDate.getUTCFullYear(), newDate.getUTCMonth(), newDate.getUTCDate(), 0, 0, 0, 0));\r\n }\r\n var parts = this.parseDateParts(defaultDate);\r\n return new Date(Date.UTC(parts.year, parts.month, parts.day, 0, 0, 0, 0));\r\n };\r\n\r\n $String_prototype.parseTimeParts = function (defaultDate, maxHour) {\r\n if (maxHour === null || maxHour === undefined) {\r\n maxHour = 23;\r\n }\r\n var hourMaxLength = maxHour.toString(10).length;\r\n var d = defaultDate;\r\n var hour = d !== null && d !== undefined ? d.getHours() : 0;\r\n var minute = d !== null && d !== undefined ? d.getMinutes() : 0;\r\n var temp = this.trim();\r\n if (temp.length > 0) {\r\n minute = 0;\r\n var hourStr = \"\";\r\n var minuteStr = \"\";\r\n var index = 0;\r\n var wasNumber = false;\r\n var wasIncreased = false;\r\n var i;\r\n for (i = 0; i <= temp.length - 1; i++) {\r\n var chr = temp.charAt(i);\r\n if ($String_type.__numbers.indexOf(chr) > -1) {\r\n wasIncreased = false;\r\n switch (index) {\r\n case 0:\r\n hourStr = hourStr + chr;\r\n if (hourStr.length > hourMaxLength - 1) {\r\n index = index + 1;\r\n wasIncreased = true;\r\n }\r\n break;\r\n case 1:\r\n minuteStr = minuteStr + chr;\r\n if (minuteStr.length > 1) {\r\n index = index + 1;\r\n wasIncreased = true;\r\n }\r\n break;\r\n }\r\n wasNumber = true;\r\n } else {\r\n if (wasNumber && !wasIncreased) {\r\n index = index + 1;\r\n }\r\n wasNumber = false;\r\n }\r\n }\r\n if (hourStr.length > 0) {\r\n hour = Math.min(maxHour, parseInt(hourStr, 10));\r\n if (minuteStr.length > 1) {\r\n minute = Math.min(59, parseInt(minuteStr, 10));\r\n } else if (minuteStr.length > 0) {\r\n minute = Math.min(59, 10 * parseInt(minuteStr, 10));\r\n }\r\n }\r\n }\r\n return {\r\n hour: hour, \r\n minute: minute\r\n };\r\n };\r\n\r\n $String_prototype.toTime = function () {\r\n var parts = this.parseTimeParts(new Date());\r\n return new Date(0, 0, 0, parts.hour, parts.minute, 0, 0);\r\n };\r\n\r\n $String_prototype.toUtcTime = function () {\r\n var newDate = new Date();\r\n var parts = this.parseTimeParts(new Date(Date.UTC(0, 0, 0, newDate.getUTCHours(), newDate.getUTCMinutes(), 0, 0)));\r\n return new Date(Date.UTC(0, 0, 0, parts.hour, parts.minute, 0, 0));\r\n };\r\n\r\n $String_prototype.toTimeSpan = function () {\r\n var parts = this.parseTimeParts(null, 1000000);\r\n return parts.hour + (parts.minute / 60);\r\n };\r\n\r\n $String_prototype.equalIgnoreCase = function(str)\r\n {\r\n return (str !== null\r\n && str !== undefined\r\n && typeof str === \"string\"\r\n && this.toUpperCase() === str.toUpperCase());\r\n };\r\n\r\n $String_type.format = function string$format(format, args) {\r\n /// Replaces the format items in a specified String with the text equivalents of the values of corresponding object instances. The invariant culture will be used to format dates and numbers.\r\n /// A format string.\r\n /// The objects to format.\r\n /// A copy of format in which the format items have been replaced by the string equivalent of the corresponding instances of object arguments.\r\n return String._toFormattedString(false, arguments);\r\n };\r\n\r\n $String_type._toFormattedString = function string$_toFormattedString(useLocale, args) {\r\n var result = '';\r\n var format = args[0];\r\n\r\n for (var i = 0; ;) {\r\n // Find the next opening or closing brace\r\n var open = format.indexOf('{', i);\r\n var close = format.indexOf('}', i);\r\n if ((open < 0) && (close < 0)) {\r\n // Not found: copy the end of the string and break\r\n result += format.slice(i);\r\n break;\r\n }\r\n if ((close > 0) && ((close < open) || (open < 0))) {\r\n\r\n if (format.charAt(close + 1) !== '}') {\r\n throw new Error('format stringFormatBraceMismatch');\r\n }\r\n\r\n result += format.slice(i, close + 1);\r\n i = close + 2;\r\n continue;\r\n }\r\n\r\n // Copy the string before the brace\r\n result += format.slice(i, open);\r\n i = open + 1;\r\n\r\n // Check for double braces (which display as one and are not arguments)\r\n if (format.charAt(i) === '{') {\r\n result += '{';\r\n i++;\r\n continue;\r\n }\r\n\r\n if (close < 0) throw new Error('format stringFormatBraceMismatch');\r\n\r\n\r\n // Find the closing brace\r\n\r\n // Get the string between the braces, and split it around the ':' (if any)\r\n var brace = format.substring(i, close);\r\n var colonIndex = brace.indexOf(':');\r\n var argNumber = parseInt((colonIndex < 0) ? brace : brace.substring(0, colonIndex), 10) + 1;\r\n\r\n if (isNaN(argNumber)) throw new Error('format stringFormatInvalid');\r\n\r\n var argFormat = (colonIndex < 0) ? '' : brace.substring(colonIndex + 1);\r\n\r\n var arg = args[argNumber];\r\n if (typeof (arg) === \"undefined\" || arg === null) {\r\n arg = '';\r\n }\r\n\r\n // If it has a toFormattedString method, call it. Otherwise, call toString()\r\n if (arg.toFormattedString) {\r\n result += arg.toFormattedString(argFormat);\r\n }\r\n else if (useLocale && arg.localeFormat) {\r\n result += arg.localeFormat(argFormat);\r\n }\r\n else if (arg.format) {\r\n result += arg.format(argFormat);\r\n }\r\n else\r\n result += arg.toString();\r\n\r\n i = close + 1;\r\n }\r\n\r\n return result;\r\n };\r\n\r\n //ECMAScript 2015 Polyfill\r\n if (!$String_prototype.includes) {\r\n $String_prototype.includes = function(search, start) {\r\n \"use strict\";\r\n if (typeof start !== \"number\") {\r\n start = 0;\r\n }\r\n if (start + search.length > this.length) {\r\n return false;\r\n } else {\r\n return this.indexOf(search, start) !== -1;\r\n }\r\n };\r\n }\r\n\r\n})(typeof window !== \"undefined\" ? window : this);","// CheckBoxDropdown\r\n// ***********************************************************************************************************************\r\nimport { Checkbox, ListItemText, MenuItem, Select, SelectChangeEvent } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"../../../../framework/base\";\r\n\r\nexport interface ICheckboxDropdownItem {\r\n classes?: string;\r\n disabled?: boolean;\r\n id: string;\r\n getTitle(): string;\r\n}\r\n\r\nexport interface ICheckboxDropdownProp {\r\n autoFocus?: boolean;\r\n classes?: string;\r\n buttonClasses?: string;\r\n disabled?: boolean;\r\n menuRight?: boolean;\r\n required?: boolean;\r\n selectedIds: string[];\r\n toggleAll?: boolean;\r\n toggleAllId?: string;\r\n toggleNotSetId?: string;\r\n values: ICheckboxDropdownItem[];\r\n onChange: (selectedIds: string[]) => void;\r\n}\r\n\r\nexport interface ICheckboxDropdownState {\r\n selectedValueTitles: string;\r\n}\r\n\r\nexport class CheckboxDropdown extends React.Component {\r\n dropdownId: string;\r\n\r\n constructor(props: ICheckboxDropdownProp) {\r\n super(props);\r\n this.dropdownId = Base.getGuid();\r\n }\r\n\r\n handleChange = (event: SelectChangeEvent) => {\r\n const {\r\n target: { value },\r\n } = event;\r\n\r\n let values = typeof value === \"string\" ? [value] : value;\r\n const toggleAllId = this.props.toggleAllId || \"\";\r\n const notSetId = this.props.toggleNotSetId ?? \"00000000-0000-0000-0000-000000001111\";\r\n\r\n if (this.props.toggleAll) {\r\n if (values.length === 0) {\r\n values = [toggleAllId];\r\n } else if (values.length === 1) {\r\n if (values[0] === toggleAllId || values[0] === notSetId) {\r\n return;\r\n }\r\n } else {\r\n if (values.includes(toggleAllId)) {\r\n if (values.indexOf(toggleAllId) === values.length - 1) {\r\n values = [toggleAllId];\r\n } else {\r\n values = values.filter(item => item !== toggleAllId);\r\n }\r\n }\r\n if (values.includes(notSetId)) {\r\n if (values.indexOf(notSetId) === values.length - 1) {\r\n values = [notSetId];\r\n } else {\r\n values = values.filter(item => item !== notSetId);\r\n }\r\n }\r\n }\r\n }\r\n \r\n this.props.onChange(values);\r\n };\r\n\r\n handleClearClick = () => {\r\n const props = this.props;\r\n if (props.disabled) return;\r\n props.onChange([]);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n return (\r\n
\r\n props.values.filter(item => selected.includes(item.id)).map(item => item.getTitle()).join(\", \")}\r\n size=\"small\"\r\n fullWidth\r\n >\r\n {props.values.map(item =>\r\n \r\n -1} />\r\n \r\n \r\n )}\r\n \r\n
\r\n );\r\n }\r\n}\r\n","// TreeCheckBoxDropdownItems\r\nimport * as React from \"react\";\r\n// import { ToolButton } from \"./toolButton\";\r\nimport { Checkbox, ListItemButton, ListItemText } from \"@mui/material\";\r\nimport { Base } from \"../../../../../framework/base\";\r\nimport { IIdTitleNode, IdTitleNode } from \"../../../../../models/common/idTitleNode\";\r\nimport { TreeCheckboxDropdownValueWithComment } from \"../TreeCheckboxDropdownValueWithComment\";\r\n\r\n// ***********************************************************************************************************************\r\nexport interface ITreeCheckBoxDropdownChildProp {\r\n isActive: boolean;\r\n item: ITreeCheckBoxDropdownItem;\r\n level: number;\r\n selectedIds: string[];\r\n singleSelect: boolean;\r\n showComment: boolean;\r\n onToggleItem: (item: ITreeCheckBoxDropdownItem, checked: boolean, hasChildren: boolean) => void;\r\n}\r\n\r\nclass TreeCheckBoxDropdownChild extends React.Component {\r\n render() {\r\n const props = this.props;\r\n const item = props.item;\r\n const hasChildren = item.hasChildren();\r\n const selected = props.selectedIds.indexOf(item.id) > -1;\r\n const disabled = item.disabled || !item.active;\r\n return (\r\n <>\r\n {!props.singleSelect &&\r\n { e.stopPropagation(); e.preventDefault(); props.onToggleItem(item, !selected, hasChildren); }}>\r\n \r\n {item.title}\r\n \r\n }\r\n {!!props.singleSelect && !props.showComment &&\r\n props.onToggleItem(item, true, false)}>\r\n {item.title}\r\n \r\n }\r\n {!!props.singleSelect && !!props.showComment &&\r\n props.onToggleItem(item, true, false)}>\r\n \r\n \r\n }\r\n {item.children.map((childItem) =>\r\n \r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport interface ITreeCheckBoxDropdownItem extends IIdTitleNode {\r\n classes?: string;\r\n disabled?: boolean;\r\n}\r\n\r\nexport interface ITreeCheckBoxDropdownItemsProp {\r\n classes?: string;\r\n disabled?: boolean;\r\n selectedIds: string[];\r\n singleSelect?: boolean;\r\n showComment?: boolean;\r\n toggleAllId?: string;\r\n toggleNotSetId?: string;\r\n values: ITreeCheckBoxDropdownItem[];\r\n onChange: (selectedIds: string[]) => void;\r\n onToggleDropdown?: () => void;\r\n}\r\n\r\nexport class TreeCheckBoxDropdownItems extends React.Component {\r\n handleToggleItem = (item: ITreeCheckBoxDropdownItem, checked: boolean, hasChildren: boolean) => {\r\n if (!item) return;\r\n const disabled = item.disabled || !item.active;\r\n if (disabled) return;\r\n const props = this.props;\r\n const id = item.id;\r\n const allId = props.toggleAllId ?? Base.emptyGuid;\r\n const notSetId = props.toggleNotSetId ?? \"00000000-0000-0000-0000-000000001111\";\r\n let activeItemIds = props.selectedIds.filter(i => i !== allId && i !== notSetId);\r\n if (hasChildren) {\r\n const parent = IdTitleNode.getById(props.values, id);\r\n if (!parent) return;\r\n const childIds = parent.getActiveChildIds();\r\n activeItemIds = activeItemIds.filter(i => childIds.indexOf(i) < 0 && i !== id);\r\n if (checked) {\r\n activeItemIds.push(id);\r\n activeItemIds = activeItemIds.concat(childIds);\r\n }\r\n } else {\r\n if (id === allId) {\r\n if (checked) {\r\n props.onChange([allId]);\r\n return;\r\n } else if (activeItemIds.length < 1 && props.values.length > 1) {\r\n activeItemIds.push(props.values[1].id);\r\n }\r\n } else if (id === notSetId) {\r\n if (checked) {\r\n props.onChange([notSetId]);\r\n return;\r\n } else if (activeItemIds.length < 1 && props.values.length > 0) {\r\n activeItemIds.push(props.values[0].id);\r\n }\r\n } else {\r\n if (checked) {\r\n if (activeItemIds.indexOf(id) < 0) {\r\n activeItemIds.push(id);\r\n }\r\n } else {\r\n activeItemIds = activeItemIds.filter(i => i !== id);\r\n }\r\n }\r\n }\r\n if (activeItemIds.length < 1) {\r\n activeItemIds.push(allId);\r\n }\r\n props.onChange(activeItemIds);\r\n };\r\n\r\n handleSetSingleItem = (item: ITreeCheckBoxDropdownItem) => {\r\n const props = this.props;\r\n if (!item) return;\r\n const disabled = item.disabled || !item.active;\r\n if (disabled) return;\r\n props.onChange([item.id]);\r\n if (!props.onToggleDropdown) return;\r\n props.onToggleDropdown();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const singleSelect = !!props.singleSelect;\r\n return (\r\n <>\r\n {props.values.map((item) => {\r\n const hasChildren = item.hasChildren();\r\n const selected = props.selectedIds.indexOf(item.id) > -1;\r\n const disabled = item.disabled || !item.active;\r\n return
\r\n {!singleSelect &&\r\n { e.stopPropagation(); e.preventDefault(); this.handleToggleItem(item, !selected, hasChildren); }} sx={{ maxHeight: \"42px\" }}>\r\n \r\n {item.title}\r\n \r\n }\r\n {singleSelect && !props.showComment &&\r\n this.handleSetSingleItem(item)} sx={{ maxHeight: \"42px\" }} selected={selected}>\r\n {item.title}\r\n \r\n }\r\n {singleSelect && !!props.showComment &&\r\n this.handleSetSingleItem(item)} sx={{ height: \"auto\", minHeight: \"42px\" }} selected={selected}>\r\n \r\n \r\n }\r\n {item.children.map((childItem) =>\r\n this.handleSetSingleItem(item)}\r\n />\r\n )}\r\n
;\r\n })}\r\n \r\n );\r\n }\r\n}\r\n","import { Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ITreeCheckBoxDropdownItem } from \"../TreeCheckboxDropdownItems/TreeCheckboxDropdownItems\";\r\n\r\ninterface ITreeCheckboxDropdownValueWithCommentProps {\r\n item: ITreeCheckBoxDropdownItem;\r\n}\r\n\r\nexport const TreeCheckboxDropdownValueWithComment = (props: ITreeCheckboxDropdownValueWithCommentProps) => (\r\n
\r\n {props.item.getTitle()}\r\n {props.item.comment &&\r\n {props.item.comment}\r\n }\r\n
\r\n);\r\n","import { Select } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { IIdTitleNode, IdTitleNode } from \"../../../../models/common/idTitleNode\";\r\nimport { ITreeCheckBoxDropdownItem, TreeCheckBoxDropdownItems } from \"./TreeCheckboxDropdownItems\";\r\nimport { TreeCheckboxDropdownValueWithComment } from \"./TreeCheckboxDropdownValueWithComment\";\r\n\r\n// TreeCheckBoxDropdown\r\n// ***********************************************************************************************************************\r\nexport interface ITreeCheckboxDropdownProp {\r\n autoFocus?: boolean;\r\n classes?: string;\r\n buttonClasses?: string;\r\n disabled?: boolean;\r\n menuRight?: boolean;\r\n required?: boolean;\r\n selectedIds: string[];\r\n singleSelect?: boolean;\r\n toggleAllId?: string;\r\n toggleNotSetId?: string;\r\n hideParentsInSelection?: boolean;\r\n showCommentInSelection?: boolean;\r\n showCommentInDropdown?: boolean;\r\n values: ITreeCheckBoxDropdownItem[];\r\n onChange: (selectedIds: string[]) => void;\r\n}\r\n\r\nexport interface ITreeCheckboxDropdownState {\r\n open: boolean;\r\n selectedValueStr: string;\r\n selectedValue: React.ReactNode | string;\r\n}\r\n\r\nexport class TreeCheckboxDropdown extends React.Component {\r\n private getSelectedNodes = (props: ITreeCheckboxDropdownProp): IIdTitleNode[] => {\r\n let result = IdTitleNode.getByIds(props.values, props.selectedIds);\r\n if (props.hideParentsInSelection) {\r\n result = result.filter(i => !i.hasChildren());\r\n }\r\n return result;\r\n };\r\n\r\n private getSelectedValueStr = (props: ITreeCheckboxDropdownProp, selectedNodes: IIdTitleNode[]): string => {\r\n if (!props.showCommentInSelection) {\r\n return selectedNodes.map(i => i.getTitle()).join(\", \");\r\n } else {\r\n return selectedNodes.map(i => i.getTitle() + (i.comment ? \" (\" + i.comment + \")\" : \"\")).join(\", \");\r\n }\r\n };\r\n\r\n private getSelectedValue = (props: ITreeCheckboxDropdownProp, selectedNodes: IIdTitleNode[], selectedValueStr: string): React.ReactNode | string => {\r\n if (props.showCommentInSelection && props.singleSelect && selectedNodes.length === 1) {\r\n const item = selectedNodes[0];\r\n return ;\r\n }\r\n return selectedValueStr;\r\n };\r\n\r\n constructor(props: ITreeCheckboxDropdownProp) {\r\n super(props);\r\n const selectedNodes = this.getSelectedNodes(props);\r\n const selectedValueStr = this.getSelectedValueStr(props, selectedNodes);\r\n this.state = {\r\n open: false,\r\n selectedValueStr,\r\n selectedValue: this.getSelectedValue(props, selectedNodes, selectedValueStr)\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps: ITreeCheckboxDropdownProp, prevState: ITreeCheckboxDropdownState): void {\r\n const selectedNodes = this.getSelectedNodes(this.props);\r\n const selectedValueStr = this.getSelectedValueStr(this.props, selectedNodes);\r\n if (prevState.selectedValueStr === selectedValueStr) return;\r\n this.setState({\r\n selectedValueStr,\r\n selectedValue: this.getSelectedValue(this.props, selectedNodes, selectedValueStr)\r\n });\r\n }\r\n\r\n handleClearClick = () => {\r\n const props = this.props;\r\n if (props.disabled) return;\r\n props.onChange([]);\r\n };\r\n\r\n handleClose = () => {\r\n this.setState({\r\n open: false\r\n });\r\n };\r\n \r\n handleOpen = () => {\r\n this.setState({\r\n open: true\r\n });\r\n };\r\n\r\n handleToggleDropdown = () => {\r\n this.setState({\r\n open: !this.state.open\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n state.selectedValue}\r\n size=\"small\"\r\n fullWidth\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n}","/* global GeolocationPositionError, Geolocation, google, CustomModels */\r\nimport * as moment from \"moment\";\r\nimport { Translations } from \"../models/translations\";\r\n\r\ndeclare const fileExtensions: CustomModels.FileExtensions;\r\n\r\nexport interface IIdItem {\r\n id: string;\r\n}\r\n\r\nexport interface ILocationResult {\r\n latitude: number;\r\n longitude: number;\r\n locationName: string;\r\n positionErrorCode: number;\r\n}\r\n\r\nexport class Base {\r\n static oneHourInMs = 60 * 60 * 1000;\r\n\r\n static logTest(line: string) {\r\n console.log(\"log line: \" + line);\r\n }\r\n\r\n static isNullOrUndefined(test: any): boolean {\r\n return test === null || test === undefined;\r\n }\r\n\r\n static isNullOrEmpty(test: string): boolean {\r\n return test === null || test === undefined || test === \"\";\r\n }\r\n\r\n static nullToEmpty(test: string): string {\r\n return test !== null && test !== undefined ? test : \"\";\r\n }\r\n\r\n static isInteger(value: any): boolean {\r\n return typeof value === \"number\" &&\r\n isFinite(value) &&\r\n Math.floor(value) === value;\r\n };\r\n\r\n static isString(data: any): data is string {\r\n return typeof data === \"string\";\r\n }\r\n\r\n static getRandomIntInteger(maxValue: number): number {\r\n return Math.floor(Math.random() * maxValue);\r\n }\r\n\r\n // Round away from zero\r\n static roundToDecimals(value: number, decimals: number): number {\r\n const dec = Math.pow(10, decimals ?? 0);\r\n const sign = value < 0 ? -1 : 1;\r\n return Math.round((value + sign * Number.EPSILON) * dec) / dec;\r\n }\r\n\r\n //static isString(value: any): boolean {\r\n // return typeof value === \"string\";\r\n //}\r\n\r\n static intToFileSizeStr(n: number, addBrackets: boolean = true) :string {\r\n const kb = 1024;\r\n const mb = kb * 1024;\r\n if (n < mb) return (addBrackets ? \"(\" : \"\") + (`${(n / kb).toFixed(1)} KB`) + (addBrackets ? \")\" : \"\");\r\n return (addBrackets ? \"(\" : \"\") + (`${(n / mb).toFixed(1)} MB`) + (addBrackets ? \")\" : \"\");\r\n }\r\n\r\n static upperCaseFirst(str: string) :string {\r\n if (!str) return str;\r\n const result = str[0].toLocaleUpperCase();\r\n if (str.length < 2) return result;\r\n return result + str.substring(1);\r\n }\r\n\r\n static hasNumber(str: string): boolean {\r\n if (Base.isNullOrEmpty(str)) return false;\r\n return !!str.match(/\\d/g);\r\n }\r\n\r\n //------------------------------\r\n //Guid\r\n //------------------------------\r\n /* exported getGUID*/\r\n\r\n static emptyGuid = \"00000000-0000-0000-0000-000000000000\";\r\n\r\n static getGuid(): string {\r\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\r\n const r = Math.random() * 16 | 0;\r\n const v = c === \"x\" ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n }).toUpperCase();\r\n }\r\n\r\n static guidToArray(id: string): Uint8Array {\r\n let v;\r\n const result = new Uint8Array(16);\r\n if (!id || id.length !== 36) return result;\r\n // Parse ########-....-....-....-............\r\n result[0] = (v = parseInt(id.slice(0, 8), 16)) >>> 24;\r\n result[1] = (v >>> 16) & 0xff;\r\n result[2] = (v >>> 8) & 0xff;\r\n result[3] = v & 0xff;\r\n // Parse ........-####-....-....-............\r\n result[4] = (v = parseInt(id.slice(9, 13), 16)) >>> 8;\r\n result[5] = v & 0xff;\r\n // Parse ........-....-####-....-............\r\n result[6] = (v = parseInt(id.slice(14, 18), 16)) >>> 8;\r\n result[7] = v & 0xff;\r\n // Parse ........-....-....-####-............\r\n result[8] = (v = parseInt(id.slice(19, 23), 16)) >>> 8;\r\n result[9] = v & 0xff;\r\n // Parse ........-....-....-....-############\r\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\r\n result[10] = ((v = parseInt(id.slice(24, 36), 16)) / 0x10000000000) & 0xff;\r\n result[11] = (v / 0x100000000) & 0xff;\r\n result[12] = (v >>> 24) & 0xff;\r\n result[13] = (v >>> 16) & 0xff;\r\n result[14] = (v >>> 8) & 0xff;\r\n result[15] = v & 0xff;\r\n return result;\r\n }\r\n\r\n static guidToNumber(id: string, size: number): number {\r\n const a = Base.guidToArray(id);\r\n let result = 0;\r\n for (let i = 0; i < a.length; i++) {\r\n result = (result + (i + 1) * a[i]) % size;\r\n }\r\n return result;\r\n }\r\n\r\n //------------------------------\r\n //String\r\n //------------------------------\r\n static strToHashNumber(str: string, size: number): number {\r\n if (!str) return 0;\r\n let result = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n result = (result + (i + 1) * str.charCodeAt(i)) % size;\r\n }\r\n return result;\r\n }\r\n \r\n static padZeros(str: string, zeros: number): string {\r\n return (\"00000000000000000000\" + str).slice(-zeros);\r\n }\r\n\r\n static limitStrLength(str: string, maxLength: number, addEllipsis: boolean = false): string {\r\n if (!str || str.length <= maxLength) return str;\r\n return str.slice(0, maxLength) + (addEllipsis ? \"...\" : \"\");\r\n }\r\n\r\n static joinSuffix(arr: string[], separator?: string): string {\r\n if (!arr || arr.length < 1) return \"\";\r\n const sep = separator ?? \",\";\r\n return arr.join(sep) + sep;\r\n }\r\n\r\n //------------------------------\r\n //Number\r\n //------------------------------\r\n static strToInteger(str: string, min: number = null, max: number = null): number {\r\n const minValue = !Base.isNullOrUndefined(min) ? min : 0;\r\n if (Base.isNullOrEmpty(str)) {\r\n return minValue;\r\n }\r\n let value = str.toInteger(minValue < 0, minValue);\r\n if (!Base.isNullOrUndefined(max)) {\r\n value = Math.min(value, max);\r\n }\r\n return value;\r\n }\r\n\r\n static strToNumber(str: string, min: number = null, max: number = null): number {\r\n const minValue = !Base.isNullOrUndefined(min) ? min : 0;\r\n if (Base.isNullOrEmpty(str)) {\r\n return minValue;\r\n }\r\n let value = str.toDecimal(minValue < 0, true);\r\n if (!Base.isNullOrUndefined(min)) {\r\n value = Math.max(value, min);\r\n }\r\n if (!Base.isNullOrUndefined(max)) {\r\n value = Math.min(value, max);\r\n }\r\n return value;\r\n }\r\n\r\n static filterIntegerStr = (value: string, min: number = null, max: number = null): string => {\r\n let result = value.replace(/[^-0-9−]/g, \"\");\r\n if (Base.isNullOrEmpty(result)) return \"\";\r\n const minValue = !Base.isNullOrUndefined(min) ? min : 0;\r\n const isNegative = minValue < 0 && result.length > 0 && (result[0] === \"-\" || result[0] === \"−\");\r\n let numberStr = (isNegative\r\n ? result.substring(1)\r\n : result).replace(/[^0-9]/g, \"\");\r\n while (numberStr.length > (isNegative ? 0 : 1) && numberStr[0] === \"0\") {\r\n numberStr = numberStr.substring(1);\r\n }\r\n result = (isNegative ? result[0] : \"\") + numberStr;\r\n if (numberStr.length > 0) {\r\n const number = result.toInteger(isNegative, isNegative ? -999999999999999 : 0);\r\n const maxValue = Base.isNullOrUndefined(max)\r\n ? 999999999999999\r\n : max;\r\n if (number < minValue || number > maxValue) {\r\n result = result.substring(0, result.length - 1);\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n static filterDecimalStr = (value: string, min: number = null, max: number = null, decimals: number = null): string => {\r\n let result = value.replace(/[^-0-9,.−]/g, \"\");\r\n if (Base.isNullOrEmpty(result)) return \"\";\r\n const minValue = !Base.isNullOrUndefined(min) ? min : 0;\r\n const isNegative = minValue < 0 && result.length > 0 && (result[0] === \"-\" || result[0] === \"−\");\r\n const numberStr = (isNegative\r\n ? result.substring(1)\r\n : result).replace(/[^,0-9]/g, \"\");\r\n let index = numberStr.indexOf(\",\");\r\n if (index < 0) {\r\n index = numberStr.indexOf(\".\");\r\n }\r\n const hasDecimalPoint = index > -1;\r\n let intPart = hasDecimalPoint ? numberStr.substring(0, index) : numberStr;\r\n let decPart = hasDecimalPoint ? numberStr.substring(index + 1).replace(/[^0-9]/g, \"\") : \"\";\r\n if (!Base.isNullOrUndefined(decimals) && decPart.length > decimals) {\r\n decPart = decPart.substring(0, decimals);\r\n }\r\n while (intPart.length > (isNegative ? 0 : 1) && intPart[0] === \"0\") {\r\n intPart = intPart.substring(1);\r\n }\r\n result = (isNegative ? result[0] : \"\") + intPart + (hasDecimalPoint ? \",\" : \"\") + decPart;\r\n if (numberStr.length > 0) {\r\n const number = result.toDecimal(isNegative);\r\n const maxValue = Base.isNullOrUndefined(max)\r\n ? 999999999999999\r\n : max;\r\n if (number < minValue || number > maxValue) {\r\n result = result.substring(0, result.length - 1);\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n //------------------------------\r\n //Boolean\r\n //------------------------------\r\n static strToBool(str: string): boolean {\r\n return !Base.isNullOrEmpty(str) && (str.equalIgnoreCase(\"true\") || str.equalIgnoreCase(\"1\"));\r\n }\r\n\r\n //------------------------------\r\n //Times and Dates\r\n //------------------------------\r\n static timeHasValue(time: number): boolean {\r\n return !this.isNullOrUndefined(time) && time !== 0 && !isNaN(time);\r\n }\r\n\r\n static timeToMoment(value: moment.Moment | number): moment.Moment {\r\n if (this.isNullOrUndefined(value)) return null;\r\n let m: moment.Moment;\r\n if (typeof value === \"number\") {\r\n if (!this.timeHasValue(value)) return null;\r\n m = moment(value);\r\n } else {\r\n m = value;\r\n }\r\n return m;\r\n }\r\n\r\n static timeToDateStr(value: moment.Moment | number): string {\r\n return Base.timeToMoment(value)?.format(\"D.M.YYYY\") ?? \"\";\r\n }\r\n\r\n static timeToTimeStr(value: moment.Moment | number): string {\r\n return Base.timeToMoment(value)?.format(\"H:mm\") ?? \"\";\r\n }\r\n\r\n static timeToDateTimeStr(value: moment.Moment | number, includeSeconds: boolean = false): string {\r\n return Base.timeToMoment(value)?.format(\"D.M.YYYY H:mm\" + (includeSeconds ? \":ss\" : \"\")) ?? \"\";\r\n }\r\n\r\n static timeToWeekdayStr(value: moment.Moment | number): string {\r\n return Base.timeToMoment(value)?.format(\"dddd\") ?? \"\";\r\n }\r\n\r\n static timeToYearStr(value: moment.Moment | number): string {\r\n return Base.timeToMoment(value)?.format(\"YYYY\") ?? \"\";\r\n }\r\n\r\n static timeToMonthStr(value: moment.Moment | number): string {\r\n return Base.timeToMoment(value)?.format(\"M\") ?? \"\";\r\n }\r\n\r\n static timeToDayStr(value: moment.Moment | number): string {\r\n return Base.timeToMoment(value)?.format(\"D\") ?? \"\";\r\n }\r\n\r\n static timeToHourStr(value: moment.Moment | number): string {\r\n return Base.timeToMoment(value)?.format(\"H\") ?? \"\";\r\n }\r\n\r\n static timeToMinStr(value: moment.Moment | number): string {\r\n return Base.timeToMoment(value)?.format(\"mm\") ?? \"\";\r\n }\r\n\r\n static utcTimeToDateStr(value: moment.Moment | number): string {\r\n if (this.isNullOrUndefined(value)) return \"\";\r\n let m: moment.Moment;\r\n if (typeof value === \"number\") {\r\n if (isNaN(value)) {\r\n return \"\";\r\n }\r\n m = moment.utc(value);\r\n } else {\r\n m = moment.utc([value.year(), value.month(), value.date(), 0, 0, 0, 0]);\r\n }\r\n return m.format(\"D.M.YYYY\");\r\n }\r\n\r\n static utcTimeToTimeStr(value: moment.Moment | number): string {\r\n if (this.isNullOrUndefined(value)) return \"\";\r\n let m: moment.Moment;\r\n if (typeof value === \"number\") {\r\n if (isNaN(value)) {\r\n return \"\";\r\n }\r\n m = moment.utc(value);\r\n } else {\r\n m = moment.utc([0, 0, 0, value.hour(), value.minutes(), 0, 0]);\r\n }\r\n return m.format(\"H:mm\");\r\n }\r\n \r\n static isZeroTime(time: number): boolean {\r\n if (!Base.timeHasValue(time)) return true;\r\n const date = new Date(time);\r\n return date.getHours() === 0 && date.getMinutes() === 0;\r\n }\r\n \r\n static isZeroTimeStr(timeStr: string): boolean {\r\n return !!timeStr && timeStr === Base.timeToTimeStr(Base.getNowDateTicks());\r\n }\r\n\r\n static getNowTicks(): number {\r\n const date = new Date();\r\n return date.getTime();\r\n }\r\n\r\n static dateToDatePart(date: Date): Date {\r\n if (Base.isNullOrUndefined(date)) return null;\r\n const y = date.getFullYear();\r\n const m = date.getMonth();\r\n const d = date.getDate();\r\n return new Date(y, m, d, 0, 0, 0, 0);\r\n }\r\n\r\n static getNowDateTicks(): number {\r\n return Base.dateToDatePart(new Date()).getTime();\r\n }\r\n\r\n static dateToUtcDate(date: Date): Date {\r\n if (Base.isNullOrUndefined(date)) return null;\r\n const y = date.getFullYear();\r\n const m = date.getMonth();\r\n const d = date.getDate();\r\n return new Date(Date.UTC(y, m, d, 0, 0, 0, 0));\r\n }\r\n \r\n static getNowUtcDate(): Date {\r\n return Base.dateToUtcDate(new Date());\r\n }\r\n\r\n static getNowUtcTime(): Date {\r\n const date = new Date();\r\n const h = date.getHours();\r\n const n = date.getMinutes();\r\n return new Date(Date.UTC(0, 0, 0, h, n, 0, 0));\r\n }\r\n\r\n static getNowUtcDateTime(): Date {\r\n const date = new Date();\r\n const y = date.getFullYear();\r\n const m = date.getMonth();\r\n const d = date.getDate();\r\n const h = date.getHours();\r\n const n = date.getMinutes();\r\n return new Date(Date.UTC(y, m, d, h, n, 0, 0));\r\n }\r\n\r\n static roundDateMinutes(date: Date, minRound): Date {\r\n if (minRound < 1.01) return date;\r\n const hours = date.getHours();\r\n const minutes = date.getMinutes();\r\n const rounded = Math.round((hours * 60 + minutes) / minRound) * minRound;\r\n date.setHours(Math.floor(rounded / 60));\r\n date.setMinutes(rounded % 60);\r\n date.setSeconds(0);\r\n return date;\r\n }\r\n\r\n static roundTimeMinutes(time: number, minRound): number {\r\n return Base.roundDateMinutes(new Date(time), minRound).getTime();\r\n }\r\n\r\n static getTimeSpanStr(str: string): string {\r\n const timeParts = str.parseTimeParts(null, 1000000);\r\n return timeParts.hour + \":\" + Base.padZeros(timeParts.minute.toString(10), 2);\r\n }\r\n\r\n static timeSpanToString(timeSpan: number): string {\r\n if (Base.isNullOrUndefined(timeSpan) || isNaN(timeSpan)) return \"\";\r\n const isPositive = timeSpan >= 0;\r\n const absTimeSpan = Math.abs(timeSpan);\r\n const hour = Math.floor(absTimeSpan);\r\n const minute = Math.round((absTimeSpan - hour) * 60);\r\n return (isPositive ? \"\" : \"-\") + hour.toString(10) + \":\" + Base.padZeros(minute.toString(10), 2);\r\n }\r\n\r\n static utcDateAndTimeDiffInMinutes(date1: Date, time1: Date, date2: Date, time2: Date): number {\r\n if (Base.isNullOrUndefined(date1) || Base.isNullOrUndefined(time1) || Base.isNullOrUndefined(date2) || Base.isNullOrUndefined(time2)) return 0;\r\n const mDate1 = moment({ y: date1.getUTCFullYear(), M: date1.getUTCMonth(), d: date1.getUTCDate(), h: time1.getUTCHours(), m: time1.getUTCMinutes(), s: time1.getUTCSeconds(), ms: time1.getUTCMilliseconds() });\r\n const mDate2 = moment({ y: date2.getUTCFullYear(), M: date2.getUTCMonth(), d: date2.getUTCDate(), h: time2.getUTCHours(), m: time2.getUTCMinutes(), s: time2.getUTCSeconds(), ms: time2.getUTCMilliseconds() });\r\n return mDate2.diff(mDate1, \"minutes\");\r\n }\r\n\r\n static utcDateAndTimeDiffInTimeSpan(date1: Date, time1: Date, date2: Date, time2: Date): number {\r\n return Base.utcDateAndTimeDiffInMinutes(date1, time1, date2, time2) / 60;\r\n }\r\n\r\n static minutesToDateStr(minutes: number): string {\r\n if (Base.isNullOrUndefined(minutes)) return \"\";\r\n const hour = Math.floor(minutes / 60);\r\n const min = minutes - hour * 60;\r\n return hour.toString(10) + \":\" + Base.padZeros(min.toString(10), 2);\r\n }\r\n\r\n static timeToFromNow(time: number) {\r\n return moment(time).fromNow();\r\n }\r\n\r\n static getDateTime(dateStr: string, timeStr: string) {\r\n let result: Date = null;\r\n if (dateStr) {\r\n result = dateStr.toDate();\r\n if (timeStr) {\r\n const startTime = timeStr.toTime();\r\n result = result.addHours(startTime.getHours()).addMinutes(startTime.getMinutes());\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n static getTimeStamp(includeMs: boolean = true): string {\r\n const date = new Date();\r\n const y = date.getFullYear();\r\n const m = date.getMonth() + 1;\r\n const d = date.getDate();\r\n const h = date.getHours();\r\n const n = date.getMinutes();\r\n const s = date.getSeconds();\r\n const z = date.getMilliseconds();\r\n return y.toString(10) + (m <= 9 ? \"0\" : \"\") + m.toString(10) + (d <= 9 ? \"0\" : \"\") + d.toString(10) +\r\n (h <= 9 ? \"0\" : \"\") + h.toString(10) + (n <= 9 ? \"0\" : \"\") + n.toString(10) + (s <= 9 ? \"0\" : \"\") + s.toString(10) +\r\n (includeMs ? (z <= 9 ? \"00\" : (z <= 99 ? \"0\" : \"\")) + z.toString(10) : \"\");\r\n }\r\n\r\n static getValidDateParts(aDay: number, aMonth: number, aYear: number): { day: number, month: number, year: number } {\r\n let day = Math.min(31, Math.max(1, aDay));\r\n let month: number = null;\r\n let year: number = null;\r\n if (!Base.isNullOrUndefined(aMonth)) {\r\n month = Math.min(12, Math.max(1, aMonth));\r\n if (!Base.isNullOrUndefined(aYear)) {\r\n year = Math.min(2100, Math.max(10, aYear));\r\n if (year < 100) {\r\n year = 2000 + year;\r\n }\r\n }\r\n if ((month === 4 || month === 6 || month === 9 || month === 11) && (day > 30)) {\r\n day = 30;\r\n } else if (month === 2) {\r\n if (!Base.isNullOrUndefined(aYear) && (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0))) {\r\n day = Math.min(29, day);\r\n } else {\r\n day = Math.min(28, day);\r\n }\r\n }\r\n }\r\n return { day, month, year };\r\n }\r\n \r\n static dayNumberToName(day: number, locale: string): string {\r\n return moment((day - 1).toString(10), \"e\").locale(locale).format(\"dddd\");\r\n }\r\n\r\n static monthNumberToName(month: number, locale: string): string {\r\n return moment((month).toString(10), \"M\").locale(locale).format(\"MMMM\");\r\n }\r\n\r\n static getFirstDayOfWeek(date: Date) {\r\n const day = date.getDay();\r\n const diff = date.getDate() - day + (day === 0 ? -6 : 1); // adjust when day is sunday\r\n return new Date(date.setDate(diff));\r\n }\r\n \r\n static getTimeRangeStr = (startTime: number, endTime: number, includeTime: boolean = false): string => {\r\n if (!startTime) return \"\";\r\n const startDayStr = Base.timeToDayStr(startTime);\r\n const startMonthStr = Base.timeToMonthStr(startTime);\r\n const startYearStr = Base.timeToYearStr(startTime);\r\n const startHourStr = includeTime ? Base.timeToHourStr(startTime) : \"\";\r\n const startMinStr = includeTime ? Base.timeToMinStr(startTime) : \"\";\r\n if (!endTime) {\r\n return `${startDayStr}.${startMonthStr}.${startYearStr}` +\r\n (includeTime ? ` ${startHourStr}:${startMinStr}` : \"\");\r\n }\r\n const endDayStr = Base.timeToDayStr(endTime);\r\n const endMonthStr = Base.timeToMonthStr(endTime);\r\n const endYearStr = Base.timeToYearStr(endTime);\r\n const endHourStr = includeTime ? Base.timeToHourStr(endTime) : \"\";\r\n const endMinStr = includeTime ? Base.timeToMinStr(endTime) : \"\";\r\n if (startDayStr === endDayStr && startMonthStr === endMonthStr &&\r\n startYearStr === endYearStr && startHourStr === endHourStr &&\r\n startMinStr === endMinStr) {\r\n return `${startDayStr}.${startMonthStr}.${startYearStr}` +\r\n (includeTime ? ` ${startHourStr}:${startMinStr}` : \"\");\r\n }\r\n if (!includeTime) {\r\n if (startMonthStr === endMonthStr && startYearStr === endYearStr) {\r\n return `${startDayStr}-${endDayStr}.${startMonthStr}.${startYearStr}`;\r\n }\r\n if (startYearStr === endYearStr) {\r\n return `${startDayStr}.${startMonthStr}-${endDayStr}.${endMonthStr}.${startYearStr}`;\r\n }\r\n return `${startDayStr}.${startMonthStr}.${startYearStr}-${endDayStr}.${endMonthStr}.${endYearStr}`;\r\n } else {\r\n if (startDayStr === endDayStr && startMonthStr === endMonthStr && startYearStr === endYearStr && startHourStr === endHourStr) {\r\n return `${startDayStr}.${startMonthStr}.${startYearStr} ${startHourStr}:${startMinStr}-${endMinStr}`;\r\n } else if (startDayStr === endDayStr && startMonthStr === endMonthStr && startYearStr === endYearStr) {\r\n return `${startDayStr}.${startMonthStr}.${startYearStr} ${startHourStr}:${startMinStr}-${endHourStr}:${endMinStr}`;\r\n } else if (startMonthStr === endMonthStr && startYearStr === endYearStr) {\r\n return `${startDayStr}-${endDayStr}.${startMonthStr}.${startYearStr} ${startHourStr}:${startMinStr}-${endHourStr}:${endMinStr}`;\r\n } else if (startYearStr === endYearStr) {\r\n return `${startDayStr}.${startMonthStr}-${endDayStr}.${endMonthStr}.${startYearStr} ${startHourStr}:${startMinStr}-${endHourStr}:${endMinStr}`;\r\n }\r\n return `${startDayStr}.${startMonthStr}.${startYearStr} ${startHourStr}:${startMinStr}-${endDayStr}.${endMonthStr}.${endYearStr} ${endHourStr}:${endMinStr}`;\r\n }\r\n };\r\n\r\n //------------------------------\r\n //Formatted Text\r\n //------------------------------\r\n static lf = \"#LF#\";\r\n\r\n static isFormattedText(str: string): boolean {\r\n if (Base.isNullOrEmpty(str) || !str.indexOf) return false;\r\n return str.indexOf(Base.lf) > -1;\r\n }\r\n\r\n static getFormattedText(str: string): string {\r\n if (Base.isNullOrEmpty(str)) return str;\r\n return str.replace(/#LF#/gi, \"
\");\r\n }\r\n \r\n //------------------------------\r\n //Comparison\r\n //------------------------------\r\n static strCompare(a: string, b: string): number {\r\n if (Base.isNullOrUndefined(a) && Base.isNullOrUndefined(b)) return 0;\r\n if (Base.isNullOrUndefined(a)) return 1;\r\n if (Base.isNullOrUndefined(b)) return -1;\r\n return a.localeCompare(b, \"fi\");\r\n }\r\n\r\n static numCompare(a: number, b: number): number {\r\n if (Base.isNullOrUndefined(a) && Base.isNullOrUndefined(b)) return 0;\r\n if (Base.isNullOrUndefined(a)) return 1;\r\n if (Base.isNullOrUndefined(b)) return -1;\r\n return a < b ? -1 : (a > b ? 1 : 0);\r\n }\r\n\r\n static boolCompare(a: boolean, b: boolean): number {\r\n if (Base.isNullOrUndefined(a) && Base.isNullOrUndefined(b)) return 0;\r\n if (Base.isNullOrUndefined(a)) return 1;\r\n if (Base.isNullOrUndefined(b)) return -1;\r\n const aInt = a ? 1 : 0;\r\n const bInt = b ? 1 : 0;\r\n return aInt < bInt ? -1 : (aInt > bInt ? 1 : 0);\r\n }\r\n\r\n static equalInt(a: number, b: number): boolean {\r\n if (Base.isNullOrUndefined(a) && Base.isNullOrUndefined(b)) return true;\r\n if (Base.isNullOrUndefined(a) || Base.isNullOrUndefined(b)) return false;\r\n return Math.abs(a - b) < 0.5;\r\n }\r\n\r\n static right(s: string, l: number) {\r\n return s.substring(s.length - l);\r\n }\r\n\r\n static numLeftPad(s: string) {\r\n if (s.length > 10) return s;\r\n return Base.right(`0000000000${s}`, 10);\r\n }\r\n\r\n static strLeftPad(s: string) {\r\n if (s.length > 10) return s;\r\n return Base.right(`ZZZZZZZZZZ${s}`, 10);\r\n }\r\n\r\n static getGetFileNameSortValue(code: string): string {\r\n let result = `9999999999${code}`;\r\n let numberStart = code.search(/\\d/);\r\n if (numberStart === 0) {\r\n let nonNumberStart = code.search(/\\D/);\r\n if (nonNumberStart < 0) { //n\r\n result = Base.numLeftPad(code);\r\n } else { //na*\r\n result = Base.numLeftPad(code.substring(0, nonNumberStart));\r\n let end = code.substring(nonNumberStart, code.length - nonNumberStart);\r\n numberStart = end.search(/\\d/);\r\n if (numberStart > 0) { //nan*\r\n result = result + Base.strLeftPad(end.substring(0, numberStart));\r\n end = end.substring(numberStart);\r\n nonNumberStart = end.search(/\\D/);\r\n if (nonNumberStart > 0) { //nana*\r\n result = result + Base.numLeftPad(end.substring(0, nonNumberStart));\r\n end = end.substring(nonNumberStart, end.length - nonNumberStart);\r\n numberStart = end.search(/\\d/);\r\n if (numberStart > 0) { //nanan*\r\n result = result + Base.strLeftPad(end.substring(0, numberStart));\r\n end = end.substring(numberStart);\r\n nonNumberStart = end.search(/\\D/);\r\n if (nonNumberStart > 0) { //nanana*\r\n result = result + Base.numLeftPad(end.substring(0, nonNumberStart)) + end.substring(nonNumberStart);\r\n } else { //nanan\r\n result = result + Base.numLeftPad(end);\r\n }\r\n } else { //nana\r\n result = result + end;\r\n }\r\n } else { //nan\r\n result = result + Base.numLeftPad(end);\r\n }\r\n } else { //na\r\n result = result + end;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n static fileNameCompare(a: string, b: string, collator: Intl.Collator): number {\r\n if (Base.isNullOrUndefined(a) && Base.isNullOrUndefined(b)) return 0;\r\n if (Base.isNullOrUndefined(a)) return 1;\r\n if (Base.isNullOrUndefined(b)) return -1;\r\n return collator.compare(Base.getGetFileNameSortValue(a), Base.getGetFileNameSortValue(b));\r\n }\r\n\r\n //------------------------------\r\n //Filetypes\r\n //------------------------------\r\n static getFileType(name: string): number {\r\n if (Base.isNullOrEmpty(name) || Base.isNullOrUndefined(fileExtensions)) return 0;\r\n const index = name.lastIndexOf(\".\");\r\n if (index < 0) return 0;\r\n let ext = name.substring(index);\r\n if (Base.isNullOrEmpty(ext)) return 0;\r\n ext = ext.toUpperCase();\r\n if (fileExtensions.wordExtensions.indexOf(ext) !== -1) return 1;\r\n if (fileExtensions.excelExtensions.indexOf(ext) !== -1) return 2;\r\n if (fileExtensions.powerPointExtensions.indexOf(ext) !== -1) return 3;\r\n if (fileExtensions.pdfExtensions.indexOf(ext) !== -1) return 4;\r\n if (fileExtensions.imageExtensions.indexOf(ext) !== -1) return 5;\r\n if (fileExtensions.archiveExtensions.indexOf(ext) !== -1) return 6;\r\n if (fileExtensions.textExtensions.indexOf(ext) !== -1) return 7;\r\n if (fileExtensions.htmlExtensions.indexOf(ext) !== -1) return 8;\r\n return 0;\r\n }\r\n\r\n static isImageFile(file: File): boolean {\r\n return !Base.isNullOrUndefined(file) && Base.getFileType(file.name) === 5;\r\n }\r\n\r\n //------------------------------\r\n //Generics\r\n //------------------------------\r\n static getTypedArray(items: any, type: (new (...args: any[]) => T)): T[] {\r\n const result: T[] = [];\r\n if (items) {\r\n for (let i = 0; i < items.length; i++) {\r\n /* eslint-disable new-cap */\r\n result.push(new type(items[i]));\r\n /* eslint-enable new-cap */\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n static getPromiseResult(value: T): Promise {\r\n return new Promise((resolve) => { resolve(value); });\r\n }\r\n\r\n static moveToFirst(items: T[], indexA: number): T[] {\r\n if (!items || !indexA || indexA <= 0 || items.length < 2 || indexA >= items.length) return items;\r\n const a = items[indexA];\r\n items.splice(indexA, 1);\r\n items.unshift(a);\r\n return items;\r\n }\r\n\r\n static swapArrayItems(items: T[], indexA: number, indexB: number): T[] {\r\n if (!items || Base.isNullOrUndefined(indexA) || Base.isNullOrUndefined(indexB) || indexA === indexB || indexA < 0 || indexB < 0 || items.length < 2 || indexA >= items.length || indexB >= items.length) return items;\r\n const a = items[indexA];\r\n items[indexA] = items[indexB];\r\n items[indexB] = a;\r\n return items;\r\n }\r\n\r\n //!!! USE ONLY FOR SIMPLE TYPES\r\n private static getUniqueItems(items: T[]): T[] {\r\n return [...Array.from(new Set(items))];\r\n }\r\n\r\n // ------------------------------\r\n // Array\r\n // ------------------------------\r\n static getUniqueStringItems(items: string[]): string[] {\r\n return Base.getUniqueItems(items);\r\n }\r\n\r\n static getUniqueNumberItems(items: number[]): number[] {\r\n return Base.getUniqueItems(items);\r\n }\r\n\r\n static getStringWithSeparators(values: string[], separator: string, maxValueCount: number = -1): string {\r\n if (!values || values.length < 1 || Base.isNullOrUndefined(separator)) return \"\";\r\n const maxCount = maxValueCount && maxValueCount > 0 ? maxValueCount : values.length;\r\n let result = \"\";\r\n for (let i = 0; i < maxCount; i++) {\r\n if (!values[i]) continue;\r\n result = result + values[i] + separator;\r\n }\r\n if (result.length > 0) {\r\n result = result.substr(0, result.length - separator.length);\r\n }\r\n return result;\r\n }\r\n\r\n static equalArrays(arr1: any[], arr2: any[]): boolean {\r\n const a1 = arr1 ?? [];\r\n const a2 = arr2 ?? [];\r\n if (a1.length !== a2.length) return false;\r\n for (let i = 0; i < a1.length; ++i) {\r\n if (a1[i] !== a2[i]) return false;\r\n }\r\n return true;\r\n }\r\n\r\n static equalStrArrays(arr1: string[], arr2: string[]): boolean {\r\n return Base.equalArrays(arr1, arr2);\r\n }\r\n\r\n static maxVal(items: number[], defaultValue: number = 0): number {\r\n if (!items || items.length < 0) return defaultValue;\r\n return Math.max(...items);\r\n }\r\n\r\n //------------------------------\r\n //IIdItem\r\n //------------------------------\r\n static getToggledMultiSelectIds(items: IIdItem[], selectedIds: string[], toggleId: string, checked: boolean, allId: string = \"\"): string[] {\r\n let result = selectedIds.filter(i => i !== allId);\r\n if (toggleId === allId) {\r\n if (checked) {\r\n result = [allId];\r\n } else if (result.length < 1 && items.length > 1) {\r\n result.push(items[1].id);\r\n }\r\n } else {\r\n if (checked) {\r\n if (result.indexOf(toggleId) < 0) {\r\n result.push(toggleId);\r\n }\r\n } else {\r\n result = result.filter(i => i !== toggleId);\r\n }\r\n }\r\n if (result.length < 1) {\r\n result.push(allId);\r\n }\r\n return result;\r\n };\r\n\r\n static keepAvailableSelectedIds(items: IIdItem[], selectedIds: string[], allValue: string = Base.emptyGuid): string[] {\r\n let result = selectedIds.slice(0);\r\n if (result.length > 0 && result[0] !== allValue) {\r\n const unitIds = items.map(i => i.id);\r\n result = result.filter(i => unitIds.indexOf(i) > -1);\r\n }\r\n if (!result.length && items.find(i => i.id === allValue)) {\r\n result.push(allValue);\r\n }\r\n return result;\r\n }\r\n\r\n //------------------------------\r\n //UserCode\r\n //------------------------------\r\n static isValidUserCode(code: string): boolean {\r\n if (!code) return false;\r\n if (code.length < 8) return false;\r\n if (/\\s/.test(code)) return false; //No whitespaces allowed\r\n return true;\r\n }\r\n\r\n //------------------------------\r\n //Password\r\n //------------------------------\r\n //static createDefaultPassword(minPasswordLength: number) {\r\n // //const specials = '!@#$%^&*()_+{}:\"<>?\\|[];\\',./`~';\r\n // const specials = \"_-.\";\r\n // const lowercase = \"abcdefghijkmnopqrstuvwxyz\";\r\n // const uppercase = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\r\n // const numbers = \"123456789\";\r\n // const all = specials + lowercase + uppercase + numbers;\r\n // let password = \"\";\r\n // password += specials.pick(2);\r\n // password += lowercase.pick(2);\r\n // password += uppercase.pick(2);\r\n // password += numbers.pick(2);\r\n // password += all.pick(20, 30);\r\n // return password.shuffle();\r\n //}\r\n\r\n static isValidPassword(password: string, minPasswordLength: number): string {\r\n if (!password || password.length < minPasswordLength) {\r\n return Translations.PasswordIsTooShort;\r\n }\r\n if (!/[A-Z]/.test(password) && !/\\u00c4/.test(password) && !/\\u00c5/.test(password) && !/\\u00c6/.test(password) && !/\\u00d6/.test(password)) { //Uppercase letter required\r\n return Translations.PasswordMustContainUppercaseChar;\r\n }\r\n if (!/[a-z]/.test(password) && !/\\u00e4/.test(password) && !/\\u00e5/.test(password) && !/\\u00e6/.test(password) && !/\\u00f6/.test(password)) { //Lowercase letter required\r\n return Translations.PasswordMustContainLowercaseChar;\r\n }\r\n if (!/[0-9]/.test(password) && !/[!@#$%^&*()_+{}:\"<>?|[\\];\\\\',./`~=]/.test(password)) { //Number or special character required\r\n return Translations.PasswordMustContainDigitOrSpecialCharacter;\r\n }\r\n return \"\";\r\n }\r\n\r\n //------------------------------\r\n //Email\r\n //------------------------------\r\n private static getEmailAddresses(addresses: string): string[] {\r\n if (!addresses) {\r\n return [addresses ?? \"\"];\r\n }\r\n if (addresses.indexOf(\";\") > -1) {\r\n return addresses.split(\";\");\r\n }\r\n if (addresses.indexOf(\",\") > -1) {\r\n return addresses.split(\",\");\r\n }\r\n return [addresses];\r\n }\r\n\r\n //https://stackoverflow.com/questions/2049502/what-characters-are-allowed-in-an-email-address\r\n //https://stackoverflow.com/questions/201323/how-to-validate-an-email-address-using-a-regular-expression\r\n //https://gist.github.com/gregseth/5582254\r\n //https://www.regular-expressions.info/email.html\r\n private static isValidEmailAddressSingle(address: string): boolean {\r\n //RFC 2822 Simpler version\r\n if (!address) return true;\r\n if (/[\\u00c4\\u00c5\\u00c6\\u00d6\\u00e4\\u00e5\\u00e6\\u00f6]/.test(address)) return false; //Do not allow äåöÄÅÖ\r\n if (!/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/.test(address)) return false;\r\n //Office365 (Error: 5.1.6 Recipient addresses in single label domains not accepted): Check single label domains\r\n //Customer: no two @ marks\r\n const firstAtIndex = address.indexOf(\"@\");\r\n const lastAtIndex = address.lastIndexOf(\"@\");\r\n const dotIndex = address.lastIndexOf(\".\");\r\n return lastAtIndex >= 1 && dotIndex >= 3 && dotIndex > lastAtIndex && firstAtIndex === lastAtIndex;\r\n //return true;\r\n //RFC 5322\r\n //if (isNullOrEmpty(address)) return true;\r\n //if (!/(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])/.test(address)) return false;\r\n //return true;\r\n }\r\n\r\n static isValidEmailAddress(emailAddresses: string): boolean {\r\n const addresses = Base.getEmailAddresses(emailAddresses);\r\n for (const address of addresses) {\r\n if (!Base.isValidEmailAddressSingle(address)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n //------------------------------\r\n //Bank\r\n //------------------------------\r\n static isValidFinnishBicCode(str: string): boolean {\r\n if (!str) return false;\r\n const patt = /^([a-zA-Z]){4}FI([0-9a-zA-Z]){2}([0-9a-zA-Z]{3})?$/;\r\n return patt.test(str.toUpperCase());\r\n }\r\n\r\n static replaceSepaCharacters(str: string): string {\r\n if (!str) return str;\r\n const chars = [\"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\"];\r\n const codes = [\"10\", \"11\", \"12\", \"13\", \"14\", \"15\", \"16\", \"17\", \"18\", \"19\", \"20\", \"21\", \"22\", \"23\", \"24\", \"25\", \"26\", \"27\", \"28\", \"29\", \"30\", \"31\", \"32\", \"33\", \"34\", \"35\"];\r\n let result = \"\";\r\n let i;\r\n for (i = 0; i < str.length; i++) {\r\n const chr = str.charAt(i);\r\n const j = chars.indexOf(chr);\r\n if (j > -1) {\r\n result = result + codes[j];\r\n } else {\r\n result = result + chr;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n static getModulo97(str: string): number {\r\n if (!str) return 0;\r\n let bigNumber = str;\r\n let oldModulo = \"\";\r\n while (bigNumber.length > 0) {\r\n const smallNumber = bigNumber.substr(0, Math.min(7, bigNumber.length));\r\n if (bigNumber.length > 7) {\r\n bigNumber = bigNumber.substr(7);\r\n } else {\r\n bigNumber = \"\";\r\n }\r\n const tempNumber = parseInt(oldModulo + smallNumber, 10);\r\n oldModulo = (tempNumber % 97).toString();\r\n }\r\n return parseInt(oldModulo, 10);\r\n }\r\n\r\n static isValidIbanNumber(str: string): boolean {\r\n if (!str) return false;\r\n let iban = str.toUpperCase();\r\n if (iban.length > 4) {\r\n iban = iban.substr(4) + iban.substr(0, 4);\r\n }\r\n iban = Base.replaceSepaCharacters(iban).numberString(false);\r\n return Base.getModulo97(iban) === 1;\r\n }\r\n\r\n static formatIbanNumber(str: string): string {\r\n if (!str) return \"\";\r\n const temp = str.toUpperCase().replace(/[^0-9A-Z]/g, \"\");\r\n let result = \"\";\r\n let i: number;\r\n let j = 0;\r\n for (i = 0; i < temp.length; i++) {\r\n result = result + temp.charAt(i);\r\n if (j === 3) {\r\n result = result + \" \";\r\n j = 0;\r\n } else {\r\n j = j + 1;\r\n }\r\n }\r\n return result.trim();\r\n }\r\n\r\n //------------------------------\r\n //CkEditor\r\n //------------------------------\r\n static getCultureSimple(culture: string): string {\r\n if (!culture) return \"fi\";\r\n const index = culture.indexOf(\"-\");\r\n if (index > -1) {\r\n return culture.substring(0, index);\r\n }\r\n return \"fi\";\r\n }\r\n \r\n static setCkEditorStyles(container: HTMLDivElement, documentMode: boolean, documentLandscapeOrientation: boolean = false) {\r\n if (!container) return;\r\n const iframes = container.getElementsByClassName(\"cke_wysiwyg_frame\");\r\n if (iframes.length < 1) return;\r\n const iframe = iframes[0] as HTMLIFrameElement;\r\n if (!iframe.contentDocument) return;\r\n const html = iframe.contentDocument.documentElement;\r\n const body = iframe.contentDocument.body;\r\n if (documentMode) {\r\n html.style.backgroundColor = \"#f8f8f8\";\r\n body.style.fontFamily = \"Arial\";\r\n body.style.fontSize = \"14px\";\r\n body.style.padding = \"20px\";\r\n body.style.width = !documentLandscapeOrientation ? \"672px\" : \"1000px\";\r\n body.style.maxWidth = !documentLandscapeOrientation ? \"672px\" : \"1000px\";\r\n body.style.backgroundColor = \"#fff\";\r\n body.style.margin = \"auto\";\r\n } else {\r\n html.style.backgroundColor = \"\";\r\n body.style.fontFamily = \"Arial\";\r\n body.style.fontSize = \"14px\";\r\n body.style.padding = \"\";\r\n body.style.maxWidth = \"\";\r\n body.style.width = \"\";\r\n body.style.backgroundColor = \"#\";\r\n }\r\n }\r\n\r\n //------------------------------\r\n //Media\r\n //------------------------------\r\n static async getCameraIds(): Promise {\r\n if (!((\"mediaDevices\" in navigator) && (\"enumerateDevices\" in (navigator).mediaDevices))) {\r\n return new Promise((resolve) => { resolve([]); });\r\n }\r\n try {\r\n const deviceInfos = await (navigator as any).mediaDevices.enumerateDevices();\r\n const result: string[] = [];\r\n //console.log(\"deviceInfos\", deviceInfos);\r\n for (let i = 0; i < deviceInfos.length; i++) {\r\n if (deviceInfos[i].kind === \"video\") {\r\n deviceInfos[i].kind = \"videoinput\";\r\n }\r\n if (deviceInfos[i].kind === \"videoinput\") {\r\n result.push(deviceInfos[i].deviceId);\r\n }\r\n }\r\n return result;\r\n } catch (e) {\r\n console.log(\"getCameraIds\", e);\r\n }\r\n }\r\n\r\n static getDataUriSize(dataUri: string): number {\r\n if (Base.isNullOrEmpty(dataUri)) return 0;\r\n const byteString = window.atob(dataUri.split(\",\")[1]);\r\n return byteString.length;\r\n }\r\n\r\n static base64ToBlob(base64: string, contentType: string): Blob {\r\n const byteString = window.atob(base64);\r\n const ab = new ArrayBuffer(byteString.length);\r\n const ia = new Uint8Array(ab);\r\n for (let i = 0; i < byteString.length; i++) {\r\n ia[i] = byteString.charCodeAt(i);\r\n }\r\n return new Blob([ab], { type: contentType });\r\n }\r\n\r\n static dataUriToBlob(dataUri: string): Blob {\r\n return Base.base64ToBlob(dataUri.split(\",\")[1], dataUri.split(\",\")[0].split(\":\")[1].split(\";\")[0]);\r\n }\r\n\r\n static blobToFile(blob: Blob, fileName: string): File {\r\n const b = blob;\r\n b.lastModified = (new Date()).getTime();\r\n b.name = fileName;\r\n return b;\r\n }\r\n\r\n static blobToBase64(file: Blob): Promise {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = () => resolve(reader.result as string);\r\n reader.onerror = error => reject(error);\r\n });\r\n }\r\n\r\n static blobToBase64WithoutHeader(file: Blob): Promise {\r\n return Base.blobToBase64(file)\r\n .then(dataUri => dataUri.split(\",\").pop());\r\n }\r\n\r\n //------------------------------\r\n //Location\r\n //------------------------------\r\n private static googleGeocoder: google.maps.Geocoder = null;\r\n\r\n private static getLocation(googleApiKey: string, callback: (latitude: number, longitude: number, locationName: string, positionErrorCode: number) => void) {\r\n try {\r\n if (\"geolocation\" in navigator) {\r\n (navigator.geolocation as Geolocation).getCurrentPosition((position) => {\r\n const latitude = position.coords.latitude;\r\n const longitude = position.coords.longitude;\r\n if (!Base.isNullOrUndefined(latitude) && !Base.isNullOrUndefined(longitude) && !isNaN(latitude) && !isNaN(longitude)) {\r\n if (!Base.isNullOrEmpty(googleApiKey)) {\r\n if (Base.isNullOrUndefined(this.googleGeocoder)) {\r\n this.googleGeocoder = new google.maps.Geocoder();\r\n }\r\n this.googleGeocoder.geocode({ \"location\": new google.maps.LatLng(latitude, longitude) }, (results, status) => {\r\n if (status === google.maps.GeocoderStatus.OK && results.length > 0 && !Base.isNullOrUndefined(results[0])) {\r\n callback(latitude, longitude, results[0].formatted_address, 0);\r\n } else {\r\n callback(latitude, longitude, \"\", 0);\r\n console.log(\"[App] googleGeocoder.geocode FAILED\", status);\r\n }\r\n });\r\n } else {\r\n callback(latitude, longitude, \"\", 0);\r\n }\r\n }\r\n }, (error: GeolocationPositionError) => {\r\n console.log(\"[App] getCurrentPosition FAILED\", error);\r\n callback(null, null, null, error.code);\r\n }, { enableHighAccuracy: true, timeout: 60000, maximumAge: 0 });\r\n } else {\r\n console.log(\"[App] geolocation DOES NOT exist in navigator\");\r\n }\r\n } catch (e) {\r\n console.log(\"[App] getLocation FAILED! Unknown error\", e);\r\n }\r\n }\r\n\r\n static getLocationAsync(googleApiKey: string): Promise {\r\n return new Promise((resolve) => {\r\n Base.getLocation(googleApiKey, (latitude, longitude, locationName, positionErrorCode) => {\r\n resolve({ latitude, longitude, locationName, positionErrorCode });\r\n });\r\n });\r\n }\r\n\r\n //REST API CALL CANNOT BE LIMITED BY REFERER\r\n //static getLocation(googleApiKey: string, culture: string, callback: (latitude: number, longitude: number, locationName: string, positionErrorCode: number) => void) {\r\n // if (\"geolocation\" in navigator) {\r\n // (navigator.geolocation as Geolocation).getCurrentPosition((position) => {\r\n // const latitude = position.coords.latitude;\r\n // const longitude = position.coords.longitude;\r\n // if (!Base.isNullOrUndefined(latitude) && !Base.isNullOrUndefined(longitude) && !isNaN(latitude) && !isNaN(longitude)) {\r\n // //google api, do not cache\r\n // if (!Base.isNullOrEmpty(googleApiKey)) {\r\n // const httpRequest = new XMLHttpRequest();\r\n // const url = \"https://maps.googleapis.com/maps/api/geocode/json?latlng=\" + latitude.toFixed(6) + \",\" + longitude.toFixed(6) + \"&language=\" + culture + \"&result_type=street_address&key=\" + googleApiKey;\r\n // httpRequest.onreadystatechange = function() {\r\n // if (this.readyState === 4 && this.status === 200) {\r\n // const json = JSON.parse(this.responseText);\r\n // if (json.status === \"OK\" && json.results.length > 0) {\r\n // callback(latitude, longitude, json.results[0].formatted_address, 0);\r\n // } else {\r\n // callback(latitude, longitude, \"\", 0);\r\n // }\r\n // }\r\n // };\r\n // httpRequest.open(\"GET\", url, true);\r\n // httpRequest.setRequestHeader(\"Accept\", \"application/json\");\r\n // httpRequest.send();\r\n // } else {\r\n // callback(latitude, longitude, \"\", 0);\r\n // }\r\n // }\r\n // }, (error: PositionError) => {\r\n // console.log(\"getCurrentPosition FAILED\", error);\r\n // callback(null, null, null, error.code);\r\n // }, { enableHighAccuracy: true, timeout: 60000, maximumAge: 15000 });\r\n // }\r\n //}\r\n\r\n static openLocationInMaps(latitude: number, longitude: number) {\r\n if (Base.isNullOrUndefined(latitude) || Base.isNullOrUndefined(longitude)) return;\r\n window.open(\"https://www.google.com/maps/search/?api=1&query=\" + latitude.toFixed(6) + \",\" + longitude.toFixed(6) + \"&zoom=12\");\r\n }\r\n\r\n // ------------------------------\r\n // List Utils\r\n // ------------------------------\r\n static getListItems(stateItems: T[], stateSelectedId: string, stateCheckedIds: string[], dbItems: T[], resetItems: boolean, refreshList: boolean): { items: T[]; selectedId: string; checkedIds: string[]; } {\r\n let items: T[];\r\n if (!resetItems && !refreshList) {\r\n const oldIds = {};\r\n for (let j = 0; j < stateItems.length; j++) {\r\n oldIds[stateItems[j].id] = true;\r\n }\r\n const oldItems = stateItems.slice(0);\r\n const newItems = dbItems.filter(i => Object.prototype.isPrototypeOf.call(oldIds, i.id) ? false : (oldIds[i.id] = true));\r\n items = [...oldItems, ...newItems];\r\n } else {\r\n items = dbItems;\r\n }\r\n return {\r\n items,\r\n selectedId: items.findIndex(i => i.id === stateSelectedId) > -1 ? stateSelectedId : \"\",\r\n checkedIds: items.filter(i => stateCheckedIds.indexOf(i.id) > -1).map(i => i.id)\r\n };\r\n }\r\n\r\n static getSelectedIds(selectedId: string, checkedIds: string[]): string[] {\r\n let result = [];\r\n if (checkedIds && checkedIds.length > 0) {\r\n result = checkedIds.slice(0);\r\n } else if (selectedId) {\r\n result.push(selectedId);\r\n }\r\n return result;\r\n };\r\n\r\n //------------------------------\r\n //Json\r\n //------------------------------\r\n static isJsonString(str: string): boolean {\r\n if (Base.isNullOrEmpty(str)) return false;\r\n try {\r\n const obj = JSON.parse(str);\r\n if (obj && typeof obj === \"object\") {\r\n return true;\r\n }\r\n } catch (e) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n //https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding\r\n static b64EncodeUnicode(str: string) {\r\n // first we use encodeURIComponent to get percent-encoded UTF-8,\r\n // then we convert the percent encodings into raw bytes which\r\n // can be fed into btoa.\r\n return window.btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g,\r\n function toSolidBytes(match, p1) {\r\n return String.fromCharCode(parseInt(\"0x\" + p1));\r\n }));\r\n }\r\n\r\n static base64UrlEncode(str: string) {\r\n return window.btoa(str)\r\n .replace(/\\+/g, \"-\")\r\n .replace(/\\//g, \"_\")\r\n .replace(/=+$/, \"\");\r\n }\r\n \r\n static base64UrlDecode(str) {\r\n str = str\r\n .replace(/-/g, \"+\")\r\n .replace(/_/g, \"/\");\r\n while (str.length % 4) {\r\n str += \"=\";\r\n }\r\n return window.atob(str);\r\n }\r\n\r\n static debounce(func:F, wait:number):F {\r\n let timeoutId:number;\r\n if (!Number.isInteger(wait)) {\r\n console.log(\"Called debounce without a valid number\");\r\n wait = 300;\r\n }\r\n // conversion through any necessary as it wont satisfy criteria otherwise\r\n return function(this:any, ...args: any[]) {\r\n clearTimeout(timeoutId);\r\n timeoutId = window.setTimeout(() => {\r\n func.apply(this, args);\r\n }, wait);\r\n };\r\n };\r\n\r\n static timeout(wait: number): Promise {\r\n return new Promise(resolve => window.setTimeout(resolve, wait));\r\n }\r\n\r\n //------------------------------\r\n //WebPush\r\n //------------------------------\r\n static urlBase64ToUint8Array(base64Str: string): Uint8Array {\r\n const padding = \"=\".repeat((4 - base64Str.length % 4) % 4);\r\n const base64 = (base64Str + padding).replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n const rawData = window.atob(base64);\r\n const result = new Uint8Array(rawData.length);\r\n for (let i = 0; i < rawData.length; ++i) {\r\n result[i] = rawData.charCodeAt(i);\r\n }\r\n return result;\r\n }\r\n\r\n //------------------------------\r\n //Links\r\n //------------------------------\r\n static sanitizeHtml(txt: string): string {\r\n const temp = document.createElement(\"div\");\r\n temp.textContent = txt;\r\n return temp.innerHTML;\r\n }\r\n\r\n //Handles only https-urls and sanitizes content\r\n static linkifyText(txt: string): string {\r\n if (Base.isNullOrEmpty(txt)) return \"\";\r\n const urlPattern = /\\b(?:https):\\/\\/[a-z0-9-+&@#/%?=~_|!:,.;]*[a-z0-9-+&@#/%=~_|]/gim;\r\n const temps: string[] = [];\r\n const links: string[] = [];\r\n let result = txt.replace(urlPattern, (str) => {\r\n const replacement = Base.getGuid();\r\n temps.push(replacement);\r\n links.push('' + Base.sanitizeHtml(str) + \"\");\r\n return replacement;\r\n });\r\n result = Base.sanitizeHtml(result);\r\n for (let i = 0; i < temps.length; i++) {\r\n result = result.replace(temps[i], links[i]);\r\n }\r\n return result;\r\n }\r\n\r\n //------------------------------\r\n //Encryption\r\n //------------------------------\r\n static arrayBufferToBase64(buffer: ArrayBuffer): string {\r\n let binary = \"\";\r\n const bytes = new Uint8Array(buffer);\r\n const len = bytes.byteLength;\r\n for (let i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n return window.btoa(binary);\r\n }\r\n\r\n static base64ToArrayBuffer(base64: string): ArrayBuffer {\r\n const binaryString = window.atob(base64);\r\n const len = binaryString.length;\r\n const bytes = new Uint8Array(len);\r\n for (let i = 0; i < len; i++) {\r\n bytes[i] = binaryString.charCodeAt(i);\r\n }\r\n return bytes.buffer;\r\n }\r\n\r\n static async encryptString(str: string, base64key: string, base64iv: string): Promise {\r\n const iv = Base.base64ToArrayBuffer(base64iv);\r\n const algorithm = {\r\n iv,\r\n name: \"AES-CBC\",\r\n };\r\n const key = Base.base64ToArrayBuffer(base64key);\r\n const importedKey = await window.crypto.subtle.importKey(\"raw\", key, algorithm, true, [\"encrypt\", \"decrypt\"]);\r\n const encoder = new TextEncoder();\r\n const data = encoder.encode(str);\r\n const encrypted = await window.crypto.subtle.encrypt(\r\n algorithm,\r\n importedKey,\r\n data,\r\n );\r\n return Base.arrayBufferToBase64(encrypted);\r\n }\r\n\r\n static async decryptString(base64str: string, base64key: string, base64iv: string): Promise {\r\n const iv = Base.base64ToArrayBuffer(base64iv);\r\n const algorithm = {\r\n iv,\r\n name: \"AES-CBC\",\r\n };\r\n const key = Base.base64ToArrayBuffer(base64key);\r\n const importedKey = await window.crypto.subtle.importKey(\"raw\", key, algorithm, true, [\"encrypt\", \"decrypt\"]);\r\n const data = Base.base64ToArrayBuffer(base64str);\r\n const decrypted = await window.crypto.subtle.decrypt(\r\n algorithm,\r\n importedKey,\r\n data,\r\n );\r\n const decoder = new TextDecoder(\"utf-8\");\r\n return decoder.decode(decrypted);\r\n }\r\n\r\n //------------------------------\r\n //Colors\r\n //------------------------------\r\n static black = \"#000000\";\r\n static white = \"#FFFFFF\";\r\n \r\n static hexToRgb(hex: string): { r: number, g: number, b: number } {\r\n if (hex.indexOf(\"#\") === 0) {\r\n hex = hex.slice(1);\r\n }\r\n // convert 3-digit hex to 6-digits.\r\n if (hex.length === 3) {\r\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\r\n }\r\n if (hex.length !== 6) {\r\n throw new Error(\"Invalid HEX color.\");\r\n }\r\n return {\r\n r: parseInt(hex.slice(0, 2), 16),\r\n g: parseInt(hex.slice(2, 4), 16),\r\n b: parseInt(hex.slice(4, 6), 16)\r\n };\r\n }\r\n\r\n static invertColor(hex: string, bw = true): string {\r\n if (!hex) return Base.black;\r\n const rgb = Base.hexToRgb(hex);\r\n if (bw) {\r\n // https://stackoverflow.com/a/3943023/112731\r\n return (rgb.r * 0.299 + rgb.g * 0.587 + rgb.b * 0.114) > 186\r\n ? Base.black\r\n : Base.white;\r\n }\r\n // pad each with zeros and return\r\n return \"#\" + Base.padZeros((255 - rgb.r).toString(16), 2) + Base.padZeros((255 - rgb.g).toString(16), 2) + Base.padZeros((255 - rgb.b).toString(16), 2);\r\n }\r\n\r\n static isWhite(hex: string): boolean {\r\n //console.log(\"hex\", hex);\r\n if (!hex) return false;\r\n const rgb = Base.hexToRgb(hex);\r\n //console.log(\"rgb\", rgb);\r\n return rgb.r > 254 && rgb.g > 254 && rgb.b > 254;\r\n }\r\n}\r\n\r\n//***********************************************************************\r\n//Moment locale FI import from moment/locale/fi did not work\r\n//***********************************************************************\r\nconst numbersPast = \"nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän\".split(\" \");\r\nconst numbersFuture = [\r\n \"nolla\", \"yhden\", \"kahden\", \"kolmen\", \"neljän\", \"viiden\", \"kuuden\",\r\n numbersPast[7], numbersPast[8], numbersPast[9]\r\n];\r\nfunction translate(number, withoutSuffix, key, isFuture) {\r\n let result = \"\";\r\n switch (key) {\r\n case \"s\":\r\n return isFuture ? \"muutaman sekunnin\" : \"muutama sekunti\";\r\n case \"ss\":\r\n return isFuture ? \"sekunnin\" : \"sekuntia\";\r\n case \"m\":\r\n return isFuture ? \"minuutin\" : \"minuutti\";\r\n case \"mm\":\r\n result = isFuture ? \"minuutin\" : \"minuuttia\";\r\n break;\r\n case \"h\":\r\n return isFuture ? \"tunnin\" : \"tunti\";\r\n case \"hh\":\r\n result = isFuture ? \"tunnin\" : \"tuntia\";\r\n break;\r\n case \"d\":\r\n return isFuture ? \"päivän\" : \"päivä\";\r\n case \"dd\":\r\n result = isFuture ? \"päivän\" : \"päivää\";\r\n break;\r\n case \"M\":\r\n return isFuture ? \"kuukauden\" : \"kuukausi\";\r\n case \"MM\":\r\n result = isFuture ? \"kuukauden\" : \"kuukautta\";\r\n break;\r\n case \"y\":\r\n return isFuture ? \"vuoden\" : \"vuosi\";\r\n case \"yy\":\r\n result = isFuture ? \"vuoden\" : \"vuotta\";\r\n break;\r\n }\r\n result = verbalNumber(number, isFuture) + \" \" + result;\r\n return result;\r\n}\r\nfunction verbalNumber(number, isFuture) {\r\n return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;\r\n}\r\nmoment.defineLocale(\"fi\", {\r\n months: \"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu\".split(\"_\"),\r\n monthsShort: \"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu\".split(\"_\"),\r\n weekdays: \"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai\".split(\"_\"),\r\n weekdaysShort: \"su_ma_ti_ke_to_pe_la\".split(\"_\"),\r\n weekdaysMin: \"su_ma_ti_ke_to_pe_la\".split(\"_\"),\r\n longDateFormat: {\r\n LT: \"HH.mm\",\r\n LTS: \"HH.mm.ss\",\r\n L: \"DD.MM.YYYY\",\r\n LL: \"Do MMMM[ta] YYYY\",\r\n LLL: \"Do MMMM[ta] YYYY, [klo] HH.mm\",\r\n LLLL: \"dddd, Do MMMM[ta] YYYY, [klo] HH.mm\",\r\n l: \"D.M.YYYY\",\r\n ll: \"Do MMM YYYY\",\r\n lll: \"Do MMM YYYY, [klo] HH.mm\",\r\n llll: \"ddd, Do MMM YYYY, [klo] HH.mm\"\r\n },\r\n calendar: {\r\n sameDay: \"[tänään] [klo] LT\",\r\n nextDay: \"[huomenna] [klo] LT\",\r\n nextWeek: \"dddd [klo] LT\",\r\n lastDay: \"[eilen] [klo] LT\",\r\n lastWeek: \"[viime] dddd[na] [klo] LT\",\r\n sameElse: \"L\"\r\n },\r\n relativeTime: {\r\n future: \"%s päästä\",\r\n past: \"%s sitten\",\r\n s: translate,\r\n ss: translate,\r\n m: translate,\r\n mm: translate,\r\n h: translate,\r\n hh: translate,\r\n d: translate,\r\n dd: translate,\r\n M: translate,\r\n MM: translate,\r\n y: translate,\r\n yy: translate\r\n },\r\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\r\n ordinal: (n: number) => { return n + \".\"; },\r\n week: {\r\n dow: 1, // Monday is the first day of the week.\r\n doy: 4 // The week that contains Jan 4th is the first week of the year.\r\n }\r\n});","import { Base } from \"../../framework/base\";\r\n\r\nexport interface IEditItem {\r\n id: string;\r\n rowId: string;\r\n\r\n isNew(): boolean;\r\n getHash(): string;\r\n}\r\n\r\nexport class EditItem implements IEditItem {\r\n id: string;\r\n rowId: string;\r\n\r\n constructor();\r\n constructor(obj: IEditItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.rowId = obj && obj.rowId || \"\";\r\n }\r\n\r\n isNew(): boolean {\r\n return !this.rowId;\r\n }\r\n\r\n getHash(): string {\r\n return (this.id ?? \"\") + \"#\" + (this.rowId ?? \"\");\r\n }\r\n \r\n static getHash(items: IEditItem[]): string {\r\n if (!items || items.length < 1) return \"\";\r\n return Base.joinSuffix(items.map(i => i.getHash()), \"$\");\r\n }\r\n\r\n static setItemIdsFromIds(items: IEditItem[], ids: string[]) {\r\n if (items.length < 0 || ids.length < 0) return;\r\n for (let i = 0; i < Math.min(items.length, ids.length); i++) {\r\n items[i].id = ids[i];\r\n }\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { FileType } from \"../enums\";\r\nimport { EditItem, IEditItem } from \"./editItem\";\r\n\r\nexport interface IFileAttachment extends IEditItem {\r\n subOwnerId: string;\r\n type: FileType;\r\n name: string;\r\n size: number;\r\n category: number;\r\n modifyDate: number;\r\n lastModified: number;\r\n thumbnail: string;\r\n file: File;\r\n}\r\n\r\nexport class FileAttachment extends EditItem implements IFileAttachment {\r\n subOwnerId: string;\r\n type: FileType;\r\n name: string;\r\n size: number;\r\n category: number;\r\n modifyDate: number;\r\n lastModified: number;\r\n thumbnail: string;\r\n file: File;\r\n\r\n constructor();\r\n constructor(obj: IFileAttachment);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.subOwnerId = obj && obj.subOwnerId || \"\";\r\n this.type = obj && obj.type || FileType.Unknown;\r\n this.name = obj && obj.name || \"\";\r\n this.size = obj && obj.size || 0;\r\n this.category = obj && obj.category || 0;\r\n this.modifyDate = obj && obj.modifyDate || 0;\r\n this.lastModified = obj && obj.lastModified || 0;\r\n this.thumbnail = obj && obj.thumbnail || \"\";\r\n this.file = null;\r\n if (obj && obj.file) {\r\n this.file = new File([obj.file], obj.file.name, { type: obj.file.type });\r\n }\r\n }\r\n\r\n static async fileToFileAttachment(file: File, category: number, subOwnerId: string = \"\"): Promise {\r\n if (Base.isNullOrUndefined(file)) return null;\r\n const attachment = new FileAttachment();\r\n attachment.id = Base.getGuid();\r\n attachment.subOwnerId = subOwnerId;\r\n attachment.name = file.name;\r\n attachment.size = file.size;\r\n attachment.type = Base.getFileType(attachment.name);\r\n attachment.category = category;\r\n attachment.modifyDate = (new Date()).getTime();\r\n attachment.lastModified = file.lastModified;\r\n attachment.thumbnail = null;\r\n attachment.file = file;\r\n if (attachment.type === FileType.Image) {\r\n const base64Picture = await Base.blobToBase64(file);\r\n attachment.thumbnail = base64Picture;\r\n return attachment;\r\n } else {\r\n return new Promise((resolve) => { resolve(attachment); });\r\n }\r\n }\r\n\r\n static async blobToFileAttachment(blob: Blob, category: number, subOwnerId: string = \"\"): Promise {\r\n if (!blob) return null;\r\n const time = (new Date()).getTime();\r\n const name = \"Photo \" + Base.timeToDateTimeStr(time, true) + \".jpg\";\r\n const attachment = new FileAttachment();\r\n attachment.id = Base.getGuid();\r\n attachment.subOwnerId = subOwnerId;\r\n attachment.name = name;\r\n attachment.size = blob.size;\r\n attachment.type = Base.getFileType(name);\r\n attachment.category = category;\r\n attachment.modifyDate = time;\r\n attachment.lastModified = 0;\r\n attachment.thumbnail = null;\r\n attachment.file = Base.blobToFile(blob, name);\r\n const base64Picture = await Base.blobToBase64(blob);\r\n attachment.thumbnail = base64Picture;\r\n return attachment;\r\n }\r\n\r\n static async photoToFileAttachment(dataUrl: string, category: number, subOwnerId: string = \"\"): Promise {\r\n if (Base.isNullOrEmpty(dataUrl)) return null;\r\n return FileAttachment.blobToFileAttachment(Base.dataUriToBlob(dataUrl), category, subOwnerId);\r\n }\r\n\r\n static getFirstFileAttachmentFromFileList(fileList: FileList, category: number, subOwnerId: string = \"\"): Promise {\r\n if (fileList.length < 1) return new Promise((resolve) => { resolve(null); });\r\n return FileAttachment.fileToFileAttachment(fileList[0], category, subOwnerId);\r\n }\r\n\r\n static async addFileListToFileAttachments(attachments: FileAttachment[], fileList: FileList | File[], category: number, subOwnerId: string = \"\"): Promise {\r\n const promises: Promise[] = [];\r\n for (let i = 0; i < fileList.length; i++) {\r\n const file = fileList[i];\r\n if (Base.isNullOrUndefined(file)) continue;\r\n promises.push(FileAttachment.fileToFileAttachment(file, category, subOwnerId));\r\n }\r\n const result = attachments.slice(0);\r\n const newAttachments = await Promise.all(promises);\r\n for (const newAttachment of newAttachments) {\r\n if (Base.isNullOrUndefined(newAttachment)) continue;\r\n result.push(newAttachment);\r\n }\r\n return result;\r\n }\r\n\r\n static sortFileAttachments(items: IFileAttachment[]): IFileAttachment[] {\r\n if (!items && items.length < 2) return items;\r\n return items.sort((a: IFileAttachment, b: IFileAttachment) => { return (!a || !b) ? 0 : (Base.strCompare(a.name, b.name)); });\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\n\r\nexport interface IGetTitle {\r\n getTitle(): string;\r\n}\r\n\r\nexport interface IGetHash {\r\n getHash(): string;\r\n}\r\n\r\nexport interface IIdGetTitle extends IGetTitle {\r\n id: string;\r\n}\r\n\r\nexport interface IIdTitle extends IIdGetTitle {\r\n title: string;\r\n\r\n getHash(): string;\r\n}\r\n\r\nexport class IdTitle implements IIdTitle {\r\n id: string;\r\n title: string;\r\n\r\n constructor();\r\n constructor(obj: IIdTitle);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.title = obj && obj.title || \"\";\r\n }\r\n\r\n static createIdTitle(id: string, title: string): IIdTitle {\r\n const result = new IdTitle();\r\n result.id = id;\r\n result.title = title;\r\n return result;\r\n }\r\n\r\n static createIdTitleSimple(text: string): IIdTitle {\r\n const result = new IdTitle();\r\n result.id = text;\r\n result.title = text;\r\n return result;\r\n }\r\n\r\n getTitle(): string {\r\n return this.title;\r\n }\r\n\r\n getHash(): string {\r\n return this.id + \"#\" + this.title;\r\n }\r\n\r\n static getHash(items: IGetHash[]): string {\r\n if (!items || items.length < 1) return \"\";\r\n return Base.joinSuffix(items.map(i => i.getHash()), \"$\");\r\n }\r\n\r\n static equal(a: IGetHash[], b: IGetHash[]): boolean {\r\n if (!a && !b) return true;\r\n if (!a || !b) return false;\r\n if (a.length !== b.length) return false;\r\n for (let i = 0; i < a.length; i++) {\r\n if (a[i].getHash() !== b[i].getHash()) return false;\r\n }\r\n return true;\r\n }\r\n\r\n static getTitleById(items: IIdTitle[], id: string): string {\r\n if (!items || items.length < 1) return \"\";\r\n const item = items.find(i => i.id === id);\r\n return item?.title ?? \"\";\r\n }\r\n \r\n static sortIdTitles(items: IIdGetTitle[], asc: boolean): IIdGetTitle[] {\r\n if (!items && items.length < 2) return items;\r\n return items.sort((a: IIdGetTitle, b: IIdGetTitle) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.getTitle(), b.getTitle())); });\r\n }\r\n}","export interface IDictionary {\r\n values: { [key: string]: T };\r\n\r\n add(key: string, value: T);\r\n get(key: string): T;\r\n remove(key: string);\r\n clear();\r\n}\r\n\r\nexport class Dictionary implements IDictionary {\r\n values: { [key: string]: T };\r\n\r\n constructor() {\r\n this.values = {};\r\n }\r\n \r\n add(key: string, value: T) {\r\n if (!key) return;\r\n this.values[key] = value;\r\n }\r\n\r\n get(key: string): T {\r\n if (!key) return null;\r\n if (Object.prototype.hasOwnProperty.call(this.values, key)) {\r\n return this.values[key];\r\n }\r\n }\r\n \r\n remove(key: string) {\r\n if (!key) return;\r\n if (Object.prototype.hasOwnProperty.call(this.values, key)) {\r\n delete this.values[key];\r\n }\r\n }\r\n\r\n clear() {\r\n for (const key in this.values) {\r\n delete this.values[key];\r\n }\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { Dictionary, IDictionary } from \"./dictionary\";\r\n\r\nexport interface IIdTitleNode {\r\n id: string;\r\n title: string;\r\n comment: string;\r\n active: boolean;\r\n children: IIdTitleNode[];\r\n attributes: IDictionary;\r\n\r\n getTitle(): string;\r\n getAttributeValue(key: string): string;\r\n hasChildren(): boolean;\r\n getById(id: string): IIdTitleNode;\r\n getByIds(ids: string[]): IIdTitleNode[];\r\n getFirstActiveNode(): IIdTitleNode;\r\n getChildIds(): string[];\r\n getActiveChildIds(): string[];\r\n setHierarchialTitle(prefix: string);\r\n containsAllChildrenIds(ids: string[]): boolean;\r\n containsSomeChildrenIds(ids: string[]): boolean;\r\n removeIds(ids: string[]): IIdTitleNode;\r\n getAsList(list: IIdTitleNode[]): IIdTitleNode[];\r\n}\r\n\r\nexport class IdTitleNode implements IIdTitleNode {\r\n id: string;\r\n title: string;\r\n comment: string;\r\n active: boolean;\r\n children: IdTitleNode[];\r\n attributes: Dictionary;\r\n\r\n constructor();\r\n constructor(obj: IIdTitleNode);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.title = obj && obj.title || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.active = obj && obj.active || false;\r\n this.children = Base.getTypedArray(obj ? obj.children : null, IdTitleNode);\r\n this.attributes = new Dictionary();\r\n if (obj && obj.attributes) {\r\n for (const key in obj.attributes.values) {\r\n this.attributes.add(key, obj.attributes.values[key]);\r\n }\r\n }\r\n }\r\n\r\n static createIdTitleNode(id: string, title: string, children: IIdTitleNode[], active: boolean = true, attributes: { key: string, value: string }[] = null, comment: string = \"\"): IIdTitleNode {\r\n const result = new IdTitleNode();\r\n result.id = id;\r\n result.title = title;\r\n result.comment = comment;\r\n result.active = active;\r\n result.children = children;\r\n if (attributes) {\r\n if (attributes) {\r\n for (const item of attributes) {\r\n result.attributes.add(item.key, item.value);\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n getTitle(): string {\r\n return this.title;\r\n }\r\n \r\n getAttributeValue(key: string): string {\r\n return this.attributes.get(key);\r\n }\r\n\r\n hasChildren(): boolean {\r\n return this.children.length > 0;\r\n }\r\n\r\n getById(id: string): IIdTitleNode {\r\n if (id === this.id) return this;\r\n for (const child of this.children) {\r\n const result = child.getById(id);\r\n if (!result) continue;\r\n return result;\r\n }\r\n return null;\r\n }\r\n\r\n static getById(items: IIdTitleNode[], id: string): IIdTitleNode {\r\n if (!items || items.length < 1) return null;\r\n for (const item of items) {\r\n const result = item.getById(id);\r\n if (!result) continue;\r\n return result;\r\n }\r\n return null;\r\n }\r\n\r\n getByIds(ids: string[]): IIdTitleNode[] {\r\n let result: IIdTitleNode[] = [];\r\n if (ids.indexOf(this.id) > -1) {\r\n result.push(this);\r\n }\r\n for (const child of this.children) {\r\n result = result.concat(child.getByIds(ids));\r\n }\r\n return result;\r\n }\r\n\r\n static getByIds(items: IIdTitleNode[], ids: string[]): IIdTitleNode[] {\r\n let result: IIdTitleNode[] = [];\r\n if (!items || items.length < 1 || !ids || ids.length < 1) return result;\r\n for (const item of items) {\r\n result = result.concat(item.getByIds(ids));\r\n }\r\n return result;\r\n }\r\n\r\n getFirstActiveNode(): IIdTitleNode {\r\n if (this.active) return this;\r\n for (const child of this.children) {\r\n const result = child.getFirstActiveNode();\r\n if (!result) continue;\r\n return result;\r\n }\r\n return null;\r\n }\r\n\r\n static getFirstActiveNode(items: IIdTitleNode[]): IIdTitleNode {\r\n if (!items || items.length < 1) return null;\r\n for (const item of items) {\r\n const result = item.getFirstActiveNode();\r\n if (!result) continue;\r\n return result;\r\n }\r\n return null;\r\n }\r\n\r\n getChildIds(): string[] {\r\n let result = this.children.map(i => i.id);\r\n for (const child of this.children) {\r\n result = result.concat(child.getChildIds());\r\n }\r\n return result;\r\n }\r\n\r\n static getChildIds(items: IIdTitleNode[]): string[] {\r\n if (!items || items.length < 1) return [];\r\n let result: string[] = [];\r\n for (const item of items) {\r\n result = result.concat(item.getChildIds());\r\n }\r\n return result;\r\n }\r\n\r\n getActiveChildIds(): string[] {\r\n let result = this.children.filter(i => i.active).map(i => i.id);\r\n for (const child of this.children) {\r\n result = result.concat(child.getChildIds());\r\n }\r\n return result;\r\n }\r\n\r\n static getActiveChildIds(items: IIdTitleNode[]): string[] {\r\n if (!items || items.length < 1) return [];\r\n let result: string[] = [];\r\n for (const item of items) {\r\n result = result.concat(item.getActiveChildIds());\r\n }\r\n return result;\r\n }\r\n\r\n containsAllChildrenIds(ids: string[]): boolean {\r\n if (!ids || ids.length < this.children.length) return false;\r\n return this.children.filter(i => ids.indexOf(i.id) > -1).length === this.children.length;\r\n }\r\n \r\n containsSomeChildrenIds(ids: string[]): boolean {\r\n if (!ids) return false;\r\n return this.children.filter(i => ids.indexOf(i.id) > -1).length > 0;\r\n }\r\n \r\n setHierarchialTitle(prefix: string) {\r\n this.title = (prefix ? prefix + \" / \" : \"\") + this.title;\r\n for (const child of this.children) {\r\n child.setHierarchialTitle(this.title);\r\n }\r\n }\r\n\r\n static sortUIdTitleNodes(items: IIdTitleNode[]): IIdTitleNode[] {\r\n if (!items && items.length < 2) return items;\r\n const result = items.sort((a: IIdTitleNode, b: IIdTitleNode) => { return (!a || !b) ? 0 : (Base.strCompare(a.title, b.title)); });\r\n for (const item of result) {\r\n item.children = IdTitleNode.sortUIdTitleNodes(item.children);\r\n }\r\n return result;\r\n }\r\n \r\n static setHierarchialTitles(items: IIdTitleNode[]) {\r\n for (const item of items) {\r\n item.setHierarchialTitle(null);\r\n }\r\n }\r\n\r\n removeIds(ids: string[]): IIdTitleNode {\r\n if (ids.indexOf(this.id) > -1) {\r\n return null;\r\n }\r\n const result = new IdTitleNode(this);\r\n result.children = [];\r\n for (const child of this.children) {\r\n const newChild = child.removeIds(ids);\r\n if (!newChild) continue;\r\n result.children.push(newChild);\r\n }\r\n return result;\r\n }\r\n\r\n static removeIds(items: IIdTitleNode[], ids: string[]): IIdTitleNode[] {\r\n const result: IIdTitleNode[] = [];\r\n for (const item of items) {\r\n const newItem = item.removeIds(ids);\r\n if (!newItem) continue;\r\n result.push(newItem);\r\n }\r\n return result;\r\n }\r\n\r\n getAsList(list: IIdTitleNode[]): IIdTitleNode[] {\r\n list.push(this);\r\n if (this.children.length < 1) return list;\r\n for (const child of this.children) {\r\n child.getAsList(list);\r\n }\r\n return list;\r\n }\r\n\r\n static getAsList(nodes: IIdTitleNode[]): IIdTitleNode[] {\r\n if (!nodes || nodes.length < 1) return [];\r\n const result: IIdTitleNode[] = [];\r\n for (const node of nodes) {\r\n node.getAsList(result);\r\n }\r\n return result;\r\n }\r\n\r\n static equalIdsInArrays(a: IIdTitleNode[], b: IIdTitleNode[]): boolean {\r\n return Base.equalStrArrays(IdTitleNode.getAsList(a).map(i => i.id), IdTitleNode.getAsList(b).map(i => i.id));\r\n }\r\n\r\n static equalIds(a: IIdTitleNode[], b: IIdTitleNode[]): boolean {\r\n return Base.equalStrArrays(IdTitleNode.getChildIds(a ?? []), IdTitleNode.getChildIds(b ?? []));\r\n }\r\n\r\n static keepAvailableSelectedIds(items: IIdTitleNode[], selectedIds: string[]): string[] {\r\n let result = selectedIds.slice(0);\r\n if (result.length > 0 && result[0] !== Base.emptyGuid) {\r\n const unitIds = IdTitleNode.getChildIds(items);\r\n result = result.filter(i => unitIds.indexOf(i) > -1);\r\n }\r\n return result;\r\n }\r\n}","export interface ICompanyMenuItem {\r\n id: string;\r\n code: string;\r\n name: string;\r\n logo: string;\r\n active: boolean;\r\n}\r\n\r\nexport class CompanyMenuItem implements ICompanyMenuItem {\r\n id: string;\r\n code: string;\r\n name: string;\r\n logo: string;\r\n active: boolean;\r\n\r\n constructor();\r\n constructor(obj: ICompanyMenuItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.logo = obj && obj.logo || \"\";\r\n this.active = obj && obj.active || false;\r\n }\r\n}","export const allPartnersCompanyGroupCode = \"ALL_PARTNERS\";\r\nexport const removeConfirmationWord = \"DELETE\";\r\nexport const downloadMimeType = \"application/octet-stream\";\r\nexport const whistleBlowSystemUserCode = \"SYSTEM\";\r\nexport const minimumPasswordLength = 8;\r\nexport const maximumPasswordLength = 30;\r\n//UserParameterCodes\r\nexport const userParameterShowPageNavigation = \"ShowPageNavigation\";\r\n//OptionCode\r\nexport const optionCodeTaskTypeExpressionInfoDocument = \"TaskTypeExpressionInfoDocument\";\r\n//Mobile\r\nexport const infiniteListPageSize = 30;\r\nexport const infiniteListPageHalfSize = 15;\r\n","import { Translations } from \"./translations\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport enum DialogButtonType {\r\n None = \"0\",\r\n Default = \"1\",\r\n Primary = \"2\",\r\n Danger = \"3\"\r\n}\r\n\r\nexport enum DialogButtonSize {\r\n Normal = \"0\",\r\n Large = \"1\",\r\n Small = \"2\",\r\n VerySmall = \"3\",\r\n}\r\n\r\nexport enum AttachmentImageSize {\r\n Normal = \"0\",\r\n Large = \"1\"\r\n}\r\n\r\nexport enum FileType {\r\n Unknown,\r\n Word,\r\n Excel,\r\n PowerPoint,\r\n Pdf,\r\n Image,\r\n Archive,\r\n Text,\r\n Html,\r\n Document = 20\r\n}\r\n\r\nexport enum DocumentVersionType\r\n{\r\n AutoSave,\r\n Publish\r\n}\r\n\r\nexport enum Permission {\r\n None,\r\n Read,\r\n Edit,\r\n Full\r\n}\r\n\r\nexport enum MessageTypeClass {\r\n NormalMessage,\r\n AdminMessage\r\n}\r\n\r\nexport enum TaskRepetitionType {\r\n NotRepeated,\r\n Repeated\r\n}\r\n\r\nexport enum TaskVisibility {\r\n PrivateAndPublic,\r\n Private,\r\n Public\r\n}\r\n\r\nexport enum TaskDataRowDataType {\r\n String,\r\n Integer,\r\n Number,\r\n Date,\r\n Time,\r\n Boolean,\r\n Label,\r\n TimeSpan,\r\n StringArray,\r\n TreeStringArray,\r\n LineBreak\r\n}\r\n\r\nexport const enum TaskTypeClassWidthPrefix {\r\n Web = \"col-md-\",\r\n Web2 = \"col-lg-\",\r\n Mobile = \"col-\",\r\n Print = \"printWidth-\"\r\n}\r\n\r\nexport const enum TaskTypeClassHidden {\r\n Web = \"d-none-web\",\r\n Mobile = \"d-none\",\r\n Print = \"printHidden\",\r\n Generic = \"hidden\"\r\n}\r\n\r\nexport const enum TaskTypeClassTextAreaSize {\r\n Small = \"sTextArea\",\r\n Medium = \"mTextArea\",\r\n Large = \"lTextArea\",\r\n Extra = \"eTextArea\"\r\n}\r\n\r\nexport const enum TaskTypeClassTextSize {\r\n Small = \"sText\",\r\n Medium = \"mText\",\r\n Large = \"lText\",\r\n Extra = \"eText\"\r\n}\r\n\r\nexport const enum TaskTypeClassRightAlign {\r\n Right = \"ra\"\r\n}\r\n\r\nexport const enum TaskTypeClassNoTitle {\r\n No = \"noTitleInRow\"\r\n}\r\n\r\nexport const enum TaskTypeClassFontWeight {\r\n Normal = \"fontNormal\",\r\n Bold = \"fontBold\"\r\n}\r\n\r\nexport const enum TaskTypeClassPreWrap {\r\n PreWrap = \"preWrap\"\r\n}\r\n\r\nexport enum TaskStateEditabilityType {\r\n Editable,\r\n Locked\r\n}\r\n\r\nexport enum ApplicationPermissionType {\r\n Message, //0\r\n Document, //1\r\n CompanyGroup, //2\r\n Company, //3\r\n UserGroup, //4\r\n User, //5\r\n Log, //6\r\n Record, //7\r\n Event, //8\r\n Task, //9\r\n InstantMessage, //10\r\n WhistleBlow, //12\r\n CalendarTask //13\r\n}\r\n\r\nexport enum DatabaseRecordType {\r\n Message, //0\r\n Document, //1\r\n File, //2\r\n Event, //3\r\n Task, //4\r\n RecordUser, //5\r\n Company, //6\r\n CompanyGroup, //7\r\n UserGroup, //8\r\n User, //9\r\n InstantMessage, //10\r\n WhistleBlow, //11\r\n TaskDataRow, //12\r\n CalendarTask //13\r\n}\r\n\r\nexport enum FrontPagePanelType {\r\n Message, //0\r\n Event, //1\r\n Image, //2\r\n UserModifiedRecords, //3\r\n OtherModifiedRecords, //4\r\n ToDo, //5\r\n Banner = 99\r\n}\r\n\r\nexport enum ContentPagePanelType {\r\n Statistics, //0\r\n MyFiltersAndReports, //1\r\n SharedFiltersAndReports, //2\r\n StandardFiltersAndReports, //3\r\n Chart\r\n}\r\n\r\nexport enum FrontPagePanelSize {\r\n None, //0\r\n OneXOne, //1\r\n TwoXOne, //2\r\n OneXTwo, //3\r\n TwoXTwo //4\r\n}\r\n\r\nexport enum CultureCode {\r\n Fi = \"fi\",\r\n En = \"en-US\",\r\n Sv = \"sv-FI\"\r\n}\r\n\r\nexport enum GroupType {\r\n None,\r\n UserGroup,\r\n CompanyGroup\r\n}\r\n\r\nexport enum GroupPermissionLevel {\r\n None, //0\r\n Read,\r\n Write,\r\n Admin\r\n}\r\n\r\nexport enum UserGroupAuthorizationLevel {\r\n None, //0\r\n User,\r\n SuperUser, //2 = Ulkoinen auditoija\r\n Admin,\r\n SystemAdmin\r\n}\r\n\r\nexport enum CompanyGroupType {\r\n Normal,\r\n System,\r\n Fixed //Fixed one company group (including ALL_PARTNERS group!)\r\n}\r\n\r\nexport enum UserGroupType {\r\n Normal,\r\n System, //Not in use\r\n Fixed //Fixed one user group\r\n}\r\n\r\nexport enum RecordEmailNotificationType {\r\n NotInUse,\r\n Expiration090,\r\n Expiration120,\r\n Expiration180\r\n}\r\n\r\nexport enum UserType {\r\n Normal,\r\n External,\r\n Removed = 99\r\n}\r\n\r\nexport enum OptionDataType {\r\n String,\r\n Integer,\r\n Boolean,\r\n GuidArray\r\n}\r\n\r\nexport enum CompanyActiveState {\r\n NotInUse,\r\n InTesting,\r\n InUse\r\n}\r\n\r\nexport enum ConfirmationDialogResult {\r\n Yes,\r\n No,\r\n Cancel\r\n}\r\n\r\nexport enum RecordEmployeeType {\r\n Employee,\r\n Entrepreneur,\r\n AgencyWorker,\r\n Other,\r\n Intern,\r\n SeasonalWorker,\r\n}\r\n\r\nexport enum RecordEducationScopeUnit {\r\n Hour,\r\n Day,\r\n CourseCredit,\r\n StudyWeek,\r\n Course\r\n}\r\n\r\nexport enum RecordUserLogEntryType {\r\n Create,\r\n Open,\r\n Print,\r\n Report,\r\n Save\r\n}\r\n\r\nexport enum RecordUserAttachmentCategory {\r\n RecordUser,\r\n Introduction,\r\n FurtherEducation,\r\n Employment,\r\n Salary,\r\n TransferredProperty,\r\n Familiarization\r\n}\r\n\r\nexport enum UserRemoveType {\r\n RemoveUser,\r\n RemoveUserAndRecordUserArchive,\r\n RemoveUserAndRecordUser\r\n}\r\n\r\nexport enum RecordUserRemoveType\r\n{\r\n RemoveRecordUser,\r\n RemoveRecordUserAndUserExpired,\r\n RemoveRecordUserAndUser\r\n}\r\n\r\nexport enum ReportType {\r\n Html,\r\n Pdf,\r\n Excel\r\n}\r\n\r\nexport enum InstantMessageReadState {\r\n NotRead = 0,\r\n SomeRead = 1,\r\n AllRead = 2,\r\n UserRead = 3\r\n}\r\n\r\nexport enum InstantMessageChannelArchivingType {\r\n None,\r\n KeepMessages,\r\n RemoveChannel\r\n}\r\n\r\nexport enum InstantMessageChannelUserType {\r\n User,\r\n Admin\r\n}\r\n\r\nexport enum InstantMessageChannelUserActiveState {\r\n Rejected,\r\n Active,\r\n Invited\r\n}\r\n\r\nexport enum InstantMessageChannelMessageExpirationTime {\r\n None = 0,\r\n Quarter = 3,\r\n HalfYear = 6,\r\n Year = 12\r\n}\r\n\r\nexport enum InstantMessageUserInvitationAcceptType {\r\n CannotInvite = 0,\r\n CanInvite = 1,\r\n AutoAcceptInvitation = 2\r\n}\r\n\r\nexport enum SignalRConnectionState {\r\n Connecting = 0,\r\n Connected = 1,\r\n Reconnecting = 2,\r\n Disconnected = 4\r\n}\r\n\r\nexport enum SignalRModuleType {\r\n Unknown = 0,\r\n InstantMessage = 1\r\n}\r\n\r\nexport enum SignalRRecordType {\r\n Unknown = 0,\r\n InstantMessage = 1,\r\n InstantMessageChannel = 2\r\n}\r\n\r\nexport enum EventAttachmentCategory {\r\n Basic,\r\n Action\r\n}\r\n\r\nexport enum EventState\r\n{\r\n Draft = 3,\r\n NotAssigned = 4,\r\n Open = 5,\r\n Closed = 6\r\n}\r\n\r\nexport enum EventUserState\r\n{\r\n NotHandler,\r\n NotApproved,\r\n Approved\r\n}\r\n\r\nexport enum EventStateFilter {\r\n All = 0,\r\n Draft = 3,\r\n NotAssigned = 4,\r\n Open = 5,\r\n Closed = 6\r\n}\r\n\r\nexport enum EventObserverActionUseType\r\n{\r\n NotInUse,\r\n InUse,\r\n Required\r\n}\r\n\r\nexport enum EventLocationUseType\r\n{\r\n NotInUse,\r\n InUse,\r\n}\r\n\r\nexport enum WhistleBlowState {\r\n New,\r\n Received,\r\n InProgress,\r\n Resolved,\r\n Archived = 99,\r\n Archived3 = 100,\r\n Archived2 = 101,\r\n Archived1 = 102\r\n}\r\n\r\nexport enum WhistleBlowArchiveState {\r\n NotArchived,\r\n OnlyStateChange,\r\n InformantDataRemoved,\r\n AllDataRemoved\r\n}\r\n\r\nexport enum WhistleBlowStateFilter {\r\n Active = -2,\r\n All = -1\r\n}\r\n\r\nexport enum WhistleBlowSeverity {\r\n Unspecified,\r\n VeryLow,\r\n Low,\r\n Normal,\r\n High,\r\n Critical\r\n}\r\n\r\nexport enum WhistleBlowResolution {\r\n Unspecified,\r\n Resolved,\r\n Rejected,\r\n Canceled,\r\n Junk,\r\n Other\r\n}\r\n\r\nexport enum WhistleBlowSource {\r\n Unspecified,\r\n System,\r\n Phone,\r\n Email,\r\n Mail,\r\n Oral,\r\n Other\r\n}\r\n\r\nexport enum WhistleBlowAnonymity {\r\n Anonymous,\r\n NonAnonymous\r\n}\r\n\r\nexport enum WhistleBlowChannelResourceType\r\n{\r\n Text,\r\n Info\r\n}\r\n\r\nexport enum WhistleBlowArchivingType {\r\n ChangeState,\r\n ChangeStateAndRemoveInformantData,\r\n ChangeStateAndRemoveAllData\r\n}\r\n\r\nexport enum DefaultHandlerType {\r\n Handler,\r\n Notfied\r\n}\r\n\r\nexport enum EventTypeUsageType\r\n{\r\n Normal,\r\n SelectForNew\r\n}\r\n\r\nexport enum EventTypeCategory\r\n{\r\n A,\r\n B,\r\n C\r\n}\r\n\r\nexport enum UserFurtherEducationState {\r\n Valid = 0,\r\n Expired = 1,\r\n Archived = 2\r\n}\r\n\r\nexport enum ReportSharingType {\r\n NotShared = 0,\r\n Company = 1,\r\n AllCompanies = 2\r\n}\r\n\r\nexport enum CalendarTaskState\r\n{\r\n NotStarted,\r\n Started,\r\n Finished\r\n}\r\n\r\nexport enum CalendarTaskRepetitionType {\r\n NotRepeated = 0,\r\n Weekly = 1,\r\n Monthly = 2,\r\n Yearly = 3,\r\n}\r\n\r\nexport enum CalendarTaskPrivacyFilter\r\n{\r\n All,\r\n Private,\r\n Public\r\n}\r\n\r\nexport class EnumHelper {\r\n static isEqual(i: number, e: FileType | Permission | TaskRepetitionType | TaskDataRowDataType | DatabaseRecordType | GroupType | GroupPermissionLevel | UserGroupAuthorizationLevel | FrontPagePanelType | ContentPagePanelType\r\n | FrontPagePanelSize | CompanyGroupType | UserGroupType | RecordEmailNotificationType | UserType | UserGroupAuthorizationLevel | OptionDataType | CompanyActiveState | ApplicationPermissionType\r\n | ConfirmationDialogResult | RecordEmployeeType | RecordEducationScopeUnit | RecordUserLogEntryType | RecordUserAttachmentCategory | UserFurtherEducationState | RecordUserRemoveType | ReportType | UserRemoveType\r\n | EventState | EventUserState\r\n | InstantMessageChannelUserActiveState | InstantMessageUserInvitationAcceptType | InstantMessageReadState | InstantMessageChannelArchivingType\r\n | WhistleBlowState | WhistleBlowSeverity | WhistleBlowResolution | WhistleBlowChannelResourceType | WhistleBlowArchivingType | WhistleBlowAnonymity | WhistleBlowArchiveState\r\n | DefaultHandlerType | EventTypeUsageType | EventTypeCategory\r\n | SignalRConnectionState | SignalRModuleType | SignalRRecordType): boolean {\r\n return i > e - 0.5 && i < e + 0.5;\r\n }\r\n \r\n static isLessThan(i: number, e: FileType | Permission | TaskRepetitionType | TaskDataRowDataType | WhistleBlowState): boolean {\r\n return i < e - 0.5;\r\n }\r\n \r\n static isGreaterThan(i: number, e: FileType | Permission | TaskRepetitionType | TaskDataRowDataType | GroupPermissionLevel | UserGroupAuthorizationLevel): boolean {\r\n return i > e + 0.5;\r\n }\r\n\r\n static isLessOrEqualThan(i: number, e: FileType | Permission | TaskRepetitionType | TaskDataRowDataType): boolean {\r\n return EnumHelper.isLessThan(i, e) || EnumHelper.isEqual(i, e);\r\n }\r\n\r\n static isGreaterOrEqualThan(i: number, e: FileType | Permission | TaskRepetitionType | TaskDataRowDataType | GroupPermissionLevel | UserGroupAuthorizationLevel): boolean {\r\n return EnumHelper.isGreaterThan(i, e) || EnumHelper.isEqual(i, e);\r\n }\r\n\r\n static UserGroupAuthorizationLevelToStr(authorizationLevel: UserGroupAuthorizationLevel): string {\r\n if (EnumHelper.isEqual(authorizationLevel, UserGroupAuthorizationLevel.SystemAdmin)) return Translations.AuthorizationLevelSystemAdmin;\r\n if (EnumHelper.isEqual(authorizationLevel, UserGroupAuthorizationLevel.Admin)) return Translations.AuthorizationLevelAdmin;\r\n if (EnumHelper.isEqual(authorizationLevel, UserGroupAuthorizationLevel.SuperUser)) return Translations.AuthorizationLevelSuperUser;\r\n if (EnumHelper.isEqual(authorizationLevel, UserGroupAuthorizationLevel.User)) return Translations.AuthorizationLevelUser;\r\n return Translations.AuthorizationLevelNone;\r\n }\r\n\r\n static ApplicationPermissionTypeToStr(applicationPermissionType: ApplicationPermissionType): string {\r\n if (EnumHelper.isEqual(applicationPermissionType, ApplicationPermissionType.Message)) return Translations.CurrentTopics;\r\n if (EnumHelper.isEqual(applicationPermissionType, ApplicationPermissionType.Document)) return Translations.Documents;\r\n if (EnumHelper.isEqual(applicationPermissionType, ApplicationPermissionType.CompanyGroup)) return Translations.CompanyGroups;\r\n if (EnumHelper.isEqual(applicationPermissionType, ApplicationPermissionType.Company)) return Translations.Companies;\r\n if (EnumHelper.isEqual(applicationPermissionType, ApplicationPermissionType.UserGroup)) return Translations.UserGroups;\r\n if (EnumHelper.isEqual(applicationPermissionType, ApplicationPermissionType.User)) return Translations.Users;\r\n if (EnumHelper.isEqual(applicationPermissionType, ApplicationPermissionType.Record)) return Translations.UserRecords;\r\n if (EnumHelper.isEqual(applicationPermissionType, ApplicationPermissionType.Event)) return Translations.Events;\r\n if (EnumHelper.isEqual(applicationPermissionType, ApplicationPermissionType.Task)) return Translations.Tasks;\r\n if (EnumHelper.isEqual(applicationPermissionType, ApplicationPermissionType.Log)) return Translations.Log;\r\n if (EnumHelper.isEqual(applicationPermissionType, ApplicationPermissionType.InstantMessage)) return Translations.InstantMessagesMenuTitle;\r\n if (EnumHelper.isEqual(applicationPermissionType, ApplicationPermissionType.WhistleBlow)) return Translations.WhistleBlow;\r\n if (EnumHelper.isEqual(applicationPermissionType, ApplicationPermissionType.CalendarTask)) return Translations.Calendar;\r\n return \"\";\r\n }\r\n\r\n static DatabaseRecordTypeToStr(databaseRecordType: DatabaseRecordType): string {\r\n if (EnumHelper.isEqual(databaseRecordType, DatabaseRecordType.Message)) return Translations.Message;\r\n if (EnumHelper.isEqual(databaseRecordType, DatabaseRecordType.Document)) return Translations.Document;\r\n if (EnumHelper.isEqual(databaseRecordType, DatabaseRecordType.CompanyGroup)) return Translations.CompanyGroup;\r\n if (EnumHelper.isEqual(databaseRecordType, DatabaseRecordType.Company)) return Translations.Company;\r\n if (EnumHelper.isEqual(databaseRecordType, DatabaseRecordType.UserGroup)) return Translations.UserGroup;\r\n if (EnumHelper.isEqual(databaseRecordType, DatabaseRecordType.User)) return Translations.User;\r\n if (EnumHelper.isEqual(databaseRecordType, DatabaseRecordType.RecordUser)) return Translations.RecordUser;\r\n if (EnumHelper.isEqual(databaseRecordType, DatabaseRecordType.Event)) return Translations.Event;\r\n if (EnumHelper.isEqual(databaseRecordType, DatabaseRecordType.Task)) return Translations.Task;\r\n if (EnumHelper.isEqual(databaseRecordType, DatabaseRecordType.InstantMessage)) return Translations.InstantMessage;\r\n if (EnumHelper.isEqual(databaseRecordType, DatabaseRecordType.WhistleBlow)) return Translations.WhistleBlow;\r\n if (EnumHelper.isEqual(databaseRecordType, DatabaseRecordType.CalendarTask)) return Translations.CalendarTask;\r\n return \"\";\r\n }\r\n\r\n static ApplicationPermissionTypeToImageClass(applicationPermissionType: ApplicationPermissionType): string {\r\n if (EnumHelper.isEqual(applicationPermissionType, ApplicationPermissionType.Message)) return \"message\";\r\n if (EnumHelper.isEqual(applicationPermissionType, ApplicationPermissionType.Document)) return \"document\";\r\n if (EnumHelper.isEqual(applicationPermissionType, ApplicationPermissionType.CompanyGroup)) return \"companyGroup\";\r\n if (EnumHelper.isEqual(applicationPermissionType, ApplicationPermissionType.Company)) return \"company\";\r\n if (EnumHelper.isEqual(applicationPermissionType, ApplicationPermissionType.UserGroup)) return \"userGroup\";\r\n if (EnumHelper.isEqual(applicationPermissionType, ApplicationPermissionType.User)) return \"user\";\r\n if (EnumHelper.isEqual(applicationPermissionType, ApplicationPermissionType.Record)) return \"record\";\r\n if (EnumHelper.isEqual(applicationPermissionType, ApplicationPermissionType.Event)) return \"event\";\r\n if (EnumHelper.isEqual(applicationPermissionType, ApplicationPermissionType.Task)) return \"task\";\r\n if (EnumHelper.isEqual(applicationPermissionType, ApplicationPermissionType.Log)) return \"log\";\r\n if (EnumHelper.isEqual(applicationPermissionType, ApplicationPermissionType.InstantMessage)) return \"instantMessage\";\r\n if (EnumHelper.isEqual(applicationPermissionType, ApplicationPermissionType.WhistleBlow)) return \"whistleBlow\";\r\n if (EnumHelper.isEqual(applicationPermissionType, ApplicationPermissionType.CalendarTask)) return \"calendarTask\";\r\n return \"\";\r\n }\r\n\r\n static RecordEmployeeTypeToStr(recordEmployeeType: RecordEmployeeType): string {\r\n if (EnumHelper.isEqual(recordEmployeeType, RecordEmployeeType.Intern)) return Translations.Intern;\r\n if (EnumHelper.isEqual(recordEmployeeType, RecordEmployeeType.Employee)) return Translations.Employee;\r\n if (EnumHelper.isEqual(recordEmployeeType, RecordEmployeeType.AgencyWorker)) return Translations.AgencyWorker;\r\n if (EnumHelper.isEqual(recordEmployeeType, RecordEmployeeType.Entrepreneur)) return Translations.Entrepreneur;\r\n if (EnumHelper.isEqual(recordEmployeeType, RecordEmployeeType.SeasonalWorker)) return Translations.SeasonalWorker;\r\n if (EnumHelper.isEqual(recordEmployeeType, RecordEmployeeType.Other)) return Translations.Other;\r\n return \"\";\r\n }\r\n\r\n static RecordEmployeeTypeFromStr(recordEmployeeTypeStr: string): RecordEmployeeType {\r\n if (!recordEmployeeTypeStr) return RecordEmployeeType.Employee;\r\n if (recordEmployeeTypeStr.equalIgnoreCase(Translations.Intern)) return RecordEmployeeType.Intern;\r\n if (recordEmployeeTypeStr.equalIgnoreCase(Translations.Employee)) return RecordEmployeeType.Employee;\r\n if (recordEmployeeTypeStr.equalIgnoreCase(Translations.AgencyWorker)) return RecordEmployeeType.AgencyWorker;\r\n if (recordEmployeeTypeStr.equalIgnoreCase(Translations.Entrepreneur)) return RecordEmployeeType.Entrepreneur;\r\n if (recordEmployeeTypeStr.equalIgnoreCase(Translations.SeasonalWorker)) return RecordEmployeeType.SeasonalWorker;\r\n if (recordEmployeeTypeStr.equalIgnoreCase(Translations.Other)) return RecordEmployeeType.Other;\r\n return RecordEmployeeType.Employee;\r\n }\r\n\r\n static RecordEducationScopeUnitToStr(recordEducationScopeUnit: RecordEducationScopeUnit): string {\r\n if (EnumHelper.isEqual(recordEducationScopeUnit, RecordEducationScopeUnit.Hour)) return Translations.Hour;\r\n if (EnumHelper.isEqual(recordEducationScopeUnit, RecordEducationScopeUnit.Day)) return Translations.Day;\r\n if (EnumHelper.isEqual(recordEducationScopeUnit, RecordEducationScopeUnit.CourseCredit)) return Translations.CourseCredit;\r\n if (EnumHelper.isEqual(recordEducationScopeUnit, RecordEducationScopeUnit.StudyWeek)) return Translations.StudyWeek;\r\n if (EnumHelper.isEqual(recordEducationScopeUnit, RecordEducationScopeUnit.Course)) return Translations.Course;\r\n return \"\";\r\n }\r\n\r\n static RecordEducationScopeUnitToStrPlural(recordEducationScopeUnit: RecordEducationScopeUnit): string {\r\n if (EnumHelper.isEqual(recordEducationScopeUnit, RecordEducationScopeUnit.Hour)) return Translations.Hours;\r\n if (EnumHelper.isEqual(recordEducationScopeUnit, RecordEducationScopeUnit.Day)) return Translations.Days;\r\n if (EnumHelper.isEqual(recordEducationScopeUnit, RecordEducationScopeUnit.CourseCredit)) return Translations.CourseCredits;\r\n if (EnumHelper.isEqual(recordEducationScopeUnit, RecordEducationScopeUnit.StudyWeek)) return Translations.StudyWeeks;\r\n if (EnumHelper.isEqual(recordEducationScopeUnit, RecordEducationScopeUnit.Course)) return Translations.Courses;\r\n return \"\";\r\n }\r\n\r\n static RecordUserLogEntryTypeToStr(recordUserLogEntryType: RecordUserLogEntryType): string {\r\n if (EnumHelper.isEqual(recordUserLogEntryType, RecordUserLogEntryType.Create)) return Translations.RecordUserLogEntryTypeCreate;\r\n if (EnumHelper.isEqual(recordUserLogEntryType, RecordUserLogEntryType.Open)) return Translations.RecordUserLogEntryTypeOpen;\r\n if (EnumHelper.isEqual(recordUserLogEntryType, RecordUserLogEntryType.Print)) return Translations.RecordUserLogEntryTypePrint;\r\n if (EnumHelper.isEqual(recordUserLogEntryType, RecordUserLogEntryType.Report)) return Translations.RecordUserLogEntryTypeReport;\r\n if (EnumHelper.isEqual(recordUserLogEntryType, RecordUserLogEntryType.Save)) return Translations.RecordUserLogEntryTypeSave;\r\n return \"\";\r\n }\r\n\r\n static InstantMessageUserInvitationAcceptTypeToStr(instantMessageUserInvitationAcceptType: InstantMessageUserInvitationAcceptType): string {\r\n if (EnumHelper.isEqual(instantMessageUserInvitationAcceptType, InstantMessageUserInvitationAcceptType.CannotInvite)) return Translations.InstantMessageUserInvitationAcceptTypeCannotInvite;\r\n if (EnumHelper.isEqual(instantMessageUserInvitationAcceptType, InstantMessageUserInvitationAcceptType.CanInvite)) return Translations.InstantMessageUserInvitationAcceptTypeCanInvite;\r\n if (EnumHelper.isEqual(instantMessageUserInvitationAcceptType, InstantMessageUserInvitationAcceptType.AutoAcceptInvitation)) return Translations.InstantMessageUserInvitationAcceptTypeAutoAcceptInvitation;\r\n return \"\";\r\n }\r\n\r\n static EventStateToStr(event: EventState): string {\r\n if (EnumHelper.isEqual(event, EventState.Draft)) return Translations.Draft;\r\n if (EnumHelper.isEqual(event, EventState.NotAssigned)) return Translations.NotAssigned;\r\n if (EnumHelper.isEqual(event, EventState.Open)) return Translations.StateOpen;\r\n if (EnumHelper.isEqual(event, EventState.Closed)) return Translations.Closed;\r\n return \"\";\r\n }\r\n\r\n static EventStateToPluralStr(event: EventState): string {\r\n if (EnumHelper.isEqual(event, EventState.Draft)) return Translations.Drafts;\r\n if (EnumHelper.isEqual(event, EventState.NotAssigned)) return Translations.NotAssigned;\r\n if (EnumHelper.isEqual(event, EventState.Open)) return Translations.StateOpenPlural;\r\n if (EnumHelper.isEqual(event, EventState.Closed)) return Translations.ClosedPlural;\r\n return \"\";\r\n }\r\n\r\n static WhistleBlowStateToStr(whistleBlowState: WhistleBlowState): string {\r\n if (EnumHelper.isEqual(whistleBlowState, WhistleBlowState.New)) return Translations.WhistleBlowStateNew;\r\n if (EnumHelper.isEqual(whistleBlowState, WhistleBlowState.Received)) return Translations.WhistleBlowStateReceived;\r\n if (EnumHelper.isEqual(whistleBlowState, WhistleBlowState.InProgress)) return Translations.WhistleBlowStateInProgress;\r\n if (EnumHelper.isEqual(whistleBlowState, WhistleBlowState.Resolved)) return Translations.WhistleBlowStateResolved;\r\n if (EnumHelper.isEqual(whistleBlowState, WhistleBlowState.Archived)) return Translations.WhistleBlowStateArchived;\r\n return \"\";\r\n }\r\n\r\n static WhistleBlowResolutionToStr(whistleBlowResolution: WhistleBlowResolution): string {\r\n if (EnumHelper.isEqual(whistleBlowResolution, WhistleBlowResolution.Unspecified)) return Translations.WhistleBlowResolutionUnspecified;\r\n if (EnumHelper.isEqual(whistleBlowResolution, WhistleBlowResolution.Resolved)) return Translations.WhistleBlowResolutionResolved;\r\n if (EnumHelper.isEqual(whistleBlowResolution, WhistleBlowResolution.Rejected)) return Translations.WhistleBlowResolutionRejected;\r\n if (EnumHelper.isEqual(whistleBlowResolution, WhistleBlowResolution.Canceled)) return Translations.WhistleBlowResolutionCanceled;\r\n if (EnumHelper.isEqual(whistleBlowResolution, WhistleBlowResolution.Junk)) return Translations.WhistleBlowResolutionJunk;\r\n if (EnumHelper.isEqual(whistleBlowResolution, WhistleBlowResolution.Other)) return Translations.WhistleBlowResolutionOther;\r\n return \"\";\r\n }\r\n\r\n static WhistleBlowSeverityToStr(whistleBlowState: WhistleBlowSeverity): string {\r\n if (EnumHelper.isEqual(whistleBlowState, WhistleBlowSeverity.Unspecified)) return Translations.WhistleBlowSeverityUnspecified;\r\n if (EnumHelper.isEqual(whistleBlowState, WhistleBlowSeverity.VeryLow)) return Translations.WhistleBlowSeverityVeryLow;\r\n if (EnumHelper.isEqual(whistleBlowState, WhistleBlowSeverity.Low)) return Translations.WhistleBlowSeverityLow;\r\n if (EnumHelper.isEqual(whistleBlowState, WhistleBlowSeverity.Normal)) return Translations.WhistleBlowSeverityNormal;\r\n if (EnumHelper.isEqual(whistleBlowState, WhistleBlowSeverity.High)) return Translations.WhistleBlowSeverityHigh;\r\n if (EnumHelper.isEqual(whistleBlowState, WhistleBlowSeverity.Critical)) return Translations.WhistleBlowSeverityCritical;\r\n return \"\";\r\n }\r\n}\r\n/* eslint-enable no-unused-vars */","import { Base } from \"../../framework/base\";\r\nimport { ITaskTypeCol, modifyDateField, modifyUserNameField } from \"./taskTypeCol\";\r\nimport { TaskDataRowDataType, EnumHelper } from \"../enums\";\r\nimport { Translations } from \"../translations\";\r\n\r\nexport interface ITaskDataRowCol {\r\n field: string;\r\n valueStr: string;\r\n valueNbr: number;\r\n\r\n getHash(): string;\r\n getTaskDataRowColListUiValue(typeCol: ITaskTypeCol, modifyUserName: string, modifyDate: number): string;\r\n setTaskDataRowColValueFromDbValue(typeCol: ITaskTypeCol, value: any);\r\n matchesToFilter(lowFilter: string, typeCol: ITaskTypeCol, modifyUserName: string, modifyDate: number): boolean;\r\n}\r\n\r\nexport class TaskDataRowCol implements ITaskDataRowCol {\r\n field: string;\r\n valueStr: string;\r\n valueNbr: number;\r\n\r\n constructor();\r\n constructor(obj: ITaskDataRowCol);\r\n constructor(obj?: any) {\r\n this.field = obj && obj.field || \"\";\r\n this.valueStr = obj && obj.valueStr || \"\";\r\n this.valueNbr = obj && obj.valueNbr || null;\r\n }\r\n\r\n getHash(): string {\r\n return (this.field ?? \"\") + \"#\" + (this.valueStr ?? \"\") + \"#\" + (this.valueNbr ? this.valueNbr.toString() : \"\");\r\n }\r\n\r\n static crateTaskDataRowCol(field: string, valueStr: string, valueNbr: number): TaskDataRowCol {\r\n const result = new TaskDataRowCol();\r\n result.field = field;\r\n result.valueStr = valueStr;\r\n result.valueNbr = valueNbr;\r\n return result;\r\n }\r\n\r\n static getExpressionFieldTaskDataRowCols(items: ITaskDataRowCol[]): ITaskDataRowCol[] {\r\n if (Base.isNullOrUndefined(items)) return [];\r\n const result = items.slice(0);\r\n if (items.length > 1) {\r\n result.sort((a: ITaskDataRowCol, b: ITaskDataRowCol) => { return (Base.isNullOrUndefined(a) || Base.isNullOrUndefined(b) || Base.isNullOrUndefined(a.field) || Base.isNullOrUndefined(b.field)) ? 0 : (-1 * Base.numCompare(a.field.length, b.field.length)); });\r\n }\r\n return result;\r\n }\r\n\r\n static getExpressionFieldTaskTypeCols(items: ITaskTypeCol[]): ITaskTypeCol[] {\r\n if (!items) return [];\r\n const result = items.slice(0);\r\n if (items.length > 1) {\r\n result.sort((a: ITaskTypeCol, b: ITaskTypeCol) => { return (Base.isNullOrUndefined(a) || Base.isNullOrUndefined(b) || Base.isNullOrUndefined(a.field) || Base.isNullOrUndefined(b.field)) ? 0 : (-1 * Base.numCompare(a.field.length, b.field.length)); });\r\n }\r\n return result;\r\n }\r\n\r\n static getExpressionsFieldNames(typeCols: ITaskTypeCol[], expression: string): string[] {\r\n if (!expression || !typeCols) return [];\r\n const result: string[] = [];\r\n const cols = TaskDataRowCol.getExpressionFieldTaskTypeCols(typeCols);\r\n for (let i = 0; i < cols.length; i++) {\r\n const col = cols[i];\r\n const index = expression.indexOf(col.field);\r\n if (index < 0) continue;\r\n result.push(col.field);\r\n }\r\n return result;\r\n }\r\n\r\n static compareTaskDataRowCols(a: ITaskDataRowCol, b: ITaskDataRowCol, typeCol: ITaskTypeCol, asc: boolean) {\r\n const multiplier = asc ? 1 : -1;\r\n if (Base.isNullOrUndefined(a)) return multiplier * (Base.isNullOrUndefined(b) ? 0 : -1);\r\n if (Base.isNullOrUndefined(b)) return multiplier * 1;\r\n return multiplier *\r\n (typeCol.dataType === TaskDataRowDataType.String\r\n ? Base.strCompare(a.valueStr, b.valueStr)\r\n : Base.numCompare(a.valueNbr, b.valueNbr));\r\n }\r\n \r\n static strCompare(a: string, b: string, asc: boolean) {\r\n const multiplier = asc ? 1 : -1;\r\n if (Base.isNullOrUndefined(a)) return multiplier * (Base.isNullOrUndefined(b) ? 0 : -1);\r\n if (Base.isNullOrUndefined(b)) return multiplier * 1;\r\n return multiplier * Base.strCompare(a, b);\r\n }\r\n \r\n static numCompare(a: number, b: number, asc: boolean) {\r\n const multiplier = asc ? 1 : -1;\r\n if (Base.isNullOrUndefined(a)) return multiplier * (Base.isNullOrUndefined(b) ? 0 : -1);\r\n if (Base.isNullOrUndefined(b)) return multiplier * 1;\r\n return multiplier * Base.numCompare(a, b);\r\n }\r\n\r\n static getTimeEvalValue = (valueNbr: number): string => {\r\n let result = \"new Date()\";\r\n if (!Base.isNullOrUndefined(valueNbr)) {\r\n const date = new Date();\r\n date.setTime(valueNbr);\r\n result = \"new Date(Date.UTC(0,0,0,\" + date.getUTCHours() + \",\" + date.getUTCMinutes() + \",\" + date.getUTCSeconds() + \",\" + date.getUTCMilliseconds() + \"))\";\r\n }\r\n return result;\r\n };\r\n\r\n static getDateEvalValue = (valueNbr: number): string => {\r\n let result = \"new Date()\";\r\n if (!Base.isNullOrUndefined(valueNbr)) {\r\n const date = new Date();\r\n date.setTime(valueNbr);\r\n result = \"new Date(Date.UTC(\" + date.getUTCFullYear() + \",\" + date.getUTCMonth() + \",\" + date.getUTCDate() + \",0,0,0,0))\";\r\n }\r\n return result;\r\n };\r\n\r\n private static evaluateStrExpressionFormat(expressionFormat: string, evalValue: string, defaultValue: string = null): string {\r\n const defVal = !Base.isNullOrUndefined(defaultValue) ? defaultValue : evalValue;\r\n if (!expressionFormat) return defVal;\r\n const index = expressionFormat.indexOf(\"fieldValue\");\r\n if (index < 0) return defVal;\r\n expressionFormat = expressionFormat.replace(/fieldValue/g, evalValue);\r\n try {\r\n /* eslint-disable no-eval */\r\n return eval(expressionFormat);\r\n /* eslint-enable no-eval */\r\n } catch (error) {\r\n console.log(expressionFormat, error);\r\n return defVal;\r\n }\r\n }\r\n\r\n static getDefaultValueTaskDataRowCol(typeCol: ITaskTypeCol): ITaskDataRowCol {\r\n const result = new TaskDataRowCol();\r\n result.field = typeCol.field;\r\n if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.String)) {\r\n const optionValues = !Base.isNullOrUndefined(typeCol.options) && typeCol.options.length > 0\r\n ? typeCol.options\r\n : (!Base.isNullOrUndefined(typeCol.idOptions) && typeCol.idOptions.length > 0\r\n ? typeCol.idOptions.map(i => i.id)\r\n : null);\r\n result.valueStr = !Base.isNullOrUndefined(optionValues)\r\n ? typeCol.defaultStr && optionValues.indexOf(typeCol.defaultStr) > -1 ? typeCol.defaultStr : (!typeCol.placeholder ? optionValues[0] : \"\")\r\n : typeCol.defaultStr ? typeCol.defaultStr : \"\";\r\n } else if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.Integer) || EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.Number)) {\r\n if (!Base.isNullOrUndefined(typeCol.defaultNbr)) {\r\n result.valueNbr = typeCol.defaultNbr;\r\n } else if (typeCol.required) {\r\n result.valueNbr = 0;\r\n }\r\n } else if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.Time)) {\r\n if (typeCol.defaultStr) {\r\n const hasMinus = typeCol.defaultStr[0] === \"-\";\r\n const hasPlus = typeCol.defaultStr[0] === \"+\";\r\n if (hasMinus || hasPlus) {\r\n const offset = typeCol.defaultStr.substring(1).toInteger();\r\n result.valueNbr = Base.getNowUtcTime().addMinutes((hasMinus ? -1 : 1) * offset).getTime();\r\n } else {\r\n result.valueNbr = typeCol.defaultStr.toUtcTime().getTime();\r\n }\r\n } else if (typeCol.required) {\r\n result.valueNbr = Base.getNowUtcTime().getTime();\r\n }\r\n } else if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.Date)) {\r\n if (typeCol.defaultStr) {\r\n const hasMinus = typeCol.defaultStr[0] === \"-\";\r\n const hasPlus = typeCol.defaultStr[0] === \"+\";\r\n if (hasMinus || hasPlus) {\r\n const offset = typeCol.defaultStr.substring(1).toInteger();\r\n result.valueNbr = Base.getNowUtcDate().addDays((hasMinus ? -1 : 1) * offset).getTime();\r\n } else {\r\n result.valueNbr = typeCol.defaultStr.toUtcDate().getTime();\r\n }\r\n } else if (typeCol.required) {\r\n result.valueNbr = Base.getNowUtcDate().getTime();\r\n }\r\n } else if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.TimeSpan)) {\r\n if (typeCol.defaultStr) {\r\n result.valueNbr = typeCol.defaultStr.toTimeSpan();\r\n } else if (typeCol.required) {\r\n result.valueNbr = 0;\r\n }\r\n } else if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.Boolean)) {\r\n if (typeCol.defaultStr) {\r\n result.valueNbr = Base.strToBool(typeCol.defaultStr) ? 1 : 0;\r\n } else if (typeCol.required) {\r\n result.valueNbr = 0;\r\n }\r\n } else if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.StringArray) || EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.TreeStringArray)) {\r\n const optionValues = !Base.isNullOrUndefined(typeCol.options) && typeCol.options.length > 0\r\n ? typeCol.options\r\n : (!Base.isNullOrUndefined(typeCol.idOptions) && typeCol.idOptions.length > 0\r\n ? typeCol.idOptions.map(i => i.id)\r\n : (!Base.isNullOrUndefined(typeCol.idNodeOptions) && typeCol.idNodeOptions.length > 0\r\n ? typeCol.idNodeOptions.map(i => i.id)\r\n : null));\r\n const defaultValues: string[] = typeCol.defaultStr\r\n ? JSON.parse(typeCol.defaultStr)\r\n : null;\r\n const defaultOptionsValues: string[] = optionValues && defaultValues\r\n ? optionValues.filter(i => defaultValues.indexOf(i) > -1)\r\n : [];\r\n result.valueStr = optionValues\r\n ? defaultOptionsValues.length > 0 ? JSON.stringify(defaultOptionsValues) : (!typeCol.placeholder ? JSON.stringify([optionValues[0]]) : \"[]\")\r\n : defaultValues ? JSON.stringify(defaultValues) : \"[]\";\r\n }\r\n return result;\r\n }\r\n\r\n static getTaskDataRowColUiValue(typeCol: ITaskTypeCol, valueStr: string, valueNbr: number): string {\r\n if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.String)) return TaskDataRowCol.evaluateStrExpressionFormat(typeCol.expressionFormat, valueStr ?? \"\");\r\n if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.Integer)) return TaskDataRowCol.evaluateStrExpressionFormat(typeCol.expressionFormat, !Base.isNullOrUndefined(valueNbr) ? valueNbr.toString(10) : \"0\", !Base.isNullOrUndefined(valueNbr) ? valueNbr.toLocaleFixed(0) : (typeCol.required ? \"0\" : \"\"));\r\n if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.Number)) return TaskDataRowCol.evaluateStrExpressionFormat(typeCol.expressionFormat, !Base.isNullOrUndefined(valueNbr) ? valueNbr.toString(10) : \"0\", !Base.isNullOrUndefined(valueNbr) ? valueNbr.toLocaleFixed(typeCol.decimals) : (typeCol.required ? (0).toLocaleFixed(typeCol.decimals) : \"\"));\r\n if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.Time)) return TaskDataRowCol.evaluateStrExpressionFormat(typeCol.expressionFormat, TaskDataRowCol.getTimeEvalValue(valueNbr), !Base.isNullOrUndefined(valueNbr) ? Base.utcTimeToTimeStr(valueNbr) : \"\");\r\n if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.Date)) return TaskDataRowCol.evaluateStrExpressionFormat(typeCol.expressionFormat, TaskDataRowCol.getDateEvalValue(valueNbr), !Base.isNullOrUndefined(valueNbr) ? Base.utcTimeToDateStr(valueNbr) : \"\");\r\n if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.TimeSpan)) return TaskDataRowCol.evaluateStrExpressionFormat(typeCol.expressionFormat, !Base.isNullOrUndefined(valueNbr) ? valueNbr.toString(10) : \"0\", !Base.isNullOrUndefined(valueNbr) ? Base.timeSpanToString(valueNbr) : \"\");\r\n if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.Boolean)) return TaskDataRowCol.evaluateStrExpressionFormat(typeCol.expressionFormat, !Base.isNullOrUndefined(valueNbr) ? valueNbr.toString(10) : \"0\");\r\n if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.StringArray) || EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.TreeStringArray)) return TaskDataRowCol.evaluateStrExpressionFormat(typeCol.expressionFormat, valueStr ?? \"\");\r\n return \"\";\r\n }\r\n\r\n static getTaskDataRowColDbValue(typeCol: ITaskTypeCol, valueStr: string, valueNbr: number): any {\r\n if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.String) || EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.StringArray) || EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.TreeStringArray)) return valueStr;\r\n if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.Integer) || EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.Boolean)) return !Base.isNullOrUndefined(valueNbr) ? Math.floor(valueNbr) : null;\r\n if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.Date)) {\r\n if (Base.isNullOrUndefined(valueNbr)) return null;\r\n return Base.dateToUtcDate(new Date(valueNbr)).toISOString();\r\n }\r\n if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.Time)) {\r\n if (Base.isNullOrUndefined(valueNbr)) return null;\r\n return new Date(valueNbr).toISOString();\r\n }\r\n if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.TimeSpan)) return valueNbr;\r\n if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.Number)) return !Base.isNullOrUndefined(valueNbr) ? Base.roundToDecimals(valueNbr, typeCol.decimals) : null;\r\n return null;\r\n }\r\n\r\n setTaskDataRowColValueFromDbValue(typeCol: ITaskTypeCol, value: any) {\r\n if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.String) || EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.StringArray) || EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.TreeStringArray)) {\r\n this.valueStr = value;\r\n } else if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.Integer) || EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.Boolean) ||\r\n EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.TimeSpan) || EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.Number)) {\r\n this.valueNbr = value;\r\n } else if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.Date)) {\r\n this.valueNbr = null;\r\n if (Base.isNullOrUndefined(value)) return;\r\n this.valueNbr = new Date(value).getTime();\r\n } else if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.Time)) {\r\n this.valueNbr = null;\r\n if (Base.isNullOrUndefined(value)) return;\r\n this.valueNbr = new Date(value).getTime();\r\n }\r\n }\r\n\r\n getTaskDataRowColListUiValue(typeCol: ITaskTypeCol, modifyUserName: string, modifyDate: number): string {\r\n let dataCol: ITaskDataRowCol = this;\r\n if (typeCol.field.equalIgnoreCase(modifyUserNameField)) {\r\n dataCol = TaskDataRowCol.crateTaskDataRowCol(typeCol.field, modifyUserName, 0);\r\n } else if (typeCol.field.equalIgnoreCase(modifyDateField)) {\r\n dataCol = TaskDataRowCol.crateTaskDataRowCol(typeCol.field, Base.timeToDateTimeStr(modifyDate), modifyDate);\r\n }\r\n let result = !Base.isNullOrUndefined(dataCol) ? TaskDataRowCol.getTaskDataRowColUiValue(typeCol, dataCol.valueStr, dataCol.valueNbr) : \"\";\r\n if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.Boolean)) {\r\n result = Base.strToBool(result) ? Translations.Yes : Translations.No;\r\n } else if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.String)) {\r\n if (typeCol.idOptions && typeCol.idOptions.length > 0) {\r\n const idOption = typeCol.idOptions.find(i => i.id === result);\r\n if (idOption) {\r\n result = idOption.title;\r\n } else {\r\n result = \"\";\r\n }\r\n }\r\n } else if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.StringArray)) {\r\n if (typeCol.idOptions && typeCol.idOptions.length > 0 && !!result) {\r\n const array: string[] = JSON.parse(result);\r\n const idOptions = typeCol.idOptions.filter(i => array.indexOf(i.id) > -1);\r\n result = idOptions.map(i => i.title).join(\", \");\r\n }\r\n } else if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.TreeStringArray)) {\r\n if (typeCol.idNodeOptions && typeCol.idNodeOptions.length > 0 && !!result) {\r\n const array: string[] = JSON.parse(result);\r\n const idOptions = typeCol.idNodeOptions.filter(i => array.indexOf(i.id) > -1);\r\n result = idOptions.map(i => i.title).join(\", \");\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n matchesToFilter(lowFilter: string, typeCol: ITaskTypeCol, modifyUserName: string, modifyDate: number): boolean {\r\n if (!typeCol) return false;\r\n return this.getTaskDataRowColListUiValue(typeCol, modifyUserName, modifyDate).toLowerCase().indexOf(lowFilter) > -1;\r\n }\r\n\r\n static initializeValuesByType(typeCols: ITaskTypeCol[], dataCols: ITaskDataRowCol[]): ITaskDataRowCol[] {\r\n const result: ITaskDataRowCol[] = [];\r\n for (const typeCol of typeCols) {\r\n let dataCol = dataCols.find(j => j.field === typeCol.field);\r\n if (Base.isNullOrUndefined(dataCol)) {\r\n dataCol = TaskDataRowCol.getDefaultValueTaskDataRowCol(typeCol);\r\n }\r\n const newDataCol = new TaskDataRowCol(dataCol);\r\n newDataCol.valueStr = TaskDataRowCol.getTaskDataRowColUiValue(typeCol, dataCol.valueStr, dataCol.valueNbr);\r\n result.push(newDataCol);\r\n }\r\n return result;\r\n }\r\n\r\n static hasDefaultValues(typeCols: ITaskTypeCol[], dataCols: ITaskDataRowCol[]): boolean {\r\n for (const typeCol of typeCols) {\r\n const dataCol = dataCols.find(j => j.field === typeCol.field);\r\n if (Base.isNullOrUndefined(dataCol)) {\r\n continue;\r\n }\r\n const defaultDataCol = TaskDataRowCol.getDefaultValueTaskDataRowCol(typeCol);\r\n if (TaskDataRowCol.getTaskDataRowColUiValue(typeCol, dataCol.valueStr, dataCol.valueNbr) !== TaskDataRowCol.getTaskDataRowColUiValue(typeCol, defaultDataCol.valueStr, defaultDataCol.valueNbr)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n static getToBeSavedTaskDataRowCols(formCols: ITaskTypeCol[], dataCols: ITaskDataRowCol[]): ITaskDataRowCol[] {\r\n const savedFormCols = formCols.filter(i => i.isSaveDataType() && i.isSavedTaskDataField());\r\n return dataCols.filter(i => savedFormCols.find(j => j.field === i.field));\r\n }\r\n}\r\n\r\nexport class SaveTaskDataRowCol {\r\n field: string;\r\n valueStr: string;\r\n valueNbr: number;\r\n\r\n constructor();\r\n constructor(obj: ITaskDataRowCol);\r\n constructor(obj?: any) {\r\n this.field = obj && obj.field || \"\";\r\n this.valueStr = obj && obj.valueStr || \"\";\r\n this.valueNbr = obj && obj.valueNbr || null;\r\n }\r\n}","import { Base } from \"./../../framework/base\";\r\nimport { IdTitle, IIdTitle } from \"./../common/idTitle\";\r\nimport { TaskDataRowDataType } from \"./../enums\";\r\nimport { IdTitleNode, IIdTitleNode } from \"../common/idTitleNode\";\r\nimport { ITaskDataRowCol } from \"./taskDataRowCol\";\r\n\r\nexport const modifyUserNameField = \"ModifyUserName\";\r\nexport const modifyDateField = \"ModifyDate\";\r\n\r\nexport interface ITaskTypeCol {\r\n field: string;\r\n title: string;\r\n dataType: TaskDataRowDataType;\r\n decimals: number;\r\n defaultStr: string;\r\n defaultNbr: number;\r\n defaultExpression: string;\r\n unitTitle: string;\r\n readOnly: boolean;\r\n readOnlyExpression: string;\r\n required: boolean;\r\n useInFilter: boolean;\r\n minimum: number;\r\n maximum: number;\r\n maxLength: number;\r\n options: string[];\r\n idOptions: IIdTitle[];\r\n idNodeOptions: IIdTitleNode[];\r\n class: string;\r\n expression: string;\r\n expressionFormat: string;\r\n expressionIndex: number;\r\n defaultSortField: boolean;\r\n defaultSortOrderAsc: boolean;\r\n placeholder: string;\r\n\r\n isSaveDataType(): boolean;\r\n isSavedTaskDataField(): boolean;\r\n canBeFiltered(): boolean;\r\n}\r\n\r\nexport class TaskTypeCol implements ITaskTypeCol {\r\n field: string;\r\n title: string;\r\n dataType: TaskDataRowDataType;\r\n decimals: number;\r\n defaultStr: string;\r\n defaultNbr: number;\r\n defaultExpression: string;\r\n unitTitle: string;\r\n readOnly: boolean;\r\n readOnlyExpression: string;\r\n required: boolean;\r\n useInFilter: boolean;\r\n minimum: number;\r\n maximum: number;\r\n maxLength: number;\r\n options: string[];\r\n idOptions: IdTitle[];\r\n idNodeOptions: IdTitleNode[];\r\n class: string;\r\n expression: string;\r\n expressionFormat: string;\r\n expressionIndex: number;\r\n defaultSortField: boolean;\r\n defaultSortOrderAsc: boolean;\r\n placeholder: string;\r\n\r\n constructor();\r\n constructor(obj: ITaskTypeCol);\r\n constructor(obj?: any) {\r\n this.field = obj && obj.field || \"\";\r\n this.title = obj && obj.title || \"\";\r\n this.dataType = obj && obj.dataType || TaskDataRowDataType.String;\r\n this.decimals = obj && obj.decimals || 0;\r\n this.defaultStr = obj && obj.defaultStr || \"\";\r\n this.defaultNbr = null;\r\n if (!Base.isNullOrUndefined(obj) && !Base.isNullOrUndefined(obj.defaultNbr)) {\r\n this.defaultNbr = obj.defaultNbr;\r\n }\r\n this.defaultExpression = obj && obj.defaultExpression || \"\";\r\n this.unitTitle = obj && obj.unitTitle || \"\";\r\n this.readOnly = obj && obj.readOnly || false;\r\n this.readOnlyExpression = obj && obj.readOnlyExpression || \"\";\r\n this.required = obj && obj.required || false;\r\n this.useInFilter = obj && obj.useInFilter || false;\r\n this.minimum = null;\r\n if (!Base.isNullOrUndefined(obj) && !Base.isNullOrUndefined(obj.minimum)) {\r\n this.minimum = obj.minimum;\r\n }\r\n this.maximum = null;\r\n if (!Base.isNullOrUndefined(obj) && !Base.isNullOrUndefined(obj.maximum)) {\r\n this.maximum = obj.maximum;\r\n }\r\n this.maxLength = obj && obj.maxLength || null;\r\n this.options = [];\r\n if (obj && obj.options) {\r\n this.options = obj.options;\r\n }\r\n this.idOptions = Base.getTypedArray(obj ? obj.idOptions : null, IdTitle);\r\n this.idNodeOptions = Base.getTypedArray(obj ? obj.idNodeOptions : null, IdTitleNode);\r\n this.class = obj && obj.class || \"\";\r\n this.expression = obj && obj.expression || \"\";\r\n this.expressionFormat = obj && obj.expressionFormat || \"\";\r\n this.expressionIndex = obj && obj.expressionIndex || 0;\r\n this.defaultSortField = obj && obj.defaultSortField || false;\r\n this.defaultSortOrderAsc = obj && obj.defaultSortOrderAsc || false;\r\n this.placeholder = obj && obj.placeholder || \"\";\r\n }\r\n\r\n static sortExpressionTaskTypeCols(items: ITaskTypeCol[]) {\r\n if (Base.isNullOrUndefined(items) || items.length < 2) return;\r\n items.sort((a: ITaskTypeCol, b: ITaskTypeCol) => { return (Base.isNullOrUndefined(a) || Base.isNullOrUndefined(b)) ? 0 : (Base.numCompare(a.expressionIndex, b.expressionIndex)); });\r\n }\r\n\r\n static isSaveDataType(dataType: number): boolean {\r\n return dataType !== TaskDataRowDataType.Label && dataType !== TaskDataRowDataType.LineBreak;\r\n }\r\n\r\n static isSavedTaskDataField(field: string): boolean {\r\n const notSavedFields = [modifyUserNameField, modifyDateField];\r\n return notSavedFields.findIndex(i => i.equalIgnoreCase(field)) < 0;\r\n }\r\n\r\n static colCanBeUsedInFilter(taskTypeCol: ITaskTypeCol): boolean {\r\n if (!taskTypeCol) return false;\r\n return taskTypeCol.dataType === TaskDataRowDataType.Date ||\r\n taskTypeCol.dataType === TaskDataRowDataType.Time ||\r\n taskTypeCol.dataType === TaskDataRowDataType.String && taskTypeCol.idNodeOptions.length < 1 ||\r\n taskTypeCol.dataType === TaskDataRowDataType.TimeSpan ||\r\n taskTypeCol.dataType === TaskDataRowDataType.Integer ||\r\n taskTypeCol.dataType === TaskDataRowDataType.Number ||\r\n taskTypeCol.dataType === TaskDataRowDataType.Boolean;\r\n }\r\n\r\n isSaveDataType(): boolean {\r\n return TaskTypeCol.isSaveDataType(this.dataType);\r\n }\r\n\r\n isSavedTaskDataField(): boolean {\r\n return TaskTypeCol.isSavedTaskDataField(this.field);\r\n }\r\n\r\n canBeFiltered(): boolean {\r\n return TaskTypeCol.colCanBeUsedInFilter(this);\r\n };\r\n\r\n static isCalculatedField(item: ITaskTypeCol): boolean {\r\n if (!item) return false;\r\n return (item.dataType === TaskDataRowDataType.Number || item.dataType === TaskDataRowDataType.Integer) && !!item.expression;\r\n }\r\n\r\n static validateInputOfRequiredTaskTypeCols(typeCols: ITaskTypeCol[], rowCols: ITaskDataRowCol[], successCallback: () => void, errorCallback: (typeCol: ITaskTypeCol) => void) {\r\n for (let i = 0; i < typeCols.length; i++) {\r\n const typeCol = typeCols[i];\r\n if (!typeCol.required) continue;\r\n const rowCol = rowCols.find(j => j.field === typeCol.field);\r\n if (!rowCol || !rowCol.valueStr) {\r\n errorCallback(typeCol);\r\n return;\r\n }\r\n }\r\n if (!successCallback) return;\r\n successCallback();\r\n }\r\n \r\n static getTaskTypeColTitle(typeCols: ITaskTypeCol[], field: string): string {\r\n if (!typeCols || !field) return \"\";\r\n const typeCol = typeCols.find(i => i.field === field);\r\n if (!typeCol) return field;\r\n return typeCol.title;\r\n }\r\n}\r\n","// ReSharper disable InconsistentNaming\r\n/* eslint-disable no-mixed-spaces-and-tabs */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-useless-escape */\r\n/* eslint-disable quotes */\r\n/* eslint-disable indent */\r\n/* eslint-disable no-tabs */\r\n/* eslint-disable camelcase */\r\nexport class Translations_en_US {\r\n\tstatic DoYouReallyWantToRemoveTaskPriorityParameter = 'Do you really want to remove task priority \\'{0}\\'?';\r\n\tstatic RemoveTransferredProperty = 'Remove Transferred Property';\r\n\tstatic JobResultParameterNotFound = 'Job result \\'{0}\\' not found!';\r\n\tstatic Identifier = 'Identifier';\r\n\tstatic PrintParameterDownloaded = 'Print has been downloaded.';\r\n\tstatic FormSizeLarge = 'Large';\r\n\tstatic NotificationsQueuedSuccessfully = 'Notification scheduled to be sent!';\r\n\tstatic TrainingStartDateStart = 'Training Start Date - Start';\r\n\tstatic Unpublish = 'Unpublish';\r\n\tstatic EmptyingTaskTrashBinWasSuccessful = 'Task trash bin is now empty!';\r\n\tstatic Font = 'Font';\r\n\tstatic DoYouReallyWantToRemoveEventParameter = 'Do you really want to remove incident \\'{0}\\'?';\r\n\tstatic DeletingAttachmentsWasNotSuccessfulErrorParameter = 'Failed to remove attachments! Error: \\'{0}\\'';\r\n\tstatic ObserverAction = 'Observer Action';\r\n\tstatic DatabaseCheckingStarted = 'Database checking started';\r\n\tstatic SavingEventDefaultHandlerParameterWasNotSuccessfulErrorParameter = 'Failed to save default incident handler \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic DoYouReallyWantToRemoveRemainderParameter = 'Do you really want to remove remainder \\'{0}\\'?';\r\n\tstatic View = 'View';\r\n\tstatic ArchivingWhistleBlowsParameterWasNotSuccessfulErrorParameter = 'Failed to archive whistle blow reports \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic SavingMessageSendEmailParameterWasNotSuccessfulConcurrencyError = 'Failed to save message email log \\'{0}\\', because data in the email log has been modified concurrently by another user!';\r\n\tstatic AddCompanyToCompanyGroup = 'Add Company into Company Group';\r\n\tstatic WhistleBlowResolutionRejected = 'Rejected';\r\n\tstatic DeletingRecordUserTransferredPropertyParameterWasNotSuccessfulConcurrencyError = 'Failed to remove transferred property \\'{0}\\', because data in the transferred property has been modified concurrently by another user!';\r\n\tstatic VoucherPrefix = 'Voucher Prefix';\r\n\tstatic SavingRecordUserParameterWasSuccessful = 'User record \\'{0}\\' saved successfully!';\r\n\tstatic InternalAttachments = 'Internal Attachments';\r\n\tstatic CalendarTask = 'Event';\r\n\tstatic AllCalendarTaskUsers = 'All calendar users';\r\n\tstatic MaximumSizeOfSingleAttachment = 'Maximum size of a attachment is {0} MB!';\r\n\tstatic ShortName = 'Short Name';\r\n\tstatic DeletingRecordUserParameterWasNotSuccessfulErrorParameter = 'Failed to remove user record \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic Sorting = 'Sorting';\r\n\tstatic AddingCalendarTaskHandlerWasNotSuccessfulErrorParameter = 'Failed to add handlers! Error: \\'{0}\\'';\r\n\tstatic GroupByFamiliarization = 'Group by Familiarization';\r\n\tstatic DoYouReallyWantToRestoreThisInstantMessage = 'Do you really want to restore this instant message?';\r\n\tstatic DeletingKeywordsParameterWasNotSuccessfulConcurrencyError = 'Failed to remove keywords \\'{0}\\', because data in keywords has been modified concurrently by another user!';\r\n\tstatic RecordUserLogEntryTypeReport = 'Reporting';\r\n\tstatic AddFurtherEducations = 'Add further educations';\r\n\tstatic AddNew = 'Add New';\r\n\tstatic SelectSubject = 'Select Subject';\r\n\tstatic AccessRightNone = 'No permissions';\r\n\tstatic Course = 'Course';\r\n\tstatic AddChildEventType = 'Add Subcategory 1';\r\n\tstatic FormColumnTitle = 'Column Title';\r\n\tstatic ExternalSystemUserCodeMustBeDefined = 'User code in external system must be defined!';\r\n\tstatic SavingRecordUserTransferredPropertyParameterWasNotSuccessfulConcurrencyError = 'Failed to save transferred property \\'{0}\\', because data in the transferred property has been modified concurrently by another user!';\r\n\tstatic AddChildDefaultEventType = 'Add Default Subcategory 1';\r\n\tstatic DeletingCompaniesParameterWasNotSuccessfulErrorParameter = 'Failed to remove companies \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic PropertyTransferred = 'Transferred';\r\n\tstatic DeletingCalendarTaskParameterWasNotSuccessfulErrorParameter = 'Failed to remove event \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic NewRecordUserMustBeSavedBeforeEmploymentsCanBeAdded = 'New user record must be saved before employments can be added!';\r\n\tstatic DoYouReallyWantToRemoveInstantMessageChannelParameter = 'Do you really want to remove chat \\'{0}\\'?';\r\n\tstatic Familiarizations = 'Familiarizations';\r\n\tstatic Row = 'row';\r\n\tstatic RemovePicture = 'Remove Picture';\r\n\tstatic DeletingRecordFurtherEducationGroupParameterWasNotSuccessfulErrorParameter = 'Failed to remove further education group \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic FormCheckbox = 'Checkbox';\r\n\tstatic NewCompanyMustBeSavedBeforePartnersCanBeAdded = 'New company must be saved before partners can be added!';\r\n\tstatic RemoveRecordUserAndUserSetExpired = 'Remove User Record and Set User Account Expired';\r\n\tstatic InstantMessageChannelAdministrator = 'Administrator';\r\n\tstatic AddEventPartner = 'Add Incident Partner';\r\n\tstatic Employment = 'Employment';\r\n\tstatic SavingUserGroupParameterWasNotSuccessfulErrorParameter = 'Failed to save user group \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic DeletingRecordQualificationsParameterWasNotSuccessfulErrorParameter = 'Failed to remove qualifications \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic SavingEventTypeCParameterWasSuccessful = 'Category 3 \\'{0}\\' saved successfully!';\r\n\tstatic IncludeArchivedRecordUsers = 'Include archived user records';\r\n\tstatic CopyDefaultHandlersToAllSameLevelUnits = 'Copy Default Handlers to All Same Level Units';\r\n\tstatic WhistleBlowInformantHint = 'Please provide a thorough description of the issue so that we can investigate it further.';\r\n\tstatic DeletingEventTypeParameterWasNotSuccessfulErrorParameter = 'Failed to remove category 1 \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic DeletingRecordUserTransferredPropertiesParameterWasSuccessful = 'Transferred properties \\'{0}\\' removed successfully!';\r\n\tstatic InvitationPasswordReset = 'Invitation / Password Reset';\r\n\tstatic Handlers = 'Handlers';\r\n\tstatic DeletingRecordUserTransferredPropertyParameterWasNotSuccessfulErrorParameter = 'Failed to remove transferred property \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic MobileAppInUse = 'Mobile app in use';\r\n\tstatic CompanyThatIsRelatedToEventsCannotBeDeleted = 'Company that has sent or received incidents, cannot be removed!';\r\n\tstatic AddEventHandler = 'Add Handler';\r\n\tstatic RecordUserExcelFurtherEducation = 'Further Educations';\r\n\tstatic EditAttachment = 'Edit Attachment';\r\n\tstatic Tasks = 'Tasks';\r\n\tstatic SavingCompanyParameterWasSuccessful = 'Company \\'{0}\\' saved successfully!';\r\n\tstatic AddingRecordUserSalaryRowsWasNotSuccessfulErrorParameter = 'Failed to add salary rows! Error: \\'{0}\\'';\r\n\tstatic EmailNotificationOfChangedPublishStatus = 'Notify When Published State Changes by Email';\r\n\tstatic SavingCompanyGroupParameterWasSuccessful = 'Company group \\'{0}\\' saved successfully!';\r\n\tstatic ParameterIsNotValidAccountIBANNumber = '\\'{0}\\' is not valid bank account IBAN number!';\r\n\tstatic YouDeletedThisMessage = 'You deleted this message';\r\n\tstatic WhistleBlowChannelSettings = 'Whistle Blow Channel Settings';\r\n\tstatic DefaultTaskPriorities = 'Default Task Priorities';\r\n\tstatic DeletingKeywordParameterWasSuccessful = 'Keyword \\'{0}\\' removed successfully!';\r\n\tstatic InstantMessageChannelRemoveFromYourselfFromAdministratorsConfirmation = 'Do you really want to remove yourself from administators? Only administrators can manage chat.';\r\n\tstatic Unkown = 'Unkown';\r\n\tstatic SavingEventSettingsWasNotSuccessfulConcurrencyError = 'Failed to save incident settings, because incident settings have been modified concurrently by another user!';\r\n\tstatic SavingRecordUserTransferredPropertyParameterWasSuccessful = 'Transferred property \\'{0}\\' saved successfully!';\r\n\tstatic WhistleBlowInformantDescription = 'Please describe what is happened';\r\n\tstatic DoYouReallyWantToRemoveCalendarTaskParameter = 'Do you really want to remove event \\'{0}\\'?';\r\n\tstatic SavingRecordUserQualificationParameterWasSuccessful = 'Qualification \\'{0}\\' saved successfully!';\r\n\tstatic SendInvitationEmailToImportedUsers = 'Send Invitation Email to Imported Users';\r\n\tstatic ActiveUserRightsCannotBeCopiedToDirectoryItemFolderParameter = 'Active Permissions Cannot Be Copied to Folder \\'{0}\\'!';\r\n\tstatic SavingJobParameterWasSuccessful = 'Job \\'{0}\\' saved successfully!';\r\n\tstatic Favorites = 'Favorites';\r\n\tstatic SentEmails = 'Sent Emails';\r\n\tstatic WhistleBlowReportIHaveSavedThePassword = 'I have stored the password in the safe storage so I can use it for checking the status of my report.';\r\n\tstatic SearchDocuments = 'Search Documents';\r\n\tstatic DoYouReallyWantToUnlockEvent = 'Do you really want to unlock incident \\'{0}\\'?';\r\n\tstatic Invoicing = 'Invoicing';\r\n\tstatic ChartType = 'Chart Type';\r\n\tstatic Sender = 'Sender';\r\n\tstatic DefaultStyle = 'Default';\r\n\tstatic ReadImp = 'Read';\r\n\tstatic AddUserParameterWasSuccessful = 'User account \\'{0}\\' added successfully!';\r\n\tstatic RecordUserLogEntryTypeOpen = 'Reading';\r\n\tstatic ExternalSystemCompanyTokenParameterIsAlreadyInUse = 'Company token \\'{0}\\' is already in use!';\r\n\tstatic RecurringCalendarTaskCannotHaveMoreThanParameterOccurences = 'Recurring task cannot have more than {0} occurences!';\r\n\tstatic UsersOfThisCompany = 'Users of My Company';\r\n\tstatic EmploymentEndDate = 'Employment End Date';\r\n\tstatic JobDataIsEmpty = 'Job data is missing!';\r\n\tstatic SavingCalendarTaskParameterWasSuccessful = 'Event \\'{0}\\' saved successfully!';\r\n\tstatic UpdateUserGroupParameterExternalSystemsWasNotSuccessfulConcurrencyError = 'Failed to link user group \\'{0}\\' to external systems, because the data has been modified concurrently by another user!';\r\n\tstatic ExpiredFurtherEducations = 'Expired Further Educations';\r\n\tstatic SavingUnitsWasNotSuccessfulErrorParameter = 'Failed to save units! Error: \\'{0}\\'';\r\n\tstatic WhistleBlowAnonymityAnonymous = 'Anonymous';\r\n\tstatic TaskDataRowFieldParameterNotFoundInDataSchema = 'Task row field \\'{0}\\' not found in data schema!';\r\n\tstatic CalendarTaskEditOccurrence = 'Edit Occurrence';\r\n\tstatic DoYouReallyWantToRemoveEventUrgencyClassParameter = 'Do you really want to remove urgency class \\'{0}\\'?';\r\n\tstatic UserFilterActive = 'Active User Accounts';\r\n\tstatic CompanyNameMustBeDefined = 'Name of the company must be defined!';\r\n\tstatic SavingEventParameterWasSuccessful = 'Incident \\'{0}\\' saved successfully!';\r\n\tstatic LockingEventParameterWasNotSuccessful = 'Failed to lock incident \\'{0}\\'!';\r\n\tstatic AdditionalInformation = 'Additional Information';\r\n\tstatic SetUnitPermissions = 'Set Unit Permissions';\r\n\tstatic PrintRow = 'Print Row';\r\n\tstatic TimeSpanHalfYear = 'Half Year';\r\n\tstatic ExpiresInParameterDays = 'Expires in {0} days';\r\n\tstatic SavingEventTypeCParameterWasNotSuccessfulConcurrencyError = 'Failed to save category 3 \\'{0}\\', because data in the category 3 has been modified concurrently by another user!';\r\n\tstatic EditableDocumentCodeMustBeDefined = 'Document name must be defined!';\r\n\tstatic EditFurtherEducation = 'Edit Further Education';\r\n\tstatic EventTypeCodeMustBeDefined = 'Category 1 name must be defined!';\r\n\tstatic No = 'No';\r\n\tstatic RemoveEvent = 'Remove Incident';\r\n\tstatic ChooseHowYouWantToReport = 'Choose how you want to report';\r\n\tstatic ChangedObserverAction = 'Changed incident observer action';\r\n\tstatic FormCodeIsAlreadyInUse = 'Form name is already in use!';\r\n\tstatic RecordUserReport = 'User Record Report';\r\n\tstatic RecordUserActiveStateChangePermissionDeniedInUnitParameter = 'Archived state change is not allowed in unit \\'{0}\\'!';\r\n\tstatic DoYouReallyWantToRemoveRecordUserParameter = 'Do you really want to remove user record \\'{0}\\'?';\r\n\tstatic Go = 'Go';\r\n\tstatic FormRowPrint = 'Row Print';\r\n\tstatic TimeSpanMonth = 'Month';\r\n\tstatic RemoveDefaultTaskType = 'Remove Default Task Type';\r\n\tstatic SavingRecordFurtherEducationGroupParameterWasNotSuccessfulErrorParameter = 'Failed to save further education group \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic ReadReceiptMessage = 'Message that requires read receipt';\r\n\tstatic DeletingDocumentTemplateParameterWasSuccessful = 'Document template \\'{0}\\' removed successfully!';\r\n\tstatic DeletingUserGroupUsersOfCompanyParameterWasNotSuccessfulConcurrencyError = 'Failed to remove user group connections related to company \\'{0}\\', because data in those user group connections has been modified concurrently by another user!';\r\n\tstatic DeletingEventTypeParameterWasSuccessful = 'Category 1 \\'{0}\\' removed successfully!';\r\n\tstatic FamiliarizationsMustBeDefinedBeforeAddingRecordUserFamiliarizations = 'Company familiarizations must be defined before adding user record familiarizations!';\r\n\tstatic AddFolder = 'Add Folder';\r\n\tstatic Locked = 'Locked';\r\n\tstatic UserProfile = 'User Account';\r\n\tstatic InstantMessageChannelArchivingTypeRemoveChannelAtDateParameter = 'Remove Archived Chat and Messages at {0}';\r\n\tstatic Users = 'User Accounts';\r\n\tstatic SelectOperatorOrFunction = 'Select Operator or Function';\r\n\tstatic ExternalSystemDatabaseInterfaceError = 'External eSalkku system database interface error!';\r\n\tstatic PublishVoucherInOutReportToFileSystem = 'Publish Voucher Summary Print to File System';\r\n\tstatic DeletingMessageTypeParameterWasNotSuccessfulUsedInParameterMessages = 'Failed to remove message type \\'{0}\\', because the message type is used in {1} messages!';\r\n\tstatic LockedEventParameterCannotBeDeleted = 'Locked incident \\'{0}\\' cannot be removed!';\r\n\tstatic TaskStateCodeIsAlreadyInUse = 'Task state name is already in use!';\r\n\tstatic ClearSubUnitPermissions = 'Clear Subunit Permissions';\r\n\tstatic DaysAgo30 = '30 Days Ago';\r\n\tstatic SavingImagesWasSuccessful = 'Images saved successfully!';\r\n\tstatic SavingDocumentTemplateParameterWasNotSuccessfulConcurrencyError = 'Failed to save document template \\'{0}\\', because data in the document template has been modified concurrently by another user!';\r\n\tstatic JobTypePushNotification = 'Push Notification';\r\n\tstatic AddTaskState = 'Add Task State';\r\n\tstatic SavingTaskStateParameterWasNotSuccessfulConcurrencyError = 'Failed to save task state \\'{0}\\', because data in the task state has been modified concurrently by another user!';\r\n\tstatic DoYouReallyWantToRemoveFolderParameter = 'Do you really want to remove folder \\'{0}\\'?';\r\n\tstatic CopyContentToDocumentContent = 'Copy Content to Document Content';\r\n\tstatic LanguageNonLocalSwedish = 'Svenska';\r\n\tstatic LanguageSwedish = 'Swedish';\r\n\tstatic SavePrintAs = 'Save Print As';\r\n\tstatic WhistleBlowStateNew = 'New';\r\n\tstatic EventTypesMustBeDefinedBeforeAddingEvents = 'Category 1 must be defined before adding incidents!';\r\n\tstatic AType = 'Type';\r\n\tstatic KeywordParameterNotFound = 'Keyword \\'{0}\\' not found!';\r\n\tstatic AdditionalPermissionAWhistleBlow = 'Can communicate with informant';\r\n\tstatic Characters = 'Characters';\r\n\tstatic ReadReceiptGiven = 'Receipt sent';\r\n\tstatic WhistleBlowGuide = 'Guide for Reporting';\r\n\tstatic WhistleBlowResolutionResolved = 'Resolved';\r\n\tstatic DeletingWhistleBlowCategoryParameterWasNotSuccessfulConcurrencyError = 'Failed to remove whistle blow category \\'{0}\\', because data in the whistle blow category has been modified concurrently by another user!';\r\n\tstatic UserGroupParameterIsInUseInParameterUsersAndCannotBeDeleted = 'User group \\'{0}\\' is used in {1} users and cannot be removed!';\r\n\tstatic FormExpression = 'Expression';\r\n\tstatic FieldParameterMaxLengthIsParameter = 'Field \\'{0}\\' max length is {0} characters!';\r\n\tstatic AddingCalendarTaskHandlersWasSuccessful = 'Handlers added successfully!';\r\n\tstatic DeletingEditableDocumentParameterWasNotSuccessfulErrorParameter = 'Failed to remove document \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic InstantMessageChannelInformation = 'Chat information';\r\n\tstatic RecordBasicEducationCodeMustBeDefined = 'Basic education name must be defined!';\r\n\tstatic MyFilters = 'User\\'s Filters';\r\n\tstatic Day = 'Day';\r\n\tstatic SavingImagesNotSuccessfulErrorParameter = 'Failed to save images! Error: \\'{0}\\'';\r\n\tstatic DeletingTaskDataRowWasNotSuccessfulConcurrencyError = 'Failed to remove the task row, because data in the task row has been modified concurrently by another user!';\r\n\tstatic DeletingUserParameterWasNotSuccessfulConcurrencyError = 'Failed to remove user account \\'{0}\\', because the data has been modified concurrently by another user!';\r\n\tstatic RemoveUnit = 'Remove Unit';\r\n\tstatic TheUserDoesNotHavePermissionsForThisSystem = 'User does not have permission to use this system!';\r\n\tstatic EditableDocument = 'Document';\r\n\tstatic NewCompanyGroupMustBeSavedBeforeUsersCanBeAdded = 'New company group must be saved before companies can be added!';\r\n\tstatic DeletingCalendarTaskCategoriesParameterWasSuccessful = 'Categories \\'{0}\\' removed successfully!';\r\n\tstatic RemoveEventHandler = 'Remove Handler';\r\n\tstatic SavingTaskTypeParameterWasNotSuccessfulErrorParameter = 'Failed to save task type \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic List = 'List';\r\n\tstatic ErrorUserChangeWouldLeadToInvalidDefaultEventHandlers = 'User changes will lead to situation where some default incident handlers or notified persons do not have permissions to handle incidents of units. Changes that have affect for default incident handlers or notified persons can be made only in \\'Incidents Properties\\' dialog!';\r\n\tstatic SavingInstantMessageChannelParameterWasNotSuccessfulConcurrencyError = 'Failed to save chat \\'{0}\\', because data in the chat has been modified concurrently by another user!';\r\n\tstatic ExpiredFamiliarizations = 'Expired Familiarizations';\r\n\tstatic AddPhoto = 'Add Photo';\r\n\tstatic AllDocumentTypes = 'Show all document types';\r\n\tstatic DeletingDocumentTemplatesParameterWasNotSuccessfulErrorParameter = 'Failed to remove document templates \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic FormTitle4 = 'Title 4';\r\n\tstatic ValidityEndDate = 'Validity End Date';\r\n\tstatic InstantMessages = 'Instant Messages';\r\n\tstatic WhistleBlowRecords = 'Records';\r\n\tstatic LockedTaskParameterCannotBeSaved = 'The task \\'{0}\\' has been locked to another user and it cannot be saved!';\r\n\tstatic SelectTaskPriority = 'Select Task Priority';\r\n\tstatic SavingCompanyGroupParameterWasNotSuccessfulErrorParameter = 'Failed to save company group \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic FormTextAreaSize = 'Height';\r\n\tstatic AccessRightWriteInstantMessages = 'Company Internal and Intercompany Chat';\r\n\tstatic SSRSParameterReportsFetched = '{0} reports fetched from SSRS';\r\n\tstatic Hidden = 'Hidden';\r\n\tstatic ReadReceiptRequired = 'Read Receipt Required';\r\n\tstatic DeletingUserGroupParameterWasNotSuccessfulErrorParameter = 'Failed to remove user group \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic CompanyTaskTypesInstruction = 'Notice that modication of form that is in used in tasks, has effect to task\\'s form data (form data that is saved for tasks may be lost). You can add new form by clicking + button.';\r\n\tstatic DeletingUserGroupParameterWasNotSuccessfulConcurrencyError = 'Failed to remove user group \\'{0}\\', because data in the user group has been modified concurrently by another user!';\r\n\tstatic SavingMessageSendEmailParameterWasSuccessful = 'Message email log \\'{0}\\' saved successfully!';\r\n\tstatic SavingRecordFamiliarizationParameterWasNotSuccessfulErrorParameter = 'Failed to save familiarization \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic DeletingRecordQualificationParameterWasNotSuccessfulConcurrencyError = 'Failed to remove qualification \\'{0}\\', because data in the qualification has been modified concurrently by another user!';\r\n\tstatic LockedToUser = 'Locked by User';\r\n\tstatic OperationNotAllowedForRootFolderParameter = 'Operation is not allowed for root folder \\'{0}\\'!';\r\n\tstatic FormExpressionFormatMinutesToHoursAndMinutes = 'From minutes to hours and minutes';\r\n\tstatic MessageModuleProperties = 'Current Topics Properties';\r\n\tstatic FormWidthMobile = 'Width in Mobile App';\r\n\tstatic AddFamiliarization = 'Add Further Familiarization';\r\n\tstatic EventType = 'Category 1';\r\n\tstatic Parameters = 'Parameters';\r\n\tstatic FolderPath = 'Folder Path';\r\n\tstatic TaskParameterNotFound = 'Task \\'{0}\\' not found!';\r\n\tstatic ActivePlural = 'Active';\r\n\tstatic ReadingDatabaseParameter = 'Reading database \\'{0}\\'...';\r\n\tstatic SearchEndDate = 'End Date';\r\n\tstatic BankBICCode = 'Bank BIC Code';\r\n\tstatic JobTitleMustBeDefined = 'Job title must be defined!';\r\n\tstatic RecordFurtherEducationGroupCodeIsAlreadyInUse = 'Further education group name is already in use!';\r\n\tstatic WebPageStyle = 'Page Style';\r\n\tstatic SavingMessageTypeParameterWasSuccessful = 'Message type \\'{0}\\' saved successfully!';\r\n\tstatic DeletingWhistleBlowCategoryParameterWasNotSuccessfulErrorParameter = 'Failed to remove whistle blow category \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic SelectTaskInListToSeeThePreview = 'Select task in list to see the preview';\r\n\tstatic DoYouReallyWantToRemoveUserGroupParameter = 'Do you really want to remove user group \\'{0}\\'?';\r\n\tstatic ReminderHoursBefore = 'hours before';\r\n\tstatic Handling = 'Handling';\r\n\tstatic EventHandlerParameterNotFound = 'Handler \\'{0}\\' not found!';\r\n\tstatic UnitIsRelatedToEventPartner = 'Unit is related to incident partner';\r\n\tstatic ValidPlural = 'Valid';\r\n\tstatic Camera = 'Camera';\r\n\tstatic CalendarTaskRepetitionRepeatIntervalPrefix = 'Recur every';\r\n\tstatic DefaultEventSettings = 'Default Incident Settings';\r\n\tstatic UserRecordStatisticsUserAccountConnectedCards = 'User Account Connected Cards';\r\n\tstatic UserIsActiveInWeb = 'User account is active in web application.';\r\n\tstatic FormDatesAndTimes = 'Dates and Times';\r\n\tstatic DeletingEventUrgencyClassesParameterWasNotSuccessfulErrorParameter = 'Failed to remove urgency classes \\'{0}\\'! Error: \\'{1}\\'!';\r\n\tstatic AdditionalPermissionAMessage = 'Permission to read messages published by partners';\r\n\tstatic SavingEventMessageWasNotSuccessfulErrorParameter = 'Failed to save comment! Error: \\'{0}\\'';\r\n\tstatic Log = 'Logs';\r\n\tstatic Change = 'Change';\r\n\tstatic FormTitle1 = 'Title 1';\r\n\tstatic NoFilters = ' No Filters!';\r\n\tstatic TaskHandlers = 'Handlers';\r\n\tstatic SavingInstantMessageWasSuccessful = 'Instant message saved successfully!';\r\n\tstatic AllLogisticVoucherCustomers = 'All Customers';\r\n\tstatic SavingTaskPriorityParameterWasSuccessful = 'Task priority \\'{0}\\' saved successfully!';\r\n\tstatic GroupByHalfYear = 'Group by Half Year';\r\n\tstatic PermissionToCreateEvents = 'Permission to Create Incidents';\r\n\tstatic ModifiedActions = 'Modified Actions';\r\n\tstatic CalendarTaskHandlers = 'Visibility';\r\n\tstatic DoYouReallyWantToSave = 'Do you want to save?';\r\n\tstatic SavingRecordUserQualificationParameterWasNotSuccessfulConcurrencyError = 'Failed to save qualification \\'{0}\\', because data in the qualification has been modified concurrently by another user!';\r\n\tstatic Public = 'Public';\r\n\tstatic DoYouReallyWantToRemoveRecordQualificationParameter = 'Do you really want to remove qualification \\'{0}\\'?';\r\n\tstatic WorkShift = 'Work Shift';\r\n\tstatic SelectUser = 'Select User Account';\r\n\tstatic Trigonometry = 'Trigonometry';\r\n\tstatic ThisMessageWasDeleted = 'This message was deleted';\r\n\tstatic UserRecords = 'User Records';\r\n\tstatic SavingEventTypeCParameterWasNotSuccessfulErrorParameter = 'Failed to save category 3 \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic AddingRecordUserFamiliarizationsWasSuccessful = 'Familiarizations added successfully!';\r\n\tstatic EditDefaultBasicEducation = 'Edit Default Basic Education';\r\n\tstatic MessageType = 'Message Type';\r\n\tstatic YouHaveNotSavedChangesDoYouWantToSaveChanges = 'You have not saved changes that you have made. Do you want to save changes?';\r\n\tstatic InstantMessageChannelUserParameterIsNotAllowedToUseChannelParameter = 'User \\'{0}\\' does not have permission to use chat \\'{1}\\'!';\r\n\tstatic FileChangesCheckingAndEmailingFinishedInParameterSeconds = 'File changes checking and emailing finished (duration: {0:N0}s, errors: {1}, files: {2}, emails: {3})';\r\n\tstatic AddUserGroupParameterWasNotSuccessfulErrorParameter = 'Failed to add user group \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic DefaultBasicEducations = 'Default Basic Educations';\r\n\tstatic WhistleBlowArchivingTypeChangeStateAndRemoveAllData = 'Change whistle blow report state to \\'Archived\\' and keep only information that is needed for statistics';\r\n\tstatic SelectCompanyGroupOrCompany = 'Select Company Group or Company';\r\n\tstatic WhistleBlowInformant = 'Informant';\r\n\tstatic DesignArea = 'Design Area';\r\n\tstatic EditableDocumentSaveBeforeApproveConfirmation = 'Do want to save changes to the document before approval?';\r\n\tstatic EmptyDocument = 'Empty document';\r\n\tstatic FormPrint = 'Print';\r\n\tstatic DeletingOneTimePasswordWasNotSuccessfulConcurrencyError = 'Failed to remove one time password, because data in the one time password has been modified concurrently by another user!';\r\n\tstatic Color = 'Color';\r\n\tstatic RecordUserExcelFamiliarization = 'Familiarizations';\r\n\tstatic Wage = 'Wage';\r\n\tstatic SavingDirectoryItemDocumentParameterWasNotSuccessfulErrorParameter = 'Failed to save file \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic Salary = 'Salary';\r\n\tstatic RemoveNotifiedPerson = 'Remove Person to Be Notified';\r\n\tstatic PrivateAndPublic = 'Private and Public';\r\n\tstatic LockedCalendarTaskParameterCannotBeDeleted = 'Locked task \\'{0}\\' cannot be removed!';\r\n\tstatic DeletingCalendarTaskCategoryParameterWasSuccessful = 'Category \\'{0}\\' removed successfully!';\r\n\tstatic InstantMessageChannelUsersNotUsable = 'User does not anymore belong to chat participants';\r\n\tstatic AddTaskHandler = 'Add Handler';\r\n\tstatic FormTitle2 = 'Title 2';\r\n\tstatic EventTypeBParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted = 'Category 2 \\'{0}\\' subcategories are used in {1} incidents and category 2 cannot be removed!';\r\n\tstatic Target = 'Target';\r\n\tstatic WhistleBlowResolutionTypeMustBeDefined = 'Resolution must be defined! You can also set resolution description.';\r\n\tstatic CopyDefaultHandlers = 'Copy Default Handlers';\r\n\tstatic InvitationParameterHasBeenExpired = 'Invitation \\'{0}\\' has been expired!';\r\n\tstatic SavingCalendarTaskCategoryParameterWasNotSuccessfulConcurrencyError = 'Failed to save category \\'{0}\\', because data in the category has been modified concurrently by another user!';\r\n\tstatic CompanyGroupCodeIsAlreadyInUse = 'Code of the company group is already in use!';\r\n\tstatic Interval = 'Interval';\r\n\tstatic LogEventType = 'Type';\r\n\tstatic DeletingTaskPrioritiesParameterWasNotSuccessfulConcurrencyError = 'Failed to remove task priorities \\'{0}\\', because data in task priorities has been modified concurrently by another user!';\r\n\tstatic DeletingTaskDataRowWasSuccessful = 'The task row removed successfully!';\r\n\tstatic DeletingRecordFamiliarizationsParameterWasNotSuccessfulErrorParameter = 'Failed to remove familiarizations \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic UpdatingDatabase = 'Updating database...';\r\n\tstatic PreviewPanel = 'Preview';\r\n\tstatic MessageTypes = 'Message Types';\r\n\tstatic NewRow = 'New Row';\r\n\tstatic LanguageFinnish = 'Finnish';\r\n\tstatic Copy = 'Copy';\r\n\tstatic CopyDocumentsFromCompany = 'Copy Documents from This Company';\r\n\tstatic RemoveDefaultTaskState = 'Remove Default Task State';\r\n\tstatic PushNotificationInUse = 'I Want to Receive Push Notifications (eSalkku Mobile)';\r\n\tstatic FormulaMin = 'Minimum';\r\n\tstatic FolderCannotBeMovedToItsSubFolder = 'Folder cannot be moved in its own subfolder!';\r\n\tstatic StudyWeeks = 'Study Weeks';\r\n\tstatic And = 'and';\r\n\tstatic AddPartners = 'Add Partners';\r\n\tstatic FormDecimals = 'Decimals';\r\n\tstatic SaveCalendarTaskConfirmation = 'Do you want to save the event?';\r\n\tstatic FormNormalText = 'Text';\r\n\tstatic EditFileFilter = 'Edit File Filter';\r\n\tstatic SavingMessageSendEmailParameterWasNotSuccessfulErrorParameter = 'Failed to save message email log \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic CalendarTaskRepetitionCountSuffix = 'occurences';\r\n\tstatic UserCodeMustBeDefined = 'Username must be defined!';\r\n\tstatic DefaultEventUrgencyClassParameterCannotBeDeleted = 'Default urgency class cannot be removed!';\r\n\tstatic SavingSettingsWasSuccessful = 'Settings saved successfully!';\r\n\tstatic WhistleBlowInternalMessageConfirmation = 'Do you want to save new internal message?';\r\n\tstatic EventTypeBCodeMustBeDefined = 'Category 2 name must be defined!';\r\n\tstatic PreventiveAction = 'Preventive Action';\r\n\tstatic DownloadDocument = 'Open/Download Selected Files/Documents';\r\n\tstatic CalendarTaskRepetitionRepeatIntervalDayMonthSeparator = 'of';\r\n\tstatic SelectRecordUserTypeToBeCreated = 'Select user record type for new record';\r\n\tstatic UserParameterNotFound = 'User \\'{0}\\' not found!';\r\n\tstatic DeletingRecordUserTransferredPropertiesParameterWasNotSuccessfulErrorParameter = 'Failed to remove transferred properties \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic ReminderHourBefore = 'hour before';\r\n\tstatic PageName = 'Page Name';\r\n\tstatic TrainingTime = 'Training Time';\r\n\tstatic InvalidReCAPTCHA = 'Human verification failed! Are you a robot?';\r\n\tstatic WhistleBlowApplicationName = 'Whistle Blow Channel';\r\n\tstatic RemoveLogisticVoucherCustomerPaymentSetting = 'Remove Payment Setting';\r\n\tstatic DeletingCompaniesParameterWasSuccessful = 'Companies \\'{0}\\' removed successfully!';\r\n\tstatic City = 'City';\r\n\tstatic SavingEventTypeBParameterWasNotSuccessfulErrorParameter = 'Failed to save category 2 \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic AddTransferredPropertyToMultipleUserRecords = 'Add Transferred Property to Multiple User Records';\r\n\tstatic LogoSquare = 'Small Logo';\r\n\tstatic RemoveTaskPriority = 'Remove Task Priority';\r\n\tstatic TaskTypeParameterIsInUseInParameterTasksAndCannotBeDeleted = 'Form \\'{0}\\' is used in {1} tasks and cannot be removed!';\r\n\tstatic NoToDos = 'No open things to do';\r\n\tstatic AddFamiliarizations = 'Add Familiarizations';\r\n\tstatic Payer = 'Payer';\r\n\tstatic ApproveEventHandlerConfirmation = 'Remedial actions have not been defined. Do you really want to approve the incident?';\r\n\tstatic RowAmountIncludedInPrint = 'Row Amount that is Included in Print';\r\n\tstatic DeletingRecordBasicEducationsParameterWasSuccessful = 'Basic educations \\'{0}\\' removed successfully!';\r\n\tstatic NewRecordUserMustBeSavedBeforeFurtherEducationsCanBeAdded = 'New user record must be saved before further educations can be added!';\r\n\tstatic SavingTaskDataRowWasNotSuccessfulErrorParameter = 'Failed to save the task row! Error: \\'{0}\\'';\r\n\tstatic UserIsWhistleBlowChannelAdminAndCannotBeDeleted = 'User is whistle blow channel administrator and cannot be deleted!';\r\n\tstatic SelectTaskState = 'Select Task State';\r\n\tstatic DoYouReallyWantToRemoveTaskHandlerParameter = 'Do you really want to remove handler \\'{0}\\'?';\r\n\tstatic WhistleBlowSourceOral = 'Oral';\r\n\tstatic TransportCompany = 'Transport Company';\r\n\tstatic Header = 'Header';\r\n\tstatic Payee = 'Payee';\r\n\tstatic DeletingDocumentTemplateParameterWasNotSuccessfulErrorParameter = 'Failed to remove document template \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic TaskModuleProperties = 'Tasks Properties';\r\n\tstatic EventReceiverIsPartnerCompany = 'Incident receiver is partner company';\r\n\tstatic DeletingInstantMessageUserParameterWasNotSuccessfulErrorParameter = 'Failed to remove participant \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic ChangeLanguage = 'Change Language';\r\n\tstatic AddWhistleBlowChannelAdminsParameterWasSuccessful = 'Administrators \\'{0}\\' added successfully!';\r\n\tstatic AddWhistleBlowChannelAdminParameterWasSuccessful = 'Administrator \\'{0}\\' added successfully!';\r\n\tstatic Familiarization = 'Familiarization';\r\n\tstatic HandlersMustBeDefined = 'Handlers must be defined!';\r\n\tstatic AccountNumberTkbInCredit = 'Sales Account';\r\n\tstatic SavingDefaultHandlersWasNotSuccessfulErrorParameter = 'Failed to save default handlers! Error: \\'{0}\\'';\r\n\tstatic AddRow = 'Add Row';\r\n\tstatic NoInstantMessageChannelsToShow = 'No chats to show!';\r\n\tstatic EditLogisticVoucherCompanyPaymentSetting = 'Edit Payment Setting';\r\n\tstatic NoEvents = 'No events';\r\n\tstatic DeletingTaskDataRowWasNotSuccessfulErrorParameter = 'Failed to remove the task row! Error: \\'{0}\\'';\r\n\tstatic ExcelFile = 'Excel File';\r\n\tstatic DeletingRecordUserEmploymentsParameterWasSuccessful = 'Employments \\'{0}\\' removed successfully!';\r\n\tstatic InstantMessageChannelMustHaveAtLeastOneAdministrator = 'Chat must have at least one administrator!';\r\n\tstatic EmailMessage = 'Send Message by Email';\r\n\tstatic GroupByMonth = 'Group by Month';\r\n\tstatic SavingEditableDocumentParameterApprovalWasSuccessful = 'Document \\'{0}\\' approved successfully!';\r\n\tstatic OtherSettings = 'Other Properties';\r\n\tstatic DocumentRootPath = 'Document Root Path';\r\n\tstatic FormBoldFont = 'Bold Font';\r\n\tstatic ChartGenerationFailed = 'Failed to create chart!';\r\n\tstatic RemovingTaskHandlerWasNotSuccessfulErrorParameter = 'Failed to remove handlers! Error: \\'{0}\\'';\r\n\tstatic SetPermissions = 'Permissions Summary';\r\n\tstatic AddCompaniesParameterWasSuccessful = 'Companies \\'{0}\\' added successfully!';\r\n\tstatic FormCalculated = 'Calculated';\r\n\tstatic RemoveRemainder = 'Remove Remainder';\r\n\tstatic FormTimeSpan = 'Time Amount (h:mm)';\r\n\tstatic AddingAddRecordUserQualificationsWasNotSuccessfulErrorParameter = 'Failed to add qualifications! Error: \\'{0}\\'';\r\n\tstatic End = 'End';\r\n\tstatic ThisMessageWasDeletedByInstantMessageChannelAdministrator = 'This message was deleted by administrator, \\'{0}\\'';\r\n\tstatic DeletingRecordBasicEducationParameterWasNotSuccessfulConcurrencyError = 'Failed to remove basic education \\'{0}\\', because data in the basic education has been modified concurrently by another user!';\r\n\tstatic ReadMode = 'Read Mode';\r\n\tstatic DeletingEventPartnerParameterWasNotSuccessfulConcurrencyError = 'Failed to remove incident partner \\'{0}\\', because data in the incident partner has been modified concurrently by another user!';\r\n\tstatic EmailingMessageWasNotSuccessfulErrorParameter = 'Failed to send message by email! Error: \\'{0}\\'';\r\n\tstatic RecordUserQualificationParameterNotFound = 'User record qualification record \\'{0}\\' not found!';\r\n\tstatic AddFamiliarizationToMultipleUserRecords = 'Add Familiarization to Multiple User Records';\r\n\tstatic Subject = 'Subject';\r\n\tstatic SharedReportAllCompanies = 'Shared to all companies';\r\n\tstatic DoYouReallyWantToRemoveSelectedFileFilters = 'Do you really want to remove selected file filters?';\r\n\tstatic Loading = 'Loading...';\r\n\tstatic MessageTypeParameterNotFound = 'Message type \\'{0}\\' not found!';\r\n\tstatic FileFilters = 'File Filters';\r\n\tstatic AddInstantMessageChannel = 'Add Chat';\r\n\tstatic FileFilterCodeMustBeDefined = 'File filter code must be defined!';\r\n\tstatic UpdateUserParameterExternalSystemsWasSuccessful = 'User \\'{0}\\' linked to external systems successfully!';\r\n\tstatic DocumentRootPathIsNotEmpty = 'Document root path is not empty folder!';\r\n\tstatic TaskStateCodeMustBeDefined = 'Task state name must be defined!';\r\n\tstatic DraftCannotBeApprovedDoYouWantToSaveDraftAnyway = 'Draft cannot be approved! Do you want to save draft anyway (approval will not be saved)?';\r\n\tstatic RecordParameterUnlockingFailedRecordIsWriteLockedToUserParameter = 'Failed to unlock record \\'{0}\\'! The record is write locked to user \\'{0}\\'!';\r\n\tstatic ShowPublishVersion = 'Show publish version';\r\n\tstatic FormUsableInSearchFilter = 'Usable in Search Filter';\r\n\tstatic TrainingEndDate = 'Training End Date';\r\n\tstatic RecordUserEmploymentParameterNotFound = 'User record employment record \\'{0}\\' not found!';\r\n\tstatic ApplicationTempPathParameterNotFound = 'Application temp-folder \\'{0}\\' not found!';\r\n\tstatic LogisticVoucherCustomer = 'Customer';\r\n\tstatic Download = 'Download';\r\n\tstatic MaxSearchResultCount = 'Max Search Result Count';\r\n\tstatic NewUserMustBeSavedBeforeUserGroupsCanBeAdded = 'New user must be saved before user groups can be added!';\r\n\tstatic CustomStyleClass = 'Custom Style Class Name';\r\n\tstatic RecordFurtherEducationCodeMustBeDefined = 'Further education name must be defined!';\r\n\tstatic RemoveUserFromUserGroup = 'Remove User Account from User Group';\r\n\tstatic DoYouReallyWantToRemoveSelectedUsers = 'Do you really want to remove selected users?';\r\n\tstatic InTesting = 'In Testing';\r\n\tstatic DeletingEventParameterWasNotSuccessfulErrorParameter = 'Failed to remove incident \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic VoucherInOutReportSavePath = 'Voucher Summary Print Save Path';\r\n\tstatic SavingUnitPermissionsWasSuccessful = 'Unit permissions saved successfully!';\r\n\tstatic SelectEventReceiver = 'Select Incident Receiver';\r\n\tstatic MovingFilesAndDocumentsToFolderParameterWasNotSuccessfulConcurrencyError = 'Failed to move files/documents into folder \\'{0}\\', because data in the folder has been modified concurrently by another user!';\r\n\tstatic RemoveRow = 'Remove Row';\r\n\tstatic RecordUserExcelTabName = 'User Records';\r\n\tstatic SavingJobParameterWasNotSuccessfulErrorParameter = 'Failed to save job \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic Banner = 'Banner';\r\n\tstatic Portrait = 'Portrait';\r\n\tstatic DoYouReallyWantToRemoveSelectedHandlers = 'Do you really want to remove selected handlers?';\r\n\tstatic TaskMustBeSavedBeforeAttachmentsCanBeAdded = 'Task must be saved before attachments can be added!';\r\n\tstatic RememberMe = 'Remember me';\r\n\tstatic SavingTaskPriorityParameterWasNotSuccessfulErrorParameter = 'Failed to save task priority \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic BannerPath = 'Banner Folder';\r\n\tstatic ShowArchived = 'Show Archived';\r\n\tstatic AddQualification = 'Add Qualification';\r\n\tstatic RemovingTaskHandlersWasSuccessful = 'Handlers removed successfully!';\r\n\tstatic DoYouReallyWantToSaveData = 'Do you really want to save?';\r\n\tstatic Months = 'Months';\r\n\tstatic WhistleBlowInformantHasReadMessage = 'Whistle blow report informant has read your message';\r\n\tstatic DocumentTemplateCodeIsAlreadyInUse = 'Document template code is already in use!';\r\n\tstatic EventSenderIsPartnerCompany = 'Incident sender is partner company';\r\n\tstatic SelectInstantMessageChannelUser = 'Select Participant';\r\n\tstatic FamiliarizationStartDateStart = 'Familiarization Start Date - Start';\r\n\tstatic AddFile = 'Add File';\r\n\tstatic DeletingEventUrgencyClassParameterWasNotSuccessfulErrorParameter = 'Failed to remove urgency class \\'{0}\\'! Error: \\'{1}\\'!';\r\n\tstatic FormRequired = 'Input Required';\r\n\tstatic UserModuleProperties = 'User Accounts Properties';\r\n\tstatic SearchProperties = 'Advanced Search';\r\n\tstatic ReminderDayBefore = 'day before';\r\n\tstatic NoDataToShow = 'No data to show!';\r\n\tstatic CalendarTaskStartDateMustBeDefined = 'Event start time must be defined!';\r\n\tstatic EditDocumentTemplate = 'Edit Document Template';\r\n\tstatic InstantMessageChannelOneUser = 'Chat';\r\n\tstatic Errors = 'Errors';\r\n\tstatic FormShowInRow = 'Use in Row';\r\n\tstatic ExpireTime = 'Expire Time';\r\n\tstatic DeletingCompanyGroupParameterWasNotSuccessfulErrorParameter = 'Failed to remove company group \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic TaskStatesMustBeDefinedBeforeAddingTasks = 'Task states must be defined before adding tasks!';\r\n\tstatic Folder = 'Folder';\r\n\tstatic RemoveInstantMessageChannelUser = 'Remove participant';\r\n\tstatic DoYouReallyWantToRemoveRecordFamiliarizationParameter = 'Do you really want to remove familiarization \\'{0}\\'?';\r\n\tstatic Resolution = 'Resolution';\r\n\tstatic ReportDialogInfoText = 'The report will be based on searched/filtered rows.';\r\n\tstatic FirstNameMustBeDefined = 'First name must be defined!';\r\n\tstatic CalendarTaskRemoveOccurrence = 'Remove Occurrence';\r\n\tstatic SaveToTemplate = 'Save as Template';\r\n\tstatic ImmediateAction = 'Remedial Action';\r\n\tstatic MoveDown = 'Move Downwards';\r\n\tstatic PaymentSettings = 'Payment Settings';\r\n\tstatic Folders = 'Folders';\r\n\tstatic Max = 'Max';\r\n\tstatic CostCentreNumber = 'Cost Centre Number';\r\n\tstatic SendingNotificationsWasNotSuccessfulErrorParameter = 'Failed to send notifications! Error: \\'{0}\\'';\r\n\tstatic ShowUsers = 'Show User Accounts';\r\n\tstatic FormulaMultiplication = 'Multiplication';\r\n\tstatic NewRecordUserMustBeSavedBeforeQualificationsCanBeAdded = 'New user record must be saved before qualifications can be added!';\r\n\tstatic SavingEventUrgencyClassParameterWasNotSuccessfulConcurrencyError = 'Failed to save urgency class \\'{0}\\', because data in the urgency class has been modified concurrently by another user!';\r\n\tstatic ProcessingTimeDays = 'Processing Time (d)';\r\n\tstatic AddRows = 'Add Rows';\r\n\tstatic NotInUse = 'Not in Use';\r\n\tstatic AutomaticLogoutDone = 'Automatic logout done due to expired user session!';\r\n\tstatic UserRecordStatisticsExpiredFurtherEducations = 'Expired Further Educations';\r\n\tstatic DeletingUsersParameterWasSuccessful = 'User accounts \\'{0}\\' removed successfully!';\r\n\tstatic EmailAddress = 'Email';\r\n\tstatic DoYouReallyWantToRemoveEventTypeParameter = 'Do you really want to remove category 1 \\'{0}\\'?';\r\n\tstatic AddPartnersParameterWasNotSuccessfulConcurrencyError = 'Failed to add partners \\'{0}\\', because the data has been modified concurrently by another user!';\r\n\tstatic Others = 'Others';\r\n\tstatic LogSizeInDays = 'Log Size in Days (0 = No Limit)';\r\n\tstatic EditTask = 'Edit Task';\r\n\tstatic AddUserParameterWasNotSuccessfulErrorParameter = 'Failed to add user account \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic NormalMessage = 'Normal message';\r\n\tstatic PositionErrorPermissionDenied = 'Application does not have permission to read location.';\r\n\tstatic PermissionsToCreateEventsToEventPartner = 'Permission to Create Incidents to Partner';\r\n\tstatic AddMessage = 'Add Message';\r\n\tstatic FormMaximumValue = 'Maximum Value';\r\n\tstatic VoucherSavePath = 'Voucher Save Path';\r\n\tstatic DoYouReallyWantToRemoveChartPanelParameter = 'Do you really want to remove chart \\'{0}\\'?';\r\n\tstatic DeletingFileFiltersParameterWasNotSuccessfulConcurrencyError = 'Failed to remove file filters \\'{0}\\', because data in file filters has been modified concurrently by another user!';\r\n\tstatic SavingOptionParameterWasNotSuccessfulErrorParameter = 'Failed to save option \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic DirectoryItemFolderParameterNotFound = 'Folder \\'{0}\\' not found!';\r\n\tstatic Picture = 'Picture';\r\n\tstatic TrainingStartDateEnd = 'Training Start Date - End';\r\n\tstatic NoModifications = 'No modifications';\r\n\tstatic ReportGenerationAborted = 'Report creation canceled!';\r\n\tstatic SelectComponentInFormToSeeComponentProperties = 'Select document in form to see component properties';\r\n\tstatic PaymentSetting = 'Payment Setting';\r\n\tstatic FormulaSqrt = 'Square root';\r\n\tstatic LogEventTime = 'Time';\r\n\tstatic Remainder = 'Remainder';\r\n\tstatic PrivacyPolicy = 'Privacy Policy';\r\n\tstatic AddingTaskHandlersWasSuccessful = 'Handlers added successfully!';\r\n\tstatic DoYouReallyWantToRemoveTaskDataRow = 'Do you really want to remove row?';\r\n\tstatic LockingTaskDataRowWasNotSuccessful = 'Failed to lock the task row!';\r\n\tstatic EditEditableDocument = 'Edit Document';\r\n\tstatic FolderParameterAlreadyExistsInTargetFolder = 'Folder \\'{0}\\' already exists in the destination folder!';\r\n\tstatic ValidityEndDateEnd = 'Validity End Date - End';\r\n\tstatic NotSelected = 'Not Selected';\r\n\tstatic Filter = 'Filter';\r\n\tstatic Description = 'Description';\r\n\tstatic DeletingMessageParameterWasNotSuccessfulConcurrencyError = 'Failed to remove message \\'{0}\\', because data in the message has been modified concurrently by another user!';\r\n\tstatic Code = 'Code';\r\n\tstatic DeletingTaskTypesParameterWasNotSuccessfulConcurrencyError = 'Failed to remove task types \\'{0}\\', because data in task types has been modified concurrently by another user!';\r\n\tstatic MessageEndDate = 'Visible Until';\r\n\tstatic ReadImpPlur = 'Read';\r\n\tstatic SharedReports = 'Shared Reports';\r\n\tstatic SavingEventTypeBsWasSuccessful = 'Category 2 saved successfully!';\r\n\tstatic SavingAttachmentsWasNotSuccessfulErrorParameter = 'Failed to save attachments! Error: \\'{0}\\'';\r\n\tstatic DeletingRecordQualificationParameterWasSuccessful = 'Qualification \\'{0}\\' removed successfully!';\r\n\tstatic AddingAddRecordUserFurtherEducationsWasNotSuccessfulErrorParameter = 'Failed to add further educations! Error: \\'{0}\\'';\r\n\tstatic WhistleBlowStatisticsReceivedRecords = 'Received Reports';\r\n\tstatic Summary = 'Summary';\r\n\tstatic ThisPartOfApplicationIsNotInUse = 'This part of application is not in use!';\r\n\tstatic DeletingEditableDocumentParameterWasNotSuccessfulConcurrencyError = 'Failed to remove document \\'{0}\\', because data in the document has been modified concurrently by another user!';\r\n\tstatic JobTypeEventNotification = 'Incident Notification';\r\n\tstatic EditEventPartner = 'Edit Incident Partner';\r\n\tstatic CalendarTaskEndDateMustBeAfterStartDate = 'Event end time must be after start time!';\r\n\tstatic PasteDefaultHandlers = 'Paste Default Handlers';\r\n\tstatic IndirectCosts = 'Indirect Costs';\r\n\tstatic SavingDirectoryItemDocumentParameterWasSuccessful = 'File \\'{0}\\' saved successfully!';\r\n\tstatic DeletingWhistleBlowChannelAdminsParameterWasSuccessful = 'Administrators \\'{0}\\' removed successfully!';\r\n\tstatic CourseCredits = 'Course Credits';\r\n\tstatic AllInstantMessageUsersHaveReadMessage = 'All recipients have read your message';\r\n\tstatic DeletingWhistleBlowChannelAdminParameterWasNotSuccessfulConcurrencyError = 'Failed to remove administrator \\'{0}\\', because the data has been modified concurrently by another user!';\r\n\tstatic InstantMessageChannelUserParameterNotFound = 'Chat party \\'{0}\\' not found!';\r\n\tstatic DoYouReallyWantToRemoveRecordBasicEducationParameter = 'Do you really want to remove basic education \\'{0}\\'?';\r\n\tstatic SavingMessageSendPushParameterWasNotSuccessfulConcurrencyError = 'Failed to save message push notification log \\'{0}\\', because data in the push notification log has been modified concurrently by another user!';\r\n\tstatic Move = 'Move';\r\n\tstatic Employments = 'Employments';\r\n\tstatic UserIsActiveInMobile = 'User account is active in mobile application.';\r\n\tstatic AddComment = 'Add Comment';\r\n\tstatic AddAtleastOneInstantMessageChannelUsersToInstantMessageChannel = 'Add at least one participant to the chat!';\r\n\tstatic DoYouReallyWantToRemoveFilterParameter = 'Do you really want to remove filter \\'{0}\\'?';\r\n\tstatic ReportsStandard = 'Standard Reports';\r\n\tstatic Warning = 'Warning';\r\n\tstatic GeneralAttachments = 'General Attachments';\r\n\tstatic FormTitle3 = 'Title 3';\r\n\tstatic FormSortAscending = 'Ascending Order';\r\n\tstatic FirstListRow = 'First List Row';\r\n\tstatic DeletingFileFiltersParameterWasNotSuccessfulErrorParameter = 'Failed to remove file filters \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic WhistleBlowChannelWasNotFound = 'Whistle blow channel not found!';\r\n\tstatic LoggedInCompanyCannotBeDeleted = 'Company cannot remove itself!';\r\n\tstatic RemoveQualification = 'Remove Qualification';\r\n\tstatic FileParameterDownloaded = 'File \\'{0}\\' has been downloaded.';\r\n\tstatic PermissionsForSections = 'Sections in Use';\r\n\tstatic AddingAttachmentParameterWasNotSuccessfulErrorParameter = 'Failed to add attachment \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic TiedostoturvaUseType = 'Tiedostoturva';\r\n\tstatic FormulaAddition = 'Addition';\r\n\tstatic CompanyGroupParameterNotFound = 'Company group \\'{0}\\' was not found!';\r\n\tstatic RowInformation = 'Row Information';\r\n\tstatic AddCompaniesParameterWasNotSuccessfulErrorParameter = 'Failed to add companies \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic StudyWeek = 'Study Week';\r\n\tstatic UnlockingEditableDocumentParameterWasNotSuccessful = 'Failed to unlock document \\'{0}\\'!';\r\n\tstatic TheSystemDoesNotSupportYourWebBrowserUpdateToLatestBrowserVersion = 'This system does not support your web browser. Update your web browser to latest version.';\r\n\tstatic DoYouReallyWantToRemoveAttachmentParameter = 'Do you really want to remove attachment \\'{0}\\'?';\r\n\tstatic TimeSpanTwoYears = 'Two Years';\r\n\tstatic AdditionalFunctions = 'Additional Functions';\r\n\tstatic DirectoryItemDocumentParameterNotFound = 'File \\'{0}\\' not fond!';\r\n\tstatic WhistleBlowSendReport = 'Send Report';\r\n\tstatic ValidityEndDateStart = 'Validity End Date - Start';\r\n\tstatic RemoveRecordUserAndKeepUser = 'Remove User Record and Keep User Account';\r\n\tstatic InternalMessages = 'Internal Messages';\r\n\tstatic WhistleBlowNewReport = 'New Report';\r\n\tstatic ImportingUsersParameterWasSuccessful = 'User accounts \\'{0}\\' imported successfully!';\r\n\tstatic FamiliarizationStartDate = 'Familiarization Start Date';\r\n\tstatic SavingEventMessageWasSuccessful = 'Comment saved successfully!';\r\n\tstatic AddUsersParameterWasNotSuccessfulConcurrencyError = 'Failed to add user accounts \\'{0}\\', because the data has been modified concurrently by another user!';\r\n\tstatic UnreadMessagesParameter = 'Unread messages: {0}';\r\n\tstatic AddPartnerParameterWasNotSuccessfulErrorParameter = 'Failed to add partner \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic DeletingCalendarTaskCategoriesParameterWasNotSuccessfulErrorParameter = 'Failed to remove categories \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic ValidityDate = 'Validity Date';\r\n\tstatic CalendarTaskRepetitionCountPrefix = 'After';\r\n\tstatic WhistleBlowEventTypeHandlersAdded = 'Handlers added';\r\n\tstatic AllJobTitles = 'All Job Titles';\r\n\tstatic AddSharedDocumentTemplate = 'Add Shared Document Template';\r\n\tstatic DocumentTypes = 'Document Types';\r\n\tstatic AddUserGroupParameterWasNotSuccessfulConcurrencyError = 'Failed to add user group \\'{0}\\', because the data has been modified concurrently by another user!';\r\n\tstatic RemoveTask = 'Remove Task';\r\n\tstatic DeletingPartnerParameterWasSuccessful = 'Partner \\'{0}\\' removed successfully!';\r\n\tstatic ApplicationTempPathIsNotSpecified = 'Application temp-folder is not specified!';\r\n\tstatic RemoveUserGroupExternalSystemsWasNotSuccessfulConcurrencyError = 'Failed to remove user group links from external systems, because the data has been modified concurrently by another user!';\r\n\tstatic SavingDefaultHandlersWasSuccessful = 'Default handlers saved successfully!';\r\n\tstatic EventUrgencyClassParameterNotFound = 'Urgency class \\'{0}\\' not found!';\r\n\tstatic FormDisabled = 'Input Disabled';\r\n\tstatic AddPartnersParameterWasSuccessful = 'Partners \\'{0}\\' added successfully!';\r\n\tstatic UserFilterExpired = 'Expired';\r\n\tstatic DeletingUserGroupsParameterWasNotSuccessfulConcurrencyError = 'Failed to remove user groups \\'{0}\\', because data in user groups has been modified concurrently by another user!';\r\n\tstatic PublishVoucherToFileSystem = 'Publish Voucher to File System';\r\n\tstatic ReplyToInstantMessage = 'Reply to message';\r\n\tstatic FolderNameConstainsIllegalCharacters = 'Folder name contains illegal characters (<, >, :, \", /, \\, |, ? tai *) or it ends with illegal characters (., \\' \\')!';\r\n\tstatic RemoveFile = 'Remove File';\r\n\tstatic NewMenu = 'New Menu';\r\n\tstatic Task = 'Task';\r\n\tstatic PushEndpoint = 'Push Endpoint';\r\n\tstatic SavingApplicationPermissionsWasNotSuccessfulConcurrencyError = 'Failed to save system permissions, because data in system permissions has been modified concurrently by another user!';\r\n\tstatic Add = 'Add';\r\n\tstatic DeletingRecordUserEmploymentParameterWasNotSuccessfulConcurrencyError = 'Failed to remove employment \\'{0}\\', because data in the employment has been modified concurrently by another user!';\r\n\tstatic AccessRightReadInstantMessages = 'Company Internal Chat';\r\n\tstatic ExitingInstantMessageChannelWasSuccessful = 'Chat exited successfully!';\r\n\tstatic EventParameterUnitChangedFromParameterToParameter = 'Incident \\'{0}\\' unit changed from \\'{1}\\' to \\'{2}\\'.';\r\n\tstatic DoYouReallyWantToUnlockEditableDocument = 'Do you really want to unlock document \\'{0}\\'?';\r\n\tstatic UserAccountNotConnected = 'User Account Not Connected';\r\n\tstatic All = 'All';\r\n\tstatic FieldParameterValueCanOnlyContainNumbers = 'Value of the field \\'{0}\\' can only contain numbers!';\r\n\tstatic PrintRecordUser = 'Print User Record';\r\n\tstatic RemoveDocumentTemplate = 'Remove Document Template';\r\n\tstatic IncludeOnlyActiveUsers = 'Include only users with active user account and current work place';\r\n\tstatic AddFileOrTakePicture = 'Add a file or take a picture';\r\n\tstatic DaysAgo90 = '90 Days Ago';\r\n\tstatic SavingRecordEmploymentParameterWasNotSuccessfulConcurrencyError = 'Failed to save employment \\'{0}\\', because data in the employment has been modified concurrently by another user!';\r\n\tstatic DoYouReallyWantToClearLog = 'Do you really want to clear the log?';\r\n\tstatic OldPassword = 'Old Password';\r\n\tstatic RemoveForm = 'Remove Form';\r\n\tstatic ProcessingFolderParameter = '* Processing folder \\'{0}\\'...';\r\n\tstatic WhistleBlowCategoryParameterNotFound = 'Whistle blow category \\'{0}\\' not found!';\r\n\tstatic ShowUserGroups = 'Show User Groups';\r\n\tstatic TaskTypeParameterNotFound = 'Form \\'{0}\\' not found!';\r\n\tstatic ClearSubFolderPermissions = 'Clear Subfolder Permissions';\r\n\tstatic AddDefaultFurtherEducationGroup = 'Add Default Further Education Group';\r\n\tstatic NewInstantMessageChannel = 'New Chat';\r\n\tstatic FamiliarizationEndDate = 'Familiarization End Date';\r\n\tstatic ReminderWeeksBefore = 'weeks before';\r\n\tstatic RecordFamiliarizationParameterNotFound = 'Familiarization \\'{0}\\' not found!';\r\n\tstatic WebPushError = 'Web Push Error';\r\n\tstatic DocumentTemplateCodeMustBeDefined = 'Document template code must be defined!';\r\n\tstatic SaveUserFurtherEducationConfirmation = 'Do you want to save the further education?';\r\n\tstatic OpenWhistleBlowInstruction = 'Enter the password that you received when the whistle blow report was submitted.';\r\n\tstatic WhistleBlowSeverityUnspecified = 'Unspecified';\r\n\tstatic FurtherEductionGroupParameterContainsFurtherEducationsAndCannotBeDeleted = 'Further education group \\'{0}\\' is contains further educations and cannot be removed!';\r\n\tstatic NoAddedEventTypes = 'No added categories!';\r\n\tstatic SavingEventParameterWasNotSuccessfulErrorParameter = 'Failed to save incident \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic DoYouReallyWantToExitInstantMessageChannel = 'Do you really want to exit the chat?';\r\n\tstatic DoCleanLog = 'Clear Log';\r\n\tstatic RecordFurtherEducationCodeIsAlreadyInUse = 'Further education name is already in use!';\r\n\tstatic EventCreator = 'Creator';\r\n\tstatic PermissionsForSystems = 'System Permissions';\r\n\tstatic ReadError = 'Read error!';\r\n\tstatic FolderParameterAlreadyExistsInFileSystem = 'Folder \\'{0}\\' already exists in the filesystem!';\r\n\tstatic SaveDraft = 'Save Draft';\r\n\tstatic FormNumbers = 'Numbers';\r\n\tstatic DeletingInstantMessageWasSuccessful = 'Instant message removed successfully!';\r\n\tstatic FormulaFloor = 'Rounded to down';\r\n\tstatic EditMessageType = 'Edit Message Type';\r\n\tstatic EditTaskPriority = 'Edit Task Priority';\r\n\tstatic UsedQuota = 'Used Quota';\r\n\tstatic Panels = 'Panels';\r\n\tstatic LockedTaskParameterCannotBeMovedToTrashBin = 'Locked task \\'{0}\\' cannot be moved to trash bin!';\r\n\tstatic FolderTreePermissions = 'Folder Tree Permissions';\r\n\tstatic FormShowModifyDate = 'Show Modify Date';\r\n\tstatic WhistleBlowNotFound = 'Whistle blow report not found!';\r\n\tstatic ShowInheritedPermissions = 'Show Inherited Permissions';\r\n\tstatic SaveInstantMessageChannelConfirmation = 'Do you want to save the chat?';\r\n\tstatic AllEventHandlersHaveReadMessage = 'All incident handlers have read your comment';\r\n\tstatic AdditionalPermissionBEventsDialog = 'Removing Incident';\r\n\tstatic DefaultEventHandlers = 'Default Incident Handlers';\r\n\tstatic SavingWhistleBlowCategoryParameterWasNotSuccessfulErrorParameter = 'Failed to save whistle blow category \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic AddFileFilter = 'Add File Filter';\r\n\tstatic IncludeArchivedFamiliarizations = 'Include archived familiarizations';\r\n\tstatic TaskDataRow = 'Task Row';\r\n\tstatic LockedTaskParameterCannotBeRestored = 'Locked task \\'{0}\\' cannot be restored!';\r\n\tstatic Preview = 'Preview';\r\n\tstatic ExternalSystemCompanyCodeClaimNotFound = 'User claim \\'externalSystemCompanyCode\\' not found!';\r\n\tstatic WhistleBlowStateResolved = 'Resolved';\r\n\tstatic SavingCalendarTaskParameterWasNotSuccessfulErrorParameter = 'Failed to save event \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic DocumentsNotFound = 'Documents not found!';\r\n\tstatic ComparingFileSystemToDatabase = 'Comparing file system with database...';\r\n\tstatic RequestPasswordChangeTitle = 'Forgot password?';\r\n\tstatic DeletingDocumentTemplateParameterWasNotSuccessfulConcurrencyError = 'Failed to remove document template \\'{0}\\', because data in the document template has been modified concurrently by another user!';\r\n\tstatic TaxNumber = 'Tax Number';\r\n\tstatic AddingRecordUserFamiliarizationsWasNotSuccessfulErrorParameter = 'Failed to add familiarizations! Error: \\'{0}\\'';\r\n\tstatic Archived = 'Archived';\r\n\tstatic RemoveInvalidDefaultEventHandlersConfirmation = 'Some default incident handlers or notified persons do not have permissions to handle incidents of units. Do you want to automatically remove these incidents handlers or notified persons before saving new settings?';\r\n\tstatic FormModifyDate = 'Modify Date';\r\n\tstatic InstantMessageChannelContainsParameterInstantMessageUsersAndCannotBeDeleted = 'Chat has other participants and cannot be removed!';\r\n\tstatic NewRecordUserMustBeSavedBeforeFamiliarizationsCanBeAdded = 'New user record must be saved before familiarizations can be added!';\r\n\tstatic DocumentsSelected = 'documents selected';\r\n\tstatic AuthorizationLevelUser = 'Users';\r\n\tstatic ScopeCanBeChanged = 'Scope can be changed';\r\n\tstatic WhistleBlowReceiver = 'Receiver';\r\n\tstatic DefaultEventUrgencyClassMustBeDefinedBeforeAddingEvents = 'Default urgency class must be defined before adding incidents!';\r\n\tstatic WhistleBlowInformantMustBeNotifiedLatestAtParameter = 'Whistle blow report must be marked as resolved {0} at the latest!';\r\n\tstatic SearchCalendarTasks = 'Search Events';\r\n\tstatic EventTypesGeneric = 'Types';\r\n\tstatic DeletingEditableDocumentParameterWasSuccessful = 'Document \\'{0}\\' removed successfully!';\r\n\tstatic FormInitializeFromSavedRow = 'Initialize from Saved Row';\r\n\tstatic RootCause = 'Root Cause';\r\n\tstatic CostCentreName = 'Cost Centre Name';\r\n\tstatic ReadReceiptNotGiven = 'Receipt unsent';\r\n\tstatic SavingOneTimePasswordWasNotSuccessfulConcurrencyError = 'Failed to save one time password, because data in the one time password has been modified concurrently by another user!';\r\n\tstatic AddLogisticVoucherCompanyPaymentSetting = 'Add Payment Setting';\r\n\tstatic LoggedInUser = 'Logged in User';\r\n\tstatic UserCodeMustBeValid = 'Username must be 8-50 characters long and it cannot contain whitespaces.';\r\n\tstatic PreviewRowPrint = 'Preview (Row Print)';\r\n\tstatic SavingCalendarTaskParameterWasNotSuccessfulConcurrencyError = 'Failed to save event \\'{0}\\', because event has been modified concurrently by another user!';\r\n\tstatic TargetsMyCompany = 'Visibility - My Company';\r\n\tstatic FieldParameterContainsInvalidCodeCharacters = 'Value of the field \\'{0}\\' contains characters that are illegal in codes ( \\, ^, ?, &, <, >, /, +, :) or it ends with illegal characters (.)!';\r\n\tstatic LogisticVoucher = 'Transport Invoicing';\r\n\tstatic AccessRightWriteTasks = 'Creating and handling tasks';\r\n\tstatic NewInstantMessageChannelMustBeSavedBeforeUsersCanBeAdded = 'New chat must be saved before participants can be added!';\r\n\tstatic RecordUserParameterNotFound = 'User record \\'{0}\\' not found!';\r\n\tstatic EventTypes = 'Category 1';\r\n\tstatic NormalSize = 'Normal Size';\r\n\tstatic WhistleBlowSeverityLow = 'Low';\r\n\tstatic TypeMustBeDefined = 'Type must be defined!';\r\n\tstatic ConfirmPassword = 'Confirm Password';\r\n\tstatic Logo = 'Logo';\r\n\tstatic DoYouReallyWantToRemoveKeywordParameterItIsUsedByParameterDocuments = 'Do you really want to remove keyword \\'{0}\\'? Keyword used in {1} files/documents.';\r\n\tstatic ChangeToEditMode = 'Change to Edit Mode';\r\n\tstatic FormCalculatedDecimalNumber = 'Calculated Decimal';\r\n\tstatic SharedDocumentTemplates = 'Shared Document Templates';\r\n\tstatic SavingEventMessageWasNotSuccessfulConcurrencyError = 'Failed to save comment, because data in the comment has been modified concurrently by another user!';\r\n\tstatic DeletingAttachmentsParameterWasNotSuccessfulErrorParameter = 'Failed to remove attachments \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic ProjectName = 'Project Name';\r\n\tstatic DoYouReallyWantToRemoveSelectedRecordFurtherEducations = 'Do you really want to remove selected further educations?';\r\n\tstatic DocumentVersionParameterNotFound = 'Document version \\'{0}\\' not found!';\r\n\tstatic SelectRemovingMethod = 'Select Removing Method';\r\n\tstatic Partners = 'Partners';\r\n\tstatic ExpiringIn120Days = 'Include educations expiring in 120 days';\r\n\tstatic DeletingRecordFurtherEducationParameterWasNotSuccessfulConcurrencyError = 'Failed to remove further education \\'{0}\\', because data in the further education has been modified concurrently by another user!';\r\n\tstatic Publish = 'Publish';\r\n\tstatic SavingRecordBasicEducationParameterWasSuccessful = 'Basic education \\'{0}\\' saved successfully!';\r\n\tstatic Report = 'Report';\r\n\tstatic SelectCompany = 'Select Company';\r\n\tstatic MessageTypeCodeIsAlreadyInUse = 'Message type code is already in use!';\r\n\tstatic Weekly = 'Weekly';\r\n\tstatic PageNameMustBeDefined = 'Page name must be defined!';\r\n\tstatic LockedCalendarTaskParameterCannotBeSaved = 'The task \\'{0}\\' has been locked to another user and it cannot be saved!';\r\n\tstatic LogLine = 'Log Line';\r\n\tstatic SendEmailInvitationConfirmation = 'Do you really want to send invitation to system by email?';\r\n\tstatic SSRSRefreshStarted = 'SSRS refresh started';\r\n\tstatic Version = 'Version';\r\n\tstatic RemoveUser = 'Remove User Account';\r\n\tstatic AddPermission = 'Add Permission';\r\n\tstatic RecordEmailNotificationType = 'I Want to Receive Further Educations Report (Expiring Educations)';\r\n\tstatic DeletingOneTimePasswordWasNotSuccessfulErrorParameter = 'Failed to remove one time password! Error: \\'{0}\\'';\r\n\tstatic TaskMustBeSavedBeforeCalendarTasksCanBeAdded = 'Task must be saved before events can be added!';\r\n\tstatic ParameterPercentOfFileStorageQuotaUsed = '{0}% of file storage quota used';\r\n\tstatic PasswordChangeRequestParameterNotFound = 'Password change request \\'{0}\\' not found!';\r\n\tstatic EducationsAndCompetencies = 'Educations and Competencies';\r\n\tstatic Priority = 'Priority';\r\n\tstatic AddCompanyGroup = 'Add Company Group';\r\n\tstatic DeletingUserParameterWasNotSuccessfulErrorParameter = 'Failed to remove user account \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic AddUsersParameterWasSuccessful = 'User accounts \\'{0}\\' added successfully!';\r\n\tstatic FormulaSin = 'Sine';\r\n\tstatic EmployeeTypeMustBeDefined = 'Employment type must be defined!';\r\n\tstatic CompanyTaskTypes = 'Company forms';\r\n\tstatic SavingUserParametersWasSuccessful = 'User options saved successfully!';\r\n\tstatic SendingEmailToParameter = 'Sending email to address \\'{0}\\'...';\r\n\tstatic RemoveLogisticVoucherCustomer = 'Remove Customer';\r\n\tstatic SavingRecordEmploymentParameterWasSuccessful = 'Employment \\'{0}\\' saved successfully!';\r\n\tstatic Properties = 'Properties';\r\n\tstatic FormMaxTextLength = 'Maximum Text Length';\r\n\tstatic RemoveFamiliarization = 'Remove Familiarizations';\r\n\tstatic CompanyModuleProperties = 'Companies Properties';\r\n\tstatic UserTypeClaimNotFound = 'User claim \\'user type\\' not found!';\r\n\tstatic ArchiveExpiredFamiliarizations = 'Archive Expired Familiarizations';\r\n\tstatic EditableDocumentVersionMustBeDefined = 'Document version number must be defined!';\r\n\tstatic InstantMessage = 'Instant Message';\r\n\tstatic UserCannotRecieveEmailNotifications = 'User will not receive email notifications';\r\n\tstatic Starts = 'Starts';\r\n\tstatic DeletingDirectoryItemDocumentParameterWasNotSuccessfulErrorParameter = 'Failed to remove file \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic EventTypeCCodeIsAlreadyInUse = 'Category 3 name is already in use!';\r\n\tstatic AddPartnerParameterWasSuccessful = 'Partner \\'{0}\\' added successfully!';\r\n\tstatic PasswordIsTooShort = 'Password is too short!';\r\n\tstatic RenamingFileParameterWasNotSuccessfulErrorParameter = 'Failed to rename file (\\'{0}\\' => \\'{1}\\') in filesystem! Error: \\'{2}\\'';\r\n\tstatic WhistleBlowEventTypeAttachmentsAdded = 'Attachments added';\r\n\tstatic SavingReportWasNotSuccessfulErrorParameter = 'Failed to save report! Error: \\'{0}\\'';\r\n\tstatic ArchiveExpiredFurtherEducations = 'Archive Expired Further Educations';\r\n\tstatic DetectingLocation = 'Detecting location...';\r\n\tstatic SavingFilterWasNotSuccessfulConcurrencyError = 'Failed to save filter, because data in the filter has been modified concurrently by another user!';\r\n\tstatic Phone = 'Phone';\r\n\tstatic FormExpressionEditor = 'Expression Editor';\r\n\tstatic FiltersStandard = 'Standard Filters';\r\n\tstatic SelectFurtherEducation = 'Select Further Education';\r\n\tstatic DocumentsParameterOverwriteConfirmation = 'Files \\'{0}\\' already exist in folder. Do you want to overwrite these files?';\r\n\tstatic FormDefaultValue = 'Default Value';\r\n\tstatic NotificationSettings = 'Notification Settings';\r\n\tstatic JobParameterNotFound = 'Job \\'{0}\\' not found!';\r\n\tstatic Month = 'Month';\r\n\tstatic ModifiedDescription = 'Modified Description';\r\n\tstatic EditableDocumentCodeIsAlreadyInUse = 'Document name is already in use!';\r\n\tstatic LastListRow = 'Last List Row';\r\n\tstatic DocumentParameterAlreadyExists = 'Document \\'{0}\\' already exists in the folder!';\r\n\tstatic SelectEventPartner = 'Select Incident Partner';\r\n\tstatic NewInstantMessageChannelGroupInternal = 'New Group (company internal)';\r\n\tstatic WhistleBlowEventTypeHandlersRemoved = 'Handlers removed';\r\n\tstatic SendinEmailNotificationsWasNotSuccessfulErrorParameter = 'Failed to send notifications to by email! Error: \\'{0}\\'';\r\n\tstatic DoYouReallyWantToRemoveSelectedEventUrgencyClasses = 'Do you really want to remove selected urgency classes?';\r\n\tstatic DoYouReallyWantToRemoveTaskParameterPermanenty = 'Do you really want to permanently remove task \\'{0}\\'? Removed task cannot be restored?';\r\n\tstatic CompanyRole = 'Company Role';\r\n\tstatic AddToHomeScreen = 'Add to Home Screen';\r\n\tstatic RecordUsersFound = 'User Records Found';\r\n\tstatic NewRecordUserMustBeSavedBeforeAttachmentsCanBeAdded = 'New user record must be saved before attachments can be added!';\r\n\tstatic SavingEditableDocumentParameterPublishWasNotSuccessfulErrorParameter = 'Failed to publish document \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic Entrepreneur = 'Entrepreneur';\r\n\tstatic SendingEmails = 'Sending emails...';\r\n\tstatic EditWhistleBlow = 'Edit Whistle Blow Report';\r\n\tstatic DeletingTaskStateParameterWasNotSuccessfulErrorParameter = 'Failed to remove task state \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic AddDefaultBasicEducation = 'Add Default Basic Education';\r\n\tstatic Yesterday = 'Yesterday';\r\n\tstatic AddEventUrgencyClass = 'Add Urgency Class';\r\n\tstatic FileNameConstainsIllegalCharacters = 'File name contains forbidden characters (<, >, :, \", /, \\, |, ? or *) or ends with forbidden character (., \\' \\')!';\r\n\tstatic NoImagesToShow = 'No images to show';\r\n\tstatic DoYouReallyWantToRemoveSelectedTaskPriorities = 'Do you really want to remove selected task priorities?';\r\n\tstatic EditDefaultEventType = 'Edit Default Category 1';\r\n\tstatic RemoveAttachment = 'Remove Attachment';\r\n\tstatic FirstName = 'First Name';\r\n\tstatic CalendarTaskStateNotStarted = 'Not started';\r\n\tstatic EventHandler = 'Handler';\r\n\tstatic OpenTrashBin = 'Open Trash Bin';\r\n\tstatic TaskPriorities = 'Task Priorities';\r\n\tstatic WhistleBlowInformantInstuctions = 'Informant Instuctions';\r\n\tstatic NewUserGroupMustBeSavedBeforeUsersCanBeAdded = 'New user group must be saved before users can be added!';\r\n\tstatic BrowseFiles = 'Browse Files';\r\n\tstatic EditRemainder = 'Edit Remainder';\r\n\tstatic DeletingRecordQualificationParameterWasNotSuccessfulErrorParameter = 'Failed to remove qualification \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic RecordFurtherEducationParameterIsInUseInParameterRecordUsersQualificationsAndCannotBeDeleted = 'Further education \\'{0}\\' is used as qualification in {1} user records and cannot be removed!';\r\n\tstatic Start = 'Start';\r\n\tstatic ModifyDateEndDate = 'Last Modified Until';\r\n\tstatic WhistleBlowStateReceived = 'Received';\r\n\tstatic UserParameterPermissionDeniedForUnitParameter = 'User \\'{0}\\' does not have required permissions for unit \\'{1}\\'!';\r\n\tstatic DeletingTaskParameterWasSuccessful = 'Task \\'{0}\\' removed successfully!';\r\n\tstatic LastNameMustBeDefined = 'Last name must be defined!';\r\n\tstatic RequiredValidQualificationCount = 'Required Valid Qualification Count';\r\n\tstatic Qualifications = 'Qualifications';\r\n\tstatic MaximumPasswordLengthCanParameterCharacters = 'Maximum password length can be {0} characters!';\r\n\tstatic EditLogisticVoucherPaymentSetting = 'Edit Payment Setting';\r\n\tstatic DocumentNameIsTooLong = 'Document name \\'{0}\\' is too long!';\r\n\tstatic SavingEditableDocumentParameterWasSuccessful = 'Document \\'{0}\\' saved successfully!';\r\n\tstatic ExternalsSystemParameterNotFound = 'External system \\'{0}\\' not found!';\r\n\tstatic DefaultCalendarTaskCategories = 'Default Categories';\r\n\tstatic EditPayerSettings = 'Edit Payer Settings';\r\n\tstatic EditDefaultTaskPriority = 'Edit Default Task Priority';\r\n\tstatic Menu = 'Menu';\r\n\tstatic RecordFurtherEducationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted = 'Further education \\'{0}\\' is used in {1} user records and cannot be removed!';\r\n\tstatic Descending = 'Descending';\r\n\tstatic NotSet = 'Not Set';\r\n\tstatic DeletingEventUrgencyClassParameterWasNotSuccessfulConcurrencyError = 'Failed to remove urgency class \\'{0}\\', because data in the urgency class has been modified concurrently by another user!';\r\n\tstatic AddUserGroupsParameterWasNotSuccessfulErrorParameter = 'Failed to add user groups \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic ResultGrouping = 'Result Grouping';\r\n\tstatic SelectReceiver = 'Select Receiver';\r\n\tstatic Continue = 'Continue';\r\n\tstatic FurtherEducationsMustBeDefinedBeforeAddingRecordUsers = 'Further educations must be defined before adding user records!';\r\n\tstatic MoveTaskToTrashBin = 'Move Task toTrash Bin';\r\n\tstatic DoYouReallyWantToRemoveMessageTypeParameter = 'Do you really want to remove message type \\'{0}\\'?';\r\n\tstatic RemoveEventPartner = 'Remove Incident Partner';\r\n\tstatic DeletingTaskParameterWasNotSuccessfulErrorParameter = 'Failed to remove task \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic ThisChannelHasBeenArchived = 'This chat has been archived!';\r\n\tstatic Admin = 'Administrator';\r\n\tstatic EventsExcel = 'Incidents - Excel';\r\n\tstatic SavingEventDefaultHandlerParameterWasSuccessful = 'Default incident handler \\'{0}\\' saved successfully!';\r\n\tstatic SavingInstantMessageChannelUserUserWasSuccessful = 'Participant saved successfully!';\r\n\tstatic Password = 'Password';\r\n\tstatic EventParameterNotFound = 'Incident \\'{0}\\' not found!';\r\n\tstatic AddCompanyGroupParameterWasNotSuccessfulConcurrencyError = 'Failed to company group \\'{0}\\', because the data has been modified concurrently by another user!';\r\n\tstatic RemoveDefaultTaskPriority = 'Remove Default Task Priority';\r\n\tstatic WholeHistory = 'Whole History';\r\n\tstatic PrintParameterNotFound = 'Print \\'{0}\\' not found!';\r\n\tstatic NextOfKin = 'Next of Kin';\r\n\tstatic DeletingCompanyParameterWasSuccessful = 'Company \\'{0}\\' removed successfully!';\r\n\tstatic FieldParameterConstainsIllegalCharactersForFileName = 'Value of the field \\'{0}\\' contains characters that are illegal in file names (<, >, :, \", /, \\, |, ? tai *) or it ends with illegal characters (., \\' \\')!';\r\n\tstatic FileNameMustBeDefined = 'File name must be defined!';\r\n\tstatic Recurrence = 'Recurrence';\r\n\tstatic ChangeSystemLanguageToFinnish = 'Change Language to Finnish';\r\n\tstatic DocumentApproved = 'Approved By';\r\n\tstatic Print = 'Print';\r\n\tstatic ProcessedFolderParameterErrorCountParameter = '* Folder \\'{0}\\' completed, errors: {1}';\r\n\tstatic LoggedInUserAccountIsNotActive = 'Logged in user is not active!';\r\n\tstatic CalendarTaskCategoryParameterNotFound = 'Category \\'{0}\\' was not found!';\r\n\tstatic Error = 'Error';\r\n\tstatic AccessRightFull = 'All permissions';\r\n\tstatic RecordUserLogEntryTypeSave = 'Modification';\r\n\tstatic DeletingUserGroupUsersOfCompanyParameterWasNotSuccessfulErrorParameter = 'Failed to remove user group connections related to company \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic AutoSaveVersionHistorySize = 'Autosave Version History Size';\r\n\tstatic FilterIsActive = 'Filter is Active';\r\n\tstatic WorkTimeType = 'Work Time Type';\r\n\tstatic InstantMessageChannel = 'Chat';\r\n\tstatic WhistleBlowDateAndTimeCannotBeInFuture = 'Incident time cannot be in future!';\r\n\tstatic PrintFileName = 'Print_{0:yyyy-MM-dd_HH-mm}.pdf';\r\n\tstatic LogCleaning = 'Clear Log';\r\n\tstatic OpenCalendarTasks = 'Open events';\r\n\tstatic Edit = 'Edit';\r\n\tstatic KeywordCodeIsAlreadyInUse = 'Keyword code is already in use!';\r\n\tstatic ContentFiltering = 'Content Filtering';\r\n\tstatic Groups = 'Groups';\r\n\tstatic FormRemoveFieldConfirmation = 'Do you really want to remove field from form?';\r\n\tstatic TargetsOtherCompanies = 'Visibility - Other Companies';\r\n\tstatic CalendarTaskRepetitionRepeatIntervalWeeklySuffix = 'weeks(s) on';\r\n\tstatic DeletingTaskParameterWasNotSuccessfulConcurrencyError = 'Failed to remove task \\'{0}\\', because data in the task has been modified concurrently by another user!';\r\n\tstatic CalendarTaskFilterByState = 'Filter Events by State';\r\n\tstatic PrintEvent = 'Print Incident';\r\n\tstatic MovedToTrashBin = 'Moved to Trash Bin';\r\n\tstatic UsedFileStorageQuota = 'Used File Storage Quota';\r\n\tstatic ClassParameterHasNotBeenInitialized = 'Class \\'{0}\\' has not bee initialized!';\r\n\tstatic CalendarTaskStateFinished = 'Finished';\r\n\tstatic Hours = 'hours';\r\n\tstatic OptionCodeIsAlreadyInUse = 'System option code \\'{0}\\' is already in use!';\r\n\tstatic CopyingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulErrorParameter = 'Failed to copy folder \\'{0}\\' into folder \\'{1}\\'! Error: \\'{2}\\'';\r\n\tstatic UserFilterNoUserGroup = 'No User Group';\r\n\tstatic DoYouReallyWantToRemoveEventTypeBParameter = 'Do you really want to remove category 2 \\'{0}\\'?';\r\n\tstatic Archive = 'Archive';\r\n\tstatic SavingWhistleBlowWasSuccessful = 'Whistle blow report saved successfully!';\r\n\tstatic Validity = 'Validity';\r\n\tstatic DeletingFolderParameterWasNotSuccessfulErrorParameter = 'Failed to remove folder \\'{0}\\' in filesystem! Error: \\'{1}\\'';\r\n\tstatic AddUnit = 'Add Unit';\r\n\tstatic FurtherEducations = 'Further Educations';\r\n\tstatic SaveEventHandlerConfirmation = 'Do you want to save the incident?';\r\n\tstatic RemoveParameterDocuments = 'Remove {0} Files/Documents';\r\n\tstatic ExternalIntraSystemCompanyTokenMustBeDefined = 'Company token in external eSalkku system must be defined!';\r\n\tstatic DeletingPartnersParameterWasSuccessful = 'Partners \\'{0}\\' removed successfully!';\r\n\tstatic Group = 'Group';\r\n\tstatic EventTypeBTitle = 'Incident Identification Category 2';\r\n\tstatic RecordUser = 'User Record';\r\n\tstatic DeletingTaskTypeParameterWasNotSuccessfulConcurrencyError = 'Failed to remove task type \\'{0}\\', because data in the task type has been modified concurrently by another user!';\r\n\tstatic RemoveUserAndRecordUser = 'Remove User Account and User Record';\r\n\tstatic FormWidthPrint = 'Width in Print';\r\n\tstatic UpdateUserGroupParameterExternalSystemsWasNotSuccessfulErrorParameter = 'Failed to link user group \\'{0}\\' to external systems! Error: \\'{1}\\'';\r\n\tstatic AddDefaultFurtherEducation = 'Add Default Further Education';\r\n\tstatic UserParameterCodeIsAlreadyInUse = 'User parameters code is already in use!';\r\n\tstatic PasswordHasBeenSetSuccessfully = 'Password has been set succesfully. Move to login page.';\r\n\tstatic AddUserGroupsParameterWasNotSuccessfulConcurrencyError = 'Failed to add user groups \\'{0}\\', because the data has been modified concurrently by another user!';\r\n\tstatic RemoveReport = 'Remove Report';\r\n\tstatic AddCompany = 'Add Company';\r\n\tstatic DoYouReallyWantToRemovePartnersParameter = 'Do you really want to remove partners \\'{0}\\'?';\r\n\tstatic State = 'State';\r\n\tstatic CompanyCodeMustBeDefined = 'Code of the company must be defined!';\r\n\tstatic SavingApplicationPermissionsWasNotSuccessfulErrorParameter = 'Failed to save system permissionsi! Virhe: \\'{0}\\'';\r\n\tstatic LastWeek = 'Last Week';\r\n\tstatic TheUserNameOrPasswordIsIncorrect = 'Invalid username or password!';\r\n\tstatic SelectUnit = 'Select Unit';\r\n\tstatic AddDefaultEventHandler = 'Add Default Incident Handler';\r\n\tstatic SelectedDocumentTypes = 'Show only selected document types';\r\n\tstatic FormulaDivision = 'Division';\r\n\tstatic RemoveCompanyTaskType = 'Remove Company Task State';\r\n\tstatic DeletingRecordQualificationsParameterWasNotSuccessfulConcurrencyError = 'Failed to remove qualifications \\'{0}\\', because data in qualifications has been modified concurrently by another user!';\r\n\tstatic RecordEmailNotificationShowExpired = 'Include Expired Educations';\r\n\tstatic AllSelected = 'All Selected';\r\n\tstatic RemoveDocument = 'Remove Selected Files/Documents';\r\n\tstatic SavingCompanyParameterWasNotSuccessfulConcurrencyError = 'Failed to save company \\'{0}\\', because data in the company has been modified concurrently by another user!';\r\n\tstatic UserPublicPasswordChangeMessage = 'You can specify your new password on this page. Your username was included in the email that contains link to this page.';\r\n\tstatic JobTitle = 'Job Title';\r\n\tstatic EditMessage = 'Edit Message';\r\n\tstatic SeasonalWorker = 'Seasonal Worker';\r\n\tstatic DeletingEventTypeCParameterWasSuccessful = 'Category 3 \\'{0}\\' removed successfully!';\r\n\tstatic DoYouReallyWantToRemoveThisInstantMessage = 'Do you really want to remove this instant message? Instant message will be removed from all parties.';\r\n\tstatic AllWhistleBlowHandlersHaveReadMessage = 'All whistle blow report handlers have read your message';\r\n\tstatic PermissionToIdentificateEvents = 'Permission to Create and Identify Incidents';\r\n\tstatic SavingDirectoryItemPermissionsNotSuccessfulErrorParameter = 'Failed to save folder permissions! Error: \\'{0}\\'';\r\n\tstatic Removed = 'Removed';\r\n\tstatic WhistleBlowWasNotFoundExplanation = 'Check the whistle blow report password.';\r\n\tstatic WhistleBlowStateInProgress = 'In Progress';\r\n\tstatic ActiveUserRights = 'Active Permissions';\r\n\tstatic MyFiltersAndReports = 'User\\'s Filters and Reports';\r\n\tstatic SavingReportWasSuccessful = 'Report saved successfully!';\r\n\tstatic ArchivingWhistleBlowsParameterWasSuccessful = 'Whistle blow reports \\'{0}\\' archived successfully!';\r\n\tstatic EmptyingTaskTrashBinWasSuccessfulErrorParameter = 'Failed to empty task trash bin! Error: \\'{0}\\'';\r\n\tstatic FormIntegerNumber = 'Integer';\r\n\tstatic DeletingEventTypeBParameterWasNotSuccessfulConcurrencyError = 'Failed to remove category 2 \\'{0}\\', because data in the category 2 has been modified concurrently by another user!';\r\n\tstatic FiscalNumber = 'Fiscal Number';\r\n\tstatic CompanyGroupAll = '\\'All Companies\\'';\r\n\tstatic SavingUserParameterParameterWasNotSuccessfulConcurrencyError = 'Failed to save user option \\'{0}\\', because data in the user option has been modified concurrently by another user!';\r\n\tstatic SavingEventPartnerParameterWasSuccessful = 'Incident partner \\'{0}\\' saved successfully!';\r\n\tstatic OneTimeForm = 'One-time Form';\r\n\tstatic CalendarTaskCategoryCodeIsAlreadyInUse = 'Category name is already in use!';\r\n\tstatic CompanyThatIsInUseCannotBeDeleted = 'Company that is in the state \\'In use\\', cannot be removed!';\r\n\tstatic ClosedPlural = 'Closed';\r\n\tstatic Line = 'Line';\r\n\tstatic Company = 'Company';\r\n\tstatic NotifiedPersonsShort = 'Notifications';\r\n\tstatic WhistleBlowMustBeReceivedLatestAtParameter = 'Whistle blow report must be marked as received {0} at the latest!';\r\n\tstatic MessageMustBeDefined = 'Message contents must be defined!';\r\n\tstatic InheritedUserRight = '(inherited permission)';\r\n\tstatic WhistleBlowArchivingTypeChangeStateAndRemoveInformantData = 'Change whistle blow report state to \\'Archived\\' and remove informant data';\r\n\tstatic AddPrint = 'Add Print';\r\n\tstatic FileParameterIsNotImage = 'File \\'{0}\\' is not a picture!';\r\n\tstatic SaveInstantMessageChannel = 'Save Chat';\r\n\tstatic FilterCondition = 'Filter Condition';\r\n\tstatic UpdateCompanyExternalSystemsWasSuccessful = 'Company linked to external systems successfully!';\r\n\tstatic NoEmailsToSend = 'No emails to be sent!';\r\n\tstatic Approve = 'Approve';\r\n\tstatic NoAddedEventTypeCs = 'No added categories!';\r\n\tstatic NoAddedEventTypeBs = 'No added categories!';\r\n\tstatic SavingCompanyParameterWasNotSuccessfulErrorParameter = 'Failed to save company \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic FormColumnWidthMobile = 'Column Width in Mobile App';\r\n\tstatic DeletingTaskPriorityParameterWasNotSuccessfulErrorParameter = 'Failed to remove task priority \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic Missing = 'Missing';\r\n\tstatic WhistleBlowFrontPage = 'Front Page';\r\n\tstatic WhistleBlowDateAndTime = 'Incident Time';\r\n\tstatic AddChildEventTypeB = 'Add Subcategory 2';\r\n\tstatic NewMessage = 'New Message';\r\n\tstatic SavingEventSettingsWasNotSuccessfulErrorParameter = 'Failed to save incident settings! Error: \\'{0}\\'';\r\n\tstatic Last7Days = 'Last 7 Days';\r\n\tstatic ReadingFolderParameter = 'Reading folder \\'{0}\\'...';\r\n\tstatic RemoveUserGroupExternalSystemsWasNotSuccessfulErrorParameter = 'Failed to remove user group links from external systems! Error: \\'{0}\\'';\r\n\tstatic NewEmploymentMustBeSavedBeforeAttachmentsCanBeAdded = 'New employment must be saved before attachments can be added!';\r\n\tstatic DocumentParameterDownloaded = 'Document has been downloaded.';\r\n\tstatic EditTransferredProperty = 'Edit Transferred Property';\r\n\tstatic SavingChartWasNotSuccessfulErrorParameter = 'Failed to save chart! Error: \\'{0}\\'';\r\n\tstatic Severity = 'Severity';\r\n\tstatic Reminders = 'Reminders';\r\n\tstatic SelectEventInListToSeeThePreview = 'Select incident in list to see the preview';\r\n\tstatic RemoveFromFavorites = 'Remove from Favorites';\r\n\tstatic UserPasswordMustBeDefined = 'User password must be defined!';\r\n\tstatic CalendarTaskRepetitionEndDatePrefix = 'After date';\r\n\tstatic SavingUnitsWasNotSuccessfulConcurrencyError = 'Failed to save units, because data in units has been modified concurrently by another user!';\r\n\tstatic DefaultFurtherEducationGroup = 'Default Further Education Group';\r\n\tstatic SelectEventType = 'Select Category 1';\r\n\tstatic WhistleBlowReportHasBeenSaved = 'Whistle blow report has be saved';\r\n\tstatic SelectEventHandler = 'Select Handler';\r\n\tstatic CompanyTaskTypeTemplates = 'Company form templates';\r\n\tstatic EmailHasBeenAlreadySentForThisMessage = 'Email has been already sent for this message!';\r\n\tstatic WhistleBlowUrl = 'Whistle Blow Channel Web Address';\r\n\tstatic CopyingFolderParameterWasNotSuccessfulErrorParameter = 'Failed to copy folder \\'{0}\\' into folder \\'{1}\\' in filesystem! Error: \\'{2}\\'';\r\n\tstatic ValueAddedTaxPercent = 'Value Added Tax %';\r\n\tstatic Success = 'Success!';\r\n\tstatic SaveEvent = 'Save Incident';\r\n\tstatic UserGroupNameIsAlreadyInUse = 'User group name is already in use!';\r\n\tstatic Time = 'Time';\r\n\tstatic SelectableWhenCreatingAnEvent = 'Selectable When Creating an Event';\r\n\tstatic LogIn = 'Log In';\r\n\tstatic Form = 'Form';\r\n\tstatic UpdateUserParameterExternalSystemsWasNotSuccessfulErrorParameter = 'Failed to link user \\'{0}\\' to external systems! Error: \\'{1}\\'';\r\n\tstatic RemoveLogisticVoucherCompanyPaymentSetting = 'Remove Payment Setting';\r\n\tstatic EventApprovalWasNotSuccessfulErrorParameter = 'Failed to approve incident! Error: \\'{0}\\'';\r\n\tstatic PageFooterText = 'System Page Footer Text';\r\n\tstatic ExternalSystemCode = 'Code in System';\r\n\tstatic SavingMessageTypeParameterWasNotSuccessfulErrorParameter = 'Failed to save message type \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic CurrentWorkPlaceNotAdded = 'Current workplace not added!';\r\n\tstatic BasicEducations = 'Basic Educations';\r\n\tstatic DeletingWhistleBlowChannelAdminsParameterWasNotSuccessfulConcurrencyError = 'Failed to remove administrators \\'{0}\\', because the data has been modified concurrently by another user!';\r\n\tstatic SuccessAudit = 'SuccessAudit';\r\n\tstatic FormTextInputs = 'Text Inputs';\r\n\tstatic RemovePayer = 'Remove Payer';\r\n\tstatic NoName = 'Anonymous';\r\n\tstatic DeletingRecordUserEmploymentsParameterWasNotSuccessfulConcurrencyError = 'Failed to remove employments \\'{0}\\', because data in employments has been modified concurrently by another user!';\r\n\tstatic ImageChangeInterval = 'Image Change Interval';\r\n\tstatic EditableDocumentPublishUnapprovedConfirmation = 'Do you want to publish unapproved document to file?';\r\n\tstatic UnitProperties = 'Unit Properties';\r\n\tstatic AddingAddRecordUserFurtherEducationsWasSuccessful = 'Further educations added successfully!';\r\n\tstatic SavingMessageParameterWasSuccessful = 'Message \\'{0}\\' saved successfully!';\r\n\tstatic AddCompanyParameterWasSuccessful = 'Company \\'{0}\\' added successfully!';\r\n\tstatic RequestPasswordChangeMessage3 = 'button. Email that contains information how to reset your password will be sent to email address that is connected to your user account.';\r\n\tstatic InvitationParameterNotFound = 'Invitation \\'{0}\\' not found!';\r\n\tstatic FormExpressionFormat = 'Expression Result Formatting';\r\n\tstatic DeletingEventTypeParameterWasNotSuccessfulConcurrencyError = 'Failed to remove category 1 \\'{0}\\', because data in the category 1 has been modified concurrently by another user!';\r\n\tstatic FormulaHypot = 'Hypotenuse';\r\n\tstatic EventTypeCParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted = 'Category 3 \\'{0}\\' subcategories are used in {1} incidents and category 3 cannot be removed!';\r\n\tstatic DoYouReallyWantToRemoveUserParameter = 'Do you really want to remove user \\'{0}\\'?';\r\n\tstatic OtherInformation = 'Other Information';\r\n\tstatic FormAddDropdownOption = 'Add Option';\r\n\tstatic InstantMessageChannelUser = 'Participant';\r\n\tstatic File = 'File';\r\n\tstatic RemoveRowConfirmation = 'Do you really want to remove row {0}?';\r\n\tstatic CkickToChangeTheIcon = 'Click to change the icon';\r\n\tstatic CurrentCalendarWeek = 'Current Calendar Week';\r\n\tstatic ExternalSystemCompanyCodeMustBeDefined = 'Company code in external system must be defined!';\r\n\tstatic SelectEventTypeB = 'Select Category 2';\r\n\tstatic AddImageFromClipboard = 'Add image from clipboard';\r\n\tstatic ErrorUserGroupChangeWouldLeadToInvalidDefaultEventHandlers = 'User group changes will lead to situation where some default incident handlers or notified persons do not have permissions to handle incidents of units. Changes that have affect for default incident handlers or notified persons can be made only in \\'Incidents Properties\\' dialog!';\r\n\tstatic CopyGroupPermissions = 'Copy Group Permissions to Memory';\r\n\tstatic SavingEventTypesWasSuccessful = 'Category 1 saved successfully!';\r\n\tstatic EditTaskState = 'Edit Task State';\r\n\tstatic Value = 'Value';\r\n\tstatic Images = 'Images';\r\n\tstatic FieldParameterContainsInvalidCompanyCodeCharacters = 'Value of the field \\'{0}\\' contains characters that are illegal in company code (., &, :, \\' \\', ö, ä, à, Ã¥, Ö, Ä, À tai Ã…)!';\r\n\tstatic ReadingFileParameterWasNotSuccessfulFileNotFound = 'Failed to read file \\'{0}\\' in filesystem! File not found!';\r\n\tstatic MaximumSizeOfInstantMessageAttachmentIsParameterMB = 'Maximum size of instant message attachment is {0} MB!';\r\n\tstatic UserRecordStatisticsActiveCards = 'Active Cards';\r\n\tstatic UserFirstNameMustBeDefined = 'User first name must be defined!';\r\n\tstatic PaymentVoucherCounter = 'Payment Voucher Counter';\r\n\tstatic Visibility = 'Visibility';\r\n\tstatic EmployeeTypeIsNotSupported = 'Employee type \\'{0}\\' is not supported!';\r\n\tstatic DoYouReallyWantToRemoveKeywordParameter = 'Do you really want to remove keyword \\'{0}\\'?';\r\n\tstatic RequestPasswordChangeLinkHasBeenSent = 'Password change link has been sent to you by email! If message cannot be found from your inbox, please check also junk mail folder.';\r\n\tstatic AddInstantMessageUserParameterWasNotSuccessfulErrorParameter = 'Failed to add participant \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic RemoveDefaultEventType = 'Remove Default Category 1';\r\n\tstatic Valid = 'Valid';\r\n\tstatic UserCodeIsAlreadyInUse = 'Username is already in use!';\r\n\tstatic DeletingCompanyGroupParameterWasNotSuccessfulConcurrencyError = 'Failed to remove company group \\'{0}\\', because the data has been modified concurrently by another user!';\r\n\tstatic DeletingEventUrgencyClassParameterWasSuccessful = 'Urgency class \\'{0}\\' removed successfully!';\r\n\tstatic Files = 'Files';\r\n\tstatic Drafts = 'Drafts';\r\n\tstatic MessageVisibilityPeriodNotActive = 'Message visibility period not active!';\r\n\tstatic DeletingRecordQualificationsParameterWasSuccessful = 'Qualifications \\'{0}\\' removed successfully!';\r\n\tstatic Observer = 'Observer';\r\n\tstatic EventTypeParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted = 'Category 1 \\'{0}\\' subcategories are used in {1} incidents and category 1 cannot be removed!';\r\n\tstatic Usage = 'Usage';\r\n\tstatic RowForm = 'Row Form';\r\n\tstatic FormComponents = 'Components';\r\n\tstatic CompanyParameterNotFound = 'Company \\'{0}\\' was not found!';\r\n\tstatic DoYouReallyWantToReplaceDocumentTemplateParameter = 'Do you really want to replace document template \\'{0}\\'?';\r\n\tstatic AddUserToUserGroup = 'Add User Account into User Group';\r\n\tstatic Aprint = 'Print';\r\n\tstatic InstantMessageChannelOnlyAdministratorCannotExitInstantMessageChannel = 'Only chat administrator cannot exit the chat!';\r\n\tstatic ReminderDaysBefore = 'days before';\r\n\tstatic TitleIsAlreadyInUse = 'Title is already in use!';\r\n\tstatic DoYouWantToAddThisApplicationToHomeScreen = 'Do you want to add this application to home screen?';\r\n\tstatic DocumentCreated = 'Created By';\r\n\tstatic TasksExcelByTaskRows = 'Tasks - Excel - Filtered by Task Rows';\r\n\tstatic AddingAttachmentsParameterWasNotSuccessfulErrorParameter = 'Failed to add attachments \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic FrontPage = 'Dashboard';\r\n\tstatic Cancel = 'Cancel';\r\n\tstatic FileFilter = 'File Filter';\r\n\tstatic DoYouReallyWantToRemovePrintParameter = 'Do you really want to remove print \\'{0}\\'?';\r\n\tstatic AddingAddRecordUserQualificationsWasSuccessful = 'Qualifications added successfully!';\r\n\tstatic MessagePreservationTime = 'Message Preservation Time';\r\n\tstatic ClearSubUnitDefaultHandlers = 'Clear Subunit Default Handlers';\r\n\tstatic NotificationsSentSuccessfully = 'Notifications sent successfully!';\r\n\tstatic InstantMessageSettings = 'Instant Message Settings (HoxUp)';\r\n\tstatic SavingReadReceiptWasNotSuccessfulErrorParameter = 'Failed to save read receipt! Error: \\'{0}\\'';\r\n\tstatic TaskDataRowParameterNotFound = 'Task row \\'{0}\\' not found!';\r\n\tstatic Path = 'Path';\r\n\tstatic Competency = 'Competency';\r\n\tstatic MovingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulErrorParameter = 'Failed to move folder \\'{0}\\' into folder \\'{1}\\'! Error: \\'{2}\\'';\r\n\tstatic CalendarTaskRemoveSeries = 'Remove Series';\r\n\tstatic DeletingRecordBasicEducationsParameterWasNotSuccessfulErrorParameter = 'Failed to remove basic educations \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic AddWhistleBlowChannelAdminParameterWasNotSuccessfulErrorParameter = 'Failed to add administrator \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic DownloadPdf = 'Download Pdf';\r\n\tstatic Import = 'Import';\r\n\tstatic WhistleBlowNonAnonymousReport = 'Report with discretion';\r\n\tstatic EmploymentType = 'Employment Type';\r\n\tstatic FileSynchronizationToDatabaseFinishedInParameterSeconds = 'Filesystem synchronization with database completed (duration: {0:N0}s, errors: {1}, folders: {2}, folders without errors: {3})';\r\n\tstatic RemoveEventType = 'Remove Category 1';\r\n\tstatic DeletingRecordUserTransferredPropertyParameterWasSuccessful = 'Transferred property \\'{0}\\' removed successfully!';\r\n\tstatic AllDay = 'All Day';\r\n\tstatic Resources = 'Resources';\r\n\tstatic AddTransferredProperty = 'Add Transferred Property';\r\n\tstatic DocumentTemplates = 'Document Templates';\r\n\tstatic UserSessionHasBeenExpired = 'User session has been expired!';\r\n\tstatic SavingRecordFurtherEducationGroupParameterWasSuccessful = 'Further education group \\'{0}\\' saved successfully!';\r\n\tstatic AddDefaultTaskState = 'Add Default Task State';\r\n\tstatic JobTypeMessageNotification = 'Message Notification';\r\n\tstatic SavingKeywordParameterWasSuccessful = 'Keyword \\'{0}\\' saved successfully!';\r\n\tstatic AccessRightReadCalendarTask = 'Can create own events';\r\n\tstatic DoYouReallyWantToRemoveFileFilterParameter = 'Do you really want to remove file filter \\'{0}\\'?';\r\n\tstatic AddEventMessageConfirmation = 'Do you want to add the comment? The comment cannot be edited after it has been added.';\r\n\tstatic LockedDocumentsParameterCannotBeMoved = 'Locked documents \\'{0}\\' cannot be moved!';\r\n\tstatic RemoveTaskState = 'Remove Task State';\r\n\tstatic Conversions = 'Conversions';\r\n\tstatic Created = 'Created By';\r\n\tstatic CalendarTaskRepetitionEnd = 'Finish';\r\n\tstatic DeletingRecordFamiliarizationParameterWasNotSuccessfulErrorParameter = 'Failed to remove familiarization \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic UserHasUsedMobile = 'User account has has been active in mobile application in last 30 days.';\r\n\tstatic RemoveBasicEducation = 'Remove Basic Education';\r\n\tstatic VersionInformation = 'Version Information';\r\n\tstatic Days = 'days';\r\n\tstatic CkickToChangeThePicture = 'Click to change the picture';\r\n\tstatic PostalCode = 'Postal Code';\r\n\tstatic RecordUserLogEntryTypePrint = 'Printing';\r\n\tstatic NameMustBeDefined = 'Name must be defined!';\r\n\tstatic ExternalSystemUserTokenParameterIsAlreadyInUse = 'User token \\'{0}\\' is already in use!';\r\n\tstatic WhistleBlowResolutionCanceled = 'Canceled';\r\n\tstatic Theme = 'Theme';\r\n\tstatic SaveFilterAs = 'Save Filter As';\r\n\tstatic AttachmentIsEmpty = 'Attachment \\'{0}\\' is empty!';\r\n\tstatic SaveTask = 'Save Task';\r\n\tstatic FormModifyUser = 'Modify User';\r\n\tstatic FormHeight = 'Height';\r\n\tstatic RemovePermission = 'Remove Permission';\r\n\tstatic DeletingInstantMessageChannelWasNotSuccessfulErrorParameter = 'Failed to remove chat! Error: \\'{0}\\'';\r\n\tstatic UserGroupsMustBeDefined = 'User groups must be defined!';\r\n\tstatic PrintGenerationFailed = 'Failed to create print!';\r\n\tstatic LogDocumentPreview = 'Log Document Preview';\r\n\tstatic DeletingOneTimePasswordWasSuccessful = 'One time password removed successfully!';\r\n\tstatic FormulaTrunc = 'Integer part';\r\n\tstatic SendPasswordChangeEmailConfirmation = 'Do you really want to send password change link by email?';\r\n\tstatic DeletingTaskStateParameterWasNotSuccessfulConcurrencyError = 'Failed to remove task state \\'{0}\\', because data in the task state has been modified concurrently by another user!';\r\n\tstatic Years = 'Years';\r\n\tstatic SavingEventTypeCsWasNotSuccessfulErrorParameter = 'Failed to save category 3! Error: \\'{0}\\'';\r\n\tstatic DeletingDefaultEventHandlerParameterWasNotSuccessfulErrorParameter = 'Failed to remove default incident handler \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic SavingMessageParameterWasNotSuccessfulConcurrencyError = 'Failed to save message \\'{0}\\', because data in the message has been modified concurrently by another user!';\r\n\tstatic RecordUserTrangerredPropertyParameterNotFound = 'Transferred property \\'{0}\\' not found!';\r\n\tstatic PreviewWeb = 'Preview (Web)';\r\n\tstatic RemoveComment = 'Remove Comment';\r\n\tstatic TimeSpanYear = 'Year';\r\n\tstatic OpenCalendarTask = 'Open Event';\r\n\tstatic FormulaExponent = 'Exponent';\r\n\tstatic Voluntary = 'Voluntary';\r\n\tstatic SavingRecordFurtherEducationParameterWasNotSuccessfulErrorParameter = 'Failed to save further education \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic WhistleBlowChannelParameterNotFound = 'Whistle blow channel \\'{0}\\' not found!';\r\n\tstatic SelectMonth = 'Select Month';\r\n\tstatic CalendarTaskStateStarted = 'Started';\r\n\tstatic DeletingRecordBasicEducationsParameterWasNotSuccessfulConcurrencyError = 'Failed to remove basic educations \\'{0}\\', because data in basic educations has been modified concurrently by another user!';\r\n\tstatic TaskStateParameterIsInUseInParameterTasksAndCannotBeDeleted = 'Task state \\'{0}\\' is used in {1} tasks and cannot be removed!';\r\n\tstatic WhistleBlowAnonymousReport = 'Report anonymously';\r\n\tstatic DeletingEventTypeCParameterWasNotSuccessfulErrorParameter = 'Failed to remove category 3 \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic Operators = 'Operators';\r\n\tstatic CreatingFileParameterWasNotSuccessfulErrorParameter = 'Failed to create file \\'{0}\\' in filesystem! Error: \\'{1}\\'';\r\n\tstatic SourceFolderAndTargetFolderAreSame = 'Source folder and destination folder are equal!';\r\n\tstatic DeletingRecordFurtherEducationParameterWasSuccessful = 'Further education \\'{0}\\' removed successfully!';\r\n\tstatic SavingDocumentTemplateParameterWasNotSuccessfulErrorParameter = 'Failed to save document template \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic AddDocumentTemplate = 'Add Document Template';\r\n\tstatic AddTask = 'Add Task';\r\n\tstatic PublicationOfEditableDocumentCannotBeRemoved = 'Publication of the document cannot be removed!';\r\n\tstatic AddQualifications = 'Add Qualifications';\r\n\tstatic SavingUnitPermissionsWasNotSuccessfulConcurrencyError = 'Failed to save unit permissions, because permissions have been modified concurrently by another user!';\r\n\tstatic RemoveDefaultHandler = 'Remove Default Handler';\r\n\tstatic ChartGenerationAborted = 'Chart creation canceled!';\r\n\tstatic SystemAdminMessage = 'Message to all system users';\r\n\tstatic AddTarget = 'Add Target';\r\n\tstatic TargetDoesNotHaveFoldersWithWritePermissions = 'Target does not have folders with write permissions!';\r\n\tstatic UpdateCompanyExternalSystemsWasNotSuccessfulErrorParameter = 'Failed to link company to external systems! Error: \\'{0}\\'';\r\n\tstatic DeletingMessageTypeParameterWasSuccessful = 'Message type \\'{0}\\' removed successfully!';\r\n\tstatic LockedTaskDataRowCannotBeSaved = 'The task row has been locked to another user and it cannot be saved!';\r\n\tstatic RemoveLogisticVoucherPaymentSetting = 'Remove Payment Setting';\r\n\tstatic WhistleBlowSourceEmail = 'Email';\r\n\tstatic DeletingKeywordsParameterWasSuccessful = 'Keywords \\'{0}\\' removed successfully!';\r\n\tstatic SavingRecordFamiliarizationParameterWasNotSuccessfulConcurrencyError = 'Failed to save familiarization \\'{0}\\', because data in the familiarization has been modified concurrently by another user!';\r\n\tstatic SavingPrintWasNotSuccessfulErrorParameter = 'Failed to save print! Error: \\'{1}\\'';\r\n\tstatic DeletingCalendarTaskParameterWasSuccessful = 'Event \\'{0}\\' removed successfully!';\r\n\tstatic SavingRecordBasicEducationParameterWasNotSuccessfulConcurrencyError = 'Failed to save basic education \\'{0}\\', because data in the basic education has been modified concurrently by another user!';\r\n\tstatic DeletingMessageTypeParameterWasNotSuccessfulErrorParameter = 'Failed to remove message type \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic EventClosed = 'Incident Closed';\r\n\tstatic DeletingAttachmentsParameterWasSuccessful = 'Attachments \\'{0}\\' removed successfully!';\r\n\tstatic SendReadReceipt = 'Send Read Receipt';\r\n\tstatic SaveTaskConfirmation = 'Do you want to save the task?';\r\n\tstatic TaskStates = 'Task States';\r\n\tstatic ActionIsNotAuthorized = 'Action is not authorized!';\r\n\tstatic SavingInstantMessageChannelUserWasNotSuccessfulErrorParameter = 'Failed to save participant! Error: \\'{0}\\'';\r\n\tstatic Communication = 'Communication';\r\n\tstatic WhistleBlowSourceSystem = 'System';\r\n\tstatic NotValid = 'Not Valid';\r\n\tstatic DocumentModuleProperties = 'Documents Properties';\r\n\tstatic LoginTitle = 'Log in to PKY-LAATU Intra';\r\n\tstatic Unit = 'Unit';\r\n\tstatic FormEmptyArea = 'Empty Area';\r\n\tstatic DoYouReallyWantToUnlockMessage = 'Do you really want to unlock message \\'{0}\\'?';\r\n\tstatic PublishEvent = 'Publish Incident';\r\n\tstatic AddKeyword = 'Add Keyword';\r\n\tstatic RemoveEventUrgencyClass = 'Remove Urgency Class';\r\n\tstatic Competencies = 'Competencies';\r\n\tstatic DeletingInstantMessageChannelWasNotSuccessfulConcurrencyError = 'Failed to remove participant, because the data has been modified concurrently by another user!';\r\n\tstatic Saved = 'Saved By';\r\n\tstatic UserCodeUpdateWasNotSuccessfulErrorParameter = 'Failed to update user code! Error: \\'{0}\\'';\r\n\tstatic AddCompanyGroupsParameterWasSuccessful = 'Company groups \\'{0}\\' added successfully!';\r\n\tstatic OK = 'Ok';\r\n\tstatic ReferenceNumberPrefix = 'Reference Number Prefix';\r\n\tstatic DocumentProperties = 'File/Document Properties';\r\n\tstatic TaskCreated = 'Created By';\r\n\tstatic Close = 'Close';\r\n\tstatic Messages = 'Messages';\r\n\tstatic FieldsToBePrinted = 'Fields to Be Printed';\r\n\tstatic WhistleBlowSourceOther = 'Other';\r\n\tstatic AddRecordUser = 'Add User Record';\r\n\tstatic EditPermission = 'Edit Permission';\r\n\tstatic UserGroupNameMustBeDefined = 'User group name must be defined!';\r\n\tstatic WhistleBlowStatisticsRecordCount = 'Active Reports';\r\n\tstatic WelcomeToUseEsalkkuSystem = 'Welcome to use eSalkku! The first step is to specify your password. Your username was included in the invitation email.';\r\n\tstatic DoYouReallyWantToRemoveSelectedMessageTypes = 'Do you really want to remove selected message types?';\r\n\tstatic TaskPriorityCodeIsAlreadyInUse = 'Task priority name is already in use!';\r\n\tstatic IdentificationDetails = 'Identification Details';\r\n\tstatic CurrentTopicsAbbr = 'Topics';\r\n\tstatic SavingRecordEmploymentParameterWasNotSuccessfulErrorParameter = 'Failed to save employment \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic LockedDocumentParameterCannotBeDeleted = 'Locked document \\'{0}\\' cannot be removed!';\r\n\tstatic Empty = 'Empty';\r\n\tstatic UserRecordStatisticsSavedCards = 'Saved Cards';\r\n\tstatic DependencyResolvingFailedForInterfaceParameter = 'Implementation was not found for interface \\'{0}\\'!';\r\n\tstatic AddingWhistleBlowHandlersWasSuccessful = 'Handlers added successfully!';\r\n\tstatic ProcessingTime = 'Processing Time';\r\n\tstatic SavingMessageParameterWasNotSuccessfulErrorParameter = 'Failed to save message \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic CompanyGroups = 'Company Groups';\r\n\tstatic EmptyForm = 'Empty Form';\r\n\tstatic SpecifedTimeFrame = 'Specifed Time Frame';\r\n\tstatic AddDefaultTaskType = 'Add Default Task Type';\r\n\tstatic AddCalendarTask = 'Add Event';\r\n\tstatic AddPartnersByClickingPlusButton = 'Add partners by clicking the plus button.';\r\n\tstatic DeletingEventTypeBParameterWasNotSuccessfulErrorParameter = 'Failed to remove category 2 \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic RemovingCalendarTaskHandlersWasSuccessful = 'Handlers removed successfully!';\r\n\tstatic SavingRecordUserQualificationParameterWasNotSuccessfulErrorParameter = 'Failed to save qualification \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic StartDate = 'Visible From';\r\n\tstatic NewWhistleBlowMustBeSavedBeforeHandlersCanBeAdded = 'New report must be saved before rows can be added!';\r\n\tstatic EditEventTypeB = 'Edit Category 2';\r\n\tstatic Closed = 'Closed';\r\n\tstatic CustomerNumber = 'Customer Number';\r\n\tstatic Reports = 'Reports';\r\n\tstatic DaysAgo60 = '60 Days Ago';\r\n\tstatic UnkownErrorHasBeenOccured = 'Uknown error has been occured in the system!';\r\n\tstatic InstantMessageUserInvitationAcceptTypeCanInvite = 'I can be invited to join chat';\r\n\tstatic Schema = 'Schema';\r\n\tstatic UserGroupAll = '\\'All Users\\'';\r\n\tstatic Admins = 'Administrators';\r\n\tstatic CompanyGroupModuleProperties = 'Company Groups Properties';\r\n\tstatic RecordUserLogEntryTypeCreate = 'Create';\r\n\tstatic SendEmailInvitation = 'Send Invitation to System by Email ';\r\n\tstatic SendReadReceiptInfo = 'Send read receipt by tapping ✓ button.';\r\n\tstatic SavingRecordUserTransferredPropertyParameterWasNotSuccessfulErrorParameter = 'Failed to save transferred property \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic EmailAddressMustBeValid = 'Email address is not valid email address!';\r\n\tstatic AddEventTypeCsToEvent = 'Add category 3 by tapping the plus button.';\r\n\tstatic DoYouReallyWantToRemoveSelectedCalendarTaskHandlers = 'Do you really want to remove selected attendees?';\r\n\tstatic Uploaded = 'Uploaded';\r\n\tstatic UnreadInstantMessages = 'Unread messages';\r\n\tstatic SendingEmail = 'Sending email...';\r\n\tstatic TaskTypeNameMustBeDefined = 'Form name must be defined!';\r\n\tstatic ExpiringIn180Days = 'Include educations expiring in 180 days';\r\n\tstatic CompanyGroupCodeMustBeDefined = 'Code of the company group must be defined!';\r\n\tstatic Modified = 'Last Modified By';\r\n\tstatic EmailNotificationInUse = 'I Want to Receive Email Notifications';\r\n\tstatic FormColumnWidthPrint = 'Column Width in Print';\r\n\tstatic Unlimited = 'Unlimited';\r\n\tstatic FolderParameterAlreadyExists = 'Folder \\'{0}\\' already exists!';\r\n\tstatic EditRecordUser = 'Edit User Record';\r\n\tstatic EventReport = 'Incident Report';\r\n\tstatic DocumentContentsSearch = 'Search Document Contents';\r\n\tstatic ZipFileParameterNotFound = 'Zip file \\'{0}\\' not found!';\r\n\tstatic MyLastModifications = 'User\\'s Latest Modifications';\r\n\tstatic ExternalSystemUserCodeClaimNotFound = 'User claim \\'externalSystemUserCode\\' not found!';\r\n\tstatic AllUserGroups = 'All User Groups';\r\n\tstatic DocumentApproval = 'Document Approval';\r\n\tstatic IgnoreFolderPatterns = 'Ignore Folders Pattern';\r\n\tstatic DeletingCompanyGroupsParameterWasNotSuccessfulConcurrencyError = 'Failed to remove company groups \\'{0}\\', because the data has been modified concurrently by another user!';\r\n\tstatic LoginAddress = 'Log In Address';\r\n\tstatic AddCompanyGroupsParameterWasNotSuccessfulErrorParameter = 'Failed to add company groups \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic StateOpen = 'Open';\r\n\tstatic SavingUserParameterWasNotSuccessfulConcurrencyError = 'Failed to save user \\'{0}\\', because user data has been modified concurrently by another user!';\r\n\tstatic InvalidValueParameter = 'Invalid value \\'{0}\\'!';\r\n\tstatic SavingInstantMessageChannelParameterWasSuccessful = 'Chat \\'{0}\\' saved successfully!';\r\n\tstatic FormSizeMedium = 'Medium';\r\n\tstatic WhistleBlowStatisticsUnreadMessages = 'Unread Messages';\r\n\tstatic MessageTypeCodeMustBeDefined = 'Message type code must be defined!';\r\n\tstatic DocumentParameterOverwriteConfirmation = 'File \\'{0}\\' already exists in folder. Do you want to overwrite this file?';\r\n\tstatic DeletingRecordFamiliarizationsParameterWasNotSuccessfulConcurrencyError = 'Failed to remove familiarizations \\'{0}\\', because data in familiarizations has been modified concurrently by another user!';\r\n\tstatic CheckingExistanceOfFolderParameterWasNotSuccessfulErrorParameter = 'Failed to check existance of folder \\'{0}\\' in filesystem! Error: \\'{1}\\'';\r\n\tstatic DeletingAttachmentParameterWasSuccessful = 'Attachment \\'{0}\\' removed successfully!';\r\n\tstatic UserIdClaimNotFound = 'User claim \\'id\\' not found!';\r\n\tstatic SaveUserFurtherEducation = 'Save Further Education';\r\n\tstatic ProjectNumber = 'Project Number';\r\n\tstatic DefaultDeductionWithoutTax = 'Default Deduction (VAT 0%)';\r\n\tstatic FormTextInput = 'Text Input';\r\n\tstatic EditDefaultHandlers = 'Edit Default Handlers';\r\n\tstatic Last120Days = 'Last 120 Days';\r\n\tstatic DeletingWhistleBlowCategoriesParameterWasNotSuccessfulErrorParameter = 'Failed to remove whistle blow categories \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic FormDropdownOptionsDialog = 'Dropdown Options';\r\n\tstatic MarkMessageAsRead = 'Mark message as read';\r\n\tstatic FileStorageQuotaGB = 'File Storage Quota (GB)';\r\n\tstatic EmptyingTaskTrashBinWasNotSuccessfulConcurrencyError = 'Failed to empty task trash bin, because data in the tasks has been modified concurrently by another user!';\r\n\tstatic SendMessage = 'Send Message';\r\n\tstatic RestoringTaskParameterFromTrashBinWasNotSuccessfulConcurrencyError = 'Failed to restore task \\'{0}\\' from trash bin, because data in the task has been modified concurrently by another user!';\r\n\tstatic SavingChartWasSuccessful = 'Chart saved successfully!';\r\n\tstatic CalendarTaskCategories = 'Categories';\r\n\tstatic PasswordHasBeenCopiedToClipboard = 'Password has been copied to clipboard!';\r\n\tstatic DeletingInstantMessageChannelWasSuccessful = 'Chat removed successfully!';\r\n\tstatic TimeMustBeDefined = 'Time must be defined!';\r\n\tstatic DoYouReallyWantToRemoveFileParameter = 'Do you really want to remove file \\'{0}\\'?';\r\n\tstatic UserNotAllowedToViewNotifier = 'Limited report handling: User not allowed to view notifier.';\r\n\tstatic SaveComment = 'Save Comment';\r\n\tstatic AdditionalSettings = 'Additional Settings';\r\n\tstatic ImageProperties = 'Image Properties';\r\n\tstatic UploadDocument = 'Upload File';\r\n\tstatic Contents = 'Contents';\r\n\tstatic PermissionsOtherCompanies = 'Permissions (other companies)';\r\n\tstatic FormTextPreWrap = 'Preserve Text Line Breaks';\r\n\tstatic SavingReportWasNotSuccessfulConcurrencyError = 'Failed to save report, because data in the report has been modified concurrently by another user!';\r\n\tstatic Employee = 'Employee';\r\n\tstatic LanguageNonLocalEnglish = 'English';\r\n\tstatic RecordUserModuleProperties = 'User Records Properties';\r\n\tstatic EditEventType = 'Edit Category 1';\r\n\tstatic UserGroups = 'User Groups';\r\n\tstatic WhistleBlowStatisticsResolvedRecords = 'Resolved Reports';\r\n\tstatic DeletingWhistleBlowParameterWasSuccessful = 'Whistle blow report \\'{0}\\' removed successfully!';\r\n\tstatic SelectImageFile = 'Select image file!';\r\n\tstatic DeletingFileFilterParameterWasNotSuccessfulUsedInParameterFolders = 'Failed to remove file filter \\'{0}\\', because the file filter is used in {1} folder!';\r\n\tstatic TogglePreviewPanel = 'Show/Hide Preview';\r\n\tstatic MovingTaskParameterToTrashBinWasNotSuccessfulErrorParameter = 'Failed to move task \\'{0}\\' to trash bin! Error: \\'{1}\\'';\r\n\tstatic FolderProperties = 'Folder Properties';\r\n\tstatic DeletingDirectoryItemFolderParameterWasNotSuccessfulConcurrencyError = 'Failed to remove folder \\'{0}\\', because data in the folder has been modified concurrently by another user!';\r\n\tstatic NewCompanyInformation = 'New Company';\r\n\tstatic ShowOnMap = 'Show on Map';\r\n\tstatic DeletingTaskPrioritiesParameterWasSuccessful = 'Task priorities \\'{0}\\' removed successfully!';\r\n\tstatic TaskMustBeSavedBeforeNewDataRowsCanBeAdded = 'Task must be saved before rows can be added!';\r\n\tstatic DeletingCompanyParameterWasNotSuccessfulErrorParameter = 'Failed to remove company \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic CommentMustNotBeEmpty = 'Comment must not be empty!';\r\n\tstatic EventsToApprove = 'Events to approve';\r\n\tstatic DeletingTaskTypesParameterWasNotSuccessfulErrorParameter = 'Failed to remove task types \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic FileFilterCodeIsAlreadyInUse = 'File filter code is already in use!';\r\n\tstatic RemoveFurtherEducation = 'Remove Further Education';\r\n\tstatic MessageStartDateMustBeDefined = 'Message visible until date must be defined!';\r\n\tstatic DefaultEventHandlersAndNotifiedPersons = 'Default Incident Handlers and Notfications';\r\n\tstatic DeletingPartnersParameterWasNotSuccessfulConcurrencyError = 'Failed to remove partners \\'{0}\\', because the data has been modified concurrently by another user!';\r\n\tstatic EventTypeMustBeDefined = 'Category 1 must be defined!';\r\n\tstatic WhistleBlowCategory = 'Whistle Blow Category';\r\n\tstatic FileParameterAlreadyExistsInFileSystem = 'File \\'{0}\\' already exists in the filesystem!';\r\n\tstatic DeletingTaskStatesParameterWasSuccessful = 'Task states \\'{0}\\' removed successfully!';\r\n\tstatic ModifyExistingDocumentTemplate = 'Modify existing document template';\r\n\tstatic CalendarTaskSeries = 'Series';\r\n\tstatic TitleMustBeDefined = 'Title must be defined!';\r\n\tstatic AddUserParameterWasNotSuccessfulConcurrencyError = 'Failed to add user account \\'{0}\\', because the data has been modified concurrently by another user!';\r\n\tstatic WhistleBlowChannelWasNotFoundExplanation = 'Check the internet address that was entered in the address bar of the browser.';\r\n\tstatic FormInitializeFromSavedRowDialog = 'Initialize Default Value from Saved Row';\r\n\tstatic RemoveUserAndKeepRecordUser = 'Remove User Account and Keep User Record';\r\n\tstatic Keywords = 'Keywords';\r\n\tstatic SelectRecordUsers = 'Select User Records';\r\n\tstatic AddCompanyParameterWasNotSuccessfulErrorParameter = 'Failed to add company \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic UserRecordStatisticsExpiredQualifications = 'Expired Qualifications';\r\n\tstatic DaysAgo120 = '120 Days Ago';\r\n\tstatic WhistleBlowResolutionOther = 'Other';\r\n\tstatic AddCompanyGroupParameterWasSuccessful = 'Company group \\'{0}\\' added successfully!';\r\n\tstatic ZipFileCreationFailed = 'Failed to create zip file! Error: \\'{0}\\'';\r\n\tstatic EmailsSentSuccessfully = 'Emails sent successfully!';\r\n\tstatic AccessRightReadTasks = 'Handling tasks';\r\n\tstatic DeletingCompaniesParameterWasNotSuccessfulConcurrencyError = 'Failed to remove companies \\'{0}\\', because data has been modified concurrently by another user!';\r\n\tstatic AddMessageType = 'Add Message Type';\r\n\tstatic AddBasicEducation = 'Add Basic Education';\r\n\tstatic SaveAndSend = 'Save and Send';\r\n\tstatic RemoveTaskPermanently = 'Remove Task Permanenty';\r\n\tstatic NotAssigned = 'Not Assigned';\r\n\tstatic EditUnit = 'Edit Unit';\r\n\tstatic FormColumnWidth = 'Column Width';\r\n\tstatic PasswordMustContainLowercaseChar = 'Password must contain lowercase alphabet!';\r\n\tstatic ServiceFeePercent = 'Service Fee (%)';\r\n\tstatic ImportingUsersParameterWasNotSuccessfulErrorParameter = 'Failed to import user accounts \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic ApprovedEvent = 'Approved The Incident';\r\n\tstatic RecordFurtherEducationParameterNotFound = 'Further education \\'{0}\\' not found!';\r\n\tstatic PasswordChangeRequestHasBeenExpired = 'Password change request \\'{0}\\' has been expired!';\r\n\tstatic RecordUserFamiliarizationParameterNotFound = 'User record familiarization record \\'{0}\\' not found!';\r\n\tstatic MessageDateMustBeDefined = 'Message date must be defined!';\r\n\tstatic InUse = 'In Use';\r\n\tstatic CurrentWorkPlace = 'Current Workplace';\r\n\tstatic AllUnits = 'All Units';\r\n\tstatic Remainders = 'Remainders';\r\n\tstatic InstantMessageChannelParameterNotFound = 'Chat \\'{0}\\' not found!';\r\n\tstatic Orientation = 'Orientation';\r\n\tstatic YouHaveUnapprovedChangesDoYouWantApproveChanges = 'You have not approved changes that you have made. Do you want to approve changes?';\r\n\tstatic SavingUserParameterParameterWasNotSuccessfulErrorParameter = 'Failed to save user option \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic UseInheritedContentFiltering = 'Use inherited content filtering';\r\n\tstatic PreviousCalendarYear = 'Previous Calendar Year';\r\n\tstatic ToggleArchivedFurtherEducations = 'Show/Hide Archived Further Educations';\r\n\tstatic Intern = 'Intern';\r\n\tstatic DecreasingVersionHistorySizeRemovesCurrentlySavedVersionHistoryRecords = 'Note! Decreasing version history size removes previously saved versions from version history.';\r\n\tstatic PublishVersionHistorySize = 'Publish Version History Size';\r\n\tstatic Keyword = 'Keyword';\r\n\tstatic DeletingRecordUserEmploymentParameterWasSuccessful = 'Employment \\'{0}\\' removed successfully!';\r\n\tstatic RecordFamiliarizationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted = 'Familiarization \\'{0}\\' is used in {1} user records and cannot be removed!';\r\n\tstatic InstantMessageUserInvitationAcceptTypeCannotInvite = 'I cannot be invited to join chat';\r\n\tstatic SelectUrgencyClass = 'Select Urgency Class';\r\n\tstatic Restore = 'Restore';\r\n\tstatic MaximumTotalSizeOfAttachmentsIsParameterMB = 'Maximum total size of all attachments is {0} MB!';\r\n\tstatic ResolutionDescription = 'Resolution Description';\r\n\tstatic EmptyTaskTrashBinConfirmation = 'Do you really want to permanently remove all tasks from trash bin? Removed tasks cannot be restored?';\r\n\tstatic DeletingDocumentTemplatesParameterWasNotSuccessfulConcurrencyError = 'Failed to remove document templates \\'{0}\\', because data in document templates has been modified concurrently by another user!';\r\n\tstatic LanguageNonLocalFinnish = 'Suomi';\r\n\tstatic VersionHistory = 'Version History';\r\n\tstatic Min = 'Min';\r\n\tstatic EditEventTypeC = 'Edit Category 3';\r\n\tstatic Choose = 'Choose';\r\n\tstatic QualificationIsValid = 'Qualification is valid';\r\n\tstatic ChangingPasswordWasNotSuccessfulConcurrencyError = 'Failed to change password, because user data has been modified concurrently by another user!';\r\n\tstatic DeletingEventUrgencyClassesParameterWasSuccessful = 'Urgency classes \\'{0}\\' removed successfully!';\r\n\tstatic RecordUserExcelSalary = 'Salary';\r\n\tstatic Event = 'Incident';\r\n\tstatic RestoreTaskFromTrashBin = 'Restore Task from Trash Bin';\r\n\tstatic RemovingEventHandlersWasSuccessful = 'Handlers removed successfully!';\r\n\tstatic Anonymity = 'Anonymity';\r\n\tstatic FormFalse = 'False';\r\n\tstatic SearchCondition = 'search criteria';\r\n\tstatic Category = 'Category';\r\n\tstatic DeletingEventParameterWasNotSuccessfulConcurrencyError = 'Failed to remove incident \\'{0}\\', because data in the incident has been modified concurrently by another user!';\r\n\tstatic SharedFilter = 'Shared Filter';\r\n\tstatic AddRemainder = 'Add Remainder';\r\n\tstatic TrashBin = 'Trash Bin';\r\n\tstatic SelectCategory = 'Select Category';\r\n\tstatic UsedInParameterTasks = 'Used in {0} tasks';\r\n\tstatic WhistleBlowSeverityNormal = 'Normal';\r\n\tstatic SearchEvents = 'Search Incidents';\r\n\tstatic ClosedEvent = 'Closed The Incident';\r\n\tstatic NoCalendarTasksToShow = 'No events to show';\r\n\tstatic PreviewPrint = 'Preview (Print)';\r\n\tstatic SavingEventTypesWasNotSuccessfulErrorParameter = 'Failed to save category 1! Error: \\'{0}\\'';\r\n\tstatic WhistleBlowArchivingTypeChangeState = 'Change whistle blow report state to \\'Archived\\'';\r\n\tstatic AddCompanyGroups = 'Add Company Groups';\r\n\tstatic FolderName = 'Folder Name';\r\n\tstatic DeletingCalendarTaskCategoryParameterWasNotSuccessfulErrorParameter = 'Failed to remove category \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic DeletingTaskTypeParameterWasSuccessful = 'Task type \\'{0}\\' removed successfully!';\r\n\tstatic InstantMessageChannelInternal = 'Company Internal';\r\n\tstatic AdministratorUserCodeMustBeDefined = 'Username of the administrator must be defined!';\r\n\tstatic CreatingCompressedFileWasNotSuccessfulErrorParameter = 'File compression failed! Error: \\'{0}\\'';\r\n\tstatic DoYouReallyWantToRemoveSharedDocumentTemplateParameter = 'Do you really want to remove shared document template \\'{0}\\'?';\r\n\tstatic DeletingUserParametersWasNotSuccessfulConcurrencyError = 'Failed to remove user parameters, because data in the parameters has been modified concurrently by another user!';\r\n\tstatic DeletingAttachmentParameterWasNotSuccessfulErrorParameter = 'Failed to remove attachment \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic DeletingDocumentTemplatesParameterWasSuccessful = 'Document templates \\'{0}\\' removed successfully!';\r\n\tstatic PanelName = 'Panel Name';\r\n\tstatic UserCodeParameterMustBeValid = 'Username must be 8-50 characters long and it cannot contain whitespaces (\\'{0}\\').';\r\n\tstatic RemovePartner = 'Remove Partner';\r\n\tstatic SourceDescription = 'Source Description';\r\n\tstatic CopyingFileParameterWasNotSuccessfulErrorParameter = 'Failed to copy file \\'{0}\\' as file \\'{1}\\' in filesystem! Error: \\'{2}\\'';\r\n\tstatic Other = 'Other';\r\n\tstatic DeletingPartnerParameterWasNotSuccessfulConcurrencyError = 'Failed to remove partner \\'{0}\\', because the data has been modified concurrently by another user!';\r\n\tstatic FormulaDateAndTimeDiffInTimeSpan = 'Time difference in hours';\r\n\tstatic AccessRightWriteRecords = 'All unit\\'s user records';\r\n\tstatic AdditionalPermissionARecords = 'Archiving and removing';\r\n\tstatic SavingTaskDataRowWasNotSuccessfulConcurrencyError = 'Failed to save the task row, because task row has been modified concurrently by another user!';\r\n\tstatic UserName = 'Username';\r\n\tstatic ReadingFileParameterWasNotSuccessfulErrorParameter = 'Failed to read file \\'{0}\\' in filesystem! Error: \\'{1}\\'';\r\n\tstatic DeletingCalendarTaskParameterWasNotSuccessfulConcurrencyError = 'Failed to remove event \\'{0}\\', because data in the event has been modified concurrently by another user!';\r\n\tstatic Approval = 'Approval';\r\n\tstatic ExternalIntraSystemUserTokenMustBeDefined = 'User token in external eSalkku system must be defined!';\r\n\tstatic Repeated = 'Repeated';\r\n\tstatic WhistleBlowChannelMustHaveAtLeastOneAdministrator = 'Whistle blow channel must have at least one administrator!';\r\n\tstatic Internet = 'Internet';\r\n\tstatic AgencyWorker = 'Agency Worker';\r\n\tstatic Remove = 'Remove';\r\n\tstatic EmailSendDate = 'Email Sent Date';\r\n\tstatic IpAddress = 'IP Address';\r\n\tstatic DeletingCompanyGroupsParameterWasNotSuccessfulErrorParameter = 'Failed to remove company groups \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic Text = 'Text';\r\n\tstatic RecordBasicEducationCodeIsAlreadyInUse = 'Basic education name is already in use!';\r\n\tstatic InstantMessageChannelGroupExternal = 'Group (intercompany)';\r\n\tstatic Yearly = 'Yearly';\r\n\tstatic AddForm = 'Add Form';\r\n\tstatic Test = 'Test';\r\n\tstatic DeletingEventPartnerParameterWasSuccessful = 'Incident partner \\'{0}\\' removed successfully!';\r\n\tstatic CompanyNumber = 'Company Number';\r\n\tstatic CalendarTaskParameterNotFound = 'Event \\'{0}\\' not found!';\r\n\tstatic FormSizeExtraLarge = 'Extra Large';\r\n\tstatic PublishVersion = 'Publish Version';\r\n\tstatic UserCanBeSelectedAsEventHandler = 'User can be selected as incident handler';\r\n\tstatic RemoveTaskHandler = 'Remove Handler';\r\n\tstatic ClearSubUnitDefaultHandlersAndNotifiedPersons = 'Clear Subunit Default Handlers and Notified Persons';\r\n\tstatic DoYouReallyWantToRemoveSelectedForms = 'Do you really want to remove selected forms?';\r\n\tstatic SavingWhistleBlowCategoryParameterWasNotSuccessfulConcurrencyError = 'Failed to save whistle blow category \\'{0}\\', because data in the whistle blow category has been modified concurrently by another user!';\r\n\tstatic SavingTaskStateParameterWasNotSuccessfulErrorParameter = 'Failed to save task state \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic FileParameterNotFound = 'File \\'{0}\\' not found!';\r\n\tstatic ByName = 'By Name';\r\n\tstatic PrintTask = 'Print Task';\r\n\tstatic AddPartnerCompanies = 'Add partners that content can be shared to';\r\n\tstatic AddUser = 'Add User Account';\r\n\tstatic DeletingUsersParameterWasNotSuccessfulErrorParameter = 'Failed to remove user accounts \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic GeneralInfo = 'General';\r\n\tstatic Published = 'Published';\r\n\tstatic CurrentTopics = 'Current Topics';\r\n\tstatic SaveFilter = 'Save Filter';\r\n\tstatic AddPayer = 'Add Payer';\r\n\tstatic SavePasswordAndMoveToLoginPage = 'Save Password and Move to Login Page';\r\n\tstatic SaveAsFavorite = 'Save as Favorite';\r\n\tstatic DraftCannotBeApproved = 'Draft cannot be approved!';\r\n\tstatic WhistleBlowSeverityVeryLow = 'Very Low';\r\n\tstatic DownloadAttachment = 'Download Selected Attachment';\r\n\tstatic InstantMessageChannelGroupInternal = 'Group (company internal)';\r\n\tstatic Publisher = 'Published By';\r\n\tstatic Courses = 'Courses';\r\n\tstatic AuthorizationLevelSuperUser = 'Superuser';\r\n\tstatic WageGroup = 'Wage Group';\r\n\tstatic RemoveCompany = 'Remove Company';\r\n\tstatic OnlyImageAndPdfAttachmentsAreAllowedInvalidAttachmentParamater = 'Only image and pdf attachments are allowed! Attachments \\'{0}\\' are Invalid.';\r\n\tstatic SavingInstantMessageChannelUserWasNotSuccessfulConcurrencyError = 'Failed to save participant, because data in the participant has been modified concurrently by another user!';\r\n\tstatic AddEventTypesToEvent = 'Add category 1 by tapping the plus button.';\r\n\tstatic UserRecordStatisticsExpiringInSixMonthsFamiliarizations = 'Familiarizations Expiring in Six Months';\r\n\tstatic FileChangesCheckingAndEmailingStarted = 'File changes checking and emailing started';\r\n\tstatic DeletingWhistleBlowChannelAdminParameterWasNotSuccessfulErrorParameter = 'Failed to remove administrator \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic DocumentPublished = 'Published By';\r\n\tstatic Unread = 'Unread';\r\n\tstatic ImportUserDialogInstruction = 'Upload excel file to import user account or download excel template where you can fill user account information.';\r\n\tstatic AddingEventHandlerWasNotSuccessfulErrorParameter = 'Failed to add handlers! Error: \\'{0}\\'';\r\n\tstatic DoYouReallyWantToCreateRemainderInPast = 'Do you really want to create remainder in the past?';\r\n\tstatic PasswordMustContainDigitOrSpecialCharacter = 'Password must contain number or special character!';\r\n\tstatic Today = 'Today';\r\n\tstatic SavingWhistleBlowChannelParameterWasSuccessful = 'Whistle blow channel \\'{0}\\' saved successfully!';\r\n\tstatic DocumentModulePropertiesSaveWasSuccessful = 'Document settings saved successfully!';\r\n\tstatic TasksFound = 'Tasks Found';\r\n\tstatic UserReports = 'User record reports';\r\n\tstatic EditableDocumentApproveConfirmation = 'Do want to approve the document?';\r\n\tstatic ChartProperties = 'Chart Properties';\r\n\tstatic DeletingUserGroupsParameterWasSuccessful = 'User groups \\'{0}\\' removed successfully!';\r\n\tstatic CalendarTaskEditSeries = 'Edit Series';\r\n\tstatic ExpiresInYear = 'Expires in year';\r\n\tstatic Week = 'Week';\r\n\tstatic MaximumSizeOfFilesThatCanBeAddedInBatchIsParameterMB = 'Maximum total size of files that can be added in batch is {0} MB!';\r\n\tstatic Instructions = 'Instructions';\r\n\tstatic ArchivingRecordUserFamiliarizationsWasNotSuccessfulErrorParameter = 'Failed to archive further familiarizations! Error: \\'{0}\\'';\r\n\tstatic SavingEventPartnerParameterWasNotSuccessfulErrorParameter = 'Failed to save incident partner \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic EInvoiceAddress = 'E-invoice Address';\r\n\tstatic SavingApplicationPermissionsWasSuccessful = 'System permissions saved successfully!';\r\n\tstatic ExitingInstantMessageChannelWasNotSuccessfulConcurrencyError = 'Failed to exit the chat, because data in the chat has been modified concurrently by another user!';\r\n\tstatic Search = 'Search';\r\n\tstatic SavingOneTimePasswordParameterWasSuccessful = 'One time password saved successfully!';\r\n\tstatic DeletingRecordFurtherEducationsParameterWasSuccessful = 'Further educations \\'{0}\\' removed successfully!';\r\n\tstatic FormDropdownOption = 'Option';\r\n\tstatic DoYouReallyWantToRemoveTaskStateParameter = 'Do you really want to remove task state \\'{0}\\'?';\r\n\tstatic CalendarTaskHandlerFilter = 'Handler';\r\n\tstatic EventApprovalWasNotSuccessfulConcurrencyError = 'Failed to approve incident, because the handler has been modified concurrently by another user!';\r\n\tstatic AddWhistleBlowChannelAdminsParameterWasNotSuccessfulErrorParameter = 'Failed to add administrators \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic AddCompaniesParameterWasNotSuccessfulConcurrencyError = 'Failed to add companies \\'{0}\\', because the data has been modified concurrently by another user!';\r\n\tstatic UserIsSystemAdminClaimNotFound = 'User claim \\'userIsSystemAdmin\\' not found!';\r\n\tstatic WhistleBlowAnonymousReportInfo = 'If you do not want to reveal your name during the reporting process, choose this option.';\r\n\tstatic DeletingWhistleBlowCategoriesParameterWasSuccessful = 'Whistle blow categories \\'{0}\\' removed successfully!';\r\n\tstatic MaximumSizeOfAttachmentThatCanBeAddedInBatchIsParameterMB = 'Maximum total size of attachments that can be added in batch is {0} MB!';\r\n\tstatic SavingUserGroupParameterWasNotSuccessfulConcurrencyError = 'Failed to save user group \\'{0}\\', because data in the user group has been modified concurrently by another user!';\r\n\tstatic EmployeeType = 'Employee Type';\r\n\tstatic EventTypeC = 'Category 3';\r\n\tstatic EventTypeBCodeIsAlreadyInUse = 'Category 2 name is already in use!';\r\n\tstatic TimeSpanQuarter = 'Quarter';\r\n\tstatic OpenWhistleBlow = 'Open Whistle Blow Report';\r\n\tstatic DeletingDirectoryItemDocumentParameterWasNotSuccessfulConcurrencyError = 'Failed to remove file \\'{0}\\', because data in the file has been modified concurrently by another user!';\r\n\tstatic UseObserverAction = 'Show Observer Action Field';\r\n\tstatic LogisticVoucherCustomers = 'Customers';\r\n\tstatic PermissionToCreateEventsToPartners = 'Permission to Create Incidents to Partners';\r\n\tstatic AmountOfComments = 'Amount of Comments';\r\n\tstatic DeletingOptionParameterWasNotSuccessfulErrorParameter = 'Failed to remove option \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic NewCompanyMustBeSavedBeforeCompanyGroupsCanBeAdded = 'New company must be saved before company groups can be added!';\r\n\tstatic UnitMustBeSelected = 'Unit must be selected!';\r\n\tstatic AddEventHandlersToEvent = 'Add handler by tapping the plus button.';\r\n\tstatic ObserverActionMustBeDefined = 'Observer action must be defined!';\r\n\tstatic AddLogisticVoucherCustomerPaymentSetting = 'Add Payment Setting';\r\n\tstatic DescriptionMustBeDefined = 'Description must be defined!';\r\n\tstatic AddUsersParameterWasNotSuccessfulErrorParameter = 'Failed to add user accounts \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic DocumentIsEmpty = 'The document is empty!';\r\n\tstatic CompanyGroup = 'Company Group';\r\n\tstatic SavingEventTypeBParameterWasNotSuccessfulConcurrencyError = 'Failed to save category 2 \\'{0}\\', because data in the incident category 2 has been modified concurrently by another user!';\r\n\tstatic AddCompanyParameterWasNotSuccessfulConcurrencyError = 'Failed to add company \\'{0}\\', because the data has been modified concurrently by another user!';\r\n\tstatic WhistleBlowResolutionUnspecified = 'Not Resolved';\r\n\tstatic RequestValidationErrorOnFieldParameterWithValueParameter = 'The value \\'{1}\\' of the field \\'{0}\\' contains content that is considered dangerous in web applications!';\r\n\tstatic FormCalculatedIntegerNumber = 'Calculated Integer';\r\n\tstatic EventUrgencyClassParameterIsInUseInParameterEventsAndCannotBeDeleted = 'Urgency class \\'{0}\\' is used in {1} incidents and cannot be removed!';\r\n\tstatic PrintTextPublished = 'Published';\r\n\tstatic SavingRecordBasicEducationParameterWasNotSuccessfulErrorParameter = 'Failed to save basic education \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic AddUsers = 'Add User Accounts';\r\n\tstatic DefaultEventTypes = 'Default Categories 1';\r\n\tstatic DeletingMetadataFromFileParameterFailed = 'Failed to remove metadata from file \\'{0}\\'!';\r\n\tstatic UnitHandlingIncomingEvents = 'Unit That Handles Incidents Sent by the Partner';\r\n\tstatic CalendarTaskOpenSeries = 'Open Series';\r\n\tstatic RemoveFilter = 'Remove Filter';\r\n\tstatic Select = 'Select';\r\n\tstatic ReminderMinutesBefore = 'minutes before';\r\n\tstatic RecordParameterLockingFailedRecordIsWriteLockedToUserParameter = 'Failed to lock record \\'{0}\\'! The record is write locked to user \\'{0}\\'!';\r\n\tstatic Units = 'Units';\r\n\tstatic ReportsModified = 'Favorite Reports';\r\n\tstatic SavingTaskParameterWasNotSuccessfulConcurrencyError = 'Failed to save task \\'{0}\\', because task has been modified concurrently by another user!';\r\n\tstatic DoYouReallyWantToUnlockTaskDataRow = 'Do you really want to unlock task row?';\r\n\tstatic Year = 'Year';\r\n\tstatic EventHandlers = 'Handlers';\r\n\tstatic DataTransferError = 'Data transfer error!';\r\n\tstatic SendPasswordChangeEmail = 'Send Password Change Link by Email';\r\n\tstatic AddLogisticVoucherPaymentSetting = 'Add Payment Setting';\r\n\tstatic WhistleBlowCategoryParameterIsInUseInParameterWhistleBlowsAndCannotBeDeleted = 'Whistle blow category \\'{0}\\' is used in {1} whistle blow records and cannot be removed!';\r\n\tstatic ModifyExistingSharedDocumentTemplate = 'Modify existing shared document template';\r\n\tstatic WhistleBlowFollowReport = 'Follow Report';\r\n\tstatic DeletingCompanyParameterWasNotSuccessfulConcurrencyError = 'Failed to remove company \\'{0}\\', because data in the company has been modified concurrently by another user!';\r\n\tstatic SavingTaskStateParameterWasSuccessful = 'Task state \\'{0}\\' saved successfully!';\r\n\tstatic MovingFilesAndDocumentsToFolderParameterWasNotSuccessfulErrorParameter = 'Failed to move files/documents into folder \\'{0}! Error: \\'{1}\\'';\r\n\tstatic CopyPermissionToAllSameLevelUnits = 'Copy Permission to All Same Level Units';\r\n\tstatic Default = 'Default';\r\n\tstatic Relation = 'Relation';\r\n\tstatic FormCompactStyle = 'Compact';\r\n\tstatic ArchivingRecordUserFurtherEducationsWasNotSuccessfulConcurrencyError = 'Failed to archive further educations, because data in further educations has been modified concurrently by another user!';\r\n\tstatic SavingKeywordParameterWasNotSuccessfulErrorParameter = 'Failed to save keyword \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic Open = 'Open';\r\n\tstatic DeletingFileFilterParameterWasSuccessful = 'File filter \\'{0}\\' removed successfully!';\r\n\tstatic CompanyGroupNameMustBeDefined = 'Name of the company group must be defined!';\r\n\tstatic RecordUserExcelQualification = 'Qualifications';\r\n\tstatic SavingEventParameterWasNotSuccessfulConcurrencyError = 'Failed to save incident \\'{0}\\', because data in the incident has been modified concurrently by another user!';\r\n\tstatic AddingAddRecordUserTransferredPropertiesWasNotSuccessfulErrorParameter = 'Failed to add transferred properties! Error: \\'{0}\\'';\r\n\tstatic Save = 'Save';\r\n\tstatic UserAccountMustBeSelected = 'User account must be selected!';\r\n\tstatic SavingRecordUserParameterWasNotSuccessfulErrorParameter = 'Failed to save user record \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic NoReports = 'No Reports!';\r\n\tstatic IncludeArchivedFurtherEducations = 'Include archived further educations';\r\n\tstatic DoYouReallyWantToRemoveWhistleBlowCategoryParameter = 'Do you really want to remove whistle blow category \\'{0}\\'?';\r\n\tstatic SavingOptionParameterWasSuccessful = 'Option \\'{0}\\' saved successfully!';\r\n\tstatic MessageParameterNotFound = 'Message \\'{0}\\' not found!';\r\n\tstatic UserIsInstantMessageChannelOnlyAdministratorInParameterInstantMessageChannels = 'User is only chat administrator in {0} chats!';\r\n\tstatic AddWhistleBlow = 'Add Whistle Blow Report';\r\n\tstatic Location = 'Location';\r\n\tstatic DoYouWantToPublishEvent = 'Do you want to publish the incident?';\r\n\tstatic EditableDocumentParameterNotFound = 'Document \\'{0}\\' not found!';\r\n\tstatic MessageTypesMustBeDefinedBeforeAddingMessages = 'Message types must be defined before adding messages!';\r\n\tstatic RemoveCalendarTaskCategory = 'Remove Category';\r\n\tstatic DeletingInstantMessageChannelParameterWasNotSuccessfulConcurrencyError = 'Failed to remove chat \\'{0}\\', because data in the instant message channel has been modified concurrently by another user!';\r\n\tstatic AdminMustBeDefined = 'Administrator must be defined!';\r\n\tstatic FormBuilder = 'Form Builder';\r\n\tstatic AddCompanyGroupParameterWasNotSuccessfulErrorParameter = 'Failed to add company group \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic EventIsApprovedByUser = 'User has approved the incident';\r\n\tstatic ThisWeek = 'This Week';\r\n\tstatic AccessRightReadWhistleBlow = 'Limited reports handling';\r\n\tstatic ExpiresInParameterMonths = 'Expires in {0} months';\r\n\tstatic KeywordsAndCondition = 'All selected keywords';\r\n\tstatic AddingAddRecordUserTransferredPropertiesWasSuccessful = 'Transferred properties added successfully!';\r\n\tstatic Permissions = 'Permissions';\r\n\tstatic InheritedContentFilter = '(inherited content filter)';\r\n\tstatic UserFilterInActive = 'Not in use';\r\n\tstatic UserRecordStatisticsMissingQualifications = 'Missing Qualifications';\r\n\tstatic FormulaAbs = 'Absolute value';\r\n\tstatic DirectoryItemDocumentsNotFound = 'Files/documents not fond!';\r\n\tstatic Attachments = 'Attachments';\r\n\tstatic DeletingInstantMessageUserParameterWasSuccessful = 'Participant \\'{0}\\' removed successfully!';\r\n\tstatic ReminderNone = 'No remainder';\r\n\tstatic RemoveMessage = 'Remove Message';\r\n\tstatic ContentVersion = 'Content Version';\r\n\tstatic PayeeUsersCanLogInToTheSystem = 'Company users can log in to the system';\r\n\tstatic FormExpressionMustBeDefined = 'Uttryck mÃ¥ste definieras!';\r\n\tstatic AddingEventHandlersWasSuccessful = 'Handlers added successfully!';\r\n\tstatic AccountIBANNumber = 'Bank Account IBAN Number';\r\n\tstatic PersonalIdentityCode = 'Personal Identity Code';\r\n\tstatic DoYouReallyWantToRemoveSelectedRecordFamiliarizations = 'Do you really want to remove selected further familiarizations?';\r\n\tstatic DoYouReallyWantToRemoveEventTypeCParameter = 'Do you really want to remove category 3 \\'{0}\\'?';\r\n\tstatic SavingCompanyGroupParameterWasNotSuccessfulConcurrencyError = 'Failed to save company group \\'{0}\\', because data in the company group has been modified concurrently by another user!';\r\n\tstatic DeletingRecordFamiliarizationParameterWasNotSuccessfulConcurrencyError = 'Failed to remove familiarization \\'{0}\\', because data in the familiarization has been modified concurrently by another user!';\r\n\tstatic FormSizeDefault = 'Default';\r\n\tstatic UserRecordStatisticsExpiredFamiliarizations = 'Expired Familiarizations';\r\n\tstatic Expand = 'Expand';\r\n\tstatic UserRecordStatisticsExpiringInSixMonthsFurtherEducations = 'Further Educations Expiring in Six Months';\r\n\tstatic ChangedEventUnit = 'Changed incident unit';\r\n\tstatic ReadReceiptGivenPlur = 'Read Receipt Sent';\r\n\tstatic DateMustBeDefined = 'Date must be defined!';\r\n\tstatic EventTypeParameterNotFound = 'Category 1 \\'{0}\\' not found!';\r\n\tstatic DeletingRecordFurtherEducationGroupParameterWasNotSuccessfulConcurrencyError = 'Failed to remove further education group \\'{0}\\', because data in the further education group has been modified concurrently by another user!';\r\n\tstatic SavingMessageSendPushParameterWasSuccessful = 'Message push notification log \\'{0}\\' saved successfully!';\r\n\tstatic DoYouReallyWantToRemoveSelectedCalendarTaskCategories = 'Do you really want to remove selected categories?';\r\n\tstatic LoadMore = 'Load More';\r\n\tstatic DeletingDefaultEventHandlerParameterWasSuccessful = 'Default incident handler \\'{0}\\' removed successfully!';\r\n\tstatic AccessRightReadEvents = 'Creating incidents';\r\n\tstatic RecordUserWithSameFirstNameMiddleNameAndLastNameAlreadyExists = 'User record with the same first name \\'{0}\\', last name \\'{2}\\' and middle name \\'{1}\\' already exists!';\r\n\tstatic PrivacyPolicyUrlMustBeDefined = 'Privacy policy web address must be defined!';\r\n\tstatic ForwardMessage = 'Forward';\r\n\tstatic EventTypeBParameterNotFound = 'Category 2 \\'{0}\\' not found!';\r\n\tstatic GroupByEducation = 'Group by Education';\r\n\tstatic DeletingUserGroupParameterWasSuccessful = 'User group \\'{0}\\' removed successfully!';\r\n\tstatic SelectEventTypeC = 'Select Category 3';\r\n\tstatic RefreshList = 'Refresh List';\r\n\tstatic NewPrint = 'New Print';\r\n\tstatic DeletingTaskPriorityParameterWasNotSuccessfulConcurrencyError = 'Failed to remove task priority \\'{0}\\', because data in the task priority has been modified concurrently by another user!';\r\n\tstatic NewInstantMessageChannelGroup = 'New Group';\r\n\tstatic ChangedUrgencyClass = 'Changed incident urgency class';\r\n\tstatic SavingOptionParameterWasNotSuccessfulConcurrencyError = 'Failed to save option \\'{0}\\', because data in the option has been modified concurrently by another user!';\r\n\tstatic Next = 'Next';\r\n\tstatic DeletingUserGroupUsersOfCompanyParameterWasSuccessful = 'User group connections related to company \\'{0}\\' removed successfully!';\r\n\tstatic AllUsersOfTheUnit = 'All users of the unit';\r\n\tstatic ClickToChangeTheLogo = 'Click to change the logo';\r\n\tstatic DeletingTaskStatesParameterWasNotSuccessfulConcurrencyError = 'Failed to remove task states \\'{0}\\', because data in task states has been modified concurrently by another user!';\r\n\tstatic TargetCompany = 'Target Company';\r\n\tstatic SavingRecordUserParameterWasNotSuccessfulConcurrencyError = 'Failed to save user record \\'{0}\\', because user record data has been modified concurrently by another user!';\r\n\tstatic FamiliarizationTime = 'Familiarization Time';\r\n\tstatic AddPartner = 'Add Partner';\r\n\tstatic CopyingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulConcurrencyError = 'Failed to copy folder \\'{0}\\' into folder \\'{1}\\', because data in the folder has been modified concurrently by another user!';\r\n\tstatic EditWhistleBlowChannel = 'Edit Whistle Blow Channel';\r\n\tstatic DocumentNameIsIllegal = 'Document name is not allowed (reserved name)!';\r\n\tstatic ByDate = 'By Date';\r\n\tstatic FolderMustBeEmptyBeforeItCanBeRemoved = 'Folder must be empty before it can be removed!';\r\n\tstatic UserLastNameMustBeDefined = 'User surname must be defined!';\r\n\tstatic SavingOneTimePasswordWasNotSuccessfulErrorParameter = 'Failed to save one time password! Error: \\'{0}\\'';\r\n\tstatic FullNameClaimNotFound = 'User claim \\'name\\' not found!';\r\n\tstatic RenewPersonalizationWithUser = 'Replace Personalization with Selected User Account';\r\n\tstatic SavingUserParameterWasNotSuccessfulErrorParameter = 'Failed to save user \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic AddSalaryRowToMultipleUserRecords = 'Add Salary Row to Multiple User Records';\r\n\tstatic AddingTaskHandlerWasNotSuccessfulErrorParameter = 'Failed to add handlers! Error: \\'{0}\\'';\r\n\tstatic RestoringTaskParameterFromTrashBinWasNotSuccessfulErrorParameter = 'Failed to restore task \\'{0}\\' from trash bin! Error: \\'{1}\\'';\r\n\tstatic MovingFolderDirectoryItemParameterToFolderParameterWasSuccessful = 'Folder \\'{0}\\' moved into folder \\'{1}\\' successfully!';\r\n\tstatic VersionProperties = 'Version Properties';\r\n\tstatic LastName = 'Last Name';\r\n\tstatic DoYouReallyWantToRemoveRecordFurtherEducationGroupParameter = 'Do you really want to remove further education group \\'{0}\\'?';\r\n\tstatic FormLineBreak = 'Line Break';\r\n\tstatic FormTrue = 'True';\r\n\tstatic AttachmentParameterNotFound = 'Attachment \\'{0}\\' not found!';\r\n\tstatic UnlockingEventParameterWasNotSuccessful = 'Failed to unlock incident \\'{0}\\'!';\r\n\tstatic AddUserGroupsParameterWasSuccessful = 'User groups \\'{0}\\' added successfully!';\r\n\tstatic EditInstantMessageChannel = 'Edit Chat';\r\n\tstatic UserCodeClaimNotFound = 'User claim \\'code\\' not found!';\r\n\tstatic WhistleBlowSeverityHigh = 'High';\r\n\tstatic MessageMustBeSavedBeforeAttachmentsCanBeAdded = 'Message must be saved before attachments can be added!';\r\n\tstatic ApproveEventHandlerConfirmation2 = 'Do you really want to approve incident?';\r\n\tstatic SavingDirectoryItemPermissionsWasSuccessful = 'Folder permissions saved successfully!';\r\n\tstatic WhistleBlowStatisticsInProgressRecords = 'In Progress Reports';\r\n\tstatic SearchFurtherEducations = 'Search Further Educations';\r\n\tstatic MiddleName = 'Middle Name';\r\n\tstatic DeletingPartnerParameterWasNotSuccessfulErrorParameter = 'Failed to remove partner \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic SavingRecordFurtherEducationParameterWasNotSuccessfulConcurrencyError = 'Failed to save further education \\'{0}\\', because data in the further education has been modified concurrently by another user!';\r\n\tstatic DoYouReallyWantToUnlockCalendarTask = 'Do you really want to unlock task \\'{0}\\'?';\r\n\tstatic MoneyOut = 'Money Out';\r\n\tstatic SavingUnitPermissionsWasNotSuccessfulErrorParameter = 'Failed to save unit permissions! Error: \\'{0}\\'';\r\n\tstatic MovingTaskParameterToTrashBinWasSuccessful = 'Task \\'{0}\\' moved to trash bin!';\r\n\tstatic Paste = 'Paste';\r\n\tstatic SavingTaskDataRowWasSuccessful = 'The task row saved successfully!';\r\n\tstatic WhistleBlowSourceUnspecified = 'Unspecified';\r\n\tstatic GetPhoto = 'Get Photo';\r\n\tstatic CreatingNotifications = 'Creating notifications...';\r\n\tstatic SavingUserGroupParameterWasSuccessful = 'User group \\'{0}\\' saved successfully!';\r\n\tstatic WhistleBlowDashboard = 'Whistleblower Dashboard';\r\n\tstatic FormDropdowns = 'Dropdowns';\r\n\tstatic ChangePassword = 'Change Password';\r\n\tstatic EventPartnerParameterNotFound = 'Incident partner \\'{0}\\' not found!';\r\n\tstatic SelectDocumentTemplate = 'Select Document Template';\r\n\tstatic DoYouReallyWantToRemoveSelectedKeywords = 'Do you really want to remove selected keywords?';\r\n\tstatic PrintOrientation = 'Print Orientation';\r\n\tstatic AddRecordUserAndUserAccount = 'Add user record and new user account';\r\n\tstatic Source = 'Source';\r\n\tstatic LoggedInUserCannotBeDeleted = 'User cannot remove himself/herself!';\r\n\tstatic DeletingPartnersParameterWasNotSuccessfulErrorParameter = 'Failed to remove partners\\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic RemoveSharedDocumentTemplate = 'Remove Shared Document Template';\r\n\tstatic AddHandlers = 'Add handlers';\r\n\tstatic WhistleBlowInformantButtonHint = 'Do not include sensitive personal information about any individual mentioned in your report if it is not necessary for describing your concern.';\r\n\tstatic UnpublishingEditableDocumentParameterWasSuccessful = 'Document \\'{0}\\' unpublished successfully!';\r\n\tstatic DoYouReallyWantToRemovePartnerParameter = 'Do you really want to remove partner \\'{0}\\'?';\r\n\tstatic DeletingFileFiltersParameterWasSuccessful = 'File filters \\'{0}\\' removed successfully!';\r\n\tstatic DeletingUsersParameterWasNotSuccessfulConcurrencyError = 'Failed to remove user accounts \\'{0}\\', because data has been modified concurrently by another user!';\r\n\tstatic AddAttachementsToEvent = 'Add attachment by tapping plus buttons.';\r\n\tstatic UserGroupCodeMustBeDefined = 'User group code must be defined!';\r\n\tstatic AddDefaultEventType = 'Add Default Category 1';\r\n\tstatic Last30Days = 'Last 30 Days';\r\n\tstatic DoYouReallyWantToRemoveSelectedTaskStates = 'Do you really want to remove selected task states?';\r\n\tstatic ArchivingRecordUserFamiliarizationsWasSuccessful = 'Familiarizations archived successfully!';\r\n\tstatic UnitParameterNotFound = 'Unit \\'{0}\\' was not found!';\r\n\tstatic AdvancePaymentReportPath = 'Advance Payment Report Path';\r\n\tstatic CalendarTaskRepetitionRepeatIntervalMonthlySuffix = 'months(s) on';\r\n\tstatic AddTransferredProperties = 'Add Transferred Properties';\r\n\tstatic DeletingEventUrgencyClassesParameterWasNotSuccessfulConcurrencyError = 'Failed to remove urgency classes \\'{0}\\', because data in urgency classes has been modified concurrently by another user!';\r\n\tstatic ChangingPasswordWasNotSuccessfulErrorParameter = 'Failed to change password! Error: \\'{0}\\'';\r\n\tstatic WhistleBlowChannelPageNameCodeIsAlreadyInUse = 'Whistle blow chanel page name is already in use!';\r\n\tstatic PasswordConfirmationDoesNotMatchPassword = 'Password does not match the confirm password!';\r\n\tstatic DeletingUserParametersWasNotSuccessfulErrorParameter = 'Failed to remove user parameters! Error: \\'{0}\\'';\r\n\tstatic DeletingInstantMessageWasNotSuccessfulConcurrencyError = 'Failed to remove instant message, because data in the instant message has been modified concurrently by another user!';\r\n\tstatic AddedComment = 'Added Comment';\r\n\tstatic ParameterResults = '({0} results)';\r\n\tstatic UpdatingApplication = 'Updating application...';\r\n\tstatic EventPartners = 'Incident Partners';\r\n\tstatic Ends = 'Ends';\r\n\tstatic CopyOrMoveFilesDocuments = 'Copy or Move Selected Files/Documents';\r\n\tstatic PortalInUse = 'Login Portal Is in Use';\r\n\tstatic PaymentTermInDays = 'Payment Term in Days';\r\n\tstatic CopyOrMoveFolder = 'Copy or Move Folder';\r\n\tstatic BasicEducation = 'Basic Education';\r\n\tstatic SelectDocumentInListToSeeThePreview = 'Select document in list to see the preview';\r\n\tstatic DefaultLanguage = 'Language';\r\n\tstatic EditDefaultTaskType = 'Edit Default Task Type';\r\n\tstatic DeletingCompanyGroupsParameterWasSuccessful = 'Company groups \\'{0}\\' removed successfully!';\r\n\tstatic SavingTaskParameterWasSuccessful = 'Task \\'{0}\\' saved successfully!';\r\n\tstatic SelectCustomer = 'Select Customer';\r\n\tstatic SavingWhistleBlowChannelParameterWasNotSuccessfulConcurrencyError = 'Failed to save whistle blow channel \\'{0}\\', because data in the whistle blow channel has been modified concurrently by another user!';\r\n\tstatic NotRepeated = 'Not Repeated';\r\n\tstatic DeletingUserParametersWasSuccessful = 'User parameters removed successfully!';\r\n\tstatic EditDefaultEventHandlersAndNotifiedPersons = 'Edit Default Incident Handlers and Notified Persons';\r\n\tstatic TaskHandlerParameterNotFound = 'Handler \\'{0}\\' not found!';\r\n\tstatic SavingUserParameterParameterWasSuccessful = 'User option \\'{0}\\' saved successfully!';\r\n\tstatic FilesParameterAreEmpty = 'Files \\'{0}\\' are empty!';\r\n\tstatic FolderNameIsTooLong = 'Folder name \\'{0}\\' is too long!';\r\n\tstatic FileUploadWasSuccessful = 'Files uploaded successfully!';\r\n\tstatic WaitingToBeApproved = 'Waiting to be approved';\r\n\tstatic EditDefaultTaskState = 'Edit Default Task State';\r\n\tstatic WhistleBlowState = 'Report State';\r\n\tstatic AddChildEventTypeC = 'Add Subcategory 3';\r\n\tstatic SelectReminder = 'Select Reminder';\r\n\tstatic CanShareContentToCompanies = 'Content Can Be Shared to These Partners';\r\n\tstatic VersionParameterPublishedAsPdfFile = 'Version {0} is published to pdf file';\r\n\tstatic UserGroupModuleProperties = 'User Groups Properties';\r\n\tstatic DeletingMessageParameterWasNotSuccessfulErrorParameter = 'Failed to remove message \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic RemoveRecordUserAndUser = 'Remove User Record and User Account';\r\n\tstatic CloseSystem = 'Close the System';\r\n\tstatic OldestMessage = 'Oldest Message';\r\n\tstatic PositionErrorUnavailable = 'Location information unavailable.';\r\n\tstatic AddNotifiedPerson = 'Add Person to Be Notified';\r\n\tstatic DeletingUserGroupsParameterWasNotSuccessfulErrorParameter = 'Failed to remove user groups \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic ExportToExcel = 'Export to Excel';\r\n\tstatic EmailSent = 'Email Sent';\r\n\tstatic MaximumSizeOfDocumentThatCanBeAddedInBatchIsParameterMB = 'Maximum total size of documents that can be added in batch is {0} MB!';\r\n\tstatic SavingReadReceiptWasSuccessful = 'Read receipt saved successfully!';\r\n\tstatic DeletingRecordFurtherEducationParameterWasNotSuccessfulErrorParameter = 'Failed to remove further education \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic InstantMessageChannelArchivingTypeKeepMessages = 'Preserve Archived Chat and Messages';\r\n\tstatic WhistleBlowStatisticsNewRecords = 'New Reports';\r\n\tstatic FurtherEducationParameterNotFound = 'Further education \\'{0}\\' not found!';\r\n\tstatic FileRemovalWasSuccessful = 'File removed successfully!';\r\n\tstatic ApprovalComment = 'Approval Comment';\r\n\tstatic ChangeSystemLanguageToSwedish = 'Change Language to Swedish';\r\n\tstatic MinimumPasswordLengthMustBeAtLeastParameterCharacters = 'Minimum password length must be at least {0} characters!';\r\n\tstatic EventTypeCodeIsAlreadyInUse = 'Category 1 name is already in use!';\r\n\tstatic SavingWhistleBlowWasNotSuccessfulErrorParameter = 'Failed to save whistle blow report! Error: \\'{0}\\'';\r\n\tstatic WhistleBlowReportHasBeenSavedBottomText = 'You must store the password before you can close this page.';\r\n\tstatic AdministratorPasswordMustBeDefined = 'Password of the administrator must be defined!';\r\n\tstatic MessageTypeClass = 'Message Class';\r\n\tstatic Returned = 'Returned';\r\n\tstatic AccessRightWriteWhistleBlow = 'Full reports handling';\r\n\tstatic PublishDate = 'Publish Date';\r\n\tstatic FormRowColumn = 'Row Column';\r\n\tstatic Functions = 'Functions';\r\n\tstatic WhistleBlowInformantMessageConfirmation = 'Do you want to send new message to informant?';\r\n\tstatic WhistleBlowUrlInfo = 'Only system administrator can change the address';\r\n\tstatic DocumentNameConstainsIllegalCharacters = 'Document name contains forbidden characters (<, >, :, \", /, \\, |, ? or *) or ends with forbidden character (., \\' \\')!';\r\n\tstatic RemoveDefaultBasicEducation = 'Remove Default Basic Education';\r\n\tstatic EventTypeParameterIsInUseInParameterEventsAndCannotBeDeleted = 'Category 1 \\'{0}\\' is used in {1} incidents and cannot be removed!';\r\n\tstatic FormMinimumValue = 'Minimum Value';\r\n\tstatic IdCard = 'Identity Card';\r\n\tstatic SavingEventUrgencyClassParameterWasNotSuccessfulErrorParameter = 'Failed to save urgency class \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic SavingDefaultHandlersWasNotSuccessfulConcurrencyError = 'Failed to save default handlers, because default handlers have been modified concurrently by another user!';\r\n\tstatic AdditionalPermissionAInstantMessages = 'Permission management';\r\n\tstatic AddEmployments = 'Add Employments';\r\n\tstatic DeletingRecordUserParameterWasSuccessful = 'User record \\'{0}\\' removed successfully!';\r\n\tstatic AddRecordUserWithoutUserAccount = 'Add user record without user account';\r\n\tstatic AddInstantMessageUserParameterWasSuccessful = 'Participant \\'{0}\\' added successfully!';\r\n\tstatic AddTaskPriority = 'Add Task Priority';\r\n\tstatic RemovingCalendarTaskHandlerWasNotSuccessfulErrorParameter = 'Failed to remove handlers! Error: \\'{0}\\'';\r\n\tstatic Total = 'Total';\r\n\tstatic DefaultEventHandlerParameterNotFound = 'Default incident handler \\'{0}\\' not found!';\r\n\tstatic AddEventType = 'Add Category 1';\r\n\tstatic DeletingFileParameterWasNotSuccessfulErrorParameter = 'Failed to remove file \\'{0}\\' in filesystem! Error: \\'{1}\\'';\r\n\tstatic CompanyCodeContainsIllegalCharacters = 'Company code contains characters that are illegal (., &, :, \\' \\', ö, ä, à, Ã¥, Ö, Ä, À tai Ã…)!';\r\n\tstatic SavingWhistleBlowChannelParameterWasNotSuccessfulErrorParameter = 'Failed to save whistle blow channel \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic ScopeUnit = 'Unit';\r\n\tstatic EditEvent = 'Edit Incident';\r\n\tstatic DoYouReallyWantToRemoveUnitParameter = 'Do you really want to remove unit \\'{0}\\'?';\r\n\tstatic UserRecordStatisticsExpiringInSixMonthsQualifications = 'Qualifications Expiring in Six Months';\r\n\tstatic CalendarTaskChangeSelectedDateToSeeTheTasks = 'Change selected date or state filter to see the events';\r\n\tstatic Addition = 'Addition';\r\n\tstatic AccessRightReadRecords = 'Own user record';\r\n\tstatic AddingAttachmentsParameterWasSuccessful = 'Attachments \\'{0}\\' added successfully!';\r\n\tstatic Sending = 'Sending...';\r\n\tstatic EventTypeBs = 'Category 2';\r\n\tstatic AttachmentImageSize = 'Attachment Image Thumbnail Size';\r\n\tstatic UserEventsNotApproved = 'User events not approved';\r\n\tstatic DeletingRecordUserEmploymentParameterWasNotSuccessfulErrorParameter = 'Failed to remove employment \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic DoYouReallyWantToUnlockTask = 'Do you really want to unlock task \\'{0}\\'?';\r\n\tstatic FormFontSize = 'Font Size';\r\n\tstatic NewTransferredPropertyMustBeSavedBeforeAttachmentsCanBeAdded = 'New transferred property must be saved before attachments can be added!';\r\n\tstatic Name = 'Name';\r\n\tstatic WhistleBlowSeverityCritical = 'Critical';\r\n\tstatic CreateReport = 'Create Report';\r\n\tstatic FormWidth = 'Width';\r\n\tstatic WhistleBlowMessageHasNotBeenSentCloseConfirmation = 'An unfinished message has not been sent yet. Do you want to close the view?';\r\n\tstatic CopyUnitDefaultHandlersAndNotifiedPersonsToAllSameLevelUnits = 'Copy Default Handlers and Notified Persons to All Same Level Units';\r\n\tstatic TaskStateParameterNotFound = 'Task state \\'{0}\\' not found!';\r\n\tstatic DirectCosts = 'Direct Costs';\r\n\tstatic DeletingRecordFurtherEducationGroupParameterWasSuccessful = 'Further education group \\'{0}\\' removed successfully!';\r\n\tstatic Calendar = 'Calendar';\r\n\tstatic ANew = 'New';\r\n\tstatic DeletingKeywordsParameterWasNotSuccessfulErrorParameter = 'Failed to remove keywords \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic EmailAddressDoesNotExist = 'Email address does not exist!';\r\n\tstatic CurrentCalendarYear = 'Current Calendar Year';\r\n\tstatic EditLogisticVoucherTransportCompany = 'Edit Transport Company';\r\n\tstatic Approved = 'Approved';\r\n\tstatic SSRSRefreshFinishedInParameterSeconds = 'SSRS refresh finished (duration: {0:N0}s)';\r\n\tstatic RecordFurtherEducationGroupParameterNotFound = 'Further education group \\'{0}\\' not found!';\r\n\tstatic ActiveTasks = 'Active tasks';\r\n\tstatic DraftVersion = 'Draft Version';\r\n\tstatic FormTextArea = 'Long Text Input';\r\n\tstatic RequireReadReceipt = 'Requires Read Receipt';\r\n\tstatic WhistleBlow = 'Whistleblower';\r\n\tstatic PreviewIsNotSupportedForThisFileType = 'Preview is not supported for this file type!';\r\n\tstatic TransferToChannel = 'Move to chat';\r\n\tstatic DoYouReallyWantToRemoveRecordUserTransferredPropertyParameter = 'Do you really want to remove transferred property \\'{0}\\'?';\r\n\tstatic GroupByQuarter = 'Group by Quarter';\r\n\tstatic CompanyLogo = 'Company Logo';\r\n\tstatic WhistleBlowCategoryCodeIsAlreadyInUse = 'Whistle blow category name is already in use!';\r\n\tstatic InvalidInvitationParameter = 'Invalid invitation \\'{0}\\'!';\r\n\tstatic FileFilterParameterNotFound = 'File filter \\'{0}\\' not found!';\r\n\tstatic PanelSize4 = '2 x 2';\r\n\tstatic DoYouReallyWantToRemoveDefaultEventHandlerParameter = 'Do you really want to remove default incident handler \\'{0}\\'?';\r\n\tstatic RestoringInstantMessageWasNotSuccessfulErrorParameter = 'Failed to restore instant message! Error: \\'{0}\\'';\r\n\tstatic LogOut = 'Log Out';\r\n\tstatic WorkShiftType = 'Work Shift Type';\r\n\tstatic SavingUserParametersWasNotSuccessfulConcurrencyError = 'Failed to save user options\\', because data in the user options has been modified concurrently by another user!';\r\n\tstatic ChangesMaxAmount = 'Maximum amount of changes';\r\n\tstatic ValidPasswordMustBeDefined = 'Valid password must be defined!';\r\n\tstatic AllPartners = '\\'All Partners\\'';\r\n\tstatic EditEventTypes = 'Edit Category 1';\r\n\tstatic ValidityEndDateExpirationTime = 'Validity Expiration Time';\r\n\tstatic DeletingTaskStatesParameterWasNotSuccessfulErrorParameter = 'Failed to remove task states \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic Settings = 'Settings';\r\n\tstatic TaskTypesMustBeDefinedBeforeAddingTasks = 'Forms must be defined before adding tasks!';\r\n\tstatic DeletingCalendarTaskCategoryParameterWasNotSuccessfulConcurrencyError = 'Failed to remove category \\'{0}\\', because data in the category has been modified concurrently by another user!';\r\n\tstatic SavingInstantMessageChannelParameterWasNotSuccessfulErrorParameter = 'Failed to save chat \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic ValidityStartDate = 'Validity Start Date';\r\n\tstatic AllCompanies = 'All Companies';\r\n\tstatic Scope = 'Scope';\r\n\tstatic RenamingFolderParameterWasNotSuccessfulErrorParameter = 'Failed to rename folder (\\'{0}\\' => \\'{1}\\') in filesystem! Error: \\'{2}\\'';\r\n\tstatic DoYouReallyWantToRemoveEditableDocumentParameter = 'Do you really want to remove document \\'{0}\\'? All files that are related to the document will be removed.';\r\n\tstatic DeletingWhistleBlowParameterWasNotSuccessfulErrorParameter = 'Failed to remove whistle blow report \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic DoYouReallyWantToRemoveReportParameter = 'Do you really want to remove report \\'{0}\\'?';\r\n\tstatic SaveReport = 'Save Report';\r\n\tstatic RecordBasicEducationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted = 'Basic education \\'{0}\\' is used in {1} user records and cannot be removed!';\r\n\tstatic Rejected = 'Rejected';\r\n\tstatic AddFurtherEducationToMultipleUserRecords = 'Add Further Education to Multiple User Records';\r\n\tstatic PrintTextPrinted = 'Printed';\r\n\tstatic FurtherEducationGroup = 'Further Education Group';\r\n\tstatic WhistleBlowPasswordConfirmed = 'Whistle blow report has been sent. You can check the status of your report by clicking \"Follow Report\" button on the main page.';\r\n\tstatic NewPassword = 'New Password';\r\n\tstatic DocumentTemplate = 'Document Template';\r\n\tstatic ToDo = 'Things to Do';\r\n\tstatic DoYouReallyWantToRemoveSelectedDocumentTemplates = 'Do you really want to remove selected document templates?';\r\n\tstatic FormSortField = 'Sort Field';\r\n\tstatic DeletingInstantMessageUserParameterWasNotSuccessfulConcurrencyError = 'Failed to remove participant \\'{0}\\', because the data has been modified concurrently by another user!';\r\n\tstatic EditLogisticVoucherCustomerPaymentSetting = 'Edit Payment Setting';\r\n\tstatic FormMobile = 'Mobile App';\r\n\tstatic PermissionDeniedForOperation = 'Permission denied for operation!';\r\n\tstatic NotApproved = 'Not approved';\r\n\tstatic RequestPasswordChangeMessage2 = 'Send';\r\n\tstatic NoPublishedMessages = 'No published messages';\r\n\tstatic FormulaMax = 'Maximum';\r\n\tstatic SavingEventSettingsWasSuccessful = 'Incident settings saved successfully!';\r\n\tstatic DeletingDirectoryItemDocumentParameterWasSuccessful = 'File \\'{0}\\' removed successfully!';\r\n\tstatic DisableExternalIntraSystemConfirmation = 'Do you really want to disable company from the system? Company will be removed from the system when the company is saved.';\r\n\tstatic GroupByYear = 'Group by Year';\r\n\tstatic ChangingPasswordWasSuccessful = 'Password changed successfully!';\r\n\tstatic OldestModification = 'Oldest Modification';\r\n\tstatic DeletingRecordFurtherEducationsParameterWasNotSuccessfulConcurrencyError = 'Failed to remove further educations \\'{0}\\', because data in further educations has been modified concurrently by another user!';\r\n\tstatic FormulaSubtraction = 'Subtraction';\r\n\tstatic MinimumPasswordLength = 'Minimum Password Length';\r\n\tstatic DeletingCalendarTaskCategoriesParameterWasNotSuccessfulConcurrencyError = 'Failed to remove categories \\'{0}\\', because data in categories has been modified concurrently by another user!';\r\n\tstatic AddQualificationToMultipleUserRecords = 'Add Qualification to Multiple User Records';\r\n\tstatic FormRemoveColumnFromRowConfirmation = 'Do you really want to remove column from row?';\r\n\tstatic AddFurtherEducationGroup = 'Add Further Education Group';\r\n\tstatic ContactPerson = 'Contact Person';\r\n\tstatic FormDropdown = 'Dropdown';\r\n\tstatic SelectForm = 'Select Form';\r\n\tstatic ExpiringIn90Days = 'Include educations expiring in 90 days';\r\n\tstatic WhistleBlowParameterNotFound = 'Whistle blow report \\'{0}\\' not found!';\r\n\tstatic DeletingAttachmentsParameterWasNotSuccessfulConcurrencyError = 'Failed to remove attachments \\'{0}\\', because data has been modified concurrently by another user!';\r\n\tstatic CheckingExistanceOfFileParameterWasNotSuccessfulErrorParameter = 'Failed to check existance of file \\'{0}\\' in filesystem! Error: \\'{1}\\'';\r\n\tstatic UnitCodeIsAlreadyInUse = 'Unit name is already in use!';\r\n\tstatic DeletingInstantMessageWasNotSuccessfulErrorParameter = 'Failed to remove instant message! Error: \\'{0}\\'';\r\n\tstatic FormSizeSmall = 'Small';\r\n\tstatic WhistleBlowChannel = 'Whistle Blow Channel';\r\n\tstatic UpdateUserGroupParameterExternalSystemsWasSuccessful = 'User group \\'{0}\\' linked to external systems successfully!';\r\n\tstatic WhistleBlowEventTypeMessageAdded = 'Message added';\r\n\tstatic Modification = 'Modification';\r\n\tstatic CreatingUserTokenWasNotSuccessfulErrorParameter = 'Failed to password change token! Error: \\'{0}\\'';\r\n\tstatic AddWhistleBlowCategory = 'Add Whistle Blow Category';\r\n\tstatic LanguageEnglish = 'English';\r\n\tstatic SavingFileFilterParameterWasSuccessful = 'File filter \\'{0}\\' saved successfully!';\r\n\tstatic Invited = 'Invited';\r\n\tstatic NoneSelected = 'None Selected';\r\n\tstatic GroupByUnit = 'Group by Unit';\r\n\tstatic RemoveTaskType = 'Remove Task Type';\r\n\tstatic DownloadFileTemplate = 'Download File Template';\r\n\tstatic AddPartnerParameterWasNotSuccessfulConcurrencyError = 'Failed to add partner \\'{0}\\', because the data has been modified concurrently by another user!';\r\n\tstatic EditCompanyTaskType = 'Edit Company Task Type';\r\n\tstatic ReportGenerationFailed = 'Failed to create report!';\r\n\tstatic RemoveFileFilter = 'Remove File Filters';\r\n\tstatic BrowserInfo = 'Browser';\r\n\tstatic DeletingMessageTypeParameterWasNotSuccessfulConcurrencyError = 'Failed to remove message type \\'{0}\\', because data in the message type has been modified concurrently by another user!';\r\n\tstatic DoYouReallyWantToRemoveEventHandlerParameter = 'Do you really want to remove handler \\'{0}\\'?';\r\n\tstatic BusinessIdentityCode = 'Business Identity Code';\r\n\tstatic FormRelativeDefinition = 'Relative Definition';\r\n\tstatic Education = 'Education';\r\n\tstatic EditLogisticVoucherCustomer = 'Edit Customer';\r\n\tstatic Date = 'Date';\r\n\tstatic DriversLicenseType = 'Drivers License Type';\r\n\tstatic CalendarTaskRepetitionRepeatIntervalMonthPrefix = 'Day';\r\n\tstatic ModifyDate = 'Last Modified';\r\n\tstatic LastYear = 'Last Year';\r\n\tstatic EditableDocumentPublishConfirmation = 'Do you want to publish document to file?';\r\n\tstatic BirthDate = 'Date of Birth';\r\n\tstatic EditUser = 'Edit User Account';\r\n\tstatic EventMessageConfirmation = 'Do you want to save new comment?';\r\n\tstatic CompanyInstantMessageChannels = 'Company Chats';\r\n\tstatic OthersLastModifications = 'Last Modifications by Company';\r\n\tstatic SavingTaskTypeParameterWasNotSuccessfulConcurrencyError = 'Failed to save task type \\'{0}\\', because data in the task type has been modified concurrently by another user!';\r\n\tstatic ChangeToReadMode = 'Change to Read Mode';\r\n\tstatic AddToFavorites = 'Add to Favorites';\r\n\tstatic EventTypeTitle = 'Incident Identification Category 1';\r\n\tstatic AddUserGroup = 'Add User Group';\r\n\tstatic Ascending = 'Ascending';\r\n\tstatic AddEventMessage = 'Add Comment';\r\n\tstatic DeletingRecordUserParameterWasNotSuccessfulConcurrencyError = 'Failed to remove user record \\'{0}\\', because data in the user record has been modified concurrently by another user!';\r\n\tstatic DeletingMessageTypesParameterWasNotSuccessfulErrorParameter = 'Failed to remove message types \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic JobLineParameterNotFound = 'Job line \\'{0}\\' not found!';\r\n\tstatic SavingUserParameterWasSuccessful = 'User \\'{0}\\' saved successfully!';\r\n\tstatic SelectUserGroupOrUser = 'Select User Group or User Account';\r\n\tstatic MessageTitleMustBeDefined = 'Message title until date must be defined!';\r\n\tstatic Collapse = 'Collapse';\r\n\tstatic NewRecordUserMustBeSavedBeforeRowsCanBeAdded = 'New user record must be saved before rows can be added!';\r\n\tstatic RecordUserFurtherEducationParameterNotFound = 'User record education record \\'{0}\\' not found!';\r\n\tstatic AnyTime = 'Any Time';\r\n\tstatic DeletingTaskStateParameterWasSuccessful = 'Task state \\'{0}\\' removed successfully!';\r\n\tstatic MoveUp = 'Move Upwards';\r\n\tstatic InvalidValueInArgumentParameter = 'Invalid value in argument \\'{0}\\'!';\r\n\tstatic UpdateCompanyExternalSystemsWasNotSuccessfulConcurrencyError = 'Failed to link company to external systems, because the data has been modified concurrently by another user!';\r\n\tstatic Filters = 'Filters';\r\n\tstatic CopyingFilesAndDocumentsToFolderParameterWasSuccessful = 'Files/documents copied into folder \\'{0}\\' successfully!';\r\n\tstatic SavingEventUrgencyClassParameterWasSuccessful = 'Urgency class \\'{0}\\' saved successfully!';\r\n\tstatic AccessRightRead = 'Read permission';\r\n\tstatic PostalAddress = 'Street Address';\r\n\tstatic OtherCompanies = 'Other Companies';\r\n\tstatic TrainingEndDateCannotPrecedeTrainingStartDate = 'Training end date cannot precede training start date!';\r\n\tstatic WhistleBlowEventTypeCreated = 'Created';\r\n\tstatic RemoveDefaultEventHandler = 'Remove Default Incident Handler';\r\n\tstatic EventTypeCs = 'Category 3';\r\n\tstatic NewPasswordMustBeDefined = 'New password must be defined!';\r\n\tstatic LockedTaskParameterCannotBeDeleted = 'Locked task \\'{0}\\' cannot be removed!';\r\n\tstatic ApplicationName = 'eSalkku';\r\n\tstatic SavingEditableDocumentParameterWasNotSuccessfulConcurrencyError = 'Failed to save document \\'{0}\\', because data in the document has been modified concurrently by another user!';\r\n\tstatic ImportUsers = 'Import User Accounts';\r\n\tstatic LockedEventParameterCannotBeSaved = 'The incident \\'{0}\\' has been locked to another user and it cannot be saved!';\r\n\tstatic DoYouReallyWantToRemoveRecordFurtherEducationParameter = 'Do you really want to remove further education \\'{0}\\'?';\r\n\tstatic DeletingWhistleBlowChannelAdminParameterWasSuccessful = 'Administrator \\'{0}\\' removed successfully!';\r\n\tstatic DeletingFileFilterParameterWasNotSuccessfulErrorParameter = 'Failed to remove file filter \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic Previous = 'Previous';\r\n\tstatic DeletingInstantMessageUsersParameterWasNotSuccessfulErrorParameter = 'Failed to remove participants \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic ModifyDateStartDate = 'Last Modified From';\r\n\tstatic SavingCalendarTaskCategoryParameterWasSuccessful = 'Category \\'{0}\\' saved successfully!';\r\n\tstatic EmailAddressParameterIsInvalid = 'Email address \\'{0}\\' is not valid!';\r\n\tstatic EditKeyword = 'Edit Keyword';\r\n\tstatic DeletingEventTypeCParameterWasNotSuccessfulConcurrencyError = 'Failed to remove category 3 \\'{0}\\', because data in the category 3 has been modified concurrently by another user!';\r\n\tstatic SavingWhistleBlowCategoryParameterWasSuccessful = 'Whistle blow category \\'{0}\\' saved successfully!';\r\n\tstatic Required = 'Required';\r\n\tstatic SavingMessageSendPushParameterWasNotSuccessfulErrorParameter = 'Failed to save message push notification log \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic CourseCredit = 'Course Credit';\r\n\tstatic RemoveUserGroup = 'Remove User Group';\r\n\tstatic DeletingWhistleBlowCategoriesParameterWasNotSuccessfulConcurrencyError = 'Failed to remove whistle blow categories \\'{0}\\', because data in whistle blow categories has been modified concurrently by another user!';\r\n\tstatic CalendarTaskRepetitionEndDateSuffix = '';\r\n\tstatic JobLineDataIsEmpty = 'Job line data is missing!';\r\n\tstatic MessageUnit = 'Publisher Unit';\r\n\tstatic SharedReportCompany = 'Shared to company';\r\n\tstatic Document = 'Document';\r\n\tstatic FurtherEducation = 'Further Education';\r\n\tstatic SendingPusNotificationsWasNotSuccessfulErrorParameter = 'Failed to send push notifications! Error: \\'{0}\\'';\r\n\tstatic CreatingPrint = 'Creating print...';\r\n\tstatic MessageVisibilityPeriodNotStarted = 'Message visibility period not started!';\r\n\tstatic InstantMessageUserInvitationAcceptTypeAutoAcceptInvitation = 'I will automatically accept invitation to join chat';\r\n\tstatic WhistleBlowReport = 'Whistle Blow Report';\r\n\tstatic CopyingFilesAndDocumentsToFolderParameterWasNotSuccessfulConcurrencyError = 'Failed to copy files/documents into folder \\'{0}\\', because data in the folder has been modified concurrently by another user!';\r\n\tstatic Administrator = 'Administrator';\r\n\tstatic RemoveUserAndRecordUserArchive = 'Remove User Account and Archive User Record';\r\n\tstatic InstantMessagePartners = 'Instant Message Partners';\r\n\tstatic TaskPriority = 'Priority';\r\n\tstatic AddingRecordUserSalaryRowsWasSuccessful = 'Salary rows added successfully!';\r\n\tstatic ChangeSystemLanguageToEnglish = 'Change Language to English';\r\n\tstatic RemovingEventHandlerWasNotSuccessfulErrorParameter = 'Failed to remove handlers! Error: \\'{0}\\'';\r\n\tstatic Partner = 'Partner';\r\n\tstatic DoYouReallyWantToRemoveMessageParameter = 'Do you really want to remove message \\'{0}\\'?';\r\n\tstatic RemoveTarget = 'Remove Target';\r\n\tstatic AddCommentsToEvent = 'Add comment by tapping the plus button.';\r\n\tstatic Companies = 'Companies';\r\n\tstatic FormTextAlignmentRight = 'Align Text Right';\r\n\tstatic PanelSize3 = '1 x 2';\r\n\tstatic SaveAndPublish = 'Save and Publish';\r\n\tstatic CalendarTasks = 'Events';\r\n\tstatic DeletingRecordFamiliarizationsParameterWasSuccessful = 'Familiarizations \\'{0}\\' removed successfully!';\r\n\tstatic HoursPerTrainingDay = 'Hours per Training Day';\r\n\tstatic PasswordMustBeDefined = 'Password must be defined!';\r\n\tstatic RemoveEventTypeC = 'Remove Category 3';\r\n\tstatic ExitingInstantMessageChannelWasNotSuccessfulErrorParameter = 'Failed to exit the chat! Error: \\'{0}\\'';\r\n\tstatic ExitInstantMessageChannel = 'Exit Chat';\r\n\tstatic SavePrint = 'Save Print';\r\n\tstatic AddLogisticVoucherTransportCompany = 'Add Transport Company';\r\n\tstatic DefineRecordUserFurtherEducation = 'Define Further Education';\r\n\tstatic EventPartnerIsAlreadyInDefined = 'Incident partner is already defined!';\r\n\tstatic BasicEducationsMustBeDefinedBeforeAddingRecordUsers = 'Basic educations must be defined before adding user records!';\r\n\tstatic FormulaRemainder = 'Remainder';\r\n\tstatic SavingEventTypeBParameterWasSuccessful = 'Category 2 \\'{0}\\' saved successfully!';\r\n\tstatic EventsDashboard = 'Incidents Dashboard';\r\n\tstatic UserAccountConnected = 'User Account Connected';\r\n\tstatic DeletingDirectoryItemFolderParameterWasSuccessful = 'Folder \\'{0}\\' removed successfully!';\r\n\tstatic Card = 'Card';\r\n\tstatic SavingRecordFamiliarizationParameterWasSuccessful = 'Familiarization \\'{0}\\' saved successfully!';\r\n\tstatic SelectState = 'Select State';\r\n\tstatic Qualification = 'Qualification';\r\n\tstatic GroupByPerson = 'Group by Person';\r\n\tstatic DeletingWhistleBlowCategoryParameterWasSuccessful = 'Whistle blow category \\'{0}\\' removed successfully!';\r\n\tstatic AddFurtherEducation = 'Add Further Education';\r\n\tstatic UnitNameMustBeDefined = 'Unit name must be defined!';\r\n\tstatic NewFurtherEducationMustBeSavedBeforeAttachmentsCanBeAdded = 'New further education must be saved before attachments can be added!';\r\n\tstatic EventHandlersExcelTitle = 'Handlers (x = approved)';\r\n\tstatic ActiveState = 'State';\r\n\tstatic UpdateUserParameterExternalSystemsWasNotSuccessfulConcurrencyError = 'Failed to link user \\'{0}\\' to external systems, because the data has been modified concurrently by another user!';\r\n\tstatic AddEditableDocument = 'Add Document';\r\n\tstatic SharedReport = 'Shared Report';\r\n\tstatic NewRecordUserMustBeSavedBeforeTransferredPropertiesCanBeAdded = 'New user record must be saved before transferred properties can be added!';\r\n\tstatic SavingDirectoryItemFolderParameterWasNotSuccessfulConcurrencyError = 'Failed to save folder \\'{0}\\', because data in the folder has been modified concurrently by another user!';\r\n\tstatic AccessRightWriteEvents = 'Creating and handling incidents';\r\n\tstatic PageBreakBetweenGroups = 'Add page break between groups';\r\n\tstatic SavingRecordFurtherEducationParameterWasSuccessful = 'Further education \\'{0}\\' saved successfully!';\r\n\tstatic DeletingMessageTypesParameterWasNotSuccessfulConcurrencyError = 'Failed to remove message types \\'{0}\\', because data in message types has been modified concurrently by another user!';\r\n\tstatic DocumentModified = 'Last Modified By';\r\n\tstatic FamiliarizationTrainer = 'Trainer';\r\n\tstatic CompanyCodeClaimNotFound = 'User claim \\'company code\\' not found!';\r\n\tstatic RecordFamiliarizationCodeIsAlreadyInUse = 'Familiarization name is already in use!';\r\n\tstatic AddLogisticVoucherCustomer = 'Add Customer';\r\n\tstatic RecordBasicEducationParameterNotFound = 'Basic education \\'{0}\\' not found!';\r\n\tstatic DefaultSettings = 'Default Settings';\r\n\tstatic InvalidRequest = 'Invalid Request!';\r\n\tstatic CompanyToken = 'Company Token';\r\n\tstatic InstantMessageParameterNotFound = 'Instant message \\'{0}\\' not found!';\r\n\tstatic SomeInstantMessageUsersHaveReadMessage = 'Some recipients have read your message';\r\n\tstatic CompanyCodeIsAlreadyInUse = 'Code of the company is already in use!';\r\n\tstatic DeletingEventPartnerParameterWasNotSuccessfulErrorParameter = 'Failed to remove incident partner \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic ShowSchema = 'Show Schema';\r\n\tstatic SharedDocumentTemplate = 'Shared Document Template';\r\n\tstatic CalendarTaskOpenOccurrence = 'Open Occurrence';\r\n\tstatic NameIsAlreadyInUse = 'Name is already in use!';\r\n\tstatic SavingEditableDocumentParameterWasNotSuccessfulErrorParameter = 'Failed to save document \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic PreviousCalendarWeek = 'Previous Calendar Week';\r\n\tstatic DocumentEndDate = 'Valid Until';\r\n\tstatic EnableExternalIntraSystemConfirmation = 'Do you really want to enable company in the system? Company data will be saved to the system when the company is saved.';\r\n\tstatic DocumentNameParameterConstainsIllegalCharacters = 'Document name \\'{0}\\' contains forbidden characters (<, >, :, \", /, \\, |, ? or *) or ends with forbidden character (., \\' \\')!';\r\n\tstatic Unlock = 'Unlock';\r\n\tstatic ActiveUserTasks = 'Active user created tasks';\r\n\tstatic CalendarTaskRepetitionRepeatIntervalMonthSuffix = 'of month';\r\n\tstatic WhistleBlowStatisticsNonAnonymousRecords = 'Nonanonymous Reports';\r\n\tstatic DefaultFamiliarizations = 'Default Familiarizations';\r\n\tstatic FolderNameMustBeDefined = 'Folder name must be defined!';\r\n\tstatic WhistleBlowEventTypeAttachmentsRemoved = 'Attachments removed';\r\n\tstatic RemovingWhistleBlowHandlerWasNotSuccessfulErrorParameter = 'Failed to remove handlers! Error: \\'{0}\\'';\r\n\tstatic PermissionsForSection = 'Section Permissions';\r\n\tstatic AdditionalPermissionAEvents = 'Acting as handler';\r\n\tstatic FormProperties = 'Properties';\r\n\tstatic AuthorizationLevelAdmin = 'Administrators';\r\n\tstatic SavingEventTypeBsWasNotSuccessfulErrorParameter = 'Failed to save category 2! Error: \\'{0}\\'';\r\n\tstatic NewComment = 'New Comment';\r\n\tstatic ExternalIntraSystems = 'External eSalkku Systems';\r\n\tstatic SelectUserGroup = 'Select User Group';\r\n\tstatic TaskDataRows = 'Rows';\r\n\tstatic PathMustBeDefined = 'Path must be defined!';\r\n\tstatic RenewPersonalization = 'Personalization';\r\n\tstatic AttachmentParameterDownloaded = 'Attachment has been downloaded.';\r\n\tstatic AddDefaultHandler = 'Add Default Handler';\r\n\tstatic VerifyUserName = 'Verify that username is correct (\\'{0}\\')!';\r\n\tstatic CalendarTaskCategory = 'Category';\r\n\tstatic FormulaCbrt = 'Cubic root';\r\n\tstatic EditBasicEducation = 'Edit Basic Education';\r\n\tstatic EmploymentStartDate = 'Employment Start Date';\r\n\tstatic SavingEventDefaultHandlerParameterWasNotSuccessfulConcurrencyError = 'Failed to save default incident handler \\'{0}\\', because data in the default incident handler has been modified concurrently by another user!';\r\n\tstatic EventTypeB = 'Category 2';\r\n\tstatic EditCalendarTask = 'Edit Event';\r\n\tstatic TaskPrioritiesMustBeDefinedBeforeAddingTasks = 'Task priorities must be defined before adding tasks!';\r\n\tstatic FailureAudit = 'FailureAudit';\r\n\tstatic DeletingTaskTypesParameterWasSuccessful = 'Task types \\'{0}\\' removed successfully!';\r\n\tstatic Expired = 'Expired';\r\n\tstatic ParameterIsNotValidBankBICCode = '\\'{0}\\' is not valid bank BIC code!';\r\n\tstatic DefaultTaskTypes = 'Default Forms';\r\n\tstatic AddCalendarTaskCategory = 'Add Category';\r\n\tstatic DefaultFurtherEducation = 'Default Further Education';\r\n\tstatic NoMessagesToShow = 'No messages to show!';\r\n\tstatic AddEventTypeBsToEvent = 'Add category 2 by tapping the plus button.';\r\n\tstatic Selected = 'Selected';\r\n\tstatic SavingCalendarTaskCategoryParameterWasNotSuccessfulErrorParameter = 'Failed to save category \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic AddingAttachmentParameterWasSuccessful = 'Attachment \\'{0}\\' added successfully!';\r\n\tstatic EditAll = 'Edit All';\r\n\tstatic RequestParameterNotFound = 'Request \\'{0}\\' not found!';\r\n\tstatic EventTypeCParameterIsInUseInParameterEventsAndCannotBeDeleted = 'Category 3 \\'{0}\\' is used in {1} incidents and cannot be removed!';\r\n\tstatic LastParameterYears = 'Last {0} Years';\r\n\tstatic FileParameterIsEmpty = 'File \\'{0}\\' is empty!';\r\n\tstatic SelectTaskRepetitionType = 'Select Task Repetition';\r\n\tstatic SavingEventTypeCsWasSuccessful = 'Category 3 saved successfully!';\r\n\tstatic TrainingStartDate = 'Training Start Date';\r\n\tstatic MovingFilesAndDocumentsToFolderParameterWasSuccessful = 'Files/Documents moved into folder \\'{0}\\' successfully!';\r\n\tstatic ImageOrPdfUpToParameterMb = 'Image or PDF formats, up to {0} MB';\r\n\tstatic StandardFiltersAndReports = 'Standard Filters and Reports';\r\n\tstatic CopyPermissionToAllSameLevelFolders = 'Copy Permission to All Same Level Folders';\r\n\tstatic PanelSize = 'Panel Size';\r\n\tstatic ExpiredPlural = 'Expired';\r\n\tstatic DocumentRootPathMustBeDefined = 'Document root path must be defined!';\r\n\tstatic DefaultFurtherEducations = 'Default Further Educations';\r\n\tstatic TaskState = 'Task State';\r\n\tstatic AddCompanyTaskType = 'Add Task Type to Company';\r\n\tstatic DeletingMessageTypesParameterWasSuccessful = 'Message types \\'{0}\\' removed successfully!';\r\n\tstatic User = 'User Account';\r\n\tstatic CalendarTaskRepetitionRepeatIntervalYearlySuffix = 'year(s) on';\r\n\tstatic FieldParameterValueMustBeDefined = 'Value of the field \\'{0}\\' must be defined!';\r\n\tstatic SavingChartWasNotSuccessfulConcurrencyError = 'Failed to save chart, because data in the chart has been modified concurrently by another user!';\r\n\tstatic FormField = 'Field';\r\n\tstatic AddInstantMessageUsersParameterWasSuccessful = 'Participants \\'{0}\\' added successfully!';\r\n\tstatic SavingTaskPriorityParameterWasNotSuccessfulConcurrencyError = 'Failed to save task priority \\'{0}\\', because data in the task priority has been modified concurrently by another user!';\r\n\tstatic DoYouReallyWantToRemoveDocumentsParameter = 'Do you really want to remove {0} selected files/documents?';\r\n\tstatic CopyingFilesAndDocumentsToFolderParameterWasNotSuccessfulErrorParameter = 'Failed to copy files/documents into folder \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic MoneyIn = 'Money In';\r\n\tstatic Info = 'Info';\r\n\tstatic RemoveCompanyFromCompanyGroup = 'Remove Company from Company Group';\r\n\tstatic SharedFilters = 'Shared Filters';\r\n\tstatic Monthly = 'Monthly';\r\n\tstatic RecordParameterLockingFailed = 'Failed to lock record \\'{0}\\'!';\r\n\tstatic FormDecimalNumber = 'Decimal';\r\n\tstatic SavingRecordFurtherEducationGroupParameterWasNotSuccessfulConcurrencyError = 'Failed to save further education group \\'{0}\\', because data in the further education group has been modified concurrently by another user!';\r\n\tstatic UserRecordCards = 'User Records';\r\n\tstatic RemoveDefaultFurtherEducation = 'Remove Default Further Education';\r\n\tstatic DeletingCompanyGroupParameterWasSuccessful = 'Company group \\'{0}\\' removed successfully!';\r\n\tstatic ModifiedBy = 'Modified By';\r\n\tstatic DeletingRecordUserTransferredPropertiesParameterWasNotSuccessfulConcurrencyError = 'Failed to remove transferred properties \\'{0}\\', because data in transferred properties has been modified concurrently by another user!';\r\n\tstatic SendReadReceiptConfirmation = 'Do you want to send read receipt?';\r\n\tstatic AccountNumberTkbInDebit = 'Sales Receivable Account';\r\n\tstatic EventsFound = 'Incidents Found';\r\n\tstatic DefaultLanguageHasBeenChanged = 'Language has been changed!';\r\n\tstatic UserEndDate = 'Validity Expires';\r\n\tstatic SaveMessage = 'Save Message';\r\n\tstatic KeywordCodeMustBeDefined = 'Keyword code must be defined!';\r\n\tstatic CurrentCalendarMonth = 'Current Calendar Month';\r\n\tstatic OldPasswordIsIncorrect = 'Old password is incorrect!';\r\n\tstatic SendingPushNotificationsToParameter = 'Sending push notifications to user \\'{0}\\'...';\r\n\tstatic SavingEventTypeParameterWasNotSuccessfulConcurrencyError = 'Failed to save category 1 \\'{0}\\', because data in the category 1 has been modified concurrently by another user!';\r\n\tstatic ClickToCancelAutomaticLogout = 'User session is about to expire, please click this dialog to prevent automatic logout.';\r\n\tstatic FormTitles = 'Titles';\r\n\tstatic TransportCompanies = 'Transport Companies';\r\n\tstatic RecurringCalendarTaskMustHaveAtLeastOneOccurence = 'Recurring task must have at least one occurence!';\r\n\tstatic DoYouReallyWantToRemoveFormParameter = 'Do you really want to remove form \\'{0}\\'?';\r\n\tstatic WriteBelowFieldWordParameterToConfirmTheOperation = 'Write word \\'{0}\\' to the field below to confirm the operation';\r\n\tstatic AddPartnersParameterWasNotSuccessfulErrorParameter = 'Failed to add partners \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic SortOrder = 'Sort order';\r\n\tstatic NewFamiliarizationMustBeSavedBeforeAttachmentsCanBeAdded = 'New familiarization must be saved before attachments can be added!';\r\n\tstatic LockedDocumentParameterCannotBeMoved = 'Locked document \\'{0}\\' cannot be moved!';\r\n\tstatic AccountNumberTkbOutDebit = 'Trade Payable Account';\r\n\tstatic ForLastParameterDays = 'for last {0} days';\r\n\tstatic DeletingMessageParameterWasSuccessful = 'Message \\'{0}\\' removed successfully!';\r\n\tstatic DeletingRecordBasicEducationParameterWasNotSuccessfulErrorParameter = 'Failed to remove basic education \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic RemoveLogisticTransportCompany = 'Remove Transport Company';\r\n\tstatic WhistleBlowInformantDateAndTime = 'When did this happen?';\r\n\tstatic RemoveRecordUser = 'Remove User Record';\r\n\tstatic RemoveEventTypeB = 'Remove Category 2';\r\n\tstatic PanelVisible = 'Panel Visible';\r\n\tstatic KeywordsOrCondition = 'Any of selected keywords';\r\n\tstatic FormulaDateAndTimeDiffInMinutes = 'Time difference in minutes';\r\n\tstatic TaskStateLocked = 'Locked';\r\n\tstatic LockingEditableDocumentParameterWasNotSuccessful = 'Failed to lock document \\'{0}\\'!';\r\n\tstatic AdditionalPermissionBEvents = 'Removing';\r\n\tstatic ArgumentParameterIsNULL = 'Value of the argument \\'{0}\\' is NULL!';\r\n\tstatic QualificationIsInvalid = 'Qualification is not valid!';\r\n\tstatic WhistleBlowInformantMessages = 'Informant Messages';\r\n\tstatic FolderParameterNotFound = 'Folder \\'{0}\\' not found!';\r\n\tstatic SavingDirectoryItemFolderParameterWasSuccessful = 'Folder \\'{0}\\' saved successfully!';\r\n\tstatic MoveToTrashBin = 'Move to Trash Bin';\r\n\tstatic ArchivingRecordUserFurtherEducationsWasNotSuccessfulErrorParameter = 'Failed to archive further educations! Error: \\'{0}\\'';\r\n\tstatic IHaveForgotMyPassword = 'I have forgot my password';\r\n\tstatic SavingWhistleBlowMessageWasSuccessful = 'Message saved successfully!';\r\n\tstatic UserGroupParameterNotFound = 'User group \\'{0}\\' not found!';\r\n\tstatic Actions = 'Actions';\r\n\tstatic UserGroupCodeIsAlreadyInUse = 'User group code is already in use!';\r\n\tstatic NoFilesToAdd = 'No files to add!';\r\n\tstatic EventTypeCTitle = 'Incident Identification Category 3';\r\n\tstatic Title = 'Title';\r\n\tstatic Send = 'Send';\r\n\tstatic TransferredPropertyType = 'Transferred Property Type';\r\n\tstatic PasswordMustContainUppercaseChar = 'Password must contain uppercase alphabet!';\r\n\tstatic OperationAborted = 'Operation aborted!';\r\n\tstatic InvalidPasswordChangeRequestParameter = 'Invalid password change request \\'{0}\\'!';\r\n\tstatic DeletingRecordBasicEducationParameterWasSuccessful = 'Basic education \\'{0}\\' removed successfully!';\r\n\tstatic AddRecordUserToUserAccount = 'Add user record to existing user account';\r\n\tstatic Landscape = 'Landscape';\r\n\tstatic StateOpenPlural = 'Open';\r\n\tstatic Comment = 'Comment';\r\n\tstatic UsersToBeImported = 'Users to be Imported';\r\n\tstatic UserInformation = 'User Account';\r\n\tstatic AdditionalPermissionBWhistleBlow = 'Permission management';\r\n\tstatic TakePicture = 'Take Picture';\r\n\tstatic AddCompanies = 'Add Companies';\r\n\tstatic Language = 'Language';\r\n\tstatic LogModuleProperties = 'Logs Properties';\r\n\tstatic RemoveCalendarTask = 'Remove event';\r\n\tstatic SavingEventPartnerParameterWasNotSuccessfulConcurrencyError = 'Failed to save incident partner \\'{0}\\', because data in the incident partner has been modified concurrently by another user!';\r\n\tstatic PasteGroupPermissions = 'Paste Group Permissions from Memory';\r\n\tstatic WhistleBlowSourceMail = 'Mail';\r\n\tstatic DoYouReallyWantToRemoveCompanyGroupParameter = 'Do you really want to remove company group \\'{0}\\'?';\r\n\tstatic SelectDate = 'Select Date';\r\n\tstatic DeletingEventTypeBParameterWasSuccessful = 'Category 2 \\'{0}\\' removed successfully!';\r\n\tstatic WhistleBlowWasNotFound = 'Whistle blow report not found!';\r\n\tstatic DeletingRecordFurtherEducationsParameterWasNotSuccessfulErrorParameter = 'Failed to remove further educations \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic EventTypeCParameterNotFound = 'Category 3 \\'{0}\\' not found!';\r\n\tstatic IndefinitelyNoLocalization = 'Indefinitely';\r\n\tstatic TaskHandler = 'Handler';\r\n\tstatic Reject = 'Reject';\r\n\tstatic EventModuleProperties = 'Incidents Properties';\r\n\tstatic DefaultEventUrgencyClasses = 'Default Urgency Classes';\r\n\tstatic ACopy = 'Copy';\r\n\tstatic EditDefaultFurtherEducation = 'Edit Default Further Education';\r\n\tstatic EditEventTypeCs = 'Edit Category 3';\r\n\tstatic BasicInformation = 'General';\r\n\tstatic SavingFileFilterParameterWasNotSuccessfulErrorParameter = 'Failed to save file filter \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic Clear = 'Clear';\r\n\tstatic FormPlaceholder = 'Placeholder Text';\r\n\tstatic AuthorizationLevelSystemAdmin = 'System Administrator';\r\n\tstatic FollowUp = 'Follow-up';\r\n\tstatic RequestPasswordChangeMessage1 = 'If you have forgot your password fill your current eSalkku username below and click ';\r\n\tstatic ResetDocumentVersion = 'Reset Document Version';\r\n\tstatic EventTypeBParameterIsInUseInParameterEventsAndCannotBeDeleted = 'Category 2 \\'{0}\\' is used in {1} incidents and cannot be removed!';\r\n\tstatic UserRecordStatisticsArchivedCards = 'Archived Cards';\r\n\tstatic ReadReceipts = 'Read Receipts';\r\n\tstatic FormulaTan = 'Tangent';\r\n\tstatic DeletingKeywordParameterWasNotSuccessfulErrorParameter = 'Failed to remove keyword \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic AdminMustBeDefinedForSectionParameter = 'Administrator must be defined for section \\'{0}\\'!';\r\n\tstatic SavingFileFilterParameterWasNotSuccessfulConcurrencyError = 'Failed to save file filter \\'{0}\\', because data in the file filter has been modified concurrently by another user!';\r\n\tstatic Amount = 'Amount';\r\n\tstatic FamiliarizationStartDateDateEnd = 'Familiarization Start Date - End';\r\n\tstatic Order = 'Order';\r\n\tstatic LargeSize = 'Large Size';\r\n\tstatic AuthorizationLevelNone = 'No Rights';\r\n\tstatic ActionsAndRootCause = 'Actions and Root Cause';\r\n\tstatic Browse = 'Browse';\r\n\tstatic EInvoiceOperator = 'E-invoice Operator';\r\n\tstatic AddInstantMessageUsersParameterWasNotSuccessfulErrorParameter = 'Failed to add participants \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic CopyingFolderDirectoryItemParameterToFolderParameterWasSuccessful = 'Folder \\'{0}\\' copied into folder \\'{1}\\' successfully!';\r\n\tstatic TransferredProperties = 'Transferred Properties';\r\n\tstatic TaskDataRowMustBeSavedBeforeAttachmentsCanBeAdded = 'Row must be saved before attachments can be added!';\r\n\tstatic WhistleBlowCreateTime = 'Report Sent Time';\r\n\tstatic Last180Days = 'Last 180 Days';\r\n\tstatic AddDefaultTaskPriority = 'Add Default Task Priority';\r\n\tstatic DocumentNameParameterIsIllegal = 'Document name \\'{0}\\' is not allowed (reserved name)!';\r\n\tstatic InstantMessageChannelArchivingType = 'Handling of Archived Chat';\r\n\tstatic PrintIsEmpty = 'Print is empty!';\r\n\tstatic Custom = 'Custom';\r\n\tstatic AddEventTypeC = 'Add Category 3';\r\n\tstatic AddEventTypeB = 'Add Category 2';\r\n\tstatic SavingDirectoryItemDocumentParameterWasNotSuccessfulConcurrencyError = 'Failed to save file \\'{0}\\', because data in the file has been modified concurrently by another user!';\r\n\tstatic DoYouReallyWantToRemoveRecordUserEmploymentParameter = 'Do you really want to remove employment \\'{0}\\'?';\r\n\tstatic AddEvent = 'Add Incident';\r\n\tstatic HasAttachments = 'Has Attachments';\r\n\tstatic ArchiveWhistleBlows = 'Archive Whistle Blow Reports';\r\n\tstatic LanguageParameterIsNotSupported = 'Language \\'{0}\\' is not supported!';\r\n\tstatic Hour = 'Hour';\r\n\tstatic AuthorizationLevel = 'Authorization Level';\r\n\tstatic DoYouReallyWantToRemoveSelectedRecordBasicEducations = 'Do you really want to remove selected basic educations?';\r\n\tstatic DeletingFileFilterParameterWasNotSuccessfulConcurrencyError = 'Failed to remove file filter \\'{0}\\', because data in the file filter has been modified concurrently by another user!';\r\n\tstatic WhistleBlowNonAnonymousReportInfo = 'Your name will only be known to those who handle your report, and it will remain anonymous to everyone else.';\r\n\tstatic Minutes = 'Minutes';\r\n\tstatic LockingTaskParameterWasNotSuccessful = 'Failed to lock task \\'{0}\\'!';\r\n\tstatic DeletingDefaultEventHandlerParameterWasNotSuccessfulConcurrencyError = 'Failed to remove default incident handler \\'{0}\\', because data in the default incident handler has been modified concurrently by another user!';\r\n\tstatic HandlersAndAttachments = 'Handlers and Attachments';\r\n\tstatic TaskTypeSchemaMustBeDefined = 'Form schema must be defined!';\r\n\tstatic DeletingAttachmentParameterWasNotSuccessfulConcurrencyError = 'Failed to remove attachment \\'{0}\\', because the data has been modified concurrently by another user!';\r\n\tstatic GetMore = 'Show More';\r\n\tstatic CompanyIdClaimNotFound = 'User claim \\'company id\\' not found!';\r\n\tstatic TaskRepetitionType = 'Task Repetition';\r\n\tstatic PositionErrorTimeout = 'Location information reading timeout.';\r\n\tstatic RestoringInstantMessageWasSuccessful = 'Instant message restored successfully!';\r\n\tstatic EditCompanyGroup = 'Edit Company Group';\r\n\tstatic FormulaCeil = 'Rounded to up';\r\n\tstatic CompanyWithSysAdminAuthorizationLevelNotFound = 'Company that is related to \\'System administrator\\' user group was not found!';\r\n\tstatic RemovingWhistleBlowHandlersWasSuccessful = 'Handlers removed successfully!';\r\n\tstatic MovingTaskParameterToTrashBinWasNotSuccessfulConcurrencyError = 'Failed to move task \\'{0}\\' to trash bin, because data in the task has been modified concurrently by another user!';\r\n\tstatic FormulaCos = 'Cosine';\r\n\tstatic AccountNumberTkbOutCredit = 'Trade Account';\r\n\tstatic Receiver = 'Receiver';\r\n\tstatic PreviewMobile = 'Preview (Mobile)';\r\n\tstatic ArchivingRecordUserFurtherEducationsWasSuccessful = 'Further educations archived successfully!';\r\n\tstatic RemoveKeyword = 'Remove Keyword';\r\n\tstatic RemoveFolder = 'Remove Folder';\r\n\tstatic WhistleBlowActiveReports = 'Active Reports';\r\n\tstatic DoYouReallyWantToEmailMessageParameter = 'Do you really want to send message \\'{0}\\' by email? Message can be sent by email only once.';\r\n\tstatic RemoveWhistleBlowCategory = 'Remove Whistle Blow Category';\r\n\tstatic Update = 'Update';\r\n\tstatic CopyActiveUserRightsToAllSameLevelFolders = 'Copy Active Permissions to All Same Level Folders';\r\n\tstatic FormShowModifyUser = 'Show Modify User';\r\n\tstatic EditEmployment = 'Edit Employment';\r\n\tstatic UpdatingGroupCodeWasNotSuccessfulErrorParameter = 'Failed to update group code! Error: \\'{0}\\'';\r\n\tstatic FileFilterNameMustBeDefined = 'File filter name must be defined!';\r\n\tstatic SenderOrReceiver = 'Sender or Receiver';\r\n\tstatic DeletingRecordFamiliarizationParameterWasSuccessful = 'Familiarization \\'{0}\\' removed successfully!';\r\n\tstatic SavingKeywordParameterWasNotSuccessfulConcurrencyError = 'Failed to save keyword \\'{0}\\', because data in the keyword has been modified concurrently by another user!';\r\n\tstatic Action = 'Action';\r\n\tstatic DoYouReallyWantToRemoveDocumentParameter = 'Do you really want to remove file/document \\'{0}\\'?';\r\n\tstatic SavingFilterWasSuccessful = 'Filter saved successfully!';\r\n\tstatic SavingTaskParameterWasNotSuccessfulErrorParameter = 'Failed to save task \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic DoYouReallyWantToRemoveWhistleBlowParameter = 'Do you really want to remove whistle blow report \\'{0}\\'?';\r\n\tstatic InstantMessageAttachmentFolderIsNotSpecified = 'Application instant message attachment folder is not specified!';\r\n\tstatic YouHaveNotSavedChangesSaveChangesBeforePublishingTaskType = 'You have not saved changes that you have made. Save changes before publishing the task type.';\r\n\tstatic NoFurtherEducationsToShow = 'No further educations to show!';\r\n\tstatic SavingMessageTypeParameterWasNotSuccessfulConcurrencyError = 'Failed to save message type \\'{0}\\', because data in the message type has been modified concurrently by another user!';\r\n\tstatic UserToken = 'User Token';\r\n\tstatic CalendarTaskOccurrence = 'Occurrence';\r\n\tstatic CopyOrMoveFolderParameter = 'Copy or Move Folder \\'{0}\\'';\r\n\tstatic AddEmployment = 'Add Employment';\r\n\tstatic MissingPlural = 'Missing';\r\n\tstatic SomeWhistleBlowHandlersHaveReadMessage = 'Some whistle blow report handlers have read your message';\r\n\tstatic TaskRemainderCheckingAndNotificationFinishedInParameterSeconds = 'Task remainder checking and notification finished (duration: {0:N0}s, errors: {1}, tasks: {2}, emails: {3}, push notifications: {4})';\r\n\tstatic RecordUserExcelUserList = 'Personnel';\r\n\tstatic DeletingUserParameterWasSuccessful = 'User account \\'{0}\\' removed successfully!';\r\n\tstatic TemplateForms = 'Form Templates';\r\n\tstatic InstantMessageAttachmentFolderParameterNotFound = 'Application instant message attachment folder \\'{0}\\' not found!';\r\n\tstatic DeletingTaskPrioritiesParameterWasNotSuccessfulErrorParameter = 'Failed to remove task priorities \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic ChangeCompany = 'Change Company';\r\n\tstatic SearchCurrentTopics = 'Search Current Topics';\r\n\tstatic DoYouReallyWantToMoveTaskParameterToTrashBin = 'Do you want to move task \\'{0}\\' to trash bin?';\r\n\tstatic WhistleBlowResolutionJunk = 'Junk Mail';\r\n\tstatic EditMode = 'Edit';\r\n\tstatic EmploymentEndDateCannotPrecedeEmploymentStartDate = 'Employment end date cannot precede employment start date!';\r\n\tstatic EventApprovalWasSuccessful = 'Incident approved!';\r\n\tstatic UserClaimsNotFound = 'User claims not found!';\r\n\tstatic UserRecordsDashboard = 'Resources Dashboard';\r\n\tstatic PublishTaskType = 'Publish Task Type';\r\n\tstatic RemoveEditableDocument = 'Remove Document';\r\n\tstatic PanelSize1 = '1 x 1';\r\n\tstatic Yes = 'Yes';\r\n\tstatic SearchStartDate = 'Start Date';\r\n\tstatic DeletingTaskPriorityParameterWasSuccessful = 'Task priority \\'{0}\\' removed successfully!';\r\n\tstatic TasksExcelByTasks = 'Tasks - Excel - Filtered by Tasks';\r\n\tstatic InheritedUserRights = 'Inherited Permissions';\r\n\tstatic SomeEventHandlersHaveReadMessage = 'Some incident handlers have read your comment';\r\n\tstatic EventTypeCCodeMustBeDefined = 'Category 3 name must be defined!';\r\n\tstatic EventSettings = 'Incident Settings';\r\n\tstatic MovingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulConcurrencyError = 'Failed to move folder \\'{0}\\' into folder \\'{1}\\', because data in the folder has been modified concurrently by another user!';\r\n\tstatic DocumentZipFileName = 'Documents_{0:yyyy-MM-dd_HH-mm}.zip';\r\n\tstatic SavingWhistleBlowWasNotSuccessfulConcurrencyError = 'Failed to save whistle blow report, because data in the report has been modified concurrently by another user!';\r\n\tstatic Permission = 'Permission';\r\n\tstatic NotifiedPersons = 'Notifications';\r\n\tstatic RemoveCompanyGroup = 'Remove Company Group';\r\n\tstatic NoEventsToShow = 'No incidents to show!';\r\n\tstatic SavingInstantMessageWasNotSuccessfulErrorParameter = 'Failed to save instant message! Error: \\'{0}\\'';\r\n\tstatic UserGroup = 'User Group';\r\n\tstatic RemoveMessageType = 'Remove Message Type';\r\n\tstatic WhistleBlowDoesNotContainAnyMessage = 'No any messages are written to whistle blow report.';\r\n\tstatic ShowReportRowAmountInFrontPage = 'Show report row amount in front page';\r\n\tstatic SavingDocumentTemplateParameterWasSuccessful = 'Document template \\'{0}\\' saved successfully!';\r\n\tstatic DeletingKeywordParameterWasNotSuccessfulConcurrencyError = 'Failed to remove keyword \\'{0}\\', because data in the keyword has been modified concurrently by another user!';\r\n\tstatic SelectCompanyGroup = 'Select Company Group';\r\n\tstatic DeletingDirectoryItemFolderParameterWasNotSuccessfulErrorParameter = 'Failed to remove folder \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic WhistleBlowAnonymityNonAnonymous = 'Nonanonymous';\r\n\tstatic DoYouReallyWantToRemoveCompanyParameter = 'Do you really want to remove company \\'{0}\\'?';\r\n\tstatic WhistleBlowStateArchived = 'Archived';\r\n\tstatic SavingTaskTypeParameterWasSuccessful = 'Task type \\'{0}\\' saved successfully!';\r\n\tstatic Identification = 'Identification';\r\n\tstatic AddFormFromTemplate = 'Add Form from Template';\r\n\tstatic FormBooleans = 'True/False';\r\n\tstatic AddCompanyGroupsParameterWasNotSuccessfulConcurrencyError = 'Failed to add company groups \\'{0}\\', because the data has been modified concurrently by another user!';\r\n\tstatic ShowDraftVersion = 'Show Draft Contents';\r\n\tstatic SavingWhistleBlowMessageWasNotSuccessfulErrorParameter = 'Failed to save message! Error: \\'{0}\\'';\r\n\tstatic Draft = 'Draft';\r\n\tstatic Operation = 'Operation';\r\n\tstatic WhistleBlowDescription = 'Incident Description';\r\n\tstatic AddPanel = 'Add Panel';\r\n\tstatic TaskPriorityParameterIsInUseInParameterTasksAndCannotBeDeleted = 'Task priority \\'{0}\\' is used in {1} tasks and cannot be removed!';\r\n\tstatic NoTasksToShow = 'No tasks to show!';\r\n\tstatic EventUrgencyClass = 'Urgency Class';\r\n\tstatic PreviousCalendarMonth = 'Previous Calendar Month';\r\n\tstatic EventIsNotApprovedByUser = 'User has not approved the incident';\r\n\tstatic FormTime = 'Time (< 24h)';\r\n\tstatic SavingEventTypeParameterWasSuccessful = 'Category 1 \\'{0}\\' saved successfully!';\r\n\tstatic DeletingWhistleBlowParameterWasNotSuccessfulConcurrencyError = 'Failed to remove whistle blow report \\'{0}\\', because data in the whistle blow report has been modified concurrently by another user!';\r\n\tstatic DeletingRecordUserEmploymentsParameterWasNotSuccessfulErrorParameter = 'Failed to remove employments \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic Message = 'Message';\r\n\tstatic WhistleBlowSourcePhone = 'Phone';\r\n\tstatic DeletingInstantMessageUsersParameterWasNotSuccessfulConcurrencyError = 'Failed to remove participants \\'{0}\\', because data has been modified concurrently by another user!';\r\n\tstatic RestoringInstantMessageWasNotSuccessfulConcurrencyError = 'Failed to restore instant message, because data in the instant message has been modified concurrently by another user!';\r\n\tstatic InstantMessagesMenuTitle = 'HoxUp';\r\n\tstatic DoYouReallyWantToRemoveEventPartnerParameter = 'Do you really want to remove incident partner \\'{0}\\'?';\r\n\tstatic DoYouReallyWantToRemoveDocumentTemplateParameter = 'Do you really want to remove document template \\'{0}\\'?';\r\n\tstatic UserParameterHasInvitedYouToJoinInstantMessageChannelParameter = 'User \\'{0}\\' has invited you to join in chat';\r\n\tstatic Entry = 'Entry';\r\n\tstatic UserReport = 'User\\'s report';\r\n\tstatic Events = 'Incidents';\r\n\tstatic PicturesAreVisibleForAllCompanyUsers = 'Pictures are visible for all company users';\r\n\tstatic ArchivingRecordUserFamiliarizationsWasNotSuccessfulConcurrencyError = 'Failed to archive further familiarizations, because data in familiarizations has been modified concurrently by another user!';\r\n\tstatic Number = 'Number';\r\n\tstatic SelectArchivingMethod = 'Select Archiving Method';\r\n\tstatic DeletingWhistleBlowChannelAdminsParameterWasNotSuccessfulErrorParameter = 'Failed to remove administrators \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic SavingEditableDocumentParameterPublishWasSuccessful = 'Document \\'{0}\\' published successfully!';\r\n\tstatic SaveAndEmail = 'Save and Email';\r\n\tstatic EmptyTaskTrashBin = 'Empty Task Trash Bin';\r\n\tstatic MovingFolderParameterWasNotSuccessfulErrorParameter = 'Failed to move folder \\'{0}\\' into folder \\'{1}\\' in filesystem! Error: \\'{2}\\'';\r\n\tstatic Channels = 'Chats';\r\n\tstatic SelectInstantMessageChannelUsers = 'Select Participants';\r\n\tstatic ApproveEvent = 'Approve Event';\r\n\tstatic JobTypeEmail = 'Emailing';\r\n\tstatic Effectiveness = 'Effectiveness';\r\n\tstatic ReminderWeekBefore = 'week before';\r\n\tstatic Private = 'Private';\r\n\tstatic RemoveEmployment = 'Remove Employment';\r\n\tstatic AddAttachment = 'Add Attachment';\r\n\tstatic SavingEventTypeParameterWasNotSuccessfulErrorParameter = 'Failed to save category 1 \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic SavingDirectoryItemPermissionsWasNotSuccessfulConcurrencyError = 'Failed to save folder permissions, because folders have been modified concurrently by another user!';\r\n\tstatic AddPhotosAndAttachementsToEvent = 'Add photo or attachment by tapping camera or plus buttons.';\r\n\tstatic WhistleBlowReportHasBeenSavedTopText = 'Store below password in secure storage. The passwords gives you access to you report. Do not share password with anyone!';\r\n\tstatic SavingUserParametersWasNotSuccessfulErrorParameter = 'Failed to save user options! Error: \\'{0}\\'';\r\n\tstatic WhistleBlowStatisticsAnonymousRecords = 'Anonymous Reports';\r\n\tstatic FormWeb = 'Web App';\r\n\tstatic WhistleBlowEventTypeModified = 'Modified';\r\n\tstatic RecentlyUpdated = 'Recently updated';\r\n\tstatic ExternalSystems = 'External Systems';\r\n\tstatic DoYouReallyWantToRemoveCalendarTaskCategoryParameter = 'Do you really want to remove category \\'{0}\\'?';\r\n\tstatic Comments = 'Comments';\r\n\tstatic OptionParameterNotFound = 'System option \\'{0}\\' not found!';\r\n\tstatic NoPermission = 'No Permissions';\r\n\tstatic SelectCalendarTaskHandlers = 'Select handlers';\r\n\tstatic AllCompanyGroups = 'All Company Groups';\r\n\tstatic SavingPrintWasNotSuccessfulConcurrencyError = 'Failed to save print \\'{0}\\', because data in the print has been modified concurrently by another user!';\r\n\tstatic FormCodeMustBeDefined = 'Form code must be defined!';\r\n\tstatic ApproveEventResolution = 'Approve Incident Resolution';\r\n\tstatic TaskPriorityParameterNotFound = 'Task priority \\'{0}\\' not found!';\r\n\tstatic SelectInstantMessageChannelType = 'Select Chat Type';\r\n\tstatic Rows = 'rows';\r\n\tstatic FormulaRound = 'Rounded';\r\n\tstatic DeletingInstantMessageUsersParameterWasSuccessful = 'Participants \\'{0}\\' removed successfully!';\r\n\tstatic RestoringTaskParameterFromTrashBinWasSuccessful = 'Task \\'{0}\\' restored from trash bin!';\r\n\tstatic WriteMessage = 'Write Message';\r\n\tstatic UnlockingTaskDataRowWasNotSuccessful = 'Failed to unlock the task row!';\r\n\tstatic CreatingFolderParameterWasNotSuccessfulErrorParameter = 'Failed to create folder \\'{0}\\' in filesystem! Error: \\'{1}\\'';\r\n\tstatic AdminMessage = 'Message to managers';\r\n\tstatic SendTime = 'Send Time';\r\n\tstatic EventSettingsParameterNotFound = 'Incident settings \\'{0}\\' not found!';\r\n\tstatic RemoveUserGroupExternalSystemsWasSuccessful = 'User group links to external systems removed successfully!';\r\n\tstatic WhistleBlowCategories = 'Whistle Blow Categories';\r\n\tstatic AddingWhistleBlowHandlerWasNotSuccessfulErrorParameter = 'Failed to add handlers! Error: \\'{0}\\'';\r\n\tstatic AdditionalPermissions = 'Additional Permissions';\r\n\tstatic SavingDirectoryItemFolderParameterWasNotSuccessfulErrorParameter = 'Failed to save folder \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic SavingEditableDocumentParameterApprovalWasNotSuccessfulErrorParameter = 'Failed to approve document \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic AccessRightWrite = 'Write permission';\r\n\tstatic CalendarTaskCategoryParameterIsInUseInParameterCalendarTasksAndCannotBeDeleted = 'Category \\'{0}\\' is used in {1} events and cannot be removed!';\r\n\tstatic SavingUnitsWasSuccessful = 'Units saved successfully!';\r\n\tstatic UnitChangedFromParameterToParameter = 'Unit changed from \\'{0}\\' to \\'{1}\\'.';\r\n\tstatic FileParameterIsNotOpenXmlWorkbook = 'File \\'{0}\\' is not open xml workbook (.xlsx tai .xlsm)!';\r\n\tstatic NewVersionAvailable = 'New application version available! Application cannot be used before it is updated.';\r\n\tstatic ViewLogLine = 'Show Log Line';\r\n\tstatic WhistleBlowInformantTitle = 'What is your concern?';\r\n\tstatic IgnoreFilePatterns = 'Ignore Files Pattern';\r\n\tstatic TaskReport = 'Task Report';\r\n\tstatic EventUrgencyClasses = 'Urgency Classes';\r\n\tstatic EditUserGroup = 'Edit User Group';\r\n\tstatic Documents = 'Documents';\r\n\tstatic MyReports = 'User\\'s Reports';\r\n\tstatic NewPanel = 'New Panel';\r\n\tstatic SavingPrintWasSuccessful = 'Print saved successfully!';\r\n\tstatic DefaultHandlers = 'Default Handlers';\r\n\tstatic EditCompany = 'Edit Company';\r\n\tstatic UserPasswordMustBeValid = 'Password must be at least 8 characters long and it must contain lowercase letters, capital letters and at least one number or special character.';\r\n\tstatic CompetencyGroup = 'Competency Group';\r\n\tstatic LockedTaskDataRowCannotBeDeleted = 'Locked task row cannot be removed!';\r\n\tstatic PanelSize2 = '2 x 1';\r\n\tstatic DeletingTaskTypeParameterWasNotSuccessfulErrorParameter = 'Failed to remove task type \\'{0}\\'! Error: \\'{1}\\'';\r\n\tstatic DocumentTemplateParameterNotFound = 'Document template \\'{0}\\' not found!';\r\n\tstatic NoNotificationsToSend = 'No notifications to be sent!';\r\n\tstatic CompanyName = 'Company Name';\r\n\tstatic EditRow = 'Edit Row';\r\n\tstatic InviteInstantMessageChannelUser = 'Invite Participant';\r\n\tstatic FormOptions = 'Options';\r\n\tstatic PrivacyPolicyUrl = 'Privacy Policy Web Address';\r\n\tstatic FileSynchronizationToDatabaseStarted = 'Filesystem synchronization with database started';\r\n\tstatic FormulaPI = 'Pi';\r\n\tstatic ShowOnlyUnitsThatAreInUse = 'Show Only Units That Are in Use';\r\n\tstatic EditableDocumentUnpublishConfirmation = 'Do you want to remove the published file?';\r\n\tstatic SavingFilterWasNotSuccessfulErrorParameter = 'Failed to save filter! Error: \\'{1}\\'';\r\n\tstatic UnlockingTaskParameterWasNotSuccessful = 'Failed to unlock task \\'{0}\\'!';\r\n\tstatic ExternalSystemCodeClaimNotFound = 'User claim \\'externalSystemCode\\' not found!';\r\n\tstatic SearchTasks = 'Search Tasks';\r\n\tstatic FormDate = 'Date';\r\n\tstatic TaskDashboard = 'Tasks Dashboard';\r\n\tstatic SaveReportAs = 'Save Report As';\r\n\tstatic EditFamiliarization = 'Edit Familiarization';\r\n\tstatic AddUserGroups = 'Add User Groups';\r\n\tstatic AddUserGroupParameterWasSuccessful = 'User group \\'{0}\\' added successfully!';\r\n\tstatic WhistleBlowInformation = 'Report Information';\r\n\tstatic UserIsCompanyAdminClaimNotFound = 'User claim \\'userIsCompanyAdmin\\' not found!';\r\n\tstatic EditEventTypeBs = 'Edit Category 2';\r\n\tstatic AddTaskType = 'Add Task Type';\r\n\tstatic DefaultTaskStates = 'Default Task States';\r\n\tstatic TaskPriorityCodeMustBeDefined = 'Task priority name must be defined!';\r\n\tstatic TaskRemainderCheckingAndNotificationStarted = 'Task remainder checking and notification started';\r\n\tstatic Reminder = 'Reminder';\r\n\tstatic InstantMessageChannelUsers = 'Participants';\r\n\tstatic EditSharedDocumentTemplate = 'Edit Shared Document Template';\r\n\tstatic SharedFiltersAndReports = 'Shared Filters and Reports';\r\n\tstatic DeletingEventParameterWasSuccessful = 'Incident \\'{0}\\' removed successfully!';\r\n\tstatic NoFavoritesToShow = 'No favorites to show!';\r\n\tstatic RelatedToDatabaseRecordType = 'Related to';\r\n\tstatic RemovePrint = 'Remove Print';\r\n}\r\n// ReSharper restore InconsistentNaming\r\n","// ReSharper disable InconsistentNaming\r\n/* eslint-disable no-mixed-spaces-and-tabs */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-useless-escape */\r\n/* eslint-disable quotes */\r\n/* eslint-disable indent */\r\n/* eslint-disable no-tabs */\r\n/* eslint-disable camelcase */\r\nexport class Translations_sv_FI {\r\n\tstatic DoYouReallyWantToRemoveTaskPriorityParameter = 'Vill du verkligen ta bort uppgiftsprioriteten \\'{0}\\'?';\r\n\tstatic RemoveTransferredProperty = 'Ta bort överförd egendom';\r\n\tstatic JobResultParameterNotFound = 'Jobbresultat \\'{0}\\' hittades inte!';\r\n\tstatic Identifier = 'Identifierare';\r\n\tstatic PrintParameterDownloaded = 'Utskriften har laddats ner.';\r\n\tstatic FormSizeLarge = 'Stor';\r\n\tstatic NotificationsQueuedSuccessfully = 'Avisering planerad att skickas!';\r\n\tstatic TrainingStartDateStart = 'Träningsstartdatum - Start';\r\n\tstatic Unpublish = 'Avpublicera';\r\n\tstatic EmptyingTaskTrashBinWasSuccessful = 'Papperskorgen är nu tom!';\r\n\tstatic Font = 'Font';\r\n\tstatic DoYouReallyWantToRemoveEventParameter = 'Vill du verkligen ta bort incidenten \\'{0}\\'?';\r\n\tstatic DeletingAttachmentsWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort bilagor! Fel: \\'{0}\\'';\r\n\tstatic ObserverAction = 'ObservatörsÃ¥tgärd';\r\n\tstatic DatabaseCheckingStarted = 'Databaskontroll startade';\r\n\tstatic SavingEventDefaultHandlerParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara standardincidenthanteraren \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic DoYouReallyWantToRemoveRemainderParameter = 'Vill du verkligen ta bort resten \"{0}\"?';\r\n\tstatic View = 'Se';\r\n\tstatic ArchivingWhistleBlowsParameterWasNotSuccessfulErrorParameter = 'Det gick inte att arkivera rapporterna \"{0}\"! Fel: \\'{1}\\'';\r\n\tstatic SavingMessageSendEmailParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara meddelandets e-postlogg \\'{0}\\', eftersom data i e-postloggen har ändrats samtidigt av en annan användare!';\r\n\tstatic AddCompanyToCompanyGroup = 'Lägg till företag i företagsgruppen';\r\n\tstatic WhistleBlowResolutionRejected = 'avvisade';\r\n\tstatic DeletingRecordUserTransferredPropertyParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort den överförda egenskapen \\'{0}\\', eftersom data i den överförda egenskapen har ändrats samtidigt av en annan användare!';\r\n\tstatic VoucherPrefix = 'Verifikationsprefix';\r\n\tstatic SavingRecordUserParameterWasSuccessful = 'Användarposten \\'{0}\\' har sparats!';\r\n\tstatic InternalAttachments = 'Interna bilagor';\r\n\tstatic CalendarTask = 'Händelse';\r\n\tstatic AllCalendarTaskUsers = 'Alla kalenderanvändare';\r\n\tstatic MaximumSizeOfSingleAttachment = 'Maximal storlek pÃ¥ en bilaga är {0} MB!';\r\n\tstatic ShortName = 'Kort namn';\r\n\tstatic DeletingRecordUserParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort användarposten \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic Sorting = 'Sortering';\r\n\tstatic AddingCalendarTaskHandlerWasNotSuccessfulErrorParameter = 'Det gick inte att lägga till ansvariga personer! Fel: \\'{0}\\'';\r\n\tstatic GroupByFamiliarization = 'Gruppera efter bekantskap';\r\n\tstatic DoYouReallyWantToRestoreThisInstantMessage = 'Vill du verkligen Ã¥terställa det här snabbmeddelandet?';\r\n\tstatic DeletingKeywordsParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort sökorden \"{0}\", eftersom data i sökord har ändrats samtidigt av en annan användare!';\r\n\tstatic RecordUserLogEntryTypeReport = 'Rapportering';\r\n\tstatic AddFurtherEducations = 'Lägg till vidareutbildningar';\r\n\tstatic AddNew = 'Lägg till ny';\r\n\tstatic SelectSubject = 'Välj ämne';\r\n\tstatic AccessRightNone = 'inga tillstÃ¥nd';\r\n\tstatic Course = 'Kurs';\r\n\tstatic AddChildEventType = 'Lägg till underkategori 1';\r\n\tstatic FormColumnTitle = 'Kolumns titel';\r\n\tstatic ExternalSystemUserCodeMustBeDefined = 'Användarkod i externt system mÃ¥ste definieras!';\r\n\tstatic SavingRecordUserTransferredPropertyParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara den överförda egenskapen \\'{0}\\', eftersom data i den överförda egenskapen har ändrats samtidigt av en annan användare!';\r\n\tstatic AddChildDefaultEventType = 'Lägg till standardunderkategori 1';\r\n\tstatic DeletingCompaniesParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort företag \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic PropertyTransferred = 'Överförd';\r\n\tstatic DeletingCalendarTaskParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort händelsen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic NewRecordUserMustBeSavedBeforeEmploymentsCanBeAdded = 'Ny användarpost mÃ¥ste sparas innan anställningar kan läggas till!';\r\n\tstatic DoYouReallyWantToRemoveInstantMessageChannelParameter = 'Vill du verkligen ta bort chatten \"{0}\"?';\r\n\tstatic Familiarizations = 'Bekantskaper';\r\n\tstatic Row = 'rad';\r\n\tstatic RemovePicture = 'Ta bort bild';\r\n\tstatic DeletingRecordFurtherEducationGroupParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort vidareutbildningsgruppen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic FormCheckbox = 'Kryssruta';\r\n\tstatic NewCompanyMustBeSavedBeforePartnersCanBeAdded = 'Nytt företag mÃ¥ste sparas innan partner kan läggas till!';\r\n\tstatic RemoveRecordUserAndUserSetExpired = 'Ta bort användarpost och ange användarkonto har löpt ut';\r\n\tstatic InstantMessageChannelAdministrator = 'Administratör';\r\n\tstatic AddEventPartner = 'Lägg till Incident Partner';\r\n\tstatic Employment = 'Sysselsättning';\r\n\tstatic SavingUserGroupParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara användargruppen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic DeletingRecordQualificationsParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort kvalifikationerna \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic SavingEventTypeCParameterWasSuccessful = 'Kategori 3 \\'{0}\\' har sparats!';\r\n\tstatic IncludeArchivedRecordUsers = 'Inkludera arkiverade användaruppgifter';\r\n\tstatic CopyDefaultHandlersToAllSameLevelUnits = 'Kopiera standardhanterare till alla enheter pÃ¥ samma nivÃ¥';\r\n\tstatic WhistleBlowInformantHint = 'Tänk pÃ¥ att beskriva ditt ärende sÃ¥ noggrant som möjligt för att underlätta vÃ¥r utredning.';\r\n\tstatic DeletingEventTypeParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort kategori 1 \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic DeletingRecordUserTransferredPropertiesParameterWasSuccessful = 'Överförda egenskaper \"{0}\" har tagits bort!';\r\n\tstatic InvitationPasswordReset = 'Inbjudan/lösenordsÃ¥terställning';\r\n\tstatic Handlers = 'Hanterare';\r\n\tstatic DeletingRecordUserTransferredPropertyParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort den överförda egenskapen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic MobileAppInUse = 'Mobilapp används';\r\n\tstatic CompanyThatIsRelatedToEventsCannotBeDeleted = 'Företag som har skickat eller tagit emot incidenter kan inte tas bort!';\r\n\tstatic AddEventHandler = 'Lägg till hanterare';\r\n\tstatic RecordUserExcelFurtherEducation = 'Vidareutbildningar';\r\n\tstatic EditAttachment = 'Redigera bilaga';\r\n\tstatic Tasks = 'Uppgifter';\r\n\tstatic SavingCompanyParameterWasSuccessful = 'Företaget \\'{0}\\' har sparats!';\r\n\tstatic AddingRecordUserSalaryRowsWasNotSuccessfulErrorParameter = 'Det gick inte att lägga till lönerader! Fel: \\'{0}\\'';\r\n\tstatic EmailNotificationOfChangedPublishStatus = 'Meddela när publicerade tillstÃ¥ndsändringar via e-post';\r\n\tstatic SavingCompanyGroupParameterWasSuccessful = 'Företagsgruppen \\'{0}\\' har sparats!';\r\n\tstatic ParameterIsNotValidAccountIBANNumber = '\\'{0}\\' är inte ett giltigt bankkonto IBAN-nummer!';\r\n\tstatic YouDeletedThisMessage = 'Du tog bort det här meddelandet';\r\n\tstatic WhistleBlowChannelSettings = 'Inställningar för whistle Blow-kanal';\r\n\tstatic DefaultTaskPriorities = 'Standarduppgiftsprioriteter';\r\n\tstatic DeletingKeywordParameterWasSuccessful = 'Sökordet \"{0}\" har tagits bort!';\r\n\tstatic InstantMessageChannelRemoveFromYourselfFromAdministratorsConfirmation = 'Vill du verkligen ta bort dig själv frÃ¥n administratörer? Endast administratörer kan hantera chatten.';\r\n\tstatic Unkown = 'Okänt';\r\n\tstatic SavingEventSettingsWasNotSuccessfulConcurrencyError = 'Det gick inte att spara incidentinställningarna eftersom incidentinställningarna har ändrats samtidigt av en annan användare!';\r\n\tstatic SavingRecordUserTransferredPropertyParameterWasSuccessful = 'Den överförda egenskapen \\'{0}\\' har sparats!';\r\n\tstatic WhistleBlowInformantDescription = 'Beskriv vad som hänt';\r\n\tstatic DoYouReallyWantToRemoveCalendarTaskParameter = 'Vill du verkligen ta bort händelsen \\'{0}\\'?';\r\n\tstatic SavingRecordUserQualificationParameterWasSuccessful = 'Kvalifikationen \\'{0}\\' har sparats!';\r\n\tstatic SendInvitationEmailToImportedUsers = 'Skicka e-postinbjudan till importerade användare';\r\n\tstatic ActiveUserRightsCannotBeCopiedToDirectoryItemFolderParameter = 'Aktiva behörigheter kan inte kopieras till mappen \\'{0}\\'!';\r\n\tstatic SavingJobParameterWasSuccessful = 'Jobbet \\'{0}\\' har sparats!';\r\n\tstatic Favorites = 'Favoriter';\r\n\tstatic SentEmails = 'Skickade mejl';\r\n\tstatic WhistleBlowReportIHaveSavedThePassword = 'Jag har lagrat lösenordet i den säkra lagringen sÃ¥ att jag kan använda det för att kontrollera status för min rapport.';\r\n\tstatic SearchDocuments = 'Sök i dokument';\r\n\tstatic DoYouReallyWantToUnlockEvent = 'Vill du verkligen lÃ¥sa upp incidenten \\'{0}\\'?';\r\n\tstatic Invoicing = 'Fakturering';\r\n\tstatic ChartType = 'Diagramtyp';\r\n\tstatic Sender = 'Avsändare';\r\n\tstatic DefaultStyle = 'Standard';\r\n\tstatic ReadImp = 'Läsa';\r\n\tstatic AddUserParameterWasSuccessful = 'Användarkontot \\'{0}\\' har lagts till!';\r\n\tstatic RecordUserLogEntryTypeOpen = 'Läsning';\r\n\tstatic ExternalSystemCompanyTokenParameterIsAlreadyInUse = 'Företagstoken \\'{0}\\' används redan!';\r\n\tstatic RecurringCalendarTaskCannotHaveMoreThanParameterOccurences = 'Ã…terkommande uppgift kan inte ha fler än {0} förekomster!';\r\n\tstatic UsersOfThisCompany = 'Användare av Mitt företag';\r\n\tstatic EmploymentEndDate = 'Slutdatum för anställning';\r\n\tstatic JobDataIsEmpty = 'Jobbdata saknas!';\r\n\tstatic SavingCalendarTaskParameterWasSuccessful = 'Händelsen \\'{0}\\' har sparats!';\r\n\tstatic UpdateUserGroupParameterExternalSystemsWasNotSuccessfulConcurrencyError = 'Det gick inte att länka användargruppen \\'{0}\\' till externa system, eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic ExpiredFurtherEducations = 'UtgÃ¥ngna vidareutbildningar';\r\n\tstatic SavingUnitsWasNotSuccessfulErrorParameter = 'Det gick inte att spara enheter! Fel: \\'{0}\\'';\r\n\tstatic WhistleBlowAnonymityAnonymous = 'Anonym';\r\n\tstatic TaskDataRowFieldParameterNotFoundInDataSchema = 'Uppgiftsradsfältet \\'{0}\\' hittades inte i dataschemat!';\r\n\tstatic CalendarTaskEditOccurrence = 'Redigera förekomst';\r\n\tstatic DoYouReallyWantToRemoveEventUrgencyClassParameter = 'Vill du verkligen ta bort brÃ¥dskande klass \\'{0}\\'?';\r\n\tstatic UserFilterActive = 'Aktiva användarkonton';\r\n\tstatic CompanyNameMustBeDefined = 'Företagets namn mÃ¥ste anges!';\r\n\tstatic SavingEventParameterWasSuccessful = 'Incidenten \\'{0}\\' har sparats!';\r\n\tstatic LockingEventParameterWasNotSuccessful = 'Det gick inte att lÃ¥sa incidenten \\'{0}\\'!';\r\n\tstatic AdditionalInformation = 'ytterligare information';\r\n\tstatic SetUnitPermissions = 'Ställ in enhetsbehörigheter';\r\n\tstatic PrintRow = 'Skriv ut rad';\r\n\tstatic TimeSpanHalfYear = 'HalvÃ¥r';\r\n\tstatic ExpiresInParameterDays = 'GÃ¥r ut om {0} dagar';\r\n\tstatic SavingEventTypeCParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara kategori 3 \\'{0}\\', eftersom data i kategori 3 har ändrats samtidigt av en annan användare!';\r\n\tstatic EditableDocumentCodeMustBeDefined = 'Dokumentnamn mÃ¥ste definieras!';\r\n\tstatic EditFurtherEducation = 'Redigera Vidareutbildning';\r\n\tstatic EventTypeCodeMustBeDefined = 'Kategori 1 namn mÃ¥ste definieras!';\r\n\tstatic No = 'Nej';\r\n\tstatic RemoveEvent = 'Ta bort incidenten';\r\n\tstatic ChooseHowYouWantToReport = 'Välj hur du vill rapportera';\r\n\tstatic ChangedObserverAction = 'Ändrad händelseobservatörsÃ¥tgärd';\r\n\tstatic FormCodeIsAlreadyInUse = 'Formulärnamnet används redan!';\r\n\tstatic RecordUserReport = 'Användarpostrapport';\r\n\tstatic RecordUserActiveStateChangePermissionDeniedInUnitParameter = 'Arkiverad tillstÃ¥ndsändring är inte tillÃ¥ten i enheten \\'{0}\\'!';\r\n\tstatic DoYouReallyWantToRemoveRecordUserParameter = 'Vill du verkligen ta bort användarposten \"{0}\"?';\r\n\tstatic Go = 'GÃ¥';\r\n\tstatic FormRowPrint = 'Radutskrift';\r\n\tstatic TimeSpanMonth = 'MÃ¥nad';\r\n\tstatic RemoveDefaultTaskType = 'Ta bort standarduppgiftstyp';\r\n\tstatic SavingRecordFurtherEducationGroupParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara vidareutbildningsgruppen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic ReadReceiptMessage = 'Meddelande som kräver läskvitto';\r\n\tstatic DeletingDocumentTemplateParameterWasSuccessful = 'Dokumentmallen \\'{0}\\' har tagits bort!';\r\n\tstatic DeletingUserGroupUsersOfCompanyParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort användargruppsanslutningar relaterade till företaget \\'{0}\\', eftersom data i dessa användargruppanslutningar har ändrats samtidigt av en annan användare!';\r\n\tstatic DeletingEventTypeParameterWasSuccessful = 'Kategori 1 \\'{0}\\' har tagits bort!';\r\n\tstatic FamiliarizationsMustBeDefinedBeforeAddingRecordUserFamiliarizations = 'Företagsbekännelser mÃ¥ste definieras innan bekantskaper med användarposter läggs till!';\r\n\tstatic AddFolder = 'Lägg till mapp';\r\n\tstatic Locked = 'LÃ¥st';\r\n\tstatic UserProfile = 'Användarkonto';\r\n\tstatic InstantMessageChannelArchivingTypeRemoveChannelAtDateParameter = 'Ta bort arkiverad chatt och meddelanden pÃ¥ {0}';\r\n\tstatic Users = 'Användarkonton';\r\n\tstatic SelectOperatorOrFunction = 'Välj operatör eller funktion';\r\n\tstatic ExternalSystemDatabaseInterfaceError = 'Externt eSalkku-systemdatabasgränssnittsfel!';\r\n\tstatic PublishVoucherInOutReportToFileSystem = 'Publicera kupongsammanfattning Skriv ut till filsystem';\r\n\tstatic DeletingMessageTypeParameterWasNotSuccessfulUsedInParameterMessages = 'Det gick inte att ta bort meddelandetypen \\'{0}\\', eftersom meddelandetypen används i {1} meddelanden!';\r\n\tstatic LockedEventParameterCannotBeDeleted = 'LÃ¥st incident \\'{0}\\' kan inte tas bort!';\r\n\tstatic TaskStateCodeIsAlreadyInUse = 'Namnet pÃ¥ uppgiftens tillstÃ¥nd används redan!';\r\n\tstatic ClearSubUnitPermissions = 'Rensa underenhetsbehörigheter';\r\n\tstatic DaysAgo30 = '30 dagar sedan';\r\n\tstatic SavingImagesWasSuccessful = 'Bilderna har sparats!';\r\n\tstatic SavingDocumentTemplateParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara dokumentmallen \\'{0}\\', eftersom data i dokumentmallen har ändrats samtidigt av en annan användare!';\r\n\tstatic JobTypePushNotification = 'Push Notification';\r\n\tstatic AddTaskState = 'Lägg till uppgiftsstatus';\r\n\tstatic SavingTaskStateParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara uppgiftstillstÃ¥ndet \\'{0}\\', eftersom data i uppgiftstillstÃ¥ndet har ändrats samtidigt av en annan användare!';\r\n\tstatic DoYouReallyWantToRemoveFolderParameter = 'Vill du verkligen ta bort mappen \\'{0}\\'?';\r\n\tstatic CopyContentToDocumentContent = 'Kopiera innehÃ¥ll till dokumentinnehÃ¥ll';\r\n\tstatic LanguageNonLocalSwedish = 'Svenska';\r\n\tstatic LanguageSwedish = 'svenska';\r\n\tstatic SavePrintAs = 'Spara utskrift som';\r\n\tstatic WhistleBlowStateNew = 'Ny';\r\n\tstatic EventTypesMustBeDefinedBeforeAddingEvents = 'Kategori 1 mÃ¥ste definieras innan incidenter läggs till!';\r\n\tstatic AType = 'Typ';\r\n\tstatic KeywordParameterNotFound = 'Sökordet \\'{0}\\' hittades inte!';\r\n\tstatic AdditionalPermissionAWhistleBlow = 'Kan kommunicera med informatör';\r\n\tstatic Characters = 'Tecken';\r\n\tstatic ReadReceiptGiven = 'Kvitto skickat';\r\n\tstatic WhistleBlowGuide = 'Guide för rapportering';\r\n\tstatic WhistleBlowResolutionResolved = 'Löst';\r\n\tstatic DeletingWhistleBlowCategoryParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort kategorin \"{0}\" för whistle blow eftersom data i kategorin \"whistle blow\" har ändrats samtidigt av en annan användare!';\r\n\tstatic UserGroupParameterIsInUseInParameterUsersAndCannotBeDeleted = 'Användargruppen \\'{0}\\' används av {1} användare och kan inte tas bort!';\r\n\tstatic FormExpression = 'Uttryck';\r\n\tstatic FieldParameterMaxLengthIsParameter = 'Fältet \\'{0}\\' maxlängd är {0} tecken!';\r\n\tstatic AddingCalendarTaskHandlersWasSuccessful = 'Tillskottet av ansvariga personer var framgÃ¥ngsrikt!';\r\n\tstatic DeletingEditableDocumentParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort dokumentet \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic InstantMessageChannelInformation = 'Chattinformation';\r\n\tstatic RecordBasicEducationCodeMustBeDefined = 'Grundutbildningens namn mÃ¥ste definieras!';\r\n\tstatic MyFilters = 'Användarens filter';\r\n\tstatic Day = 'Dag';\r\n\tstatic SavingImagesNotSuccessfulErrorParameter = 'Det gick inte att spara bilder! Fel: \\'{0}\\'';\r\n\tstatic DeletingTaskDataRowWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort uppgiftsraden eftersom data i uppgiftsraden har ändrats samtidigt av en annan användare!';\r\n\tstatic DeletingUserParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort användarkontot \\'{0}\\' eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic RemoveUnit = 'Ta bort enheten';\r\n\tstatic TheUserDoesNotHavePermissionsForThisSystem = 'Användaren har inte behörighet att använda detta system!';\r\n\tstatic EditableDocument = 'Dokumentera';\r\n\tstatic NewCompanyGroupMustBeSavedBeforeUsersCanBeAdded = 'Ny företagsgrupp mÃ¥ste sparas innan företag kan läggas till!';\r\n\tstatic DeletingCalendarTaskCategoriesParameterWasSuccessful = 'Kategorierna \"{0}\" har tagits bort!';\r\n\tstatic RemoveEventHandler = 'Ta bort hanteraren';\r\n\tstatic SavingTaskTypeParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara uppgiftstypen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic List = 'Lista';\r\n\tstatic ErrorUserChangeWouldLeadToInvalidDefaultEventHandlers = 'Användarändringar kommer att leda till situationer där vissa standardincidenthanterare eller meddelade personer inte har behörighet att hantera incidenter med enheter. Ändringar som pÃ¥verkar standardincidenthanterare eller meddelade personer kan endast göras i dialogrutan \"Incidentegenskaper\"!';\r\n\tstatic SavingInstantMessageChannelParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara chatten \"{0}\", eftersom data i chatten har ändrats samtidigt av en annan användare!';\r\n\tstatic ExpiredFamiliarizations = 'UtgÃ¥ngna bekantskaper';\r\n\tstatic AddPhoto = 'Lägg till foto';\r\n\tstatic AllDocumentTypes = 'Visa alla dokumenttyper';\r\n\tstatic DeletingDocumentTemplatesParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort dokumentmallarna \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic FormTitle4 = 'Titel 4';\r\n\tstatic ValidityEndDate = 'Slutdatum för giltighet';\r\n\tstatic InstantMessages = 'Snabbmeddelanden';\r\n\tstatic WhistleBlowRecords = 'Uppgifter';\r\n\tstatic LockedTaskParameterCannotBeSaved = 'Uppgiften \\'{0}\\' har lÃ¥sts till en annan användare och den kan inte sparas!';\r\n\tstatic SelectTaskPriority = 'Välj Uppgiftsprioritet';\r\n\tstatic SavingCompanyGroupParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara företagsgruppen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic FormTextAreaSize = 'Höjd';\r\n\tstatic AccessRightWriteInstantMessages = 'Företagsintern och intercompany-chatt';\r\n\tstatic SSRSParameterReportsFetched = '{0} rapporter hämtade frÃ¥n SSRS';\r\n\tstatic Hidden = 'Dold';\r\n\tstatic ReadReceiptRequired = 'Läskvitto krävs';\r\n\tstatic DeletingUserGroupParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort användargruppen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic CompanyTaskTypesInstruction = 'Observera att modifiering av form som används i uppgifter har effekt pÃ¥ uppgiftens formulärdata (formulärdata som sparas för uppgifter kan gÃ¥ förlorade). Du kan lägga till ett nytt formulär genom att klicka pÃ¥ knappen +.';\r\n\tstatic DeletingUserGroupParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort användargruppen \\'{0}\\' eftersom data i användargruppen har ändrats samtidigt av en annan användare!';\r\n\tstatic SavingMessageSendEmailParameterWasSuccessful = 'E-postloggen \\'{0}\\' har sparats!';\r\n\tstatic SavingRecordFamiliarizationParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara bekantskapen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic DeletingRecordQualificationParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort kvalifikationen \\'{0}\\' eftersom data i kvalificeringen har ändrats samtidigt av en annan användare!';\r\n\tstatic LockedToUser = 'LÃ¥st av användare';\r\n\tstatic OperationNotAllowedForRootFolderParameter = 'Operation är inte tillÃ¥ten för rotmappen \\'{0}\\'!';\r\n\tstatic FormExpressionFormatMinutesToHoursAndMinutes = 'FrÃ¥n minuter till timmar och minuter';\r\n\tstatic MessageModuleProperties = 'Egenskaper för aktuella ämnen';\r\n\tstatic FormWidthMobile = 'Bredd i mobilapp';\r\n\tstatic AddFamiliarization = 'Lägg till ytterligare bekantskap';\r\n\tstatic EventType = 'Kategori 1';\r\n\tstatic Parameters = 'Parametrar';\r\n\tstatic FolderPath = 'Mappväg';\r\n\tstatic TaskParameterNotFound = 'Uppgiften \\'{0}\\' hittades inte!';\r\n\tstatic ActivePlural = 'Aktiva';\r\n\tstatic ReadingDatabaseParameter = 'Läser databasen \\'{0}\\'...';\r\n\tstatic SearchEndDate = 'Slutdatum';\r\n\tstatic BankBICCode = 'Bankens BIC-kod';\r\n\tstatic JobTitleMustBeDefined = 'Arbetstitel mÃ¥ste definieras!';\r\n\tstatic RecordFurtherEducationGroupCodeIsAlreadyInUse = 'Vidareutbildningsgruppen namn används redan!';\r\n\tstatic WebPageStyle = 'Sidstil';\r\n\tstatic SavingMessageTypeParameterWasSuccessful = 'Meddelandetypen \\'{0}\\' har sparats!';\r\n\tstatic DeletingWhistleBlowCategoryParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort kategorin \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic SelectTaskInListToSeeThePreview = 'Välj uppgift i listan för att se förhandsgranskningen';\r\n\tstatic DoYouReallyWantToRemoveUserGroupParameter = 'Vill du verkligen ta bort användargruppen \\'{0}\\'?';\r\n\tstatic ReminderHoursBefore = 'timmar innan';\r\n\tstatic Handling = 'Hantering';\r\n\tstatic EventHandlerParameterNotFound = 'Hanteraren \\'{0}\\' hittades inte!';\r\n\tstatic UnitIsRelatedToEventPartner = 'Enheten är relaterad till incidentpartner';\r\n\tstatic ValidPlural = 'Giltig';\r\n\tstatic Camera = 'Kamera';\r\n\tstatic CalendarTaskRepetitionRepeatIntervalPrefix = 'Ã…terkommer varje';\r\n\tstatic DefaultEventSettings = 'Standardinställningar för incidenter';\r\n\tstatic UserRecordStatisticsUserAccountConnectedCards = 'Användarkonto anslutna kort';\r\n\tstatic UserIsActiveInWeb = 'Användarkontot är aktivt i webbapplikationen.';\r\n\tstatic FormDatesAndTimes = 'Datum och tider';\r\n\tstatic DeletingEventUrgencyClassesParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort brÃ¥dskande klasser \\'{0}\\'! Fel: \\'{1}\\'!';\r\n\tstatic AdditionalPermissionAMessage = 'TillstÃ¥nd att läsa meddelanden publicerade av partners';\r\n\tstatic SavingEventMessageWasNotSuccessfulErrorParameter = 'Det gick inte att spara kommentaren! Fel: \\'{0}\\'';\r\n\tstatic Log = 'Loggar';\r\n\tstatic Change = 'Förändra';\r\n\tstatic FormTitle1 = 'Titel 1';\r\n\tstatic NoFilters = 'Inga filter!';\r\n\tstatic TaskHandlers = 'Handlare';\r\n\tstatic SavingInstantMessageWasSuccessful = 'Snabbmeddelandet har sparats!';\r\n\tstatic AllLogisticVoucherCustomers = 'Alla kunder';\r\n\tstatic SavingTaskPriorityParameterWasSuccessful = 'Uppgiftsprioritet \\'{0}\\' har sparats!';\r\n\tstatic GroupByHalfYear = 'Gruppera efter halvÃ¥r';\r\n\tstatic PermissionToCreateEvents = 'TillstÃ¥nd att skapa incidenter';\r\n\tstatic ModifiedActions = 'Ändrade Ã¥tgärder';\r\n\tstatic CalendarTaskHandlers = 'Synlighet';\r\n\tstatic DoYouReallyWantToSave = 'Vill du spara?';\r\n\tstatic SavingRecordUserQualificationParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara kvalifikationen \\'{0}\\', eftersom data i kvalificeringen har ändrats samtidigt av en annan användare!';\r\n\tstatic Public = 'offentlig';\r\n\tstatic DoYouReallyWantToRemoveRecordQualificationParameter = 'Vill du verkligen ta bort kvalifikationen \\'{0}\\'?';\r\n\tstatic WorkShift = 'Arbetsskift';\r\n\tstatic SelectUser = 'Välj Användarkonto';\r\n\tstatic Trigonometry = 'Trigonometri';\r\n\tstatic ThisMessageWasDeleted = 'Detta meddelande raderades';\r\n\tstatic UserRecords = 'Användarregister';\r\n\tstatic SavingEventTypeCParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara kategori 3 \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic AddingRecordUserFamiliarizationsWasSuccessful = 'Bekantskaper har lagts till!';\r\n\tstatic EditDefaultBasicEducation = 'Redigera Standard Grundutbildning';\r\n\tstatic MessageType = 'Meddelandetyp';\r\n\tstatic YouHaveNotSavedChangesDoYouWantToSaveChanges = 'Du har inte sparat ändringar som du har gjort. Vill du spara ändringar?';\r\n\tstatic InstantMessageChannelUserParameterIsNotAllowedToUseChannelParameter = 'Användaren \\'{0}\\' har inte behörighet att använda chatten \\'{1}\\'!';\r\n\tstatic FileChangesCheckingAndEmailingFinishedInParameterSeconds = 'Filändringskontroll och e-post har slutförts (varaktighet: {0:N0}s, fel: {1}, filer: {2}, e-postmeddelanden: {3})';\r\n\tstatic AddUserGroupParameterWasNotSuccessfulErrorParameter = 'Det gick inte att lägga till användargruppen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic DefaultBasicEducations = 'Grundläggande utbildningar';\r\n\tstatic WhistleBlowArchivingTypeChangeStateAndRemoveAllData = 'Ändra tillstÃ¥nd för rapport till \"Arkiverad\" och behÃ¥ll endast information som behövs för statistik';\r\n\tstatic SelectCompanyGroupOrCompany = 'Välj Företagsgrupp eller Företag';\r\n\tstatic WhistleBlowInformant = 'Informant';\r\n\tstatic DesignArea = 'DesignomrÃ¥de';\r\n\tstatic EditableDocumentSaveBeforeApproveConfirmation = 'Vill du spara ändringar i dokumentet innan godkännande?';\r\n\tstatic EmptyDocument = 'Tomt dokument';\r\n\tstatic FormPrint = 'Skriv ut';\r\n\tstatic DeletingOneTimePasswordWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort engÃ¥ngslösenordet eftersom data i engÃ¥ngslösenordet har ändrats samtidigt av en annan användare!';\r\n\tstatic Color = 'Färg';\r\n\tstatic RecordUserExcelFamiliarization = 'Bekantskaper';\r\n\tstatic Wage = 'Lön';\r\n\tstatic SavingDirectoryItemDocumentParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara filen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic Salary = 'Lön';\r\n\tstatic RemoveNotifiedPerson = 'Ta bort person som ska meddelas';\r\n\tstatic PrivateAndPublic = 'Privat och offentlig';\r\n\tstatic LockedCalendarTaskParameterCannotBeDeleted = 'Den lÃ¥sta uppgiften \\'{0}\\' kan inte tas bort!';\r\n\tstatic DeletingCalendarTaskCategoryParameterWasSuccessful = 'Kategori \\'{0}\\' har tagits bort!';\r\n\tstatic InstantMessageChannelUsersNotUsable = 'Användaren tillhör inte längre chattdeltagare';\r\n\tstatic AddTaskHandler = 'Lägg till hanterare';\r\n\tstatic FormTitle2 = 'Titel 2';\r\n\tstatic EventTypeBParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted = 'Kategori 2 \"{0}\" underkategorier används i {1} incidenter och kategori 2 kan inte tas bort!';\r\n\tstatic Target = 'MÃ¥l';\r\n\tstatic WhistleBlowResolutionTypeMustBeDefined = 'Upplösning mÃ¥ste definieras! Du kan ocksÃ¥ ange upplösningsbeskrivning.';\r\n\tstatic CopyDefaultHandlers = 'Kopiera standardhanterare';\r\n\tstatic InvitationParameterHasBeenExpired = 'Inbjudan \\'{0}\\' har löpt ut!';\r\n\tstatic SavingCalendarTaskCategoryParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara kategori \\'{0}\\', eftersom data i kategorin har ändrats samtidigt av en annan användare!';\r\n\tstatic CompanyGroupCodeIsAlreadyInUse = 'Koden för företagsgruppen används redan!';\r\n\tstatic Interval = 'Intervall';\r\n\tstatic LogEventType = 'Typ';\r\n\tstatic DeletingTaskPrioritiesParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort uppgiftsprioriteterna \"{0}\", eftersom data i uppgiftsprioriteterna har ändrats samtidigt av en annan användare!';\r\n\tstatic DeletingTaskDataRowWasSuccessful = 'Uppgiftsraden har tagits bort!';\r\n\tstatic DeletingRecordFamiliarizationsParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort bekantskapen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic UpdatingDatabase = 'Uppdaterar databas...';\r\n\tstatic PreviewPanel = 'Förhandsvisning';\r\n\tstatic MessageTypes = 'Meddelandetyper';\r\n\tstatic NewRow = 'Ny rad';\r\n\tstatic LanguageFinnish = 'finska';\r\n\tstatic Copy = 'Kopiera';\r\n\tstatic CopyDocumentsFromCompany = 'Kopiera dokument frÃ¥n detta företag';\r\n\tstatic RemoveDefaultTaskState = 'Ta bort standarduppgiftsstatus';\r\n\tstatic PushNotificationInUse = 'Jag vill ta emot push-meddelanden (eSalkku Mobile)';\r\n\tstatic FormulaMin = 'Minimum';\r\n\tstatic FolderCannotBeMovedToItsSubFolder = 'Mapp kan inte flyttas i sin egen undermapp!';\r\n\tstatic StudyWeeks = 'Studieveckor';\r\n\tstatic And = 'och';\r\n\tstatic AddPartners = 'Lägg till partners';\r\n\tstatic FormDecimals = 'Decimaler';\r\n\tstatic SaveCalendarTaskConfirmation = 'Vill du spara händelsen?';\r\n\tstatic FormNormalText = 'Text';\r\n\tstatic EditFileFilter = 'Redigera filfilter';\r\n\tstatic SavingMessageSendEmailParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara meddelandets e-postlogg \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic CalendarTaskRepetitionCountSuffix = 'uppspelning';\r\n\tstatic UserCodeMustBeDefined = 'Användarnamn mÃ¥ste definieras!';\r\n\tstatic DefaultEventUrgencyClassParameterCannotBeDeleted = 'Standard brÃ¥dskande klass kan inte tas bort!';\r\n\tstatic SavingSettingsWasSuccessful = 'Inställningarna har sparats!';\r\n\tstatic WhistleBlowInternalMessageConfirmation = 'Vill du spara ett nytt internt meddelande?';\r\n\tstatic EventTypeBCodeMustBeDefined = 'Kategori 2 namn mÃ¥ste definieras!';\r\n\tstatic PreventiveAction = 'Förebyggande Ã¥tgärd';\r\n\tstatic DownloadDocument = 'Öppna/ladda ner valda filer/dokument';\r\n\tstatic CalendarTaskRepetitionRepeatIntervalDayMonthSeparator = 'i';\r\n\tstatic SelectRecordUserTypeToBeCreated = 'Välj användarposttyp för ny post';\r\n\tstatic UserParameterNotFound = 'Användaren \\'{0}\\' hittades inte!';\r\n\tstatic DeletingRecordUserTransferredPropertiesParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort överförda egenskaper \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic ReminderHourBefore = 'timme innan';\r\n\tstatic PageName = 'Sidnamn';\r\n\tstatic TrainingTime = 'Träningsdags';\r\n\tstatic InvalidReCAPTCHA = 'Mänsklig verifiering misslyckades! Är du en robot?';\r\n\tstatic WhistleBlowApplicationName = 'Whistle Blow Channel';\r\n\tstatic RemoveLogisticVoucherCustomerPaymentSetting = 'Ta bort betalningsinställning';\r\n\tstatic DeletingCompaniesParameterWasSuccessful = 'Företagen \\'{0}\\' har tagits bort!';\r\n\tstatic City = 'Stad';\r\n\tstatic SavingEventTypeBParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara kategori 2 \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic AddTransferredPropertyToMultipleUserRecords = 'Lägg till överförd egendom till flera användarposter';\r\n\tstatic LogoSquare = 'Liten logotyp';\r\n\tstatic RemoveTaskPriority = 'Ta bort uppgiftsprioritet';\r\n\tstatic TaskTypeParameterIsInUseInParameterTasksAndCannotBeDeleted = 'Formulär \\'{0}\\' används i {1} uppgifter och kan inte tas bort!';\r\n\tstatic NoToDos = 'Inga öppna saker att göra';\r\n\tstatic AddFamiliarizations = 'Lägg till bekantskaper';\r\n\tstatic Payer = 'Betalare';\r\n\tstatic ApproveEventHandlerConfirmation = 'Avhjälpande Ã¥tgärder har inte definierats. Vill du verkligen godkänna händelsen?';\r\n\tstatic RowAmountIncludedInPrint = 'Radbelopp som ingÃ¥r i tryckt';\r\n\tstatic DeletingRecordBasicEducationsParameterWasSuccessful = 'Grundutbildningen \\'{0}\\' har tagits bort!';\r\n\tstatic NewRecordUserMustBeSavedBeforeFurtherEducationsCanBeAdded = 'Ny användarpost mÃ¥ste sparas innan ytterligare utbildningar kan läggas till!';\r\n\tstatic SavingTaskDataRowWasNotSuccessfulErrorParameter = 'Det gick inte att spara uppgiftsraden! Fel: \\'{0}\\'';\r\n\tstatic UserIsWhistleBlowChannelAdminAndCannotBeDeleted = 'Användaren är visselblÃ¥sningschanel administratör och kan inte raderas!';\r\n\tstatic SelectTaskState = 'Välj Task State';\r\n\tstatic DoYouReallyWantToRemoveTaskHandlerParameter = 'Vill du verkligen ta bort hanteraren \\'{0}\\'?';\r\n\tstatic WhistleBlowSourceOral = 'Oral';\r\n\tstatic TransportCompany = 'Transportföretag';\r\n\tstatic Header = 'Rubrik';\r\n\tstatic Payee = 'Betalningsmottagare';\r\n\tstatic DeletingDocumentTemplateParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort dokumentmallen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic TaskModuleProperties = 'Uppgifter Egenskaper';\r\n\tstatic EventReceiverIsPartnerCompany = 'Incidentmottagare är partnerföretag';\r\n\tstatic DeletingInstantMessageUserParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort deltagaren \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic ChangeLanguage = 'Ändra sprÃ¥k';\r\n\tstatic AddWhistleBlowChannelAdminsParameterWasSuccessful = 'Administratörer \"{0}\" har lagts till!';\r\n\tstatic AddWhistleBlowChannelAdminParameterWasSuccessful = 'Administratören \\'{0}\\' har lagts till!';\r\n\tstatic Familiarization = 'Bekantskap';\r\n\tstatic HandlersMustBeDefined = 'Hanterare mÃ¥ste definieras!';\r\n\tstatic AccountNumberTkbInCredit = 'Försäljningskonto';\r\n\tstatic SavingDefaultHandlersWasNotSuccessfulErrorParameter = 'Det gick inte att spara standardhanterare! Fel: \\'{0}\\'';\r\n\tstatic AddRow = 'Lägg till rad';\r\n\tstatic NoInstantMessageChannelsToShow = 'Inga chattar att visa!';\r\n\tstatic EditLogisticVoucherCompanyPaymentSetting = 'Redigera betalningsinställning';\r\n\tstatic NoEvents = 'Inga händelser';\r\n\tstatic DeletingTaskDataRowWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort uppgiftsraden! Fel: \\'{0}\\'';\r\n\tstatic ExcelFile = 'Excel-fil';\r\n\tstatic DeletingRecordUserEmploymentsParameterWasSuccessful = 'Anställningar \"{0}\" har tagits bort!';\r\n\tstatic InstantMessageChannelMustHaveAtLeastOneAdministrator = 'Chatten mÃ¥ste ha minst en administratör!';\r\n\tstatic EmailMessage = 'Skicka meddelande via e-post';\r\n\tstatic GroupByMonth = 'Gruppera efter mÃ¥nad';\r\n\tstatic SavingEditableDocumentParameterApprovalWasSuccessful = 'Dokumentet \\'{0}\\' har godkänts!';\r\n\tstatic OtherSettings = 'Övriga egenskaper';\r\n\tstatic DocumentRootPath = 'Dokumentrotsökväg';\r\n\tstatic FormBoldFont = 'Fet stil';\r\n\tstatic ChartGenerationFailed = 'Det gick inte att skapa diagram!';\r\n\tstatic RemovingTaskHandlerWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort hanterare! Fel: \\'{0}\\'';\r\n\tstatic SetPermissions = 'Ange behörigheter';\r\n\tstatic AddCompaniesParameterWasSuccessful = 'Företag \\'{0}\\' har lagts till!';\r\n\tstatic FormCalculated = 'Beräknad';\r\n\tstatic RemoveRemainder = 'Ta bort resten';\r\n\tstatic FormTimeSpan = 'Tidsbelopp (h:mm)';\r\n\tstatic AddingAddRecordUserQualificationsWasNotSuccessfulErrorParameter = 'Det gick inte att lägga till kvalifikationer! Fel: \\'{0}\\'';\r\n\tstatic End = 'Slutet';\r\n\tstatic ThisMessageWasDeletedByInstantMessageChannelAdministrator = 'Det här meddelandet raderades av administratören, \\'{0}\\'';\r\n\tstatic DeletingRecordBasicEducationParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort grundutbildningen \\'{0}\\', eftersom data i grundutbildningen har ändrats samtidigt av en annan användare!';\r\n\tstatic ReadMode = 'Läsläge';\r\n\tstatic DeletingEventPartnerParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort incidentpartnern \\'{0}\\' eftersom data i incidentpartnern har ändrats samtidigt av en annan användare!';\r\n\tstatic EmailingMessageWasNotSuccessfulErrorParameter = 'Det gick inte att skicka meddelande via e-post! Fel: \\'{0}\\'';\r\n\tstatic RecordUserQualificationParameterNotFound = 'Användarpostens kvalificeringspost \\'{0}\\' hittades inte!';\r\n\tstatic AddFamiliarizationToMultipleUserRecords = 'Lägg till bekantskap till flera användarposter';\r\n\tstatic Subject = 'Ämne';\r\n\tstatic SharedReportAllCompanies = 'Delas med alla företag';\r\n\tstatic DoYouReallyWantToRemoveSelectedFileFilters = 'Vill du verkligen ta bort valda filfilter?';\r\n\tstatic Loading = 'Läser in...';\r\n\tstatic MessageTypeParameterNotFound = 'Meddelandetypen \\'{0}\\' hittades inte!';\r\n\tstatic FileFilters = 'Filfilter';\r\n\tstatic AddInstantMessageChannel = 'Lägg till chatt';\r\n\tstatic FileFilterCodeMustBeDefined = 'Filfilterkod mÃ¥ste definieras!';\r\n\tstatic UpdateUserParameterExternalSystemsWasSuccessful = 'Användaren \\'{0}\\' har länkats till externa system!';\r\n\tstatic DocumentRootPathIsNotEmpty = 'Dokumentets rotsökväg är inte tom mapp!';\r\n\tstatic TaskStateCodeMustBeDefined = 'Namnet pÃ¥ uppgiftens tillstÃ¥nd mÃ¥ste definieras!';\r\n\tstatic DraftCannotBeApprovedDoYouWantToSaveDraftAnyway = 'Utkast kan inte godkännas! Vill du ändÃ¥ spara utkast (godkännande kommer inte att sparas)?';\r\n\tstatic RecordParameterUnlockingFailedRecordIsWriteLockedToUserParameter = 'Det gick inte att lÃ¥sa upp posten \\'{0}\\'! Posten är skrivlÃ¥st till användaren \\'{0}\\'!';\r\n\tstatic ShowPublishVersion = 'Visa publicerad version';\r\n\tstatic FormUsableInSearchFilter = 'Användbar i sökfilter';\r\n\tstatic TrainingEndDate = 'Slutdatum för träning';\r\n\tstatic RecordUserEmploymentParameterNotFound = 'Användarregister anställningspost \\'{0}\\' hittades inte!';\r\n\tstatic ApplicationTempPathParameterNotFound = 'Tillämpningsmappen \\'{0}\\' hittades inte!';\r\n\tstatic LogisticVoucherCustomer = 'Kund';\r\n\tstatic Download = 'Ladda ner';\r\n\tstatic MaxSearchResultCount = 'Max antal sökresultat';\r\n\tstatic NewUserMustBeSavedBeforeUserGroupsCanBeAdded = 'Ny användare mÃ¥ste sparas innan användargrupper kan läggas till!';\r\n\tstatic CustomStyleClass = 'Klassnamn för anpassad stil';\r\n\tstatic RecordFurtherEducationCodeMustBeDefined = 'Vidareutbildningens namn mÃ¥ste anges!';\r\n\tstatic RemoveUserFromUserGroup = 'Ta bort användarkonto frÃ¥n användargrupp';\r\n\tstatic DoYouReallyWantToRemoveSelectedUsers = 'Vill du verkligen ta bort valda användare?';\r\n\tstatic InTesting = 'I testning';\r\n\tstatic DeletingEventParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort incidenten \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic VoucherInOutReportSavePath = 'Verifikationssammanfattning Skriv ut Spara sökväg';\r\n\tstatic SavingUnitPermissionsWasSuccessful = 'Enhetsbehörigheterna har sparats!';\r\n\tstatic SelectEventReceiver = 'Välj Incident Receiver';\r\n\tstatic MovingFilesAndDocumentsToFolderParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att flytta filer/dokument till mappen \"{0}\", eftersom data i mappen har ändrats samtidigt av en annan användare!';\r\n\tstatic RemoveRow = 'Ta bort rad';\r\n\tstatic RecordUserExcelTabName = 'Användarregister';\r\n\tstatic SavingJobParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara jobbet \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic Banner = 'Baner';\r\n\tstatic Portrait = 'Porträtt';\r\n\tstatic DoYouReallyWantToRemoveSelectedHandlers = 'Vill du verkligen ta bort valda hanterare?';\r\n\tstatic TaskMustBeSavedBeforeAttachmentsCanBeAdded = 'Uppgiften mÃ¥ste sparas innan bilagor kan läggas till!';\r\n\tstatic RememberMe = 'Kom ihÃ¥g mig';\r\n\tstatic SavingTaskPriorityParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara uppgiftsprioritet \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic BannerPath = 'Banner mapp';\r\n\tstatic ShowArchived = 'Visa arkiverad';\r\n\tstatic AddQualification = 'Lägg till kvalifikation';\r\n\tstatic RemovingTaskHandlersWasSuccessful = 'Hanterare har tagits bort!';\r\n\tstatic DoYouReallyWantToSaveData = 'Vill du verkligen spara?';\r\n\tstatic Months = 'mÃ¥nader';\r\n\tstatic WhistleBlowInformantHasReadMessage = 'Informatören i en visselblÃ¥sningsrapport har läst ditt meddelande';\r\n\tstatic DocumentTemplateCodeIsAlreadyInUse = 'Dokumentmallskoden används redan!';\r\n\tstatic EventSenderIsPartnerCompany = 'Incidentavsändaren är partnerföretag';\r\n\tstatic SelectInstantMessageChannelUser = 'Välj deltagare';\r\n\tstatic FamiliarizationStartDateStart = 'Bekantskap Startdatum - Start';\r\n\tstatic AddFile = 'Lägg till fil';\r\n\tstatic DeletingEventUrgencyClassParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort brÃ¥dskande klass \\'{0}\\'! Fel: \\'{1}\\'!';\r\n\tstatic FormRequired = 'Indata krävs';\r\n\tstatic UserModuleProperties = 'Egenskaper för användarkonton';\r\n\tstatic SearchProperties = 'avancerad sökning';\r\n\tstatic ReminderDayBefore = 'dagen före';\r\n\tstatic NoDataToShow = 'Inga data att visa!';\r\n\tstatic CalendarTaskStartDateMustBeDefined = 'Händelsens starttid mÃ¥ste definieras!';\r\n\tstatic EditDocumentTemplate = 'Redigera dokumentmall';\r\n\tstatic InstantMessageChannelOneUser = 'Chatt';\r\n\tstatic Errors = 'Fel';\r\n\tstatic FormShowInRow = 'Använd i rad';\r\n\tstatic ExpireTime = 'UtgÃ¥ngstid';\r\n\tstatic DeletingCompanyGroupParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort företagsgruppen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic TaskStatesMustBeDefinedBeforeAddingTasks = 'UppgiftstillstÃ¥nd mÃ¥ste definieras innan uppgifter läggs till!';\r\n\tstatic Folder = 'Mapp';\r\n\tstatic RemoveInstantMessageChannelUser = 'Ta bort deltagare';\r\n\tstatic DoYouReallyWantToRemoveRecordFamiliarizationParameter = 'Vill du verkligen ta bort bekantskapen \"{0}\"?';\r\n\tstatic Resolution = 'Upplösning';\r\n\tstatic ReportDialogInfoText = 'Rapporten kommer att baseras pÃ¥ sökta/filtrerade rader.';\r\n\tstatic FirstNameMustBeDefined = 'Förnamn mÃ¥ste definieras!';\r\n\tstatic CalendarTaskRemoveOccurrence = 'Ta bort förekomst';\r\n\tstatic SaveToTemplate = 'Spara som mall';\r\n\tstatic ImmediateAction = 'Avhjälpande Ã¥tgärd';\r\n\tstatic MoveDown = 'Flytta nedÃ¥t';\r\n\tstatic PaymentSettings = 'Betalningsinställningar';\r\n\tstatic Folders = 'Mappar';\r\n\tstatic Max = 'Max';\r\n\tstatic CostCentreNumber = 'Kostnadsställenummer';\r\n\tstatic SendingNotificationsWasNotSuccessfulErrorParameter = 'Det gick inte att skicka aviseringar! Fel: \\'{0}\\'';\r\n\tstatic ShowUsers = 'Visa användarkonton';\r\n\tstatic FormulaMultiplication = 'Multiplikation';\r\n\tstatic NewRecordUserMustBeSavedBeforeQualificationsCanBeAdded = 'Ny användarpost mÃ¥ste sparas innan kvalifikationer kan läggas till!';\r\n\tstatic SavingEventUrgencyClassParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara brÃ¥dskande klass \\'{0}\\', eftersom data i brÃ¥dskande klassen har ändrats samtidigt av en annan användare!';\r\n\tstatic ProcessingTimeDays = 'Behandlingstid (d)';\r\n\tstatic AddRows = 'Lägg till rader';\r\n\tstatic NotInUse = 'Används inte';\r\n\tstatic AutomaticLogoutDone = 'Automatisk utloggning gjord pÃ¥ grund av utgÃ¥ngen användarsession!';\r\n\tstatic UserRecordStatisticsExpiredFurtherEducations = 'UtgÃ¥ngna vidareutbildningar';\r\n\tstatic DeletingUsersParameterWasSuccessful = 'Användarkonton \\'{0}\\' har tagits bort!';\r\n\tstatic EmailAddress = 'E-post';\r\n\tstatic DoYouReallyWantToRemoveEventTypeParameter = 'Vill du verkligen ta bort kategori 1 \\'{0}\\'?';\r\n\tstatic AddPartnersParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att lägga till partner \"{0}\", eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic Others = 'Andra';\r\n\tstatic LogSizeInDays = 'Loggstorlek i dagar (0 = ingen gräns)';\r\n\tstatic EditTask = 'Redigera uppgift';\r\n\tstatic AddUserParameterWasNotSuccessfulErrorParameter = 'Det gick inte att lägga till användarkontot \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic NormalMessage = 'Normalt meddelande';\r\n\tstatic PositionErrorPermissionDenied = 'Applikationen har inte behörighet att läsa plats.';\r\n\tstatic PermissionsToCreateEventsToEventPartner = 'TillstÃ¥nd att skapa incidenter till partner';\r\n\tstatic AddMessage = 'Lägg till meddelande';\r\n\tstatic FormMaximumValue = 'Maximalt värde';\r\n\tstatic VoucherSavePath = 'Voucher Spara sökväg';\r\n\tstatic DoYouReallyWantToRemoveChartPanelParameter = 'Vill du verkligen ta bort diagrammet \\'{0}\\'?';\r\n\tstatic DeletingFileFiltersParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort filfiltren \"{0}\", eftersom data i filfiltren har ändrats samtidigt av en annan användare!';\r\n\tstatic SavingOptionParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara alternativet \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic DirectoryItemFolderParameterNotFound = 'Mappen \\'{0}\\' hittades inte!';\r\n\tstatic Picture = 'Bild';\r\n\tstatic TrainingStartDateEnd = 'Utbildningens startdatum - slut';\r\n\tstatic NoModifications = 'Inga ändringar';\r\n\tstatic ReportGenerationAborted = 'Rapportskapandet avbröts!';\r\n\tstatic SelectComponentInFormToSeeComponentProperties = 'Välj en komponent frÃ¥n formuläret för att se dess egenskaper';\r\n\tstatic PaymentSetting = 'Betalningsinställning';\r\n\tstatic FormulaSqrt = 'Kvadratrot';\r\n\tstatic LogEventTime = 'Tid';\r\n\tstatic Remainder = 'Ã…terstoden';\r\n\tstatic PrivacyPolicy = 'Integritetspolicy';\r\n\tstatic AddingTaskHandlersWasSuccessful = 'Hanterare har lagts till!';\r\n\tstatic DoYouReallyWantToRemoveTaskDataRow = 'Vill du verkligen ta bort rad?';\r\n\tstatic LockingTaskDataRowWasNotSuccessful = 'Det gick inte att lÃ¥sa uppgiftsraden!';\r\n\tstatic EditEditableDocument = 'Redigera dokument';\r\n\tstatic FolderParameterAlreadyExistsInTargetFolder = 'Mappen \\'{0}\\' finns redan i mÃ¥lmappen!';\r\n\tstatic ValidityEndDateEnd = 'Giltighet Slutdatum - Slut';\r\n\tstatic NotSelected = 'Ej valt';\r\n\tstatic Filter = 'Filtrera';\r\n\tstatic Description = 'Beskrivning';\r\n\tstatic DeletingMessageParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort meddelandet \\'{0}\\' eftersom data i meddelandet har ändrats samtidigt av en annan användare!';\r\n\tstatic Code = 'Koda';\r\n\tstatic DeletingTaskTypesParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort uppgiftstyperna \"{0}\", eftersom data i uppgiftstyperna har ändrats samtidigt av en annan användare!';\r\n\tstatic MessageEndDate = 'Synlig till';\r\n\tstatic ReadImpPlur = 'Läsa';\r\n\tstatic SharedReports = 'Delade rapporter';\r\n\tstatic SavingEventTypeBsWasSuccessful = 'Kategori 2 har sparats framgÃ¥ngsrikt!';\r\n\tstatic SavingAttachmentsWasNotSuccessfulErrorParameter = 'Det gick inte att spara bilagor! Fel: \\'{0}\\'';\r\n\tstatic DeletingRecordQualificationParameterWasSuccessful = 'Kvalifikationen \\'{0}\\' har tagits bort!';\r\n\tstatic AddingAddRecordUserFurtherEducationsWasNotSuccessfulErrorParameter = 'Det gick inte att lägga till ytterligare utbildningar! Fel: \\'{0}\\'';\r\n\tstatic WhistleBlowStatisticsReceivedRecords = 'Fick rapporter';\r\n\tstatic Summary = 'Sammanfattning';\r\n\tstatic ThisPartOfApplicationIsNotInUse = 'Denna del av applikationen används inte!';\r\n\tstatic DeletingEditableDocumentParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort dokumentet \\'{0}\\' eftersom data i dokumentet har ändrats samtidigt av en annan användare!';\r\n\tstatic JobTypeEventNotification = 'Incidentmeddelande';\r\n\tstatic EditEventPartner = 'Redigera Incident Partner';\r\n\tstatic CalendarTaskEndDateMustBeAfterStartDate = 'Händelsens sluttid mÃ¥ste vara efter starttiden!';\r\n\tstatic PasteDefaultHandlers = 'Klistra in standardhanterare';\r\n\tstatic IndirectCosts = 'Indirekta kostnader';\r\n\tstatic SavingDirectoryItemDocumentParameterWasSuccessful = 'Filen \\'{0}\\' har sparats!';\r\n\tstatic DeletingWhistleBlowChannelAdminsParameterWasSuccessful = 'Administratörer \"{0}\" har tagits bort!';\r\n\tstatic CourseCredits = 'Kurspoäng';\r\n\tstatic AllInstantMessageUsersHaveReadMessage = 'Alla mottagare har läst ditt meddelande';\r\n\tstatic DeletingWhistleBlowChannelAdminParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort administratören \\'{0}\\' eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic InstantMessageChannelUserParameterNotFound = 'Chattpartiet \\'{0}\\' hittades inte!';\r\n\tstatic DoYouReallyWantToRemoveRecordBasicEducationParameter = 'Vill du verkligen ta bort grundläggande utbildning \\'{0}\\'?';\r\n\tstatic SavingMessageSendPushParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara push-meddelandeloggen \\'{0}\\', eftersom data i push-meddelandeloggen har ändrats samtidigt av en annan användare!';\r\n\tstatic Move = 'Flytta';\r\n\tstatic Employments = 'Anställningar';\r\n\tstatic UserIsActiveInMobile = 'Användarkontot är aktivt i mobilapplikationen.';\r\n\tstatic AddComment = 'Lägg till kommentar';\r\n\tstatic AddAtleastOneInstantMessageChannelUsersToInstantMessageChannel = 'Lägg till minst en deltagare i chatten!';\r\n\tstatic DoYouReallyWantToRemoveFilterParameter = 'Vill du verkligen ta bort filtret \"{0}\"?';\r\n\tstatic ReportsStandard = 'Standardrapporter';\r\n\tstatic Warning = 'Varning';\r\n\tstatic GeneralAttachments = 'Allmänna bilagor';\r\n\tstatic FormTitle3 = 'Titel 3';\r\n\tstatic FormSortAscending = 'Stigande ordning';\r\n\tstatic FirstListRow = 'Första listraden';\r\n\tstatic DeletingFileFiltersParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort filfiltren \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic WhistleBlowChannelWasNotFound = 'Whistle blow kanal hittades inte!';\r\n\tstatic LoggedInCompanyCannotBeDeleted = 'Företaget kan inte ta bort sig själv!';\r\n\tstatic RemoveQualification = 'Ta bort kvalifikation';\r\n\tstatic FileParameterDownloaded = 'Filen \\'{0}\\' har laddats ned.';\r\n\tstatic PermissionsForSections = 'Avsnitt i bruk';\r\n\tstatic AddingAttachmentParameterWasNotSuccessfulErrorParameter = 'Det gick inte att lägga till bilagan \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic TiedostoturvaUseType = 'Tiedostoturva';\r\n\tstatic FormulaAddition = 'Tillägg';\r\n\tstatic CompanyGroupParameterNotFound = 'Företagsgruppen \\'{0}\\' hittades inte!';\r\n\tstatic RowInformation = 'Radinformation';\r\n\tstatic AddCompaniesParameterWasNotSuccessfulErrorParameter = 'Det gick inte att lägga till företag \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic StudyWeek = 'Studievecka';\r\n\tstatic UnlockingEditableDocumentParameterWasNotSuccessful = 'Det gick inte att lÃ¥sa upp dokumentet \\'{0}\\'!';\r\n\tstatic TheSystemDoesNotSupportYourWebBrowserUpdateToLatestBrowserVersion = 'Detta system stöder inte din webbläsare. Uppdatera din webbläsare till senaste versionen.';\r\n\tstatic DoYouReallyWantToRemoveAttachmentParameter = 'Vill du verkligen ta bort bilagan \\'{0}\\'?';\r\n\tstatic TimeSpanTwoYears = 'TvÃ¥ Ã¥r';\r\n\tstatic AdditionalFunctions = 'Ytterligare funktioner';\r\n\tstatic DirectoryItemDocumentParameterNotFound = 'Filen \\'{0}\\' gillar inte!';\r\n\tstatic WhistleBlowSendReport = 'Skicka rapport';\r\n\tstatic ValidityEndDateStart = 'Giltighetsslutdatum - Start';\r\n\tstatic RemoveRecordUserAndKeepUser = 'Ta bort användarpost och behÃ¥ll användarkonto';\r\n\tstatic InternalMessages = 'Interna meddelanden';\r\n\tstatic WhistleBlowNewReport = 'Ny rapport';\r\n\tstatic ImportingUsersParameterWasSuccessful = 'Användarkonton \\'{0}\\' har importerats!';\r\n\tstatic FamiliarizationStartDate = 'Startdatum för bekantskap';\r\n\tstatic SavingEventMessageWasSuccessful = 'Kommentaren har sparats!';\r\n\tstatic AddUsersParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att lägga till användarkonton \"{0}\", eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic UnreadMessagesParameter = 'Olästa meddelanden: {0}';\r\n\tstatic AddPartnerParameterWasNotSuccessfulErrorParameter = 'Det gick inte att lägga till partner \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic DeletingCalendarTaskCategoriesParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort kategorierna \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic ValidityDate = 'Giltighetsdatum';\r\n\tstatic CalendarTaskRepetitionCountPrefix = 'Efter';\r\n\tstatic WhistleBlowEventTypeHandlersAdded = 'Handlare har lagts till';\r\n\tstatic AllJobTitles = 'Alla jobbtitlar';\r\n\tstatic AddSharedDocumentTemplate = 'Lägg till delad dokumentmall';\r\n\tstatic DocumentTypes = 'Dokumenttyper';\r\n\tstatic AddUserGroupParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att lägga till användargruppen \\'{0}\\' eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic RemoveTask = 'Ta bort uppgift';\r\n\tstatic DeletingPartnerParameterWasSuccessful = 'Partnern \\'{0}\\' har tagits bort!';\r\n\tstatic ApplicationTempPathIsNotSpecified = 'Application temp-mapp är inte specificerad!';\r\n\tstatic RemoveUserGroupExternalSystemsWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort användargrupplänkar frÃ¥n externa system, eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic SavingDefaultHandlersWasSuccessful = 'Standardhanterare har sparats!';\r\n\tstatic EventUrgencyClassParameterNotFound = 'BrÃ¥dskande klass \\'{0}\\' hittades inte!';\r\n\tstatic FormDisabled = 'IngÃ¥ng avaktiverad';\r\n\tstatic AddPartnersParameterWasSuccessful = 'Partners \\'{0}\\' har lagts till!';\r\n\tstatic UserFilterExpired = 'UtgÃ¥nget';\r\n\tstatic DeletingUserGroupsParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort användargrupperna \\'{0}\\' eftersom data i användargrupper har ändrats samtidigt av en annan användare!';\r\n\tstatic PublishVoucherToFileSystem = 'Publicera voucher till filsystem';\r\n\tstatic ReplyToInstantMessage = 'Svara pÃ¥ meddelande';\r\n\tstatic FolderNameConstainsIllegalCharacters = 'Mappnamnet innehÃ¥ller olagliga tecken (<, >, :, \", /, \\, |, ? tai *) eller sÃ¥ slutar det med olagliga tecken (., \\' \\')!';\r\n\tstatic RemoveFile = 'Ta bort fil';\r\n\tstatic NewMenu = 'Ny meny';\r\n\tstatic Task = 'Uppgift';\r\n\tstatic PushEndpoint = 'Tryck pÃ¥ Endpoint';\r\n\tstatic SavingApplicationPermissionsWasNotSuccessfulConcurrencyError = 'Det gick inte att spara systembehörigheter eftersom data i systembehörigheter har ändrats samtidigt av en annan användare!';\r\n\tstatic Add = 'Lägg till';\r\n\tstatic DeletingRecordUserEmploymentParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort anställningen \\'{0}\\', eftersom data i anställningen har ändrats samtidigt av en annan användare!';\r\n\tstatic AccessRightReadInstantMessages = 'Företagsintern chatt';\r\n\tstatic ExitingInstantMessageChannelWasSuccessful = 'Chatten avslutades!';\r\n\tstatic EventParameterUnitChangedFromParameterToParameter = 'Incident \\'{0}\\' enhet ändrades frÃ¥n \\'{1}\\' till \\'{2}\\'.';\r\n\tstatic DoYouReallyWantToUnlockEditableDocument = 'Vill du verkligen lÃ¥sa upp dokumentet \\'{0}\\'?';\r\n\tstatic UserAccountNotConnected = 'Användarkonto inte anslutet';\r\n\tstatic All = 'Allt';\r\n\tstatic FieldParameterValueCanOnlyContainNumbers = 'Värdet pÃ¥ fältet \\'{0}\\' kan bara innehÃ¥lla siffror!';\r\n\tstatic PrintRecordUser = 'Skriv ut användarpost';\r\n\tstatic RemoveDocumentTemplate = 'Ta bort dokumentmall';\r\n\tstatic IncludeOnlyActiveUsers = 'Inkludera endast användare med aktivt användarkonto och nuvarande arbetsplats';\r\n\tstatic AddFileOrTakePicture = 'Lägg till en fil eller ta en bild';\r\n\tstatic DaysAgo90 = '90 dagar sedan';\r\n\tstatic SavingRecordEmploymentParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara anställningen \\'{0}\\', eftersom data i anställningen har ändrats samtidigt av en annan användare!';\r\n\tstatic DoYouReallyWantToClearLog = 'Vill du verkligen rensa loggen?';\r\n\tstatic OldPassword = 'Gammalt lösenord';\r\n\tstatic RemoveForm = 'Ta bort formulär';\r\n\tstatic ProcessingFolderParameter = '* Bearbetar mappen \\'{0}\\'...';\r\n\tstatic WhistleBlowCategoryParameterNotFound = 'Det gick inte att hitta kategorin \"{0}\" för visselblÃ¥sning!';\r\n\tstatic ShowUserGroups = 'Visa användargrupper';\r\n\tstatic TaskTypeParameterNotFound = 'Formuläret \\'{0}\\' hittades inte!';\r\n\tstatic ClearSubFolderPermissions = 'Rensa undermappsbehörigheter';\r\n\tstatic AddDefaultFurtherEducationGroup = 'Lägg till standardgrupp för vidareutbildning';\r\n\tstatic NewInstantMessageChannel = 'Ny chatt';\r\n\tstatic FamiliarizationEndDate = 'Slutdatum för bekantskap';\r\n\tstatic ReminderWeeksBefore = 'veckor innan';\r\n\tstatic RecordFamiliarizationParameterNotFound = 'Bekantskap \\'{0}\\' hittades inte!';\r\n\tstatic WebPushError = 'Web Push-fel';\r\n\tstatic DocumentTemplateCodeMustBeDefined = 'Dokumentmallskod mÃ¥ste definieras!';\r\n\tstatic SaveUserFurtherEducationConfirmation = 'Vill du spara vidareutbildningen?';\r\n\tstatic OpenWhistleBlowInstruction = 'Ange lösenordet som du fick när whistleblow-rapporten skickades in.';\r\n\tstatic WhistleBlowSeverityUnspecified = 'Ospecificerad';\r\n\tstatic FurtherEductionGroupParameterContainsFurtherEducationsAndCannotBeDeleted = 'Vidareutbildningsgruppen \\'{0}\\' innehÃ¥ller vidareutbildningar och kan inte tas bort!';\r\n\tstatic NoAddedEventTypes = 'Inga tillagda kategorier!';\r\n\tstatic SavingEventParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara incidenten \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic DoYouReallyWantToExitInstantMessageChannel = 'Vill du verkligen avsluta chatten?';\r\n\tstatic DoCleanLog = 'Rensa logg';\r\n\tstatic RecordFurtherEducationCodeIsAlreadyInUse = 'Vidareutbildningens namn används redan!';\r\n\tstatic EventCreator = 'Skapare';\r\n\tstatic PermissionsForSystems = 'Systembehörigheter';\r\n\tstatic ReadError = 'Läsfel!';\r\n\tstatic FolderParameterAlreadyExistsInFileSystem = 'Mappen \\'{0}\\' finns redan i filsystemet!';\r\n\tstatic SaveDraft = 'Spara utkast';\r\n\tstatic FormNumbers = 'Tal';\r\n\tstatic DeletingInstantMessageWasSuccessful = 'Snabbmeddelandet har tagits bort!';\r\n\tstatic FormulaFloor = 'Avrundad till nedÃ¥t';\r\n\tstatic EditMessageType = 'Redigera meddelandetyp';\r\n\tstatic EditTaskPriority = 'Redigera uppgiftsprioritet';\r\n\tstatic UsedQuota = 'Använd kvot';\r\n\tstatic Panels = 'Paneler';\r\n\tstatic LockedTaskParameterCannotBeMovedToTrashBin = 'Den lÃ¥sta uppgiften \\'{0}\\' kan inte flyttas till papperskorgen!';\r\n\tstatic FolderTreePermissions = 'Mappträdsbehörigheter';\r\n\tstatic FormShowModifyDate = 'Visa ändringsdatum';\r\n\tstatic WhistleBlowNotFound = 'Visslingsrapport hittades inte!';\r\n\tstatic ShowInheritedPermissions = 'Visa ärvda behörigheter';\r\n\tstatic SaveInstantMessageChannelConfirmation = 'Vill du spara chatten?';\r\n\tstatic AllEventHandlersHaveReadMessage = 'Alla incidenthanterare har läst din kommentar';\r\n\tstatic AdditionalPermissionBEventsDialog = 'Ta bort incidenten';\r\n\tstatic DefaultEventHandlers = 'Standardincidenthanterare';\r\n\tstatic SavingWhistleBlowCategoryParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara kategorin \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic AddFileFilter = 'Lägg till filfilter';\r\n\tstatic IncludeArchivedFamiliarizations = 'Inkludera arkiverade bekantskaper';\r\n\tstatic TaskDataRow = 'Uppgiftsrad';\r\n\tstatic LockedTaskParameterCannotBeRestored = 'Den lÃ¥sta uppgiften \\'{0}\\' kan inte Ã¥terställas!';\r\n\tstatic Preview = 'Förhandsvisning';\r\n\tstatic ExternalSystemCompanyCodeClaimNotFound = 'Användarens ansprÃ¥k \\'externalSystemCompanyCode\\' hittades inte!';\r\n\tstatic WhistleBlowStateResolved = 'Löst';\r\n\tstatic SavingCalendarTaskParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara händelsen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic DocumentsNotFound = 'Dokumenten hittades inte!';\r\n\tstatic ComparingFileSystemToDatabase = 'Jämför filsystem med databas...';\r\n\tstatic RequestPasswordChangeTitle = 'Glömt lösenordet?';\r\n\tstatic DeletingDocumentTemplateParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort dokumentmallen \\'{0}\\', eftersom data i dokumentmallen har ändrats samtidigt av en annan användare!';\r\n\tstatic TaxNumber = 'Skattenummer';\r\n\tstatic AddingRecordUserFamiliarizationsWasNotSuccessfulErrorParameter = 'Det gick inte att lägga till bekantskaper! Fel: \\'{0}\\'';\r\n\tstatic Archived = 'Arkiverad';\r\n\tstatic RemoveInvalidDefaultEventHandlersConfirmation = 'Vissa standardincidenthanterare eller anmälda personer har inte behörighet att hantera incidenter med enheter. Vill du automatiskt ta bort dessa incidenthanterare eller meddelade personer innan du sparar nya inställningar?';\r\n\tstatic FormModifyDate = 'Ändringsdatum';\r\n\tstatic InstantMessageChannelContainsParameterInstantMessageUsersAndCannotBeDeleted = 'Chatten har andra deltagare och kan inte tas bort!';\r\n\tstatic NewRecordUserMustBeSavedBeforeFamiliarizationsCanBeAdded = 'Ny användarpost mÃ¥ste sparas innan bekantskaper kan läggas till!';\r\n\tstatic DocumentsSelected = 'valda dokument';\r\n\tstatic AuthorizationLevelUser = 'Användare';\r\n\tstatic ScopeCanBeChanged = 'Omfattning kan ändras';\r\n\tstatic WhistleBlowReceiver = 'Mottagare';\r\n\tstatic DefaultEventUrgencyClassMustBeDefinedBeforeAddingEvents = 'Standard brÃ¥dskande klass mÃ¥ste definieras innan incidenter läggs till!';\r\n\tstatic WhistleBlowInformantMustBeNotifiedLatestAtParameter = 'Visselslagsrapport mÃ¥ste markeras som löst {0} senast!';\r\n\tstatic SearchCalendarTasks = 'Sök händelser';\r\n\tstatic EventTypesGeneric = 'Typer';\r\n\tstatic DeletingEditableDocumentParameterWasSuccessful = 'Dokumentet \"{0}\" har tagits bort!';\r\n\tstatic FormInitializeFromSavedRow = 'Initiera frÃ¥n sparad rad';\r\n\tstatic RootCause = 'Grundorsak';\r\n\tstatic CostCentreName = 'Kostnadsställets namn';\r\n\tstatic ReadReceiptNotGiven = 'Kvittot ej skickat';\r\n\tstatic SavingOneTimePasswordWasNotSuccessfulConcurrencyError = 'Det gick inte att spara engÃ¥ngslösenordet eftersom data i engÃ¥ngslösenordet har ändrats samtidigt av en annan användare!';\r\n\tstatic AddLogisticVoucherCompanyPaymentSetting = 'Lägg till betalningsinställning';\r\n\tstatic LoggedInUser = 'Inloggad användare';\r\n\tstatic UserCodeMustBeValid = 'Användarnamnet mÃ¥ste vara 8-50 tecken lÃ¥ngt och det fÃ¥r inte innehÃ¥lla blanksteg.';\r\n\tstatic PreviewRowPrint = 'Förhandsgranska (radutskrift)';\r\n\tstatic SavingCalendarTaskParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara händelsen \\'{0}\\', eftersom uppgiften har ändrats samtidigt av en annan användare!';\r\n\tstatic TargetsMyCompany = 'Synlighet - Mitt företag';\r\n\tstatic FieldParameterContainsInvalidCodeCharacters = 'Värdet pÃ¥ fältet \\'{0}\\' innehÃ¥ller tecken som är olagliga i koder ( \\, ^, ?, &, <, >, /, +, :) eller sÃ¥ slutar det med olagliga tecken (.)!';\r\n\tstatic LogisticVoucher = 'Transportfaktura';\r\n\tstatic AccessRightWriteTasks = 'Skapa och hantera uppgifter';\r\n\tstatic NewInstantMessageChannelMustBeSavedBeforeUsersCanBeAdded = 'Ny chatt mÃ¥ste sparas innan deltagare kan läggas till!';\r\n\tstatic RecordUserParameterNotFound = 'Användarposten \\'{0}\\' hittades inte!';\r\n\tstatic EventTypes = 'Kategori 1';\r\n\tstatic NormalSize = 'Normal storlek';\r\n\tstatic WhistleBlowSeverityLow = 'LÃ¥g';\r\n\tstatic TypeMustBeDefined = 'Typ mÃ¥ste definieras!';\r\n\tstatic ConfirmPassword = 'Bekräfta lösenord';\r\n\tstatic Logo = 'Logotyp';\r\n\tstatic DoYouReallyWantToRemoveKeywordParameterItIsUsedByParameterDocuments = 'Vill du verkligen ta bort sökordet \"{0}\"? Nyckelord som används i {1} filer/dokument.';\r\n\tstatic ChangeToEditMode = 'Byt till redigeringsläge';\r\n\tstatic FormCalculatedDecimalNumber = 'Beräknat decimaltal';\r\n\tstatic SharedDocumentTemplates = 'Delade dokumentmallar';\r\n\tstatic SavingEventMessageWasNotSuccessfulConcurrencyError = 'Det gick inte att spara kommentaren eftersom data i kommentaren har ändrats samtidigt av en annan användare!';\r\n\tstatic DeletingAttachmentsParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort bilagorna \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic ProjectName = 'Projektnamn';\r\n\tstatic DoYouReallyWantToRemoveSelectedRecordFurtherEducations = 'Vill du verkligen ta bort utvalda vidareutbildningar?';\r\n\tstatic DocumentVersionParameterNotFound = 'Dokumentversion \\'{0}\\' hittades inte!';\r\n\tstatic SelectRemovingMethod = 'Välj ta bort metod';\r\n\tstatic Partners = 'Partners';\r\n\tstatic ExpiringIn120Days = 'Inkludera utbildningar som löper ut om 120 dagar';\r\n\tstatic DeletingRecordFurtherEducationParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort vidareutbildning \\'{0}\\', eftersom data i vidareutbildningen har ändrats samtidigt av en annan användare!';\r\n\tstatic Publish = 'Publicera';\r\n\tstatic SavingRecordBasicEducationParameterWasSuccessful = 'Grundutbildningen \\'{0}\\' har sparats!';\r\n\tstatic Report = 'Rapportera';\r\n\tstatic SelectCompany = 'Välj Företag';\r\n\tstatic MessageTypeCodeIsAlreadyInUse = 'Meddelandetypskoden används redan!';\r\n\tstatic Weekly = 'Varje vecka';\r\n\tstatic PageNameMustBeDefined = 'Sidnamn mÃ¥ste definieras!';\r\n\tstatic LockedCalendarTaskParameterCannotBeSaved = 'Uppgiften \\'{0}\\' har lÃ¥sts till en annan användare och den kan inte sparas!';\r\n\tstatic LogLine = 'Logglinje';\r\n\tstatic SendEmailInvitationConfirmation = 'Vill du verkligen skicka inbjudan till systemet via e-post?';\r\n\tstatic SSRSRefreshStarted = 'SSRS-uppdatering startade';\r\n\tstatic Version = 'Version';\r\n\tstatic RemoveUser = 'Ta bort användarkonto';\r\n\tstatic AddPermission = 'Lägg till rättighet';\r\n\tstatic RecordEmailNotificationType = 'Jag vill fÃ¥ rapport om vidareutbildningar (UtgÃ¥ngsutbildningar)';\r\n\tstatic DeletingOneTimePasswordWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort engÃ¥ngslösenordet! Fel: \\'{0}\\'';\r\n\tstatic TaskMustBeSavedBeforeCalendarTasksCanBeAdded = 'Uppgiften mÃ¥ste sparas innan händelser kan läggas till!';\r\n\tstatic ParameterPercentOfFileStorageQuotaUsed = '{0}% av fillagringskvoten använd';\r\n\tstatic PasswordChangeRequestParameterNotFound = 'Begäran om lösenordsändring \\'{0}\\' hittades inte!';\r\n\tstatic EducationsAndCompetencies = 'Utbildningar och kompetenser';\r\n\tstatic Priority = 'Prioritet';\r\n\tstatic AddCompanyGroup = 'Lägg till företagsgrupp';\r\n\tstatic DeletingUserParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort användarkontot \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic AddUsersParameterWasSuccessful = 'Användarkonton \\'{0}\\' har lagts till!';\r\n\tstatic FormulaSin = 'Sinus';\r\n\tstatic EmployeeTypeMustBeDefined = 'Anställningsform mÃ¥ste definieras!';\r\n\tstatic CompanyTaskTypes = 'Företagsformer';\r\n\tstatic SavingUserParametersWasSuccessful = 'Användaralternativ har sparats!';\r\n\tstatic SendingEmailToParameter = 'Skickar e-post till adressen \\'{0}\\'...';\r\n\tstatic RemoveLogisticVoucherCustomer = 'Ta bort kund';\r\n\tstatic SavingRecordEmploymentParameterWasSuccessful = 'Anställningen \\'{0}\\' har sparats!';\r\n\tstatic Properties = 'Egenskaper';\r\n\tstatic FormMaxTextLength = 'Maximal textlängd';\r\n\tstatic RemoveFamiliarization = 'Ta bort bekantskaper';\r\n\tstatic CompanyModuleProperties = 'Företagsfastigheter';\r\n\tstatic UserTypeClaimNotFound = 'AnvändaransprÃ¥ket \"användartyp\" hittades inte!';\r\n\tstatic ArchiveExpiredFamiliarizations = 'Arkivera utgÃ¥ngna bekantskaper';\r\n\tstatic EditableDocumentVersionMustBeDefined = 'Dokumentets versionsnummer mÃ¥ste definieras!';\r\n\tstatic InstantMessage = 'Snabbmeddelande';\r\n\tstatic UserCannotRecieveEmailNotifications = 'Användaren kommer inte att fÃ¥ e-postmeddelanden';\r\n\tstatic Starts = 'Startar';\r\n\tstatic DeletingDirectoryItemDocumentParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort filen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic EventTypeCCodeIsAlreadyInUse = 'Kategori 3-namnet används redan!';\r\n\tstatic AddPartnerParameterWasSuccessful = 'Partner \\'{0}\\' har lagts till!';\r\n\tstatic PasswordIsTooShort = 'Lösenordet är för kort!';\r\n\tstatic RenamingFileParameterWasNotSuccessfulErrorParameter = 'Det gick inte att byta namn pÃ¥ filen (\\'{0}\\' => \\'{1}\\') i filsystemet! Fel: \\'{2}\\'';\r\n\tstatic WhistleBlowEventTypeAttachmentsAdded = 'Bilagor har lagts till';\r\n\tstatic SavingReportWasNotSuccessfulErrorParameter = 'Det gick inte att spara rapporten! Fel: \\'{0}\\'';\r\n\tstatic ArchiveExpiredFurtherEducations = 'Arkiv UtgÃ¥tt Vidareutbildningar';\r\n\tstatic DetectingLocation = 'Upptäcker plats...';\r\n\tstatic SavingFilterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara filtret eftersom data i filtret har ändrats samtidigt av en annan användare!';\r\n\tstatic Phone = 'Telefon';\r\n\tstatic FormExpressionEditor = 'Uttrycksredigerare';\r\n\tstatic FiltersStandard = 'Standardfilter';\r\n\tstatic SelectFurtherEducation = 'Välj vidareutbildning';\r\n\tstatic DocumentsParameterOverwriteConfirmation = 'Filerna \\'{0}\\' finns redan i mappen. Vill du skriva över dessa filer?';\r\n\tstatic FormDefaultValue = 'Standardvärde';\r\n\tstatic NotificationSettings = 'Aviseringsinställningar';\r\n\tstatic JobParameterNotFound = 'Jobbet \\'{0}\\' hittades inte!';\r\n\tstatic Month = 'MÃ¥nad';\r\n\tstatic ModifiedDescription = 'Ändrad beskrivning';\r\n\tstatic EditableDocumentCodeIsAlreadyInUse = 'Dokumentnamnet används redan!';\r\n\tstatic LastListRow = 'Sista listraden';\r\n\tstatic DocumentParameterAlreadyExists = 'Dokumentet \\'{0}\\' finns redan i mappen!';\r\n\tstatic SelectEventPartner = 'Välj Incident Partner';\r\n\tstatic NewInstantMessageChannelGroupInternal = 'Ny grupp (företagsintern)';\r\n\tstatic WhistleBlowEventTypeHandlersRemoved = 'Handlare borttagna';\r\n\tstatic SendinEmailNotificationsWasNotSuccessfulErrorParameter = 'Det gick inte att skicka aviseringar till via e-post! Fel: \\'{0}\\'';\r\n\tstatic DoYouReallyWantToRemoveSelectedEventUrgencyClasses = 'Vill du verkligen ta bort utvalda brÃ¥dskande klasser?';\r\n\tstatic DoYouReallyWantToRemoveTaskParameterPermanenty = 'Vill du verkligen ta bort uppgiften \"{0}\" permanent? Den borttagna uppgiften kan inte Ã¥terställas?';\r\n\tstatic CompanyRole = 'Företagsroll';\r\n\tstatic AddToHomeScreen = 'Lägg till pÃ¥ hemskärmen';\r\n\tstatic RecordUsersFound = 'Användarposter hittades';\r\n\tstatic NewRecordUserMustBeSavedBeforeAttachmentsCanBeAdded = 'Ny användarpost mÃ¥ste sparas innan bilagor kan läggas till!';\r\n\tstatic SavingEditableDocumentParameterPublishWasNotSuccessfulErrorParameter = 'Det gick inte att publicera dokumentet \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic Entrepreneur = 'Entreprenör';\r\n\tstatic SendingEmails = 'Skickar e-postmeddelanden...';\r\n\tstatic EditWhistleBlow = 'Redigera Whistle Blow Report';\r\n\tstatic DeletingTaskStateParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort uppgiftstillstÃ¥ndet \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic AddDefaultBasicEducation = 'Lägg till standard grundutbildning';\r\n\tstatic Yesterday = 'I gÃ¥r';\r\n\tstatic AddEventUrgencyClass = 'Lägg till brÃ¥dskande klass';\r\n\tstatic FileNameConstainsIllegalCharacters = 'Filnamnet innehÃ¥ller förbjudna tecken (<, >, :, \", /, \\, |, ? eller *) eller slutar med förbjudna tecken (., \\' \\')!';\r\n\tstatic NoImagesToShow = 'Inga bilder att visa';\r\n\tstatic DoYouReallyWantToRemoveSelectedTaskPriorities = 'Vill du verkligen ta bort valda uppgiftsprioriteringar?';\r\n\tstatic EditDefaultEventType = 'Redigera standardkategori 1';\r\n\tstatic RemoveAttachment = 'Ta bort bilaga';\r\n\tstatic FirstName = 'Förnamn';\r\n\tstatic CalendarTaskStateNotStarted = 'Inte startat';\r\n\tstatic EventHandler = 'Hanterare';\r\n\tstatic OpenTrashBin = 'Öppna papperskorgen';\r\n\tstatic TaskPriorities = 'Uppgiftsprioriteringar';\r\n\tstatic WhistleBlowInformantInstuctions = 'Informantinstruktioner';\r\n\tstatic NewUserGroupMustBeSavedBeforeUsersCanBeAdded = 'Ny användargrupp mÃ¥ste sparas innan användare kan läggas till!';\r\n\tstatic BrowseFiles = 'Bläddra bland filer';\r\n\tstatic EditRemainder = 'Redigera resten';\r\n\tstatic DeletingRecordQualificationParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort kvalifikationen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic RecordFurtherEducationParameterIsInUseInParameterRecordUsersQualificationsAndCannotBeDeleted = 'Vidareutbildning \\'{0}\\' används som kvalifikation i {1} användarregister och kan inte tas bort!';\r\n\tstatic Start = 'Start';\r\n\tstatic ModifyDateEndDate = 'Senast ändrad till';\r\n\tstatic WhistleBlowStateReceived = 'Mottagen';\r\n\tstatic UserParameterPermissionDeniedForUnitParameter = 'Användaren \\'{0}\\' har inga nödvändiga behörigheter för enheten \\'{1}\\'!';\r\n\tstatic DeletingTaskParameterWasSuccessful = 'Uppgiften \\'{0}\\' har tagits bort!';\r\n\tstatic LastNameMustBeDefined = 'Efternamn mÃ¥ste definieras!';\r\n\tstatic RequiredValidQualificationCount = 'Krävs giltigt antal kvalifikationer';\r\n\tstatic Qualifications = 'Kvalifikationer';\r\n\tstatic MaximumPasswordLengthCanParameterCharacters = 'Maximal lösenordslängd kan vara {0} tecken!';\r\n\tstatic EditLogisticVoucherPaymentSetting = 'Redigera betalningsinställning';\r\n\tstatic DocumentNameIsTooLong = 'Dokumentnamnet \\'{0}\\' är för lÃ¥ngt!';\r\n\tstatic SavingEditableDocumentParameterWasSuccessful = 'Dokumentet \\'{0}\\' har sparats!';\r\n\tstatic ExternalsSystemParameterNotFound = 'Det externa systemet \\'{0}\\' hittades inte!';\r\n\tstatic DefaultCalendarTaskCategories = 'Standardkategorier';\r\n\tstatic EditPayerSettings = 'Redigera betalarinställningar';\r\n\tstatic EditDefaultTaskPriority = 'Redigera standarduppgiftsprioritet';\r\n\tstatic Menu = 'Meny';\r\n\tstatic RecordFurtherEducationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted = 'Vidareutbildning \\'{0}\\' används i {1} användarposter och kan inte tas bort!';\r\n\tstatic Descending = 'NedÃ¥tgÃ¥ende';\r\n\tstatic NotSet = 'Inte inställd';\r\n\tstatic DeletingEventUrgencyClassParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort brÃ¥dskande klass \\'{0}\\', eftersom data i brÃ¥dskande klass har ändrats samtidigt av en annan användare!';\r\n\tstatic AddUserGroupsParameterWasNotSuccessfulErrorParameter = 'Det gick inte att lägga till användargrupper \"{0}\"! Fel: \\'{1}\\'';\r\n\tstatic ResultGrouping = 'Resultatgruppering';\r\n\tstatic SelectReceiver = 'Välj mottagare';\r\n\tstatic Continue = 'Fortsätta';\r\n\tstatic FurtherEducationsMustBeDefinedBeforeAddingRecordUsers = 'Vidareutbildningar mÃ¥ste definieras innan användarposter läggs till!';\r\n\tstatic MoveTaskToTrashBin = 'Flytta uppgift till papperskorgen';\r\n\tstatic DoYouReallyWantToRemoveMessageTypeParameter = 'Vill du verkligen ta bort meddelandetypen \\'{0}\\'?';\r\n\tstatic RemoveEventPartner = 'Ta bort Incident Partner';\r\n\tstatic DeletingTaskParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort uppgiften \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic ThisChannelHasBeenArchived = 'Den här chatten har arkiverats!';\r\n\tstatic Admin = 'Administratör';\r\n\tstatic EventsExcel = 'Incidenter - Excel';\r\n\tstatic SavingEventDefaultHandlerParameterWasSuccessful = 'Standardincidenthanteraren \\'{0}\\' har sparats!';\r\n\tstatic SavingInstantMessageChannelUserUserWasSuccessful = 'Deltagaren har sparats!';\r\n\tstatic Password = 'Lösenord';\r\n\tstatic EventParameterNotFound = 'Incidenten \\'{0}\\' hittades inte!';\r\n\tstatic AddCompanyGroupParameterWasNotSuccessfulConcurrencyError = 'Misslyckades med företagsgruppen \\'{0}\\' eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic RemoveDefaultTaskPriority = 'Ta bort standarduppgiftsprioritet';\r\n\tstatic WholeHistory = 'Hela historien';\r\n\tstatic PrintParameterNotFound = 'Det gick inte att hitta utskriften \\'{0}\\'!';\r\n\tstatic NextOfKin = 'Närmast anhörig';\r\n\tstatic DeletingCompanyParameterWasSuccessful = 'Företaget \\'{0}\\' har tagits bort!';\r\n\tstatic FieldParameterConstainsIllegalCharactersForFileName = 'Värdet pÃ¥ fältet \\'{0}\\' innehÃ¥ller tecken som är olagliga i filnamn (<, >, :, \", /, \\, |, ? tai *) eller sÃ¥ slutar det med olagliga tecken (., \\' \\')!';\r\n\tstatic FileNameMustBeDefined = 'Filnamn mÃ¥ste definieras!';\r\n\tstatic Recurrence = 'Upprepning';\r\n\tstatic ChangeSystemLanguageToFinnish = 'Byt sprÃ¥k till finska';\r\n\tstatic DocumentApproved = 'Godkänd av';\r\n\tstatic Print = 'Skriva ut';\r\n\tstatic ProcessedFolderParameterErrorCountParameter = '* Mappen \\'{0}\\' slutförd, fel: {1}';\r\n\tstatic LoggedInUserAccountIsNotActive = 'Inloggad användare är inte aktiv!';\r\n\tstatic CalendarTaskCategoryParameterNotFound = 'Kategori \\'{0}\\' hittades inte!';\r\n\tstatic Error = 'Fel';\r\n\tstatic AccessRightFull = 'Alla behörigheter';\r\n\tstatic RecordUserLogEntryTypeSave = 'Modifiering';\r\n\tstatic DeletingUserGroupUsersOfCompanyParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort användargruppsanslutningar relaterade till företaget \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic AutoSaveVersionHistorySize = 'Autospara versionshistorikstorlek';\r\n\tstatic FilterIsActive = 'Filtret är aktivt';\r\n\tstatic WorkTimeType = 'Typ av arbetstid';\r\n\tstatic InstantMessageChannel = 'Chatt';\r\n\tstatic WhistleBlowDateAndTimeCannotBeInFuture = 'Incident tid kan inte vara i framtiden!';\r\n\tstatic PrintFileName = 'Skriv ut_{0:åååå-MM-ddHH-mm}.pdf';\r\n\tstatic LogCleaning = 'Rensa logg';\r\n\tstatic OpenCalendarTasks = 'Öppna evenemang';\r\n\tstatic Edit = 'Redigera';\r\n\tstatic KeywordCodeIsAlreadyInUse = 'Nyckelordskoden används redan!';\r\n\tstatic ContentFiltering = 'InnehÃ¥llsfiltrering';\r\n\tstatic Groups = 'Grupper';\r\n\tstatic FormRemoveFieldConfirmation = 'Vill du verkligen ta bort fält frÃ¥n formuläret?';\r\n\tstatic TargetsOtherCompanies = 'Synlighet - Andra företag';\r\n\tstatic CalendarTaskRepetitionRepeatIntervalWeeklySuffix = 'veckor';\r\n\tstatic DeletingTaskParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort uppgiften \\'{0}\\', eftersom data i uppgiften har ändrats samtidigt av en annan användare!';\r\n\tstatic CalendarTaskFilterByState = 'Filtrera efter stat';\r\n\tstatic PrintEvent = 'Skriv ut incident';\r\n\tstatic MovedToTrashBin = 'Flyttade till papperskorgen';\r\n\tstatic UsedFileStorageQuota = 'Använd fillagringskvot';\r\n\tstatic ClassParameterHasNotBeenInitialized = 'Klassen \\'{0}\\' har inte initierats!';\r\n\tstatic CalendarTaskStateFinished = 'Färdig';\r\n\tstatic Hours = 'timmar';\r\n\tstatic OptionCodeIsAlreadyInUse = 'Systemalternativkoden \\'{0}\\' används redan!';\r\n\tstatic CopyingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulErrorParameter = 'Det gick inte att kopiera mappen \\'{0}\\' till mappen \\'{1}\\'! Fel: \\'{2}\\'';\r\n\tstatic UserFilterNoUserGroup = 'Ingen användargrupp';\r\n\tstatic DoYouReallyWantToRemoveEventTypeBParameter = 'Vill du verkligen ta bort kategori 2 \\'{0}\\'?';\r\n\tstatic Archive = 'Arkivera';\r\n\tstatic SavingWhistleBlowWasSuccessful = 'Whistle blow-rapporten har sparats!';\r\n\tstatic Validity = 'Giltighet';\r\n\tstatic DeletingFolderParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort mappen \\'{0}\\' i filsystemet! Fel: \\'{1}\\'';\r\n\tstatic AddUnit = 'Lägg till enhet';\r\n\tstatic FurtherEducations = 'Vidareutbildningar';\r\n\tstatic SaveEventHandlerConfirmation = 'Vill du rädda händelsen?';\r\n\tstatic RemoveParameterDocuments = 'Ta bort {0} filer/dokument';\r\n\tstatic ExternalIntraSystemCompanyTokenMustBeDefined = 'Företagstoken i externt eSalkku-system mÃ¥ste definieras!';\r\n\tstatic DeletingPartnersParameterWasSuccessful = 'Partners \\'{0}\\' har tagits bort!';\r\n\tstatic Group = 'Grupp';\r\n\tstatic EventTypeBTitle = 'Incidentidentifiering Kategori 2';\r\n\tstatic RecordUser = 'Användarpost';\r\n\tstatic DeletingTaskTypeParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort uppgiftstypen \"{0}\", eftersom data i uppgiftstypen har ändrats samtidigt av en annan användare!';\r\n\tstatic RemoveUserAndRecordUser = 'Ta bort användarkonto och användarpost';\r\n\tstatic FormWidthPrint = 'Bredd i tryck';\r\n\tstatic UpdateUserGroupParameterExternalSystemsWasNotSuccessfulErrorParameter = 'Det gick inte att länka användargruppen \\'{0}\\' till externa system! Fel: \\'{1}\\'';\r\n\tstatic AddDefaultFurtherEducation = 'Lägg till standard för vidareutbildning';\r\n\tstatic UserParameterCodeIsAlreadyInUse = 'Användarparametrarnas kod används redan!';\r\n\tstatic PasswordHasBeenSetSuccessfully = 'Lösenordet har ställts in. Flytta till inloggningssidan.';\r\n\tstatic AddUserGroupsParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att lägga till användargrupper \"{0}\", eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic RemoveReport = 'Ta bort rapport';\r\n\tstatic AddCompany = 'Lägg till företag';\r\n\tstatic DoYouReallyWantToRemovePartnersParameter = 'Vill du verkligen ta bort partner \"{0}\"?';\r\n\tstatic State = 'stat';\r\n\tstatic CompanyCodeMustBeDefined = 'Koden för företaget mÃ¥ste definieras!';\r\n\tstatic SavingApplicationPermissionsWasNotSuccessfulErrorParameter = 'Det gick inte att spara systembehörighetersi! Visar: \\'{0}\\'';\r\n\tstatic LastWeek = 'Förra veckan';\r\n\tstatic TheUserNameOrPasswordIsIncorrect = 'Ogiltigt användarnamn eller lösenord!';\r\n\tstatic SelectUnit = 'Välj Enhet';\r\n\tstatic AddDefaultEventHandler = 'Lägg till standardincidenthanterare';\r\n\tstatic SelectedDocumentTypes = 'Visa endast valda dokumenttyper';\r\n\tstatic FormulaDivision = 'Division';\r\n\tstatic RemoveCompanyTaskType = 'Ta bort Company Task State';\r\n\tstatic DeletingRecordQualificationsParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort kvalifikationerna \"{0}\", eftersom data i kvalifikationer har ändrats samtidigt av en annan användare!';\r\n\tstatic RecordEmailNotificationShowExpired = 'Inkludera utgÃ¥ngna utbildningar';\r\n\tstatic AllSelected = 'Alla valda';\r\n\tstatic RemoveDocument = 'Ta bort markerade filer/dokument';\r\n\tstatic SavingCompanyParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara företaget \\'{0}\\' eftersom data i företaget har ändrats samtidigt av en annan användare!';\r\n\tstatic UserPublicPasswordChangeMessage = 'Du kan ange ditt nya lösenord pÃ¥ den här sidan. Ditt användarnamn inkluderades i e-postmeddelandet som innehÃ¥ller länken till denna sida.';\r\n\tstatic JobTitle = 'Jobbtitel';\r\n\tstatic EditMessage = 'Redigera meddelande';\r\n\tstatic SeasonalWorker = 'Säsongsarbetare';\r\n\tstatic DeletingEventTypeCParameterWasSuccessful = 'Kategori 3 \\'{0}\\' har tagits bort!';\r\n\tstatic DoYouReallyWantToRemoveThisInstantMessage = 'Vill du verkligen ta bort det här snabbmeddelandet? Snabbmeddelanden kommer att tas bort frÃ¥n alla parter.';\r\n\tstatic AllWhistleBlowHandlersHaveReadMessage = 'Alla som hanterar whistleblow-rapporter har läst ditt meddelande';\r\n\tstatic PermissionToIdentificateEvents = 'TillstÃ¥nd att skapa och identifiera incidenter';\r\n\tstatic SavingDirectoryItemPermissionsNotSuccessfulErrorParameter = 'Det gick inte att spara mappbehörigheter! Fel: \\'{0}\\'';\r\n\tstatic Removed = 'Tog bort';\r\n\tstatic WhistleBlowWasNotFoundExplanation = 'Kontrollera lösenordet för whistleblow-rapporten.';\r\n\tstatic WhistleBlowStateInProgress = 'PÃ¥gÃ¥ende';\r\n\tstatic ActiveUserRights = 'Aktiva behörigheter';\r\n\tstatic MyFiltersAndReports = 'Användarens filter och rapporter';\r\n\tstatic SavingReportWasSuccessful = 'Rapporten har sparats!';\r\n\tstatic ArchivingWhistleBlowsParameterWasSuccessful = 'Visselslagsrapporter \\'{0}\\' har arkiverats framgÃ¥ngsrikt!';\r\n\tstatic EmptyingTaskTrashBinWasSuccessfulErrorParameter = 'Det gick inte att tömma papperskorgen! Fel: \\'{0}\\'';\r\n\tstatic FormIntegerNumber = 'Heltal';\r\n\tstatic DeletingEventTypeBParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort kategori 2 \\'{0}\\', eftersom data i kategori 2 har ändrats samtidigt av en annan användare!';\r\n\tstatic FiscalNumber = 'Skattenummer';\r\n\tstatic CompanyGroupAll = '\"Alla företag\"';\r\n\tstatic SavingUserParameterParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara användaralternativet \\'{0}\\', eftersom data i användaralternativet har ändrats samtidigt av en annan användare!';\r\n\tstatic SavingEventPartnerParameterWasSuccessful = 'Incidentpartner \\'{0}\\' har sparats!';\r\n\tstatic OneTimeForm = 'EngÃ¥ngsform';\r\n\tstatic CalendarTaskCategoryCodeIsAlreadyInUse = 'Kategorinamnet används redan!';\r\n\tstatic CompanyThatIsInUseCannotBeDeleted = 'Företag som är i tillstÃ¥ndet \"I bruk\" kan inte tas bort!';\r\n\tstatic ClosedPlural = 'Stängd';\r\n\tstatic Line = 'Linje';\r\n\tstatic Company = 'Företag';\r\n\tstatic NotifiedPersonsShort = 'Aviseringar';\r\n\tstatic WhistleBlowMustBeReceivedLatestAtParameter = 'Visselslagsrapport mÃ¥ste markeras som mottagen {0} senast!';\r\n\tstatic MessageMustBeDefined = 'Meddelandets innehÃ¥ll mÃ¥ste definieras!';\r\n\tstatic InheritedUserRight = '(ärvt tillstÃ¥nd)';\r\n\tstatic WhistleBlowArchivingTypeChangeStateAndRemoveInformantData = 'Ändra tillstÃ¥nd för rapport till \"Arkiverad\" och ta bort informantdata';\r\n\tstatic AddPrint = 'Lägg till utskrift';\r\n\tstatic FileParameterIsNotImage = 'Filen \\'{0}\\' är inte en bild!';\r\n\tstatic SaveInstantMessageChannel = 'Spara Chatt';\r\n\tstatic FilterCondition = 'FiltertillstÃ¥nd';\r\n\tstatic UpdateCompanyExternalSystemsWasSuccessful = 'Företag kopplat till externa system framgÃ¥ngsrikt!';\r\n\tstatic NoEmailsToSend = 'Inga mail att skickas!';\r\n\tstatic Approve = 'Godkänna';\r\n\tstatic NoAddedEventTypeCs = 'Inga tillagda kategorier!';\r\n\tstatic NoAddedEventTypeBs = 'Inga tillagda kategorier!';\r\n\tstatic SavingCompanyParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara företaget \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic FormColumnWidthMobile = 'Kolumnbredd i mobilapp';\r\n\tstatic DeletingTaskPriorityParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort uppgiftsprioritet \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic Missing = 'Saknas';\r\n\tstatic WhistleBlowFrontPage = 'Framsida';\r\n\tstatic WhistleBlowDateAndTime = 'Incident tid';\r\n\tstatic AddChildEventTypeB = 'Lägg till underkategori 2';\r\n\tstatic NewMessage = 'Nytt meddelande';\r\n\tstatic SavingEventSettingsWasNotSuccessfulErrorParameter = 'Det gick inte att spara incidentinställningarna! Fel: \\'{0}\\'';\r\n\tstatic Last7Days = 'Senaste 7 dagarna';\r\n\tstatic ReadingFolderParameter = 'Läser mappen \\'{0}\\'...';\r\n\tstatic RemoveUserGroupExternalSystemsWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort användargruppslänkar frÃ¥n externa system! Fel: \\'{0}\\'';\r\n\tstatic NewEmploymentMustBeSavedBeforeAttachmentsCanBeAdded = 'Ny anställning mÃ¥ste sparas innan bilagor kan läggas till!';\r\n\tstatic DocumentParameterDownloaded = 'Dokumentet har laddats ner.';\r\n\tstatic EditTransferredProperty = 'Redigera överförd egendom';\r\n\tstatic SavingChartWasNotSuccessfulErrorParameter = 'Det gick inte att spara diagrammet! Fel: \\'{0}\\'';\r\n\tstatic Severity = 'Allvarlighetsgrad';\r\n\tstatic Reminders = 'PÃ¥minnelser';\r\n\tstatic SelectEventInListToSeeThePreview = 'Välj incident i listan för att se förhandsgranskningen';\r\n\tstatic RemoveFromFavorites = 'Ta bort frÃ¥n favoriter';\r\n\tstatic UserPasswordMustBeDefined = 'Användarlösenord mÃ¥ste definieras!';\r\n\tstatic CalendarTaskRepetitionEndDatePrefix = 'Efter datum';\r\n\tstatic SavingUnitsWasNotSuccessfulConcurrencyError = 'Det gick inte att spara enheter eftersom data i enheter har ändrats samtidigt av en annan användare!';\r\n\tstatic DefaultFurtherEducationGroup = 'Standard fortbildningsgrupp';\r\n\tstatic SelectEventType = 'Välj kategori 1';\r\n\tstatic WhistleBlowReportHasBeenSaved = 'Whistle blow-rapporten har sparats';\r\n\tstatic SelectEventHandler = 'Välj Hanterare';\r\n\tstatic CompanyTaskTypeTemplates = 'Företagsformulärmallar';\r\n\tstatic EmailHasBeenAlreadySentForThisMessage = 'E-post har redan skickats för detta meddelande!';\r\n\tstatic WhistleBlowUrl = 'Whistle Blow Channel webbadress';\r\n\tstatic CopyingFolderParameterWasNotSuccessfulErrorParameter = 'Det gick inte att kopiera mappen \\'{0}\\' till mappen \\'{1}\\' i filsystemet! Fel: \\'{2}\\'';\r\n\tstatic ValueAddedTaxPercent = 'Mervärdesskatt %';\r\n\tstatic Success = 'FramgÃ¥ng!';\r\n\tstatic SaveEvent = 'Spara incidenten';\r\n\tstatic UserGroupNameIsAlreadyInUse = 'Användargruppens namn används redan!';\r\n\tstatic Time = 'Tid';\r\n\tstatic SelectableWhenCreatingAnEvent = 'Valbar när du skapar en händelse';\r\n\tstatic LogIn = 'Logga in';\r\n\tstatic Form = 'Form';\r\n\tstatic UpdateUserParameterExternalSystemsWasNotSuccessfulErrorParameter = 'Det gick inte att länka användaren \\'{0}\\' till externa system! Fel: \\'{1}\\'';\r\n\tstatic RemoveLogisticVoucherCompanyPaymentSetting = 'Ta bort betalningsinställning';\r\n\tstatic EventApprovalWasNotSuccessfulErrorParameter = 'Det gick inte att godkänna incidenten! Fel: \\'{0}\\'';\r\n\tstatic PageFooterText = 'Systemsidans sidfotstext';\r\n\tstatic ExternalSystemCode = 'Kod i systemet';\r\n\tstatic SavingMessageTypeParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara meddelandetypen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic CurrentWorkPlaceNotAdded = 'Nuvarande arbetsplats har inte lagts till!';\r\n\tstatic BasicEducations = 'Grundläggande utbildningar';\r\n\tstatic DeletingWhistleBlowChannelAdminsParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort administratörer \"{0}\", eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic SuccessAudit = 'SuccessAudit';\r\n\tstatic FormTextInputs = 'Textinmatning';\r\n\tstatic RemovePayer = 'Ta bort betalare';\r\n\tstatic NoName = 'Anonym';\r\n\tstatic DeletingRecordUserEmploymentsParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort anställningar \"{0}\", eftersom data i anställningar har ändrats samtidigt av en annan användare!';\r\n\tstatic ImageChangeInterval = 'Bildändringsintervall';\r\n\tstatic EditableDocumentPublishUnapprovedConfirmation = 'Vill du publicera ett icke godkänt dokument till fil?';\r\n\tstatic UnitProperties = 'Enhetsegenskaper';\r\n\tstatic AddingAddRecordUserFurtherEducationsWasSuccessful = 'Ytterligare utbildningar har lagts till framgÃ¥ngsrikt!';\r\n\tstatic SavingMessageParameterWasSuccessful = 'Meddelandet \\'{0}\\' har sparats!';\r\n\tstatic AddCompanyParameterWasSuccessful = 'Företaget \\'{0}\\' har lagts till!';\r\n\tstatic RequestPasswordChangeMessage3 = '-knappen. E-post som innehÃ¥ller information om hur du Ã¥terställer ditt lösenord kommer att skickas till den e-postadress som är kopplad till ditt användarkonto.';\r\n\tstatic InvitationParameterNotFound = 'Inbjudan \\'{0}\\' hittades inte!';\r\n\tstatic FormExpressionFormat = 'Formatering av uttrycksresultat';\r\n\tstatic DeletingEventTypeParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort kategori 1 \\'{0}\\' eftersom data i kategori 1 har ändrats samtidigt av en annan användare!';\r\n\tstatic FormulaHypot = 'Hypotenusa';\r\n\tstatic EventTypeCParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted = 'Kategori 3 \"{0}\" underkategorier används i {1} incidenter och kategori 3 kan inte tas bort!';\r\n\tstatic DoYouReallyWantToRemoveUserParameter = 'Vill du verkligen ta bort användaren \\'{0}\\'?';\r\n\tstatic OtherInformation = 'Annan information';\r\n\tstatic FormAddDropdownOption = 'Lägg till alternativ';\r\n\tstatic InstantMessageChannelUser = 'Deltagare';\r\n\tstatic File = 'Fil';\r\n\tstatic RemoveRowConfirmation = 'Vill du verkligen ta bort rad {0}?';\r\n\tstatic CkickToChangeTheIcon = 'Klicka för att ändra ikonen';\r\n\tstatic CurrentCalendarWeek = 'Aktuell kalendervecka';\r\n\tstatic ExternalSystemCompanyCodeMustBeDefined = 'Företagskod i externt system mÃ¥ste definieras!';\r\n\tstatic SelectEventTypeB = 'Välj kategori 2';\r\n\tstatic AddImageFromClipboard = 'Lägg till bild frÃ¥n urklipp';\r\n\tstatic ErrorUserGroupChangeWouldLeadToInvalidDefaultEventHandlers = 'Ändringar av användargrupp kommer att leda till situationer där vissa standardincidenthanterare eller meddelade personer inte har behörighet att hantera incidenter med enheter. Ändringar som pÃ¥verkar standardincidenthanterare eller meddelade personer kan endast göras i dialogrutan \"Incidentegenskaper\"!';\r\n\tstatic CopyGroupPermissions = 'Kopiera gruppbehörigheter till minnet';\r\n\tstatic SavingEventTypesWasSuccessful = 'Kategori 1 har sparats framgÃ¥ngsrikt!';\r\n\tstatic EditTaskState = 'Redigera uppgiftsstatus';\r\n\tstatic Value = 'Värde';\r\n\tstatic Images = 'Bilder';\r\n\tstatic FieldParameterContainsInvalidCompanyCodeCharacters = 'Värdet pÃ¥ fältet \\'{0}\\' innehÃ¥ller tecken som är olagliga i företagskoden (., &, :, \\' \\', ö, ä, à, Ã¥, Ö, Ä, À tai Ã…)!';\r\n\tstatic ReadingFileParameterWasNotSuccessfulFileNotFound = 'Det gick inte att läsa filen \\'{0}\\' i filsystemet! Filen hittades inte!';\r\n\tstatic MaximumSizeOfInstantMessageAttachmentIsParameterMB = 'Den maximala storleken pÃ¥ bilaga till snabbmeddelanden är {0} MB!';\r\n\tstatic UserRecordStatisticsActiveCards = 'Aktiva kort';\r\n\tstatic UserFirstNameMustBeDefined = 'Användarens förnamn mÃ¥ste definieras!';\r\n\tstatic PaymentVoucherCounter = 'Betalningskupongräknare';\r\n\tstatic Visibility = 'Synlighet';\r\n\tstatic EmployeeTypeIsNotSupported = 'Anställd typ \\'{0}\\' stöds inte!';\r\n\tstatic DoYouReallyWantToRemoveKeywordParameter = 'Vill du verkligen ta bort sökordet \"{0}\"?';\r\n\tstatic RequestPasswordChangeLinkHasBeenSent = 'Lösenordsändringslänk har skickats till dig via e-post! Om meddelandet inte kan hittas frÃ¥n din inkorg, kontrollera även skräppostmappen.';\r\n\tstatic AddInstantMessageUserParameterWasNotSuccessfulErrorParameter = 'Det gick inte att lägga till deltagare \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic RemoveDefaultEventType = 'Ta bort standardkategori 1';\r\n\tstatic Valid = 'Giltig';\r\n\tstatic UserCodeIsAlreadyInUse = 'Användarnamnet används redan!';\r\n\tstatic DeletingCompanyGroupParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort företagsgruppen \\'{0}\\' eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic DeletingEventUrgencyClassParameterWasSuccessful = 'BrÃ¥dskande klass \\'{0}\\' har tagits bort!';\r\n\tstatic Files = 'Filer';\r\n\tstatic Drafts = 'Utkast';\r\n\tstatic MessageVisibilityPeriodNotActive = 'Meddelandets synlighetsperiod är inte aktiv!';\r\n\tstatic DeletingRecordQualificationsParameterWasSuccessful = 'Kvalifikationerna \\'{0}\\' har tagits bort!';\r\n\tstatic Observer = 'Observatör';\r\n\tstatic EventTypeParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted = 'Kategori 1 \"{0}\" underkategorier används i {1} incidenter och kategori 1 kan inte tas bort!';\r\n\tstatic Usage = 'Användande';\r\n\tstatic RowForm = 'Radform';\r\n\tstatic FormComponents = 'Komponenter';\r\n\tstatic CompanyParameterNotFound = 'Företaget \\'{0}\\' hittades inte!';\r\n\tstatic DoYouReallyWantToReplaceDocumentTemplateParameter = 'Vill du verkligen ersätta dokumentmallen \\'{0}\\'?';\r\n\tstatic AddUserToUserGroup = 'Lägg till användarkonto i användargruppen';\r\n\tstatic Aprint = 'Utskrift';\r\n\tstatic InstantMessageChannelOnlyAdministratorCannotExitInstantMessageChannel = 'Endast chattadministratören kan inte avsluta chatten!';\r\n\tstatic ReminderDaysBefore = 'dagar innan';\r\n\tstatic TitleIsAlreadyInUse = 'Titeln används redan!';\r\n\tstatic DoYouWantToAddThisApplicationToHomeScreen = 'Vill du lägga till den här applikationen pÃ¥ startskärmen?';\r\n\tstatic DocumentCreated = 'Skapad av';\r\n\tstatic TasksExcelByTaskRows = 'Uppgifter - Excel - Filtrerat efter uppgiftsrader';\r\n\tstatic AddingAttachmentsParameterWasNotSuccessfulErrorParameter = 'Det gick inte att lägga till bilagor \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic FrontPage = 'instrumentbräda';\r\n\tstatic Cancel = 'Annullera';\r\n\tstatic FileFilter = 'Filfilter';\r\n\tstatic DoYouReallyWantToRemovePrintParameter = 'Vill du verkligen ta bort utskriften \"{0}\"?';\r\n\tstatic AddingAddRecordUserQualificationsWasSuccessful = 'Kvalifikationer har lagts till!';\r\n\tstatic MessagePreservationTime = 'Meddelande bevarandetid';\r\n\tstatic ClearSubUnitDefaultHandlers = 'Rensa underenhets standardhanterare';\r\n\tstatic NotificationsSentSuccessfully = 'Aviseringar har skickats!';\r\n\tstatic InstantMessageSettings = 'Inställningar för snabbmeddelanden (HoxUp)';\r\n\tstatic SavingReadReceiptWasNotSuccessfulErrorParameter = 'Det gick inte att spara läskvitto! Fel: \\'{0}\\'';\r\n\tstatic TaskDataRowParameterNotFound = 'Uppgiftsraden \\'{0}\\' hittades inte!';\r\n\tstatic Path = 'Väg';\r\n\tstatic Competency = 'Kompetens';\r\n\tstatic MovingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulErrorParameter = 'Det gick inte att flytta mappen \\'{0}\\' till mappen \\'{1}\\'! Fel: \\'{2}\\'';\r\n\tstatic CalendarTaskRemoveSeries = 'Ta bort serien';\r\n\tstatic DeletingRecordBasicEducationsParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort grundläggande utbildningar \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic AddWhistleBlowChannelAdminParameterWasNotSuccessfulErrorParameter = 'Det gick inte att lägga till administratören \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic DownloadPdf = 'Ladda ner pdf';\r\n\tstatic Import = 'Importera';\r\n\tstatic WhistleBlowNonAnonymousReport = 'Avsändarinformation ingÃ¥r i rapporten';\r\n\tstatic EmploymentType = 'Anställnings typ';\r\n\tstatic FileSynchronizationToDatabaseFinishedInParameterSeconds = 'Filsystemsynkronisering med databas slutförd (varaktighet: {0:N0}s, fel: {1}, mappar: {2}, mappar utan fel: {3})';\r\n\tstatic RemoveEventType = 'Ta bort kategori 1';\r\n\tstatic DeletingRecordUserTransferredPropertyParameterWasSuccessful = 'Den överförda egenskapen \\'{0}\\' har tagits bort!';\r\n\tstatic AllDay = 'Hela dagen';\r\n\tstatic Resources = 'Resurser';\r\n\tstatic AddTransferredProperty = 'Lägg till överlÃ¥ten egendom';\r\n\tstatic DocumentTemplates = 'Dokumentmallar';\r\n\tstatic UserSessionHasBeenExpired = 'Användarsessionen har löpt ut!';\r\n\tstatic SavingRecordFurtherEducationGroupParameterWasSuccessful = 'Vidareutbildningsgruppen \\'{0}\\' har sparats!';\r\n\tstatic AddDefaultTaskState = 'Lägg till standarduppgiftsstatus';\r\n\tstatic JobTypeMessageNotification = 'Meddelandemeddelande';\r\n\tstatic SavingKeywordParameterWasSuccessful = 'Sökordet \\'{0}\\' har sparats!';\r\n\tstatic AccessRightReadCalendarTask = 'Kan skapa egna händelser';\r\n\tstatic DoYouReallyWantToRemoveFileFilterParameter = 'Vill du verkligen ta bort filfiltret \\'{0}\\'?';\r\n\tstatic AddEventMessageConfirmation = 'Vill du lägga till kommentaren? Kommentaren kan inte redigeras efter att den har lagts till.';\r\n\tstatic LockedDocumentsParameterCannotBeMoved = 'LÃ¥sta dokument \"{0}\" kan inte flyttas!';\r\n\tstatic RemoveTaskState = 'Ta bort Task State';\r\n\tstatic Conversions = 'Konverteringar';\r\n\tstatic Created = 'Skapad av';\r\n\tstatic CalendarTaskRepetitionEnd = 'Avsluta';\r\n\tstatic DeletingRecordFamiliarizationParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort bekantskapen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic UserHasUsedMobile = 'Användarkontot har varit aktivt i mobilapplikationen under de senaste 30 dagarna.';\r\n\tstatic RemoveBasicEducation = 'Ta bort grundutbildning';\r\n\tstatic VersionInformation = 'Versionsinformation';\r\n\tstatic Days = 'dagar';\r\n\tstatic CkickToChangeThePicture = 'Klicka för att ändra bilden';\r\n\tstatic PostalCode = 'postnummer';\r\n\tstatic RecordUserLogEntryTypePrint = 'Utskrift';\r\n\tstatic NameMustBeDefined = 'Namn mÃ¥ste definieras!';\r\n\tstatic ExternalSystemUserTokenParameterIsAlreadyInUse = 'Användartoken \\'{0}\\' används redan!';\r\n\tstatic WhistleBlowResolutionCanceled = 'Inställt';\r\n\tstatic Theme = 'Tema';\r\n\tstatic SaveFilterAs = 'Spara filter som';\r\n\tstatic AttachmentIsEmpty = 'Bilaga \\'{0}\\' är tom!';\r\n\tstatic SaveTask = 'Spara uppgift';\r\n\tstatic FormModifyUser = 'Ändra användare';\r\n\tstatic FormHeight = 'Höjd';\r\n\tstatic RemovePermission = 'Ta bort behörighet';\r\n\tstatic DeletingInstantMessageChannelWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort chatten! Fel: \\'{0}\\'';\r\n\tstatic UserGroupsMustBeDefined = 'Användargrupper mÃ¥ste definieras!';\r\n\tstatic PrintGenerationFailed = 'Det gick inte att skapa utskrift!';\r\n\tstatic LogDocumentPreview = 'Logga dokumentförhandsgranskning';\r\n\tstatic DeletingOneTimePasswordWasSuccessful = 'EngÃ¥ngslösenordet har tagits bort!';\r\n\tstatic FormulaTrunc = 'Heltalsdel';\r\n\tstatic SendPasswordChangeEmailConfirmation = 'Vill du verkligen skicka lösenordsändringslänk via e-post?';\r\n\tstatic DeletingTaskStateParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort uppgiftstillstÃ¥ndet \\'{0}\\', eftersom data i uppgiftstillstÃ¥ndet har ändrats samtidigt av en annan användare!';\r\n\tstatic Years = 'Ã…r';\r\n\tstatic SavingEventTypeCsWasNotSuccessfulErrorParameter = 'Det gick inte att spara kategori 3! Fel: \\'{0}\\'';\r\n\tstatic DeletingDefaultEventHandlerParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort standardincidenthanteraren \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic SavingMessageParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara meddelandet \\'{0}\\' eftersom data i meddelandet har ändrats samtidigt av en annan användare!';\r\n\tstatic RecordUserTrangerredPropertyParameterNotFound = 'Den överförda egenskapen \\'{0}\\' hittades inte!';\r\n\tstatic PreviewWeb = 'Förhandsgranska (webb)';\r\n\tstatic RemoveComment = 'Ta bort kommentar';\r\n\tstatic TimeSpanYear = 'Ã…r';\r\n\tstatic OpenCalendarTask = 'Öppna event';\r\n\tstatic FormulaExponent = 'Exponent';\r\n\tstatic Voluntary = 'Frivillig';\r\n\tstatic SavingRecordFurtherEducationParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara vidareutbildning \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic WhistleBlowChannelParameterNotFound = 'VisselblÃ¥sningskanalen \\'{0}\\' hittades inte!';\r\n\tstatic SelectMonth = 'Välj mÃ¥nad';\r\n\tstatic CalendarTaskStateStarted = 'Startade';\r\n\tstatic DeletingRecordBasicEducationsParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort grundläggande utbildningar \\'{0}\\', eftersom data i grundläggande utbildningar har ändrats samtidigt av en annan användare!';\r\n\tstatic TaskStateParameterIsInUseInParameterTasksAndCannotBeDeleted = 'Uppgiftsstatus \\'{0}\\' används i {1} uppgifter och kan inte tas bort!';\r\n\tstatic WhistleBlowAnonymousReport = 'Anmäl anonymt';\r\n\tstatic DeletingEventTypeCParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort kategori 3 \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic Operators = 'Operatörer';\r\n\tstatic CreatingFileParameterWasNotSuccessfulErrorParameter = 'Det gick inte att skapa filen \\'{0}\\' i filsystemet! Fel: \\'{1}\\'';\r\n\tstatic SourceFolderAndTargetFolderAreSame = 'Källmapp och mÃ¥lmapp är lika!';\r\n\tstatic DeletingRecordFurtherEducationParameterWasSuccessful = 'Vidareutbildning \\'{0}\\' har tagits bort!';\r\n\tstatic SavingDocumentTemplateParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara dokumentmallen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic AddDocumentTemplate = 'Lägg till dokumentmall';\r\n\tstatic AddTask = 'Lägg till uppgift';\r\n\tstatic PublicationOfEditableDocumentCannotBeRemoved = 'Publicering av dokumentet kan inte tas bort!';\r\n\tstatic AddQualifications = 'Lägg till kvalifikationer';\r\n\tstatic SavingUnitPermissionsWasNotSuccessfulConcurrencyError = 'Det gick inte att spara enhetsbehörigheter eftersom behörigheterna har ändrats samtidigt av en annan användare!';\r\n\tstatic RemoveDefaultHandler = 'Ta bort standardhanteraren';\r\n\tstatic ChartGenerationAborted = 'Skapandet av diagram avbröts!';\r\n\tstatic SystemAdminMessage = 'Meddelande till alla systemanvändare';\r\n\tstatic AddTarget = 'Lägg till mÃ¥l';\r\n\tstatic TargetDoesNotHaveFoldersWithWritePermissions = 'Target har inga mappar med skrivbehörighet!';\r\n\tstatic UpdateCompanyExternalSystemsWasNotSuccessfulErrorParameter = 'Det gick inte att länka företaget till externa system! Fel: \\'{0}\\'';\r\n\tstatic DeletingMessageTypeParameterWasSuccessful = 'Meddelandetypen \\'{0}\\' har tagits bort!';\r\n\tstatic LockedTaskDataRowCannotBeSaved = 'Uppgiftsraden har lÃ¥sts till en annan användare och den kan inte sparas!';\r\n\tstatic RemoveLogisticVoucherPaymentSetting = 'Ta bort betalningsinställning';\r\n\tstatic WhistleBlowSourceEmail = 'E-post';\r\n\tstatic DeletingKeywordsParameterWasSuccessful = 'Sökorden \"{0}\" har tagits bort!';\r\n\tstatic SavingRecordFamiliarizationParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara bekantskapen \\'{0}\\', eftersom data i bekantskapen har ändrats samtidigt av en annan användare!';\r\n\tstatic SavingPrintWasNotSuccessfulErrorParameter = 'Det gick inte att spara utskriften! Fel: \\'{1}\\'';\r\n\tstatic DeletingCalendarTaskParameterWasSuccessful = 'Händelsen \\'{0}\\' har tagits bort!';\r\n\tstatic SavingRecordBasicEducationParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara grundutbildningen \\'{0}\\', eftersom data i grundutbildningen har ändrats samtidigt av en annan användare!';\r\n\tstatic DeletingMessageTypeParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort meddelandetypen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic EventClosed = 'Incidenten stängd';\r\n\tstatic DeletingAttachmentsParameterWasSuccessful = 'Bilagorna \\'{0}\\' har tagits bort!';\r\n\tstatic SendReadReceipt = 'Skicka läskvitto';\r\n\tstatic SaveTaskConfirmation = 'Vill du spara uppgiften?';\r\n\tstatic TaskStates = 'Uppgiftsstater';\r\n\tstatic ActionIsNotAuthorized = 'Ã…tgärd är inte tillÃ¥ten!';\r\n\tstatic SavingInstantMessageChannelUserWasNotSuccessfulErrorParameter = 'Det gick inte att spara deltagare! Fel: \\'{0}\\'';\r\n\tstatic Communication = 'Kommunikation';\r\n\tstatic WhistleBlowSourceSystem = 'Systemet';\r\n\tstatic NotValid = 'Inte giltig';\r\n\tstatic DocumentModuleProperties = 'Dokumentegenskaper';\r\n\tstatic LoginTitle = 'Logga in pÃ¥ PKY-LAATU Intra';\r\n\tstatic Unit = 'Enhet';\r\n\tstatic FormEmptyArea = 'Tomt omrÃ¥de';\r\n\tstatic DoYouReallyWantToUnlockMessage = 'Vill du verkligen lÃ¥sa upp meddelandet \\'{0}\\'?';\r\n\tstatic PublishEvent = 'Publicera incidenten';\r\n\tstatic AddKeyword = 'Lägg till nyckelord';\r\n\tstatic RemoveEventUrgencyClass = 'Ta bort brÃ¥dskande klass';\r\n\tstatic Competencies = 'Kompetenser';\r\n\tstatic DeletingInstantMessageChannelWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort deltagare eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic Saved = 'Sparad av';\r\n\tstatic UserCodeUpdateWasNotSuccessfulErrorParameter = 'Det gick inte att uppdatera användarkoden! Fel: \\'{0}\\'';\r\n\tstatic AddCompanyGroupsParameterWasSuccessful = 'Företagsgrupper \"{0}\" har lagts till!';\r\n\tstatic OK = 'Ok';\r\n\tstatic ReferenceNumberPrefix = 'Referensnummerprefix';\r\n\tstatic DocumentProperties = 'Fil-/dokumentegenskaper';\r\n\tstatic TaskCreated = 'Skapad av';\r\n\tstatic Close = 'Stänga';\r\n\tstatic Messages = 'Meddelanden';\r\n\tstatic FieldsToBePrinted = 'Fält som ska skrivas ut';\r\n\tstatic WhistleBlowSourceOther = 'Övrig';\r\n\tstatic AddRecordUser = 'Lägg till användarpost';\r\n\tstatic EditPermission = 'Redigera behörighet';\r\n\tstatic UserGroupNameMustBeDefined = 'Användargruppsnamn mÃ¥ste definieras!';\r\n\tstatic WhistleBlowStatisticsRecordCount = 'Aktiva rapporter';\r\n\tstatic WelcomeToUseEsalkkuSystem = 'Välkommen att använda eSalkku! Det första steget är att ange ditt lösenord. Ditt användarnamn inkluderades i e-postinbjudan.';\r\n\tstatic DoYouReallyWantToRemoveSelectedMessageTypes = 'Vill du verkligen ta bort valda meddelandetyper?';\r\n\tstatic TaskPriorityCodeIsAlreadyInUse = 'Namnet pÃ¥ uppgiftsprioriteten används redan!';\r\n\tstatic IdentificationDetails = 'Identifieringsdetaljer';\r\n\tstatic CurrentTopicsAbbr = 'Aktuell';\r\n\tstatic SavingRecordEmploymentParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara anställning \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic LockedDocumentParameterCannotBeDeleted = 'Det lÃ¥sta dokumentet \\'{0}\\' kan inte tas bort!';\r\n\tstatic Empty = 'Tömma';\r\n\tstatic UserRecordStatisticsSavedCards = 'Sparade kort';\r\n\tstatic DependencyResolvingFailedForInterfaceParameter = 'Det gick inte att hitta implementeringen för gränssnittet \\'{0}\\'!';\r\n\tstatic AddingWhistleBlowHandlersWasSuccessful = 'Hanterare har lagts till!';\r\n\tstatic ProcessingTime = 'Behandlingstid';\r\n\tstatic SavingMessageParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara meddelandet \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic CompanyGroups = 'Företagsgrupper';\r\n\tstatic EmptyForm = 'Tomt formulär';\r\n\tstatic SpecifedTimeFrame = 'Angiven tidsram';\r\n\tstatic AddDefaultTaskType = 'Lägg till standarduppgiftstyp';\r\n\tstatic AddCalendarTask = 'Lägg till händelse';\r\n\tstatic AddPartnersByClickingPlusButton = 'Lägg till partners genom att klicka pÃ¥ plusknappen.';\r\n\tstatic DeletingEventTypeBParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort kategori 2 \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic RemovingCalendarTaskHandlersWasSuccessful = 'Ansvariga personer har tagits bort!';\r\n\tstatic SavingRecordUserQualificationParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara kvalifikationen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic StartDate = 'Synlig frÃ¥n';\r\n\tstatic NewWhistleBlowMustBeSavedBeforeHandlersCanBeAdded = 'Ny rapport mÃ¥ste sparas innan rader kan läggas till!';\r\n\tstatic EditEventTypeB = 'Redigera kategori 2';\r\n\tstatic Closed = 'Stängd';\r\n\tstatic CustomerNumber = 'Kundnummer';\r\n\tstatic Reports = 'Rapporter';\r\n\tstatic DaysAgo60 = '60 dagar sedan';\r\n\tstatic UnkownErrorHasBeenOccured = 'Ett okänt fel har inträffat i systemet!';\r\n\tstatic InstantMessageUserInvitationAcceptTypeCanInvite = 'Jag kan bli inbjuden att gÃ¥ med i chatten';\r\n\tstatic Schema = 'Schema';\r\n\tstatic UserGroupAll = '\\'Alla användare\\'';\r\n\tstatic Admins = 'Administratörer';\r\n\tstatic CompanyGroupModuleProperties = 'Företagsgruppers fastigheter';\r\n\tstatic RecordUserLogEntryTypeCreate = 'Skapa';\r\n\tstatic SendEmailInvitation = 'Skicka inbjudan till systemet via e-post';\r\n\tstatic SendReadReceiptInfo = 'Skicka läskvitto genom att trycka pÃ¥ ✓ knapp.';\r\n\tstatic SavingRecordUserTransferredPropertyParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara den överförda egenskapen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic EmailAddressMustBeValid = 'E-postadressen är inte giltig e-postadress!';\r\n\tstatic AddEventTypeCsToEvent = 'Lägg till kategori 3 genom att trycka pÃ¥ plusknappen.';\r\n\tstatic DoYouReallyWantToRemoveSelectedCalendarTaskHandlers = 'Vill du verkligen ta bort de valda ansvariga personerna?';\r\n\tstatic Uploaded = 'Uppladdad';\r\n\tstatic UnreadInstantMessages = 'Olästa meddelanden';\r\n\tstatic SendingEmail = 'Skickar e-post...';\r\n\tstatic TaskTypeNameMustBeDefined = 'Formnamn mÃ¥ste definieras!';\r\n\tstatic ExpiringIn180Days = 'Inkludera utbildningar som löper ut om 180 dagar';\r\n\tstatic CompanyGroupCodeMustBeDefined = 'Koden för företagsgruppen mÃ¥ste definieras!';\r\n\tstatic Modified = 'Senast ändrad av';\r\n\tstatic EmailNotificationInUse = 'Jag vill fÃ¥ e-postmeddelanden';\r\n\tstatic FormColumnWidthPrint = 'Kolumnbredd i tryck';\r\n\tstatic Unlimited = 'Obegränsat';\r\n\tstatic FolderParameterAlreadyExists = 'Mappen \\'{0}\\' finns redan!';\r\n\tstatic EditRecordUser = 'Redigera användarpost';\r\n\tstatic EventReport = 'Skaderapport';\r\n\tstatic DocumentContentsSearch = 'Sök dokumentinnehÃ¥ll';\r\n\tstatic ZipFileParameterNotFound = 'Zip-filen \\'{0}\\' hittades inte!';\r\n\tstatic MyLastModifications = 'Användarens senaste ändringar';\r\n\tstatic ExternalSystemUserCodeClaimNotFound = 'AnvändaransprÃ¥ket \\'externalSystemUserCode\\' hittades inte!';\r\n\tstatic AllUserGroups = 'Alla användargrupper';\r\n\tstatic DocumentApproval = 'Dokumentgodkännande';\r\n\tstatic IgnoreFolderPatterns = 'Ignorera mappmönster';\r\n\tstatic DeletingCompanyGroupsParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort företagsgrupperna \\'{0}\\' eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic LoginAddress = 'Inloggningsadress';\r\n\tstatic AddCompanyGroupsParameterWasNotSuccessfulErrorParameter = 'Det gick inte att lägga till företagsgrupper \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic StateOpen = 'Öppen';\r\n\tstatic SavingUserParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara användaren \\'{0}\\', eftersom användardata har ändrats samtidigt av en annan användare!';\r\n\tstatic InvalidValueParameter = 'Ogiltigt värde \\'{0}\\'!';\r\n\tstatic SavingInstantMessageChannelParameterWasSuccessful = 'Chatten \"{0}\" har sparats!';\r\n\tstatic FormSizeMedium = 'Medium';\r\n\tstatic WhistleBlowStatisticsUnreadMessages = 'Olästa meddelanden';\r\n\tstatic MessageTypeCodeMustBeDefined = 'Meddelandetypskod mÃ¥ste definieras!';\r\n\tstatic DocumentParameterOverwriteConfirmation = 'Filen \\'{0}\\' finns redan i mappen. Vill du skriva över den här filen?';\r\n\tstatic DeletingRecordFamiliarizationsParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort bekantskaper \"{0}\", eftersom data i bekantskaper har ändrats samtidigt av en annan användare!';\r\n\tstatic CheckingExistanceOfFolderParameterWasNotSuccessfulErrorParameter = 'Det gick inte att kontrollera existensen av mappen \\'{0}\\' i filsystemet! Fel: \\'{1}\\'';\r\n\tstatic DeletingAttachmentParameterWasSuccessful = 'Bilaga \\'{0}\\' har tagits bort!';\r\n\tstatic UserIdClaimNotFound = 'Användarens ansprÃ¥k \\'id\\' hittades inte!';\r\n\tstatic SaveUserFurtherEducation = 'Spara vidareutbildning';\r\n\tstatic ProjectNumber = 'Projektnummer';\r\n\tstatic DefaultDeductionWithoutTax = 'Standardavdrag (moms 0 %)';\r\n\tstatic FormTextInput = 'Textinmatning';\r\n\tstatic EditDefaultHandlers = 'Redigera standardhanterare';\r\n\tstatic Last120Days = 'Senaste 120 dagarna';\r\n\tstatic DeletingWhistleBlowCategoriesParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort kategorierna \"{0}\"! Fel: \\'{1}\\'';\r\n\tstatic FormDropdownOptionsDialog = 'Dropdown alternativ';\r\n\tstatic MarkMessageAsRead = 'Markera meddelandet som läst';\r\n\tstatic FileStorageQuotaGB = 'Fillagringskvot (GB)';\r\n\tstatic EmptyingTaskTrashBinWasNotSuccessfulConcurrencyError = 'Det gick inte att tömma papperskorgen för uppgiften eftersom data i uppgifterna har ändrats samtidigt av en annan användare!';\r\n\tstatic SendMessage = 'Skicka meddelande';\r\n\tstatic RestoringTaskParameterFromTrashBinWasNotSuccessfulConcurrencyError = 'Det gick inte att Ã¥terställa uppgiften \\'{0}\\' frÃ¥n papperskorgen, eftersom data i uppgiften har ändrats samtidigt av en annan användare!';\r\n\tstatic SavingChartWasSuccessful = 'Diagrammet har sparats!';\r\n\tstatic CalendarTaskCategories = 'Kategorier';\r\n\tstatic PasswordHasBeenCopiedToClipboard = 'Lösenordet har kopierats till urklipp!';\r\n\tstatic DeletingInstantMessageChannelWasSuccessful = 'Chatten har tagits bort!';\r\n\tstatic TimeMustBeDefined = 'Tiden mÃ¥ste definieras!';\r\n\tstatic DoYouReallyWantToRemoveFileParameter = 'Vill du verkligen ta bort filen \\'{0}\\'?';\r\n\tstatic UserNotAllowedToViewNotifier = 'Begränsad behandlingsrätt: Användaren har inte rätt att se anmälaren';\r\n\tstatic SaveComment = 'Spara kommentar';\r\n\tstatic AdditionalSettings = 'Ytterligare inställningar';\r\n\tstatic ImageProperties = 'Bildegenskaper';\r\n\tstatic UploadDocument = 'Ladda upp fil';\r\n\tstatic Contents = 'InnehÃ¥ll';\r\n\tstatic PermissionsOtherCompanies = 'Behörigheter (andra företag)';\r\n\tstatic FormTextPreWrap = 'Bevara textradbrytningar';\r\n\tstatic SavingReportWasNotSuccessfulConcurrencyError = 'Det gick inte att spara rapporten eftersom data i rapporten har ändrats samtidigt av en annan användare!';\r\n\tstatic Employee = 'Anställd';\r\n\tstatic LanguageNonLocalEnglish = 'English';\r\n\tstatic RecordUserModuleProperties = 'Egenskaper för användarposter';\r\n\tstatic EditEventType = 'Redigera kategori 1';\r\n\tstatic UserGroups = 'Användargrupper';\r\n\tstatic WhistleBlowStatisticsResolvedRecords = 'Lösta rapporter';\r\n\tstatic DeletingWhistleBlowParameterWasSuccessful = 'VisselblÃ¥sningsrapporten \\'{0}\\' har tagits bort!';\r\n\tstatic SelectImageFile = 'Välj bildfil!';\r\n\tstatic DeletingFileFilterParameterWasNotSuccessfulUsedInParameterFolders = 'Det gick inte att ta bort filfiltret \"{0}\", eftersom filfiltret används i mappen {1}!';\r\n\tstatic TogglePreviewPanel = 'Visa/dölj förhandsgranskning';\r\n\tstatic MovingTaskParameterToTrashBinWasNotSuccessfulErrorParameter = 'Det gick inte att flytta uppgiften \\'{0}\\' till papperskorgen! Fel: \\'{1}\\'';\r\n\tstatic FolderProperties = 'Mappegenskaper';\r\n\tstatic DeletingDirectoryItemFolderParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort mappen \\'{0}\\' eftersom data i mappen har ändrats samtidigt av en annan användare!';\r\n\tstatic NewCompanyInformation = 'Nytt företag';\r\n\tstatic ShowOnMap = 'Visa pÃ¥ kartan';\r\n\tstatic DeletingTaskPrioritiesParameterWasSuccessful = 'Uppgiftsprioriteterna \\'{0}\\' har tagits bort!';\r\n\tstatic TaskMustBeSavedBeforeNewDataRowsCanBeAdded = 'Uppgiften mÃ¥ste sparas innan nya rader kan läggas till!';\r\n\tstatic DeletingCompanyParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort företaget \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic CommentMustNotBeEmpty = 'Kommentar fÃ¥r inte vara tom!';\r\n\tstatic EventsToApprove = 'Händelser att godkänna';\r\n\tstatic DeletingTaskTypesParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort uppgiftstyperna \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic FileFilterCodeIsAlreadyInUse = 'Filfilterkoden används redan!';\r\n\tstatic RemoveFurtherEducation = 'Ta bort vidareutbildning';\r\n\tstatic MessageStartDateMustBeDefined = 'Meddelande synligt fram till datum mÃ¥ste definieras!';\r\n\tstatic DefaultEventHandlersAndNotifiedPersons = 'Standardincidenthanterare och meddelanden';\r\n\tstatic DeletingPartnersParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort partner \\'{0}\\' eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic EventTypeMustBeDefined = 'Kategori 1 mÃ¥ste definieras!';\r\n\tstatic WhistleBlowCategory = 'Whistle Blow Kategori';\r\n\tstatic FileParameterAlreadyExistsInFileSystem = 'Filen \\'{0}\\' finns redan i filsystemet!';\r\n\tstatic DeletingTaskStatesParameterWasSuccessful = 'UppgiftstillstÃ¥nden \\'{0}\\' har tagits bort!';\r\n\tstatic ModifyExistingDocumentTemplate = 'Ändra befintlig dokumentmall';\r\n\tstatic CalendarTaskSeries = 'Serie';\r\n\tstatic TitleMustBeDefined = 'Titel mÃ¥ste definieras!';\r\n\tstatic AddUserParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att lägga till användarkontot \\'{0}\\', eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic WhistleBlowChannelWasNotFoundExplanation = 'Kontrollera internetadressen som angavs i webbläsarens adressfält.';\r\n\tstatic FormInitializeFromSavedRowDialog = 'Initiera standardvärde frÃ¥n sparad rad';\r\n\tstatic RemoveUserAndKeepRecordUser = 'Ta bort användarkonto och behÃ¥ll användarregister';\r\n\tstatic Keywords = 'Nyckelord';\r\n\tstatic SelectRecordUsers = 'Välj användarposter';\r\n\tstatic AddCompanyParameterWasNotSuccessfulErrorParameter = 'Det gick inte att lägga till företaget \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic UserRecordStatisticsExpiredQualifications = 'UtgÃ¥ngna kvalifikationer';\r\n\tstatic DaysAgo120 = '120 dagar sedan';\r\n\tstatic WhistleBlowResolutionOther = 'Övrig';\r\n\tstatic AddCompanyGroupParameterWasSuccessful = 'Företagsgruppen \\'{0}\\' har lagts till!';\r\n\tstatic ZipFileCreationFailed = 'Det gick inte att skapa zip-fil! Fel: \\'{0}\\'';\r\n\tstatic EmailsSentSuccessfully = 'E-postmeddelanden har skickats!';\r\n\tstatic AccessRightReadTasks = 'Hantering av uppgifter';\r\n\tstatic DeletingCompaniesParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort företag \\'{0}\\' eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic AddMessageType = 'Lägg till meddelandetyp';\r\n\tstatic AddBasicEducation = 'Lägg till grundutbildning';\r\n\tstatic SaveAndSend = 'Spara och skicka';\r\n\tstatic RemoveTaskPermanently = 'Ta bort Task Permanentity';\r\n\tstatic NotAssigned = 'Inte tilldelats';\r\n\tstatic EditUnit = 'Redigera enhet';\r\n\tstatic FormColumnWidth = 'Kolumnbredd';\r\n\tstatic PasswordMustContainLowercaseChar = 'Lösenordet mÃ¥ste innehÃ¥lla gemener!';\r\n\tstatic ServiceFeePercent = 'Serviceavgift (%)';\r\n\tstatic ImportingUsersParameterWasNotSuccessfulErrorParameter = 'Det gick inte att importera användarkonton \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic ApprovedEvent = 'Godkände Incidenten';\r\n\tstatic RecordFurtherEducationParameterNotFound = 'Vidareutbildning \\'{0}\\' hittades inte!';\r\n\tstatic PasswordChangeRequestHasBeenExpired = 'Begäran om lösenordsändring \\'{0}\\' har löpt ut!';\r\n\tstatic RecordUserFamiliarizationParameterNotFound = 'Användarpost bekantskapspost \\'{0}\\' hittades inte!';\r\n\tstatic MessageDateMustBeDefined = 'Meddelandedatum mÃ¥ste anges!';\r\n\tstatic InUse = 'I användning';\r\n\tstatic CurrentWorkPlace = 'Nuvarande arbetsplats';\r\n\tstatic AllUnits = 'Alla enheter';\r\n\tstatic Remainders = 'Rester';\r\n\tstatic InstantMessageChannelParameterNotFound = 'Chatten \\'{0}\\' hittades inte!';\r\n\tstatic Orientation = 'Orientering';\r\n\tstatic YouHaveUnapprovedChangesDoYouWantApproveChanges = 'Du har inte godkänt ändringar som du har gjort. Vill du godkänna ändringar?';\r\n\tstatic SavingUserParameterParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara användaralternativet \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic UseInheritedContentFiltering = 'Använd ärvt innehÃ¥llsfiltrering';\r\n\tstatic PreviousCalendarYear = 'FöregÃ¥ende kalenderÃ¥r';\r\n\tstatic ToggleArchivedFurtherEducations = 'Visa/Göm arkiverade vidareutbildningar';\r\n\tstatic Intern = 'Internera';\r\n\tstatic DecreasingVersionHistorySizeRemovesCurrentlySavedVersionHistoryRecords = 'Notera! Om du minskar storleken pÃ¥ versionshistoriken tas tidigare sparade versioner bort frÃ¥n versionshistoriken.';\r\n\tstatic PublishVersionHistorySize = 'Publicera versionshistorik Storlek';\r\n\tstatic Keyword = 'Nyckelord';\r\n\tstatic DeletingRecordUserEmploymentParameterWasSuccessful = 'Anställningen \\'{0}\\' har tagits bort!';\r\n\tstatic RecordFamiliarizationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted = 'Bekantskap \\'{0}\\' används i {1} användarposter och kan inte tas bort!';\r\n\tstatic InstantMessageUserInvitationAcceptTypeCannotInvite = 'Jag kan inte bli inbjuden att gÃ¥ med i chatten';\r\n\tstatic SelectUrgencyClass = 'Välj brÃ¥dskande klass';\r\n\tstatic Restore = 'Ã…terställ';\r\n\tstatic MaximumTotalSizeOfAttachmentsIsParameterMB = 'Den maximala totala storleken pÃ¥ alla bilagor är {0} MB!';\r\n\tstatic ResolutionDescription = 'Beskrivning av upplösning';\r\n\tstatic EmptyTaskTrashBinConfirmation = 'Vill du verkligen ta bort alla uppgifter permanent frÃ¥n papperskorgen? Det gÃ¥r inte att Ã¥terställa borttagna uppgifter?';\r\n\tstatic DeletingDocumentTemplatesParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort dokumentmallarna \"{0}\", eftersom data i dokumentmallarna har ändrats samtidigt av en annan användare!';\r\n\tstatic LanguageNonLocalFinnish = 'Suomi';\r\n\tstatic VersionHistory = 'Versionshistorik';\r\n\tstatic Min = 'Min';\r\n\tstatic EditEventTypeC = 'Redigera kategori 3';\r\n\tstatic Choose = 'Välja';\r\n\tstatic QualificationIsValid = 'Kvalifikationen är giltig';\r\n\tstatic ChangingPasswordWasNotSuccessfulConcurrencyError = 'Det gick inte att ändra lösenordet eftersom användardata har ändrats samtidigt av en annan användare!';\r\n\tstatic DeletingEventUrgencyClassesParameterWasSuccessful = 'BrÃ¥dskande klasser \\'{0}\\' har tagits bort!';\r\n\tstatic RecordUserExcelSalary = 'Lön';\r\n\tstatic Event = 'Incident';\r\n\tstatic RestoreTaskFromTrashBin = 'Ã…terställ uppgift frÃ¥n papperskorgen';\r\n\tstatic RemovingEventHandlersWasSuccessful = 'Hanterare har tagits bort!';\r\n\tstatic Anonymity = 'Anonymitet';\r\n\tstatic FormFalse = 'Osann';\r\n\tstatic SearchCondition = 'sökkriterier';\r\n\tstatic Category = 'Kategori';\r\n\tstatic DeletingEventParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort incidenten \\'{0}\\' eftersom data i incidenten har ändrats samtidigt av en annan användare!';\r\n\tstatic SharedFilter = 'Delat filter';\r\n\tstatic AddRemainder = 'Lägg till resten';\r\n\tstatic TrashBin = 'Soptunna';\r\n\tstatic SelectCategory = 'Välj kategori';\r\n\tstatic UsedInParameterTasks = 'Används i {0} uppgifter';\r\n\tstatic WhistleBlowSeverityNormal = 'Vanligt';\r\n\tstatic SearchEvents = 'Sök incidenter';\r\n\tstatic ClosedEvent = 'Stängd Incidenten';\r\n\tstatic NoCalendarTasksToShow = 'Inga händelser att visa';\r\n\tstatic PreviewPrint = 'Förhandsgranska (skriv ut)';\r\n\tstatic SavingEventTypesWasNotSuccessfulErrorParameter = 'Det gick inte att spara kategori 1! Fel: \\'{0}\\'';\r\n\tstatic WhistleBlowArchivingTypeChangeState = 'Ändra tillstÃ¥nd för rapport till \"Arkiverad\"';\r\n\tstatic AddCompanyGroups = 'Lägg till företagsgrupper';\r\n\tstatic FolderName = 'Mappnamn';\r\n\tstatic DeletingCalendarTaskCategoryParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort kategorin \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic DeletingTaskTypeParameterWasSuccessful = 'Uppgiftstypen \\'{0}\\' har tagits bort!';\r\n\tstatic InstantMessageChannelInternal = 'Företag internt';\r\n\tstatic AdministratorUserCodeMustBeDefined = 'Användarnamnet för administratören mÃ¥ste definieras!';\r\n\tstatic CreatingCompressedFileWasNotSuccessfulErrorParameter = 'Filkomprimering misslyckades! Fel: \\'{0}\\'';\r\n\tstatic DoYouReallyWantToRemoveSharedDocumentTemplateParameter = 'Vill du verkligen ta bort den delade dokumentmall \\'{0}\\'?';\r\n\tstatic DeletingUserParametersWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort användarparametrar eftersom data i parametrarna har ändrats samtidigt av en annan användare!';\r\n\tstatic DeletingAttachmentParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort bilagan \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic DeletingDocumentTemplatesParameterWasSuccessful = 'Dokumentmallarna \\'{0}\\' har tagits bort!';\r\n\tstatic PanelName = 'Panelnamn';\r\n\tstatic UserCodeParameterMustBeValid = 'Användarnamnet mÃ¥ste vara 8-50 tecken lÃ¥ngt och det fÃ¥r inte innehÃ¥lla blanksteg (\\'{0}\\').';\r\n\tstatic RemovePartner = 'Ta bort partner';\r\n\tstatic SourceDescription = 'Källbeskrivning';\r\n\tstatic CopyingFileParameterWasNotSuccessfulErrorParameter = 'Det gick inte att kopiera filen \\'{0}\\' som filen \\'{1}\\' i filsystemet! Fel: \\'{2}\\'';\r\n\tstatic Other = 'Övrig';\r\n\tstatic DeletingPartnerParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort partnern \\'{0}\\' eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic FormulaDateAndTimeDiffInTimeSpan = 'Tidsskillnad i timmar';\r\n\tstatic AccessRightWriteRecords = 'Alla enheters användarregister';\r\n\tstatic AdditionalPermissionARecords = 'Arkivering och borttagning';\r\n\tstatic SavingTaskDataRowWasNotSuccessfulConcurrencyError = 'Det gick inte att spara uppgiftsraden eftersom uppgiftsraden har ändrats samtidigt av en annan användare!';\r\n\tstatic UserName = 'Användarnamn';\r\n\tstatic ReadingFileParameterWasNotSuccessfulErrorParameter = 'Det gick inte att läsa filen \\'{0}\\' i filsystemet! Fel: \\'{1}\\'';\r\n\tstatic DeletingCalendarTaskParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort händelsen \\'{0}\\', eftersom data i uppgiften har ändrats samtidigt av en annan användare!';\r\n\tstatic Approval = 'Godkännande';\r\n\tstatic ExternalIntraSystemUserTokenMustBeDefined = 'Användartoken i externt eSalkku-system mÃ¥ste definieras!';\r\n\tstatic Repeated = 'Upprepad';\r\n\tstatic WhistleBlowChannelMustHaveAtLeastOneAdministrator = 'Whistle blow-kanal mÃ¥ste ha minst en administratör!';\r\n\tstatic Internet = 'Internet';\r\n\tstatic AgencyWorker = 'ByrÃ¥arbetare';\r\n\tstatic Remove = 'Avlägsna';\r\n\tstatic EmailSendDate = 'E-post skickat datum';\r\n\tstatic IpAddress = 'IP-adress';\r\n\tstatic DeletingCompanyGroupsParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort företagsgrupper \"{0}\"! Fel: \\'{1}\\'';\r\n\tstatic Text = 'Text';\r\n\tstatic RecordBasicEducationCodeIsAlreadyInUse = 'Grundutbildningens namn används redan!';\r\n\tstatic InstantMessageChannelGroupExternal = 'Grupp (intercompany)';\r\n\tstatic Yearly = 'Ã…rlig';\r\n\tstatic AddForm = 'Lägg till ett formulär';\r\n\tstatic Test = 'Testa';\r\n\tstatic DeletingEventPartnerParameterWasSuccessful = 'Incidentpartnern \\'{0}\\' har tagits bort!';\r\n\tstatic CompanyNumber = 'Företagsnummer';\r\n\tstatic CalendarTaskParameterNotFound = 'Händelsen \\'{0}\\' hittades inte!';\r\n\tstatic FormSizeExtraLarge = 'Extra stor';\r\n\tstatic PublishVersion = 'Publicera version';\r\n\tstatic UserCanBeSelectedAsEventHandler = 'Användare kan väljas som incidenthanterare';\r\n\tstatic RemoveTaskHandler = 'Ta bort hanteraren';\r\n\tstatic ClearSubUnitDefaultHandlersAndNotifiedPersons = 'Rensa underenhets standardhanterare och anmälda personer';\r\n\tstatic DoYouReallyWantToRemoveSelectedForms = 'Vill du verkligen ta bort valda formulär?';\r\n\tstatic SavingWhistleBlowCategoryParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara whistle blow-kategorin \\'{0}\\', eftersom data i whistleblow-kategorin har ändrats samtidigt av en annan användare!';\r\n\tstatic SavingTaskStateParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara uppgiftens status \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic FileParameterNotFound = 'Filen \\'{0}\\' hittades inte!';\r\n\tstatic ByName = 'Vid namn';\r\n\tstatic PrintTask = 'Utskriftsuppgift';\r\n\tstatic AddPartnerCompanies = 'Lägg till partners som innehÃ¥ll kan delas med';\r\n\tstatic AddUser = 'Lägg till användarkonto';\r\n\tstatic DeletingUsersParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort användarkonton \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic GeneralInfo = 'Allmän';\r\n\tstatic Published = 'Publicerad';\r\n\tstatic CurrentTopics = 'Aktuella ämnen';\r\n\tstatic SaveFilter = 'Spara filter';\r\n\tstatic AddPayer = 'Lägg till betalare';\r\n\tstatic SavePasswordAndMoveToLoginPage = 'Spara lösenord och flytta till inloggningssidan';\r\n\tstatic SaveAsFavorite = 'Spara som favorit';\r\n\tstatic DraftCannotBeApproved = 'Utkast kan inte godkännas!';\r\n\tstatic WhistleBlowSeverityVeryLow = 'Väldigt lÃ¥g';\r\n\tstatic DownloadAttachment = 'Ladda ner vald bilaga';\r\n\tstatic InstantMessageChannelGroupInternal = 'Grupp (företagsintern)';\r\n\tstatic Publisher = 'Publicerad av';\r\n\tstatic Courses = 'Kurser';\r\n\tstatic AuthorizationLevelSuperUser = 'Superanvändare';\r\n\tstatic WageGroup = 'Lönegrupp';\r\n\tstatic RemoveCompany = 'Ta bort företag';\r\n\tstatic OnlyImageAndPdfAttachmentsAreAllowedInvalidAttachmentParamater = 'Endast bild- och pdf-bilagor är tillÃ¥tna! Bilagorna \"{0}\" är ogiltiga.';\r\n\tstatic SavingInstantMessageChannelUserWasNotSuccessfulConcurrencyError = 'Det gick inte att spara deltagare, eftersom data i deltagaren har ändrats samtidigt av en annan användare!';\r\n\tstatic AddEventTypesToEvent = 'Lägg till kategori 1 genom att trycka pÃ¥ plusknappen.';\r\n\tstatic UserRecordStatisticsExpiringInSixMonthsFamiliarizations = 'Bekantskaper som löper ut om sex mÃ¥nader';\r\n\tstatic FileChangesCheckingAndEmailingStarted = 'Filändringskontroll och e-post har börjat';\r\n\tstatic DeletingWhistleBlowChannelAdminParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort administratören \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic DocumentPublished = 'Publicerad av';\r\n\tstatic Unread = 'Oläst';\r\n\tstatic ImportUserDialogInstruction = 'Ladda upp excel-fil för att importera användarkonto eller ladda ner excel-mall där du kan fylla i användarkontoinformation.';\r\n\tstatic AddingEventHandlerWasNotSuccessfulErrorParameter = 'Det gick inte att lägga till hanterare! Fel: \\'{0}\\'';\r\n\tstatic DoYouReallyWantToCreateRemainderInPast = 'Vill du verkligen skapa rester i det förflutna?';\r\n\tstatic PasswordMustContainDigitOrSpecialCharacter = 'Lösenordet mÃ¥ste innehÃ¥lla nummer eller specialtecken!';\r\n\tstatic Today = 'I dag';\r\n\tstatic SavingWhistleBlowChannelParameterWasSuccessful = 'Whistle blow-kanalen \\'{0}\\' har sparats!';\r\n\tstatic DocumentModulePropertiesSaveWasSuccessful = 'Dokumentinställningarna har sparats!';\r\n\tstatic TasksFound = 'Uppgifter hittades';\r\n\tstatic UserReports = 'Användarregisterrapporter';\r\n\tstatic EditableDocumentApproveConfirmation = 'Vill du godkänna dokumentet?';\r\n\tstatic ChartProperties = 'Diagramegenskaper';\r\n\tstatic DeletingUserGroupsParameterWasSuccessful = 'Användargrupperna \\'{0}\\' har tagits bort!';\r\n\tstatic CalendarTaskEditSeries = 'Redigera serie';\r\n\tstatic ExpiresInYear = 'GÃ¥r ut om Ã¥r';\r\n\tstatic Week = 'Vecka';\r\n\tstatic MaximumSizeOfFilesThatCanBeAddedInBatchIsParameterMB = 'Den maximala totala storleken pÃ¥ filer som kan läggas till i batch är {0} MB!';\r\n\tstatic Instructions = 'Instruktioner';\r\n\tstatic ArchivingRecordUserFamiliarizationsWasNotSuccessfulErrorParameter = 'Det gick inte att arkivera ytterligare bekantskaper! Fel: \\'{0}\\'';\r\n\tstatic SavingEventPartnerParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara incidentpartnern \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic EInvoiceAddress = 'E-faktura adress';\r\n\tstatic SavingApplicationPermissionsWasSuccessful = 'Systembehörigheterna har sparats!';\r\n\tstatic ExitingInstantMessageChannelWasNotSuccessfulConcurrencyError = 'Det gick inte att avsluta chatten eftersom data i chatten har ändrats samtidigt av en annan användare!';\r\n\tstatic Search = 'Sök';\r\n\tstatic SavingOneTimePasswordParameterWasSuccessful = 'EngÃ¥ngslösenordet har sparats!';\r\n\tstatic DeletingRecordFurtherEducationsParameterWasSuccessful = 'Vidareutbildningar \\'{0}\\' har tagits bort!';\r\n\tstatic FormDropdownOption = 'Alternativ';\r\n\tstatic DoYouReallyWantToRemoveTaskStateParameter = 'Vill du verkligen ta bort uppgiftstillstÃ¥ndet \\'{0}\\'?';\r\n\tstatic CalendarTaskHandlerFilter = 'Ansvariga person';\r\n\tstatic EventApprovalWasNotSuccessfulConcurrencyError = 'Det gick inte att godkänna incidenten eftersom hanteraren har ändrats samtidigt av en annan användare!';\r\n\tstatic AddWhistleBlowChannelAdminsParameterWasNotSuccessfulErrorParameter = 'Det gick inte att lägga till administratörer \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic AddCompaniesParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att lägga till företag \\'{0}\\' eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic UserIsSystemAdminClaimNotFound = 'AnvändaransprÃ¥ket \"userIsSystemAdmin\" hittades inte!';\r\n\tstatic WhistleBlowAnonymousReportInfo = 'Om du inte vill avslöja ditt namn under rapporteringsprocessen, välj det här alternativet.';\r\n\tstatic DeletingWhistleBlowCategoriesParameterWasSuccessful = 'Visselslagskategorierna \\'{0}\\' har tagits bort!';\r\n\tstatic MaximumSizeOfAttachmentThatCanBeAddedInBatchIsParameterMB = 'Den maximala totala storleken pÃ¥ bilagor som kan läggas till i batch är {0} MB!';\r\n\tstatic SavingUserGroupParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara användargruppen \\'{0}\\', eftersom data i användargruppen har ändrats samtidigt av en annan användare!';\r\n\tstatic EmployeeType = 'Typ av anställd';\r\n\tstatic EventTypeC = 'Kategori 3';\r\n\tstatic EventTypeBCodeIsAlreadyInUse = 'Kategori 2-namnet används redan!';\r\n\tstatic TimeSpanQuarter = 'Fjärdedel';\r\n\tstatic OpenWhistleBlow = 'Öppna Whistle Blow Report';\r\n\tstatic DeletingDirectoryItemDocumentParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort filen \\'{0}\\' eftersom data i filen har ändrats samtidigt av en annan användare!';\r\n\tstatic UseObserverAction = 'Visa observatörsÃ¥tgärdsfält';\r\n\tstatic LogisticVoucherCustomers = 'Kunder';\r\n\tstatic PermissionToCreateEventsToPartners = 'TillstÃ¥nd att skapa incidenter för partners';\r\n\tstatic AmountOfComments = 'Antal kommentarer';\r\n\tstatic DeletingOptionParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort alternativet \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic NewCompanyMustBeSavedBeforeCompanyGroupsCanBeAdded = 'Nytt företag mÃ¥ste sparas innan företagsgrupper kan läggas till!';\r\n\tstatic UnitMustBeSelected = 'Enhet mÃ¥ste väljas!';\r\n\tstatic AddEventHandlersToEvent = 'Lägg till hanterare genom att trycka pÃ¥ plusknappen.';\r\n\tstatic ObserverActionMustBeDefined = 'Observatörens agerande mÃ¥ste definieras!';\r\n\tstatic AddLogisticVoucherCustomerPaymentSetting = 'Lägg till betalningsinställning';\r\n\tstatic DescriptionMustBeDefined = 'Beskrivning mÃ¥ste definieras!';\r\n\tstatic AddUsersParameterWasNotSuccessfulErrorParameter = 'Det gick inte att lägga till användarkonton \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic DocumentIsEmpty = 'Dokumentet är tomt!';\r\n\tstatic CompanyGroup = 'Företagsgrupp';\r\n\tstatic SavingEventTypeBParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara kategori 2 \\'{0}\\', eftersom data i incidentkategori 2 har ändrats samtidigt av en annan användare!';\r\n\tstatic AddCompanyParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att lägga till företaget \\'{0}\\' eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic WhistleBlowResolutionUnspecified = 'Inte löst';\r\n\tstatic RequestValidationErrorOnFieldParameterWithValueParameter = 'Värdet \\'{1}\\' i fältet \\'{0}\\' innehÃ¥ller innehÃ¥ll som anses vara farligt i webbapplikationer!';\r\n\tstatic FormCalculatedIntegerNumber = 'Beräknat heltal';\r\n\tstatic EventUrgencyClassParameterIsInUseInParameterEventsAndCannotBeDeleted = 'BrÃ¥dskande klass \\'{0}\\' används i {1} incidenter och kan inte tas bort!';\r\n\tstatic PrintTextPublished = 'Publicerad';\r\n\tstatic SavingRecordBasicEducationParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara grundläggande utbildning \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic AddUsers = 'Lägg till användarkonton';\r\n\tstatic DefaultEventTypes = 'Standardkategorier 1';\r\n\tstatic DeletingMetadataFromFileParameterFailed = 'Det gick inte att ta bort metadata frÃ¥n filen \\'{0}\\'!';\r\n\tstatic UnitHandlingIncomingEvents = 'Enhet som hanterar incidenter som skickas av partnern';\r\n\tstatic CalendarTaskOpenSeries = 'Öppen serie';\r\n\tstatic RemoveFilter = 'Ta bort filter';\r\n\tstatic Select = 'Välj';\r\n\tstatic ReminderMinutesBefore = 'minuter innan';\r\n\tstatic RecordParameterLockingFailedRecordIsWriteLockedToUserParameter = 'Det gick inte att lÃ¥sa posten \\'{0}\\'! Posten är skrivlÃ¥st till användaren \\'{0}\\'!';\r\n\tstatic Units = 'Enheter';\r\n\tstatic ReportsModified = 'Favoritrapporter';\r\n\tstatic SavingTaskParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara uppgiften \\'{0}\\', eftersom uppgiften har ändrats samtidigt av en annan användare!';\r\n\tstatic DoYouReallyWantToUnlockTaskDataRow = 'Vill du verkligen lÃ¥sa upp uppgiftsraden?';\r\n\tstatic Year = 'Ã…r';\r\n\tstatic EventHandlers = 'Handlare';\r\n\tstatic DataTransferError = 'Dataöverföringsfel!';\r\n\tstatic SendPasswordChangeEmail = 'Skicka lösenordsändringslänk via e-post';\r\n\tstatic AddLogisticVoucherPaymentSetting = 'Lägg till betalningsinställning';\r\n\tstatic WhistleBlowCategoryParameterIsInUseInParameterWhistleBlowsAndCannotBeDeleted = 'Whistle blow kategori \"{0}\" används i {1} whistle blow records och kan inte tas bort!';\r\n\tstatic ModifyExistingSharedDocumentTemplate = 'Ändra befintlig delad dokumentmall';\r\n\tstatic WhistleBlowFollowReport = 'Följ Rapport';\r\n\tstatic DeletingCompanyParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort företaget \\'{0}\\' eftersom data i företaget har ändrats samtidigt av en annan användare!';\r\n\tstatic SavingTaskStateParameterWasSuccessful = 'UppgiftstillstÃ¥nd \\'{0}\\' har sparats!';\r\n\tstatic MovingFilesAndDocumentsToFolderParameterWasNotSuccessfulErrorParameter = 'Det gick inte att flytta filer/dokument till mappen \\'{0}! Fel: \\'{1}\\'';\r\n\tstatic CopyPermissionToAllSameLevelUnits = 'Kopiera tillstÃ¥nd till alla enheter pÃ¥ samma nivÃ¥';\r\n\tstatic Default = 'Standard';\r\n\tstatic Relation = 'Relation';\r\n\tstatic FormCompactStyle = 'Kompakt';\r\n\tstatic ArchivingRecordUserFurtherEducationsWasNotSuccessfulConcurrencyError = 'Det gick inte att arkivera vidareutbildningar, eftersom data i vidareutbildningar har ändrats samtidigt av en annan användare!';\r\n\tstatic SavingKeywordParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara sökordet \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic Open = 'Öppen';\r\n\tstatic DeletingFileFilterParameterWasSuccessful = 'Filfiltret \\'{0}\\' har tagits bort!';\r\n\tstatic CompanyGroupNameMustBeDefined = 'Företagsgruppens namn mÃ¥ste anges!';\r\n\tstatic RecordUserExcelQualification = 'Kvalifikationer';\r\n\tstatic SavingEventParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara incidenten \\'{0}\\' eftersom data i incidenten har ändrats samtidigt av en annan användare!';\r\n\tstatic AddingAddRecordUserTransferredPropertiesWasNotSuccessfulErrorParameter = 'Det gick inte att lägga till överförda egenskaper! Fel: \\'{0}\\'';\r\n\tstatic Save = 'Spara';\r\n\tstatic UserAccountMustBeSelected = 'Användarkonto mÃ¥ste väljas!';\r\n\tstatic SavingRecordUserParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara användarposten \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic NoReports = 'Inga rapporter!';\r\n\tstatic IncludeArchivedFurtherEducations = 'Inkludera arkiverade vidareutbildningar';\r\n\tstatic DoYouReallyWantToRemoveWhistleBlowCategoryParameter = 'Vill du verkligen ta bort kategorin \\'{0}\\'?';\r\n\tstatic SavingOptionParameterWasSuccessful = 'Alternativet \\'{0}\\' har sparats!';\r\n\tstatic MessageParameterNotFound = 'Meddelandet \\'{0}\\' hittades inte!';\r\n\tstatic UserIsInstantMessageChannelOnlyAdministratorInParameterInstantMessageChannels = 'Användaren är bara chattadministratör i {0} chattar!';\r\n\tstatic AddWhistleBlow = 'Lägg till Whistle Blow Report';\r\n\tstatic Location = 'Plats';\r\n\tstatic DoYouWantToPublishEvent = 'Vill du publicera händelsen?';\r\n\tstatic EditableDocumentParameterNotFound = 'Dokumentet \\'{0}\\' hittades inte!';\r\n\tstatic MessageTypesMustBeDefinedBeforeAddingMessages = 'Meddelandetyper mÃ¥ste definieras innan meddelanden läggs till!';\r\n\tstatic RemoveCalendarTaskCategory = 'Ta bort kategori';\r\n\tstatic DeletingInstantMessageChannelParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort chatten \"{0}\" eftersom data i snabbmeddelandekanalen har ändrats samtidigt av en annan användare!';\r\n\tstatic AdminMustBeDefined = 'Administratör mÃ¥ste definieras!';\r\n\tstatic FormBuilder = 'Formverktyg';\r\n\tstatic AddCompanyGroupParameterWasNotSuccessfulErrorParameter = 'Det gick inte att lägga till företagsgruppen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic EventIsApprovedByUser = 'Användaren har godkänt incidenten';\r\n\tstatic ThisWeek = 'Denna vecka';\r\n\tstatic AccessRightReadWhistleBlow = 'Begränsad rapporthantering';\r\n\tstatic ExpiresInParameterMonths = 'GÃ¥r ut om {0} mÃ¥nader';\r\n\tstatic KeywordsAndCondition = 'Alla valda nyckelord';\r\n\tstatic AddingAddRecordUserTransferredPropertiesWasSuccessful = 'Överförda egenskaper har lagts till!';\r\n\tstatic Permissions = 'Behörigheter';\r\n\tstatic InheritedContentFilter = '(ärvt innehÃ¥llsfilter)';\r\n\tstatic UserFilterInActive = 'Används inte';\r\n\tstatic UserRecordStatisticsMissingQualifications = 'Saknade kvalifikationer';\r\n\tstatic FormulaAbs = 'Absolut värde';\r\n\tstatic DirectoryItemDocumentsNotFound = 'Filer/dokument gillar inte!';\r\n\tstatic Attachments = 'Bilagor';\r\n\tstatic DeletingInstantMessageUserParameterWasSuccessful = 'Deltagare \\'{0}\\' har tagits bort!';\r\n\tstatic ReminderNone = 'Ingen pÃ¥minnelse';\r\n\tstatic RemoveMessage = 'Ta bort meddelande';\r\n\tstatic ContentVersion = 'InnehÃ¥llsversion';\r\n\tstatic PayeeUsersCanLogInToTheSystem = 'Företagsanvändare kan logga in i systemet';\r\n\tstatic FormExpressionMustBeDefined = 'Ekvationen mÃ¥ste definieras!';\r\n\tstatic AddingEventHandlersWasSuccessful = 'Hanterare har lagts till!';\r\n\tstatic AccountIBANNumber = 'Bankkonto IBAN-nummer';\r\n\tstatic PersonalIdentityCode = 'Personlig identitetskod';\r\n\tstatic DoYouReallyWantToRemoveSelectedRecordFamiliarizations = 'Vill du verkligen ta bort valda ytterligare bekantskaper?';\r\n\tstatic DoYouReallyWantToRemoveEventTypeCParameter = 'Vill du verkligen ta bort kategori 3 \\'{0}\\'?';\r\n\tstatic SavingCompanyGroupParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara företagsgruppen \\'{0}\\' eftersom data i företagsgruppen har ändrats samtidigt av en annan användare!';\r\n\tstatic DeletingRecordFamiliarizationParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort bekantskapen \\'{0}\\', eftersom data i bekantskapen har ändrats samtidigt av en annan användare!';\r\n\tstatic FormSizeDefault = 'Standard';\r\n\tstatic UserRecordStatisticsExpiredFamiliarizations = 'UtgÃ¥ngna bekantskaper';\r\n\tstatic Expand = 'Bygga ut';\r\n\tstatic UserRecordStatisticsExpiringInSixMonthsFurtherEducations = 'Vidareutbildningar som löper ut om sex mÃ¥nader';\r\n\tstatic ChangedEventUnit = 'Bytt incidentenhet';\r\n\tstatic ReadReceiptGivenPlur = 'Läskvitto skickat';\r\n\tstatic DateMustBeDefined = 'Datum mÃ¥ste anges!';\r\n\tstatic EventTypeParameterNotFound = 'Kategori 1 \\'{0}\\' hittades inte!';\r\n\tstatic DeletingRecordFurtherEducationGroupParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort fortbildningsgruppen \"{0}\", eftersom data i fortbildningsgruppen har ändrats samtidigt av en annan användare!';\r\n\tstatic SavingMessageSendPushParameterWasSuccessful = 'Meddelande push-aviseringslogg \\'{0}\\' har sparats!';\r\n\tstatic DoYouReallyWantToRemoveSelectedCalendarTaskCategories = 'Vill du verkligen ta bort valda kategorier?';\r\n\tstatic LoadMore = 'Ladda mer';\r\n\tstatic DeletingDefaultEventHandlerParameterWasSuccessful = 'Standardincidenthanteraren \\'{0}\\' har tagits bort!';\r\n\tstatic AccessRightReadEvents = 'Skapar incidenter';\r\n\tstatic RecordUserWithSameFirstNameMiddleNameAndLastNameAlreadyExists = 'Användarpost med samma förnamn \\'{0}\\', efternamn \\'{2}\\' och mellannamn \\'{1}\\' finns redan!';\r\n\tstatic PrivacyPolicyUrlMustBeDefined = 'Sekretesspolicy webbadress mÃ¥ste definieras!';\r\n\tstatic ForwardMessage = 'Fram';\r\n\tstatic EventTypeBParameterNotFound = 'Kategori 2 \\'{0}\\' hittades inte!';\r\n\tstatic GroupByEducation = 'Gruppera efter utbildning';\r\n\tstatic DeletingUserGroupParameterWasSuccessful = 'Användargruppen \\'{0}\\' har tagits bort!';\r\n\tstatic SelectEventTypeC = 'Välj kategori 3';\r\n\tstatic RefreshList = 'Uppdatera listan';\r\n\tstatic NewPrint = 'Nytt utskrift';\r\n\tstatic DeletingTaskPriorityParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort uppgiftsprioritet \\'{0}\\', eftersom data i uppgiftsprioriteten har ändrats samtidigt av en annan användare!';\r\n\tstatic NewInstantMessageChannelGroup = 'Ny grupp';\r\n\tstatic ChangedUrgencyClass = 'Ändrad incident brÃ¥dskande klass';\r\n\tstatic SavingOptionParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara alternativet \\'{0}\\', eftersom data i alternativet har ändrats samtidigt av en annan användare!';\r\n\tstatic Next = 'Nästa';\r\n\tstatic DeletingUserGroupUsersOfCompanyParameterWasSuccessful = 'Användargruppsanslutningar relaterade till företaget \\'{0}\\' har tagits bort!';\r\n\tstatic AllUsersOfTheUnit = 'Alla användare av enheten';\r\n\tstatic ClickToChangeTheLogo = 'Klicka för att ändra logotypen';\r\n\tstatic DeletingTaskStatesParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort uppgiftstillstÃ¥nd \\'{0}\\', eftersom data i uppgiftstillstÃ¥nd har ändrats samtidigt av en annan användare!';\r\n\tstatic TargetCompany = 'MÃ¥lföretag';\r\n\tstatic SavingRecordUserParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara användarposten \"{0}\", eftersom användarpostens data har ändrats samtidigt av en annan användare!';\r\n\tstatic FamiliarizationTime = 'Bekantskapstid';\r\n\tstatic AddPartner = 'Lägg till partner';\r\n\tstatic CopyingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att kopiera mappen \\'{0}\\' till mappen \\'{1}\\', eftersom data i mappen har ändrats samtidigt av en annan användare!';\r\n\tstatic EditWhistleBlowChannel = 'Redigera Whistle Blow Channel';\r\n\tstatic DocumentNameIsIllegal = 'Dokumentnamn är inte tillÃ¥tet (reserverat namn)!';\r\n\tstatic ByDate = 'Efter datum';\r\n\tstatic FolderMustBeEmptyBeforeItCanBeRemoved = 'Mappen mÃ¥ste vara tom innan den kan tas bort!';\r\n\tstatic UserLastNameMustBeDefined = 'Användarefternamn mÃ¥ste definieras!';\r\n\tstatic SavingOneTimePasswordWasNotSuccessfulErrorParameter = 'Det gick inte att spara engÃ¥ngslösenordet! Fel: \\'{0}\\'';\r\n\tstatic FullNameClaimNotFound = 'AnvändaransprÃ¥ket \"namn\" hittades inte!';\r\n\tstatic RenewPersonalizationWithUser = 'Ersätt anpassning med valt användarkonto';\r\n\tstatic SavingUserParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara användaren \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic AddSalaryRowToMultipleUserRecords = 'Lägg till lönerad till flera användarposter';\r\n\tstatic AddingTaskHandlerWasNotSuccessfulErrorParameter = 'Det gick inte att lägga till hanterare! Fel: \\'{0}\\'';\r\n\tstatic RestoringTaskParameterFromTrashBinWasNotSuccessfulErrorParameter = 'Det gick inte att Ã¥terställa uppgiften \\'{0}\\' frÃ¥n papperskorgen! Fel: \\'{1}\\'';\r\n\tstatic MovingFolderDirectoryItemParameterToFolderParameterWasSuccessful = 'Mappen \\'{0}\\' har flyttats till mappen \\'{1}\\'!';\r\n\tstatic VersionProperties = 'Versionsegenskaper';\r\n\tstatic LastName = 'Efternamn';\r\n\tstatic DoYouReallyWantToRemoveRecordFurtherEducationGroupParameter = 'Vill du verkligen ta bort vidareutbildningsgruppen \\'{0}\\'?';\r\n\tstatic FormLineBreak = 'Linjebrytning';\r\n\tstatic FormTrue = 'Sann';\r\n\tstatic AttachmentParameterNotFound = 'Det gick inte att hitta bilagan \\'{0}\\'!';\r\n\tstatic UnlockingEventParameterWasNotSuccessful = 'Det gick inte att lÃ¥sa upp incidenten \\'{0}\\'!';\r\n\tstatic AddUserGroupsParameterWasSuccessful = 'Användargrupperna \\'{0}\\' har lagts till!';\r\n\tstatic EditInstantMessageChannel = 'Redigera chatt';\r\n\tstatic UserCodeClaimNotFound = 'Användarens ansprÃ¥kskod hittades inte!';\r\n\tstatic WhistleBlowSeverityHigh = 'Hög';\r\n\tstatic MessageMustBeSavedBeforeAttachmentsCanBeAdded = 'Meddelandet mÃ¥ste sparas innan bilagor kan läggas till!';\r\n\tstatic ApproveEventHandlerConfirmation2 = 'Vill du verkligen godkänna incidenten?';\r\n\tstatic SavingDirectoryItemPermissionsWasSuccessful = 'Mappbehörigheterna har sparats!';\r\n\tstatic WhistleBlowStatisticsInProgressRecords = 'PÃ¥gÃ¥ende rapporter';\r\n\tstatic SearchFurtherEducations = 'Sök vidareutbildningar';\r\n\tstatic MiddleName = 'Mellannamn';\r\n\tstatic DeletingPartnerParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort partner \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic SavingRecordFurtherEducationParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara vidareutbildningen \\'{0}\\', eftersom data i vidareutbildningen har ändrats samtidigt av en annan användare!';\r\n\tstatic DoYouReallyWantToUnlockCalendarTask = 'Vill du verkligen lÃ¥sa upp uppgiften \\'{0}\\'?';\r\n\tstatic MoneyOut = 'Pengar ut';\r\n\tstatic SavingUnitPermissionsWasNotSuccessfulErrorParameter = 'Det gick inte att spara enhetsbehörigheter! Fel: \\'{0}\\'';\r\n\tstatic MovingTaskParameterToTrashBinWasSuccessful = 'Uppgiften \\'{0}\\' har flyttats till papperskorgen!';\r\n\tstatic Paste = 'Klistra';\r\n\tstatic SavingTaskDataRowWasSuccessful = 'Uppgiftsraden har sparats!';\r\n\tstatic WhistleBlowSourceUnspecified = 'Ospecificerad';\r\n\tstatic GetPhoto = 'Skaffa foto';\r\n\tstatic CreatingNotifications = 'Skapar aviseringar...';\r\n\tstatic SavingUserGroupParameterWasSuccessful = 'Användargruppen \\'{0}\\' har sparats!';\r\n\tstatic WhistleBlowDashboard = 'Whistleblower instrumentbräda';\r\n\tstatic FormDropdowns = 'Dropdown-listor';\r\n\tstatic ChangePassword = 'Ändra lösenord';\r\n\tstatic EventPartnerParameterNotFound = 'Incidentpartner \\'{0}\\' hittades inte!';\r\n\tstatic SelectDocumentTemplate = 'Välj Dokumentmall';\r\n\tstatic DoYouReallyWantToRemoveSelectedKeywords = 'Vill du verkligen ta bort valda sökord?';\r\n\tstatic PrintOrientation = 'Skriv ut orientering';\r\n\tstatic AddRecordUserAndUserAccount = 'Lägg till användarpost och nytt användarkonto';\r\n\tstatic Source = 'Källa';\r\n\tstatic LoggedInUserCannotBeDeleted = 'Användaren kan inte ta bort sig själv!';\r\n\tstatic DeletingPartnersParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort partners{0}! Fel: \\'{1}\\'';\r\n\tstatic RemoveSharedDocumentTemplate = 'Ta bort mall för delat dokument';\r\n\tstatic AddHandlers = 'Lägg till hanterare';\r\n\tstatic WhistleBlowInformantButtonHint = 'Inkludera inte känsliga personuppgifter om personer du nämner i ditt meddelande, ifall de inte är nödvändiga för att beskriva ditt ärende.';\r\n\tstatic UnpublishingEditableDocumentParameterWasSuccessful = 'Dokumentet \\'{0}\\' har avpublicerats!';\r\n\tstatic DoYouReallyWantToRemovePartnerParameter = 'Vill du verkligen ta bort partner \\'{0}\\'?';\r\n\tstatic DeletingFileFiltersParameterWasSuccessful = 'Filfiltren \\'{0}\\' har tagits bort!';\r\n\tstatic DeletingUsersParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort användarkonton \"{0}\", eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic AddAttachementsToEvent = 'Lägg till bilaga genom att trycka pÃ¥ plusknapparna.';\r\n\tstatic UserGroupCodeMustBeDefined = 'Användargruppskod mÃ¥ste definieras!';\r\n\tstatic AddDefaultEventType = 'Lägg till standardkategori 1';\r\n\tstatic Last30Days = 'Senaste 30 dagarna';\r\n\tstatic DoYouReallyWantToRemoveSelectedTaskStates = 'Vill du verkligen ta bort valda uppgiftstillstÃ¥nd?';\r\n\tstatic ArchivingRecordUserFamiliarizationsWasSuccessful = 'Bekantskaper arkiverade framgÃ¥ngsrikt!';\r\n\tstatic UnitParameterNotFound = 'Enheten \\'{0}\\' hittades inte!';\r\n\tstatic AdvancePaymentReportPath = 'Sökväg för förskottsbetalningsrapport';\r\n\tstatic CalendarTaskRepetitionRepeatIntervalMonthlySuffix = 'mÃ¥nader';\r\n\tstatic AddTransferredProperties = 'Lägg till överförda egenskaper';\r\n\tstatic DeletingEventUrgencyClassesParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort brÃ¥dskande klasser \"{0}\", eftersom data i brÃ¥dskande klasser har ändrats samtidigt av en annan användare!';\r\n\tstatic ChangingPasswordWasNotSuccessfulErrorParameter = 'Det gick inte att byta lösenord! Fel: \\'{0}\\'';\r\n\tstatic WhistleBlowChannelPageNameCodeIsAlreadyInUse = 'VisselblÃ¥sningschanel-sidans namn används redan!';\r\n\tstatic PasswordConfirmationDoesNotMatchPassword = 'Lösenordet matchar inte bekräftelselösenordet!';\r\n\tstatic DeletingUserParametersWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort användarparametrar! Fel: \\'{0}\\'';\r\n\tstatic DeletingInstantMessageWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort snabbmeddelandet eftersom data i snabbmeddelandet har ändrats samtidigt av en annan användare!';\r\n\tstatic AddedComment = 'Tillagd kommentar';\r\n\tstatic ParameterResults = '({0} resultat)';\r\n\tstatic UpdatingApplication = 'Uppdaterar app...';\r\n\tstatic EventPartners = 'Incidentpartners';\r\n\tstatic Ends = 'Slutar';\r\n\tstatic CopyOrMoveFilesDocuments = 'Kopiera eller flytta valda filer/dokument';\r\n\tstatic PortalInUse = 'Inloggningsportalen används';\r\n\tstatic PaymentTermInDays = 'Betalningstid i dagar';\r\n\tstatic CopyOrMoveFolder = 'Kopiera eller flytta mapp';\r\n\tstatic BasicEducation = 'Grundläggande utbildning';\r\n\tstatic SelectDocumentInListToSeeThePreview = 'Välj dokument i listan för att se förhandsgranskningen';\r\n\tstatic DefaultLanguage = 'SprÃ¥k';\r\n\tstatic EditDefaultTaskType = 'Redigera standarduppgiftstyp';\r\n\tstatic DeletingCompanyGroupsParameterWasSuccessful = 'Företagsgrupperna \\'{0}\\' har tagits bort!';\r\n\tstatic SavingTaskParameterWasSuccessful = 'Uppgiften \\'{0}\\' har sparats!';\r\n\tstatic SelectCustomer = 'Välj Kund';\r\n\tstatic SavingWhistleBlowChannelParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara whistle blow-kanalen \\'{0}\\', eftersom data i whistle blow-kanalen har ändrats samtidigt av en annan användare!';\r\n\tstatic NotRepeated = 'Inte upprepad';\r\n\tstatic DeletingUserParametersWasSuccessful = 'Användarparametrar har tagits bort!';\r\n\tstatic EditDefaultEventHandlersAndNotifiedPersons = 'Redigera standardincidenthanterare och anmälda personer';\r\n\tstatic TaskHandlerParameterNotFound = 'Hanteraren \\'{0}\\' hittades inte!';\r\n\tstatic SavingUserParameterParameterWasSuccessful = 'Användaralternativet \\'{0}\\' har sparats!';\r\n\tstatic FilesParameterAreEmpty = 'Filerna \\'{0}\\' är tomma!';\r\n\tstatic FolderNameIsTooLong = 'Mappnamnet \\'{0}\\' är för lÃ¥ngt!';\r\n\tstatic FileUploadWasSuccessful = 'Filer har laddats upp!';\r\n\tstatic WaitingToBeApproved = 'Väntar pÃ¥ att bli godkänd';\r\n\tstatic EditDefaultTaskState = 'Redigera standarduppgiftsstatus';\r\n\tstatic WhistleBlowState = 'Rapportera tillstÃ¥nd';\r\n\tstatic AddChildEventTypeC = 'Lägg till underkategori 3';\r\n\tstatic SelectReminder = 'Välj pÃ¥minnelse';\r\n\tstatic CanShareContentToCompanies = 'InnehÃ¥ll kan delas med dessa partner';\r\n\tstatic VersionParameterPublishedAsPdfFile = 'Version {0} publiceras som pdf-fil';\r\n\tstatic UserGroupModuleProperties = 'Egenskaper för användargrupper';\r\n\tstatic DeletingMessageParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort meddelandet \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic RemoveRecordUserAndUser = 'Ta bort användarpost och användarkonto';\r\n\tstatic CloseSystem = 'Stäng systemet';\r\n\tstatic OldestMessage = 'Äldsta meddelande';\r\n\tstatic PositionErrorUnavailable = 'Platsinformation är inte tillgänglig.';\r\n\tstatic AddNotifiedPerson = 'Lägg till person som ska meddelas';\r\n\tstatic DeletingUserGroupsParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort användargrupperna \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic ExportToExcel = 'exportera till Excel';\r\n\tstatic EmailSent = 'Email skickat';\r\n\tstatic MaximumSizeOfDocumentThatCanBeAddedInBatchIsParameterMB = 'Den maximala totala storleken pÃ¥ dokument som kan läggas till i batch är {0} MB!';\r\n\tstatic SavingReadReceiptWasSuccessful = 'Läskvitto har sparats!';\r\n\tstatic DeletingRecordFurtherEducationParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort vidareutbildning \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic InstantMessageChannelArchivingTypeKeepMessages = 'Bevara arkiverad chatt och meddelanden';\r\n\tstatic WhistleBlowStatisticsNewRecords = 'Nya rapporter';\r\n\tstatic FurtherEducationParameterNotFound = 'Vidareutbildning \\'{0}\\' hittades inte!';\r\n\tstatic FileRemovalWasSuccessful = 'Filen har tagits bort!';\r\n\tstatic ApprovalComment = 'Godkännandekommentar';\r\n\tstatic ChangeSystemLanguageToSwedish = 'Byt sprÃ¥k till svenska';\r\n\tstatic MinimumPasswordLengthMustBeAtLeastParameterCharacters = 'Minsta lösenordslängd mÃ¥ste vara minst {0} tecken!';\r\n\tstatic EventTypeCodeIsAlreadyInUse = 'Kategori 1-namn används redan!';\r\n\tstatic SavingWhistleBlowWasNotSuccessfulErrorParameter = 'Misslyckades med att spara whistle blow rapport! Fel: \\'{0}\\'';\r\n\tstatic WhistleBlowReportHasBeenSavedBottomText = 'Du mÃ¥ste lagra lösenordet innan du kan stänga den här sidan.';\r\n\tstatic AdministratorPasswordMustBeDefined = 'Administratörens lösenord mÃ¥ste definieras!';\r\n\tstatic MessageTypeClass = 'Meddelandeklass';\r\n\tstatic Returned = 'Returnerad';\r\n\tstatic AccessRightWriteWhistleBlow = 'Fullständig rapporthantering';\r\n\tstatic PublishDate = 'Utgivningsdatum';\r\n\tstatic FormRowColumn = 'Rad kolumn';\r\n\tstatic Functions = 'Funktioner';\r\n\tstatic WhistleBlowInformantMessageConfirmation = 'Vill du skicka ett nytt meddelande till uppgiftslämnaren?';\r\n\tstatic WhistleBlowUrlInfo = 'Endast systemadministratören kan ändra adressen';\r\n\tstatic DocumentNameConstainsIllegalCharacters = 'Dokumentnamnet innehÃ¥ller förbjudna tecken (<, >, :, \", /, \\, |, ? eller *) eller slutar med förbjudna tecken (., \\' \\')!';\r\n\tstatic RemoveDefaultBasicEducation = 'Ta bort Standard Basic Education';\r\n\tstatic EventTypeParameterIsInUseInParameterEventsAndCannotBeDeleted = 'Kategori 1 \\'{0}\\' används i {1} incidenter och kan inte tas bort!';\r\n\tstatic FormMinimumValue = 'Minsta värde';\r\n\tstatic IdCard = 'ID-kort';\r\n\tstatic SavingEventUrgencyClassParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara brÃ¥dskande klass \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic SavingDefaultHandlersWasNotSuccessfulConcurrencyError = 'Det gick inte att spara standardhanterare eftersom standardhanterare har ändrats samtidigt av en annan användare!';\r\n\tstatic AdditionalPermissionAInstantMessages = 'TillstÃ¥ndshantering';\r\n\tstatic AddEmployments = 'Lägg till anställningar';\r\n\tstatic DeletingRecordUserParameterWasSuccessful = 'Användarposten \\'{0}\\' har tagits bort!';\r\n\tstatic AddRecordUserWithoutUserAccount = 'Lägg till användarpost utan användarkonto';\r\n\tstatic AddInstantMessageUserParameterWasSuccessful = 'Deltagare \\'{0}\\' har lagts till!';\r\n\tstatic AddTaskPriority = 'Lägg till uppgiftsprioritet';\r\n\tstatic RemovingCalendarTaskHandlerWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort ansvariga personer! Fel: \\'{0}\\'';\r\n\tstatic Total = 'Total';\r\n\tstatic DefaultEventHandlerParameterNotFound = 'Det gick inte att hitta standardincidenthanteraren \\'{0}\\'!';\r\n\tstatic AddEventType = 'Lägg till kategori 1';\r\n\tstatic DeletingFileParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort filen \\'{0}\\' i filsystemet! Fel: \\'{1}\\'';\r\n\tstatic CompanyCodeContainsIllegalCharacters = 'Företagskoden innehÃ¥ller tecken som är olagliga (., &, :, \\' \\', ö, ä, à, Ã¥, Ö, Ä, À tai Ã…)!';\r\n\tstatic SavingWhistleBlowChannelParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara kanalen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic ScopeUnit = 'Enhet';\r\n\tstatic EditEvent = 'Redigera incident';\r\n\tstatic DoYouReallyWantToRemoveUnitParameter = 'Vill du verkligen ta bort enheten \\'{0}\\'?';\r\n\tstatic UserRecordStatisticsExpiringInSixMonthsQualifications = 'Kvalifikationer som löper ut om sex mÃ¥nader';\r\n\tstatic CalendarTaskChangeSelectedDateToSeeTheTasks = 'Ändra valt datum eller tillstÃ¥ndsfilter för att se händelserna';\r\n\tstatic Addition = 'Tillägg';\r\n\tstatic AccessRightReadRecords = 'Eget användarregister';\r\n\tstatic AddingAttachmentsParameterWasSuccessful = 'Bilagorna \"{0}\" har lagts till!';\r\n\tstatic Sending = 'Sändning...';\r\n\tstatic EventTypeBs = 'Kategori 2';\r\n\tstatic AttachmentImageSize = 'Bifogad bild Miniatyrstorlek';\r\n\tstatic UserEventsNotApproved = 'Användarhändelser inte godkända';\r\n\tstatic DeletingRecordUserEmploymentParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort anställningen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic DoYouReallyWantToUnlockTask = 'Vill du verkligen lÃ¥sa upp uppgiften \\'{0}\\'?';\r\n\tstatic FormFontSize = 'Textstorlek';\r\n\tstatic NewTransferredPropertyMustBeSavedBeforeAttachmentsCanBeAdded = 'Ny överlÃ¥ten egendom mÃ¥ste sparas innan bilagor kan läggas till!';\r\n\tstatic Name = 'namn';\r\n\tstatic WhistleBlowSeverityCritical = 'Kritisk';\r\n\tstatic CreateReport = 'Skapa rapport';\r\n\tstatic FormWidth = 'Bredd';\r\n\tstatic WhistleBlowMessageHasNotBeenSentCloseConfirmation = 'Ett oavslutat meddelande har inte skickats ännu. Vill du stänga vyn?';\r\n\tstatic CopyUnitDefaultHandlersAndNotifiedPersonsToAllSameLevelUnits = 'Kopiera standardhanterare och anmälda personer till alla enheter pÃ¥ samma nivÃ¥';\r\n\tstatic TaskStateParameterNotFound = 'UppgiftstillstÃ¥nd \\'{0}\\' hittades inte!';\r\n\tstatic DirectCosts = 'Direkta kostnader';\r\n\tstatic DeletingRecordFurtherEducationGroupParameterWasSuccessful = 'Vidareutbildningsgruppen \\'{0}\\' har tagits bort!';\r\n\tstatic Calendar = 'Kalender';\r\n\tstatic ANew = 'Ny';\r\n\tstatic DeletingKeywordsParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort sökorden \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic EmailAddressDoesNotExist = 'E-postadressen finns inte!';\r\n\tstatic CurrentCalendarYear = 'Aktuellt kalenderÃ¥r';\r\n\tstatic EditLogisticVoucherTransportCompany = 'Redigera Transportföretag';\r\n\tstatic Approved = 'Godkänd';\r\n\tstatic SSRSRefreshFinishedInParameterSeconds = 'SSRS-uppdatering avslutad (varaktighet: {0:N0}s)';\r\n\tstatic RecordFurtherEducationGroupParameterNotFound = 'Vidareutbildningsgruppen \\'{0}\\' hittades inte!';\r\n\tstatic ActiveTasks = 'Aktiva uppgifter';\r\n\tstatic DraftVersion = 'Utkastsversion';\r\n\tstatic FormTextArea = 'LÃ¥ng textinmatning';\r\n\tstatic RequireReadReceipt = 'Kräver läskvitto';\r\n\tstatic WhistleBlow = 'Whistleblower';\r\n\tstatic PreviewIsNotSupportedForThisFileType = 'Förhandsgranskning stöds inte för den här filtypen!';\r\n\tstatic TransferToChannel = 'Flytta till chatten';\r\n\tstatic DoYouReallyWantToRemoveRecordUserTransferredPropertyParameter = 'Vill du verkligen ta bort den överförda egenskapen \\'{0}\\'?';\r\n\tstatic GroupByQuarter = 'Gruppera efter kvartal';\r\n\tstatic CompanyLogo = 'Företagslogotyp';\r\n\tstatic WhistleBlowCategoryCodeIsAlreadyInUse = 'Namnet pÃ¥ visselblÃ¥sningskategorin används redan!';\r\n\tstatic InvalidInvitationParameter = 'Ogiltig inbjudan \\'{0}\\'!';\r\n\tstatic FileFilterParameterNotFound = 'Filfiltret \\'{0}\\' hittades inte!';\r\n\tstatic PanelSize4 = '2 x 2';\r\n\tstatic DoYouReallyWantToRemoveDefaultEventHandlerParameter = 'Vill du verkligen ta bort standardincidenthanteraren \\'{0}\\'?';\r\n\tstatic RestoringInstantMessageWasNotSuccessfulErrorParameter = 'Det gick inte att Ã¥terställa snabbmeddelanden! Fel: \\'{0}\\'';\r\n\tstatic LogOut = 'Logga ut';\r\n\tstatic WorkShiftType = 'Arbetsskiftstyp';\r\n\tstatic SavingUserParametersWasNotSuccessfulConcurrencyError = 'Det gick inte att spara användaralternativ, eftersom data i användaralternativen har ändrats samtidigt av en annan användare!';\r\n\tstatic ChangesMaxAmount = 'Maximalt antal ändringar';\r\n\tstatic ValidPasswordMustBeDefined = 'Giltigt lösenord mÃ¥ste definieras!';\r\n\tstatic AllPartners = '\"Alla partners\"';\r\n\tstatic EditEventTypes = 'Redigera kategori 1';\r\n\tstatic ValidityEndDateExpirationTime = 'Giltighet UtgÃ¥ngstid';\r\n\tstatic DeletingTaskStatesParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort uppgiftstillstÃ¥nden \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic Settings = 'inställningar';\r\n\tstatic TaskTypesMustBeDefinedBeforeAddingTasks = 'Formulär mÃ¥ste definieras innan uppgifter läggs till!';\r\n\tstatic DeletingCalendarTaskCategoryParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort kategorin \"{0}\", eftersom data i kategorin har ändrats samtidigt av en annan användare!';\r\n\tstatic SavingInstantMessageChannelParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara chatten \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic ValidityStartDate = 'Giltighetsstartdatum';\r\n\tstatic AllCompanies = 'Alla företag';\r\n\tstatic Scope = 'Omfattning';\r\n\tstatic RenamingFolderParameterWasNotSuccessfulErrorParameter = 'Det gick inte att byta namn pÃ¥ mappen (\\'{0}\\' => \\'{1}\\') i filsystemet! Fel: \\'{2}\\'';\r\n\tstatic DoYouReallyWantToRemoveEditableDocumentParameter = 'Vill du verkligen ta bort dokumentet \\'{0}\\'? Alla filer som är relaterade till dokumentet kommer att tas bort.';\r\n\tstatic DeletingWhistleBlowParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort visselstötsrapporten \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic DoYouReallyWantToRemoveReportParameter = 'Vill du verkligen ta bort rapporten \\'{0}\\'?';\r\n\tstatic SaveReport = 'Spara rapport';\r\n\tstatic RecordBasicEducationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted = 'Grundutbildning \\'{0}\\' används i {1} användarposter och kan inte tas bort!';\r\n\tstatic Rejected = 'avvisade';\r\n\tstatic AddFurtherEducationToMultipleUserRecords = 'Lägg till vidareutbildning till flera användarposter';\r\n\tstatic PrintTextPrinted = 'Tryckt';\r\n\tstatic FurtherEducationGroup = 'Vidareutbildningsgruppen';\r\n\tstatic WhistleBlowPasswordConfirmed = 'Whistle blow rapport har skickats. Du kan kontrollera statusen för din rapport genom att klicka pÃ¥ knappen \"Följ rapport\" pÃ¥ huvudsidan.';\r\n\tstatic NewPassword = 'nytt lösenord';\r\n\tstatic DocumentTemplate = 'Dokumentmall';\r\n\tstatic ToDo = 'Saker att göra';\r\n\tstatic DoYouReallyWantToRemoveSelectedDocumentTemplates = 'Vill du verkligen ta bort valda dokumentmallar?';\r\n\tstatic FormSortField = 'Sorteringsfält';\r\n\tstatic DeletingInstantMessageUserParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort deltagaren \\'{0}\\' eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic EditLogisticVoucherCustomerPaymentSetting = 'Redigera betalningsinställning';\r\n\tstatic FormMobile = 'Mobil app';\r\n\tstatic PermissionDeniedForOperation = 'TillstÃ¥nd nekad för drift!';\r\n\tstatic NotApproved = 'Ej godkänd';\r\n\tstatic RequestPasswordChangeMessage2 = 'Skicka';\r\n\tstatic NoPublishedMessages = 'Inga publicerade meddelanden';\r\n\tstatic FormulaMax = 'Maximal';\r\n\tstatic SavingEventSettingsWasSuccessful = 'Incidentinställningarna har sparats!';\r\n\tstatic DeletingDirectoryItemDocumentParameterWasSuccessful = 'Filen \\'{0}\\' har tagits bort!';\r\n\tstatic DisableExternalIntraSystemConfirmation = 'Vill du verkligen stänga av företaget frÃ¥n systemet? Företaget kommer att tas bort frÃ¥n systemet när företaget har sparats.';\r\n\tstatic GroupByYear = 'Gruppera efter Ã¥r';\r\n\tstatic ChangingPasswordWasSuccessful = 'Lösenordet har ändrats!';\r\n\tstatic OldestModification = 'Äldsta ändring';\r\n\tstatic DeletingRecordFurtherEducationsParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort vidareutbildningar \\'{0}\\', eftersom data i vidareutbildningar har ändrats samtidigt av en annan användare!';\r\n\tstatic FormulaSubtraction = 'Subtraktion';\r\n\tstatic MinimumPasswordLength = 'Minsta lösenordslängd';\r\n\tstatic DeletingCalendarTaskCategoriesParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort kategorierna \"{0}\", eftersom data i kategorier har ändrats samtidigt av en annan användare!';\r\n\tstatic AddQualificationToMultipleUserRecords = 'Lägg till kvalificering till flera användarposter';\r\n\tstatic FormRemoveColumnFromRowConfirmation = 'Vill du verkligen ta bort kolumnen frÃ¥n raden?';\r\n\tstatic AddFurtherEducationGroup = 'Lägg till vidareutbildningsgrupp';\r\n\tstatic ContactPerson = 'Kontaktperson';\r\n\tstatic FormDropdown = 'Rullgardinslista';\r\n\tstatic SelectForm = 'Välj formuläret';\r\n\tstatic ExpiringIn90Days = 'Inkludera utbildningar som löper ut om 90 dagar';\r\n\tstatic WhistleBlowParameterNotFound = 'Visselslagsrapporten \\'{0}\\' hittades inte!';\r\n\tstatic DeletingAttachmentsParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort bilagorna \\'{0}\\', eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic CheckingExistanceOfFileParameterWasNotSuccessfulErrorParameter = 'Det gick inte att kontrollera existensen av filen \\'{0}\\' i filsystemet! Fel: \\'{1}\\'';\r\n\tstatic UnitCodeIsAlreadyInUse = 'Enhetens namn används redan!';\r\n\tstatic DeletingInstantMessageWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort snabbmeddelanden! Fel: \\'{0}\\'';\r\n\tstatic FormSizeSmall = 'SmÃ¥';\r\n\tstatic WhistleBlowChannel = 'Whistle Blow Channel';\r\n\tstatic UpdateUserGroupParameterExternalSystemsWasSuccessful = 'Användargruppen \\'{0}\\' har länkats till externa system framgÃ¥ngsrikt!';\r\n\tstatic WhistleBlowEventTypeMessageAdded = 'Meddelande har lagts till';\r\n\tstatic Modification = 'Modifiering';\r\n\tstatic CreatingUserTokenWasNotSuccessfulErrorParameter = 'Det gick inte att byta lösenord! Fel: \\'{0}\\'';\r\n\tstatic AddWhistleBlowCategory = 'Lägg till kategori för Whistle Blow';\r\n\tstatic LanguageEnglish = 'engelska';\r\n\tstatic SavingFileFilterParameterWasSuccessful = 'Filfiltret \\'{0}\\' har sparats!';\r\n\tstatic Invited = 'Inbjudna';\r\n\tstatic NoneSelected = 'Ingen vald';\r\n\tstatic GroupByUnit = 'Gruppera efter enhet';\r\n\tstatic RemoveTaskType = 'Ta bort uppgiftstyp';\r\n\tstatic DownloadFileTemplate = 'Ladda ner filmall';\r\n\tstatic AddPartnerParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att lägga till partner \\'{0}\\' eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic EditCompanyTaskType = 'Redigera företagsuppgiftstyp';\r\n\tstatic ReportGenerationFailed = 'Det gick inte att skapa rapporten!';\r\n\tstatic RemoveFileFilter = 'Ta bort filfilter';\r\n\tstatic BrowserInfo = 'Webbläsare';\r\n\tstatic DeletingMessageTypeParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort meddelandetypen \\'{0}\\', eftersom data i meddelandetypen har ändrats samtidigt av en annan användare!';\r\n\tstatic DoYouReallyWantToRemoveEventHandlerParameter = 'Vill du verkligen ta bort hanteraren \\'{0}\\'?';\r\n\tstatic BusinessIdentityCode = 'Företagsidentitetskod';\r\n\tstatic FormRelativeDefinition = 'Relativ definition';\r\n\tstatic Education = 'Utbildning';\r\n\tstatic EditLogisticVoucherCustomer = 'Redigera kund';\r\n\tstatic Date = 'Datum';\r\n\tstatic DriversLicenseType = 'Typ av körkort';\r\n\tstatic CalendarTaskRepetitionRepeatIntervalMonthPrefix = 'Dag';\r\n\tstatic ModifyDate = 'Senast ändrad';\r\n\tstatic LastYear = 'Förra Ã¥ret';\r\n\tstatic EditableDocumentPublishConfirmation = 'Vill du publicera dokument till fil?';\r\n\tstatic BirthDate = 'Födelsedatum';\r\n\tstatic EditUser = 'Redigera användarkonto';\r\n\tstatic EventMessageConfirmation = 'Vill du spara en ny kommentar?';\r\n\tstatic CompanyInstantMessageChannels = 'Företagschattar';\r\n\tstatic OthersLastModifications = 'Senaste ändringar av företag';\r\n\tstatic SavingTaskTypeParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara uppgiftstypen \\'{0}\\', eftersom data i uppgiftstypen har ändrats samtidigt av en annan användare!';\r\n\tstatic ChangeToReadMode = 'Byt till läsläge';\r\n\tstatic AddToFavorites = 'Lägg till i favoriter';\r\n\tstatic EventTypeTitle = 'Incidentidentifieringskategori 1';\r\n\tstatic AddUserGroup = 'Lägg till användargrupp';\r\n\tstatic Ascending = 'Stigande';\r\n\tstatic AddEventMessage = 'Lägg till kommentar';\r\n\tstatic DeletingRecordUserParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort användarposten \"{0}\", eftersom data i användarposten har ändrats samtidigt av en annan användare!';\r\n\tstatic DeletingMessageTypesParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort meddelandetyperna \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic JobLineParameterNotFound = 'Jobbraden \\'{0}\\' hittades inte!';\r\n\tstatic SavingUserParameterWasSuccessful = 'Användaren \\'{0}\\' har sparats!';\r\n\tstatic SelectUserGroupOrUser = 'Välj Användargrupp eller Användarkonto';\r\n\tstatic MessageTitleMustBeDefined = 'Meddelandets titel till datum mÃ¥ste definieras!';\r\n\tstatic Collapse = 'Kollaps';\r\n\tstatic NewRecordUserMustBeSavedBeforeRowsCanBeAdded = 'Ny användarpost mÃ¥ste sparas innan rader kan läggas till!';\r\n\tstatic RecordUserFurtherEducationParameterNotFound = 'Användarpostens utbildningspost \\'{0}\\' hittades inte!';\r\n\tstatic AnyTime = 'När som helst';\r\n\tstatic DeletingTaskStateParameterWasSuccessful = 'UppgiftstillstÃ¥nd \\'{0}\\' har tagits bort!';\r\n\tstatic MoveUp = 'Flytta uppÃ¥t';\r\n\tstatic InvalidValueInArgumentParameter = 'Ogiltigt värde i argumentet \\'{0}\\'!';\r\n\tstatic UpdateCompanyExternalSystemsWasNotSuccessfulConcurrencyError = 'Det gick inte att länka företaget till externa system, eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic Filters = 'Filter';\r\n\tstatic CopyingFilesAndDocumentsToFolderParameterWasSuccessful = 'Filer/dokument har kopierats till mappen \\'{0}\\'!';\r\n\tstatic SavingEventUrgencyClassParameterWasSuccessful = 'BrÃ¥dskande klass \\'{0}\\' har sparats!';\r\n\tstatic AccessRightRead = 'LästillstÃ¥nd';\r\n\tstatic PostalAddress = 'Gatuadress';\r\n\tstatic OtherCompanies = 'Andra företag';\r\n\tstatic TrainingEndDateCannotPrecedeTrainingStartDate = 'Träningens slutdatum kan inte föregÃ¥ träningens startdatum!';\r\n\tstatic WhistleBlowEventTypeCreated = 'Skapad';\r\n\tstatic RemoveDefaultEventHandler = 'Ta bort standardincidenthanteraren';\r\n\tstatic EventTypeCs = 'Kategori 3';\r\n\tstatic NewPasswordMustBeDefined = 'Nytt lösenord mÃ¥ste definieras!';\r\n\tstatic LockedTaskParameterCannotBeDeleted = 'Den lÃ¥sta uppgiften \\'{0}\\' kan inte tas bort!';\r\n\tstatic ApplicationName = 'eSalkku';\r\n\tstatic SavingEditableDocumentParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara dokumentet \\'{0}\\' eftersom data i dokumentet har ändrats samtidigt av en annan användare!';\r\n\tstatic ImportUsers = 'Importera användarkonton';\r\n\tstatic LockedEventParameterCannotBeSaved = 'Incidenten \\'{0}\\' har lÃ¥sts till en annan användare och den kan inte sparas!';\r\n\tstatic DoYouReallyWantToRemoveRecordFurtherEducationParameter = 'Vill du verkligen ta bort vidareutbildning \"{0}\"?';\r\n\tstatic DeletingWhistleBlowChannelAdminParameterWasSuccessful = 'Administratören \\'{0}\\' har tagits bort!';\r\n\tstatic DeletingFileFilterParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort filfiltret \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic Previous = 'Tidigare';\r\n\tstatic DeletingInstantMessageUsersParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort deltagare \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic ModifyDateStartDate = 'Senast ändrad frÃ¥n';\r\n\tstatic SavingCalendarTaskCategoryParameterWasSuccessful = 'Kategori \\'{0}\\' har sparats!';\r\n\tstatic EmailAddressParameterIsInvalid = 'E-postadressen \"{0}\" är inte giltig!';\r\n\tstatic EditKeyword = 'Redigera nyckelord';\r\n\tstatic DeletingEventTypeCParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort kategori 3 \\'{0}\\', eftersom data i kategori 3 har ändrats samtidigt av en annan användare!';\r\n\tstatic SavingWhistleBlowCategoryParameterWasSuccessful = 'Visselslagskategori \\'{0}\\' har sparats!';\r\n\tstatic Required = 'Nödvändig';\r\n\tstatic SavingMessageSendPushParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara meddelandets push-aviseringslogg \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic CourseCredit = 'Kurskredit';\r\n\tstatic RemoveUserGroup = 'Ta bort användargrupp';\r\n\tstatic DeletingWhistleBlowCategoriesParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort kategorierna \"{0}\" eftersom data i kategorierna för visselslag har ändrats samtidigt av en annan användare!';\r\n\tstatic CalendarTaskRepetitionEndDateSuffix = '';\r\n\tstatic JobLineDataIsEmpty = 'Arbetslinjedata saknas!';\r\n\tstatic MessageUnit = 'Förlagsenhet';\r\n\tstatic SharedReportCompany = 'Delas med företaget';\r\n\tstatic Document = 'Document';\r\n\tstatic FurtherEducation = 'Vidare utbildning';\r\n\tstatic SendingPusNotificationsWasNotSuccessfulErrorParameter = 'Det gick inte att skicka push-meddelanden! Fel: \\'{0}\\'';\r\n\tstatic CreatingPrint = 'Skapar utskrift...';\r\n\tstatic MessageVisibilityPeriodNotStarted = 'Meddelandets synlighetsperiod har inte börjat!';\r\n\tstatic InstantMessageUserInvitationAcceptTypeAutoAcceptInvitation = 'Jag accepterar automatiskt inbjudan att gÃ¥ med i chatten';\r\n\tstatic WhistleBlowReport = 'Whistle Blow Report';\r\n\tstatic CopyingFilesAndDocumentsToFolderParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att kopiera filer/dokument till mappen \"{0}\", eftersom data i mappen har ändrats samtidigt av en annan användare!';\r\n\tstatic Administrator = 'Administratör';\r\n\tstatic RemoveUserAndRecordUserArchive = 'Ta bort användarkonto och arkivera användarpost';\r\n\tstatic InstantMessagePartners = 'Instant Message Partners';\r\n\tstatic TaskPriority = 'Prioritet';\r\n\tstatic AddingRecordUserSalaryRowsWasSuccessful = 'Lönerader har lagts till!';\r\n\tstatic ChangeSystemLanguageToEnglish = 'Ändra sprÃ¥k till engelska';\r\n\tstatic RemovingEventHandlerWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort hanterare! Fel: \\'{0}\\'';\r\n\tstatic Partner = 'Partner';\r\n\tstatic DoYouReallyWantToRemoveMessageParameter = 'Vill du verkligen ta bort meddelandet \\'{0}\\'?';\r\n\tstatic RemoveTarget = 'Ta bort mÃ¥l';\r\n\tstatic AddCommentsToEvent = 'Lägg till kommentar genom att trycka pÃ¥ plusknappen.';\r\n\tstatic Companies = 'Företag';\r\n\tstatic FormTextAlignmentRight = 'Högerjustera text';\r\n\tstatic PanelSize3 = '1 x 2';\r\n\tstatic SaveAndPublish = 'Spara och publicera';\r\n\tstatic CalendarTasks = 'Händelser';\r\n\tstatic DeletingRecordFamiliarizationsParameterWasSuccessful = 'Bekantskapen \\'{0}\\' har tagits bort!';\r\n\tstatic HoursPerTrainingDay = 'Timmar per träningsdag';\r\n\tstatic PasswordMustBeDefined = 'Lösenord mÃ¥ste definieras!';\r\n\tstatic RemoveEventTypeC = 'Ta bort kategori 3';\r\n\tstatic ExitingInstantMessageChannelWasNotSuccessfulErrorParameter = 'Det gick inte att avsluta chatten! Fel: \\'{0}\\'';\r\n\tstatic ExitInstantMessageChannel = 'Avsluta chatten';\r\n\tstatic SavePrint = 'Spara utskrift';\r\n\tstatic AddLogisticVoucherTransportCompany = 'Lägg till transportföretag';\r\n\tstatic DefineRecordUserFurtherEducation = 'Definiera vidareutbildning';\r\n\tstatic EventPartnerIsAlreadyInDefined = 'Incidentpartner är redan definierad!';\r\n\tstatic BasicEducationsMustBeDefinedBeforeAddingRecordUsers = 'Grundutbildningar mÃ¥ste definieras innan användarposter läggs till!';\r\n\tstatic FormulaRemainder = 'Ã…terstoden';\r\n\tstatic SavingEventTypeBParameterWasSuccessful = 'Kategori 2 \\'{0}\\' har sparats!';\r\n\tstatic EventsDashboard = 'Instrumentpanel för evenemang';\r\n\tstatic UserAccountConnected = 'Användarkonto anslutet';\r\n\tstatic DeletingDirectoryItemFolderParameterWasSuccessful = 'Mappen \\'{0}\\' har tagits bort!';\r\n\tstatic Card = 'Kort';\r\n\tstatic SavingRecordFamiliarizationParameterWasSuccessful = 'Bekantskap \\'{0}\\' har sparats!';\r\n\tstatic SelectState = 'Välj stat';\r\n\tstatic Qualification = 'Kvalifikation';\r\n\tstatic GroupByPerson = 'Gruppera efter person';\r\n\tstatic DeletingWhistleBlowCategoryParameterWasSuccessful = 'Visselslagskategori \\'{0}\\' har tagits bort!';\r\n\tstatic AddFurtherEducation = 'Lägg till vidareutbildning';\r\n\tstatic UnitNameMustBeDefined = 'Enhetens namn mÃ¥ste definieras!';\r\n\tstatic NewFurtherEducationMustBeSavedBeforeAttachmentsCanBeAdded = 'Ny vidareutbildning mÃ¥ste sparas innan bilagor kan läggas till!';\r\n\tstatic EventHandlersExcelTitle = 'Hanterare (x = godkänd)';\r\n\tstatic ActiveState = 'stat';\r\n\tstatic UpdateUserParameterExternalSystemsWasNotSuccessfulConcurrencyError = 'Det gick inte att länka användaren \\'{0}\\' till externa system, eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic AddEditableDocument = 'Lägg till dokument';\r\n\tstatic SharedReport = 'Delad rapport';\r\n\tstatic NewRecordUserMustBeSavedBeforeTransferredPropertiesCanBeAdded = 'Ny användarpost mÃ¥ste sparas innan överförda egenskaper kan läggas till!';\r\n\tstatic SavingDirectoryItemFolderParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara mappen \\'{0}\\' eftersom data i mappen har ändrats samtidigt av en annan användare!';\r\n\tstatic AccessRightWriteEvents = 'Skapa och hantera incidenter';\r\n\tstatic PageBreakBetweenGroups = 'Lägg till sidbrytning mellan grupper';\r\n\tstatic SavingRecordFurtherEducationParameterWasSuccessful = 'Vidareutbildning \\'{0}\\' har sparats!';\r\n\tstatic DeletingMessageTypesParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort meddelandetyperna \"{0}\", eftersom data i meddelandetyperna har ändrats samtidigt av en annan användare!';\r\n\tstatic DocumentModified = 'Senast ändrad av';\r\n\tstatic FamiliarizationTrainer = 'Tränare';\r\n\tstatic CompanyCodeClaimNotFound = 'AnvändaransprÃ¥ket \"företagskod\" hittades inte!';\r\n\tstatic RecordFamiliarizationCodeIsAlreadyInUse = 'Bekantskapsnamnet används redan!';\r\n\tstatic AddLogisticVoucherCustomer = 'Lägg till kund';\r\n\tstatic RecordBasicEducationParameterNotFound = 'Grundläggande utbildning \\'{0}\\' hittades inte!';\r\n\tstatic DefaultSettings = 'Standardinställningar';\r\n\tstatic InvalidRequest = 'Ogiltig begäran!';\r\n\tstatic CompanyToken = 'Company Token';\r\n\tstatic InstantMessageParameterNotFound = 'Snabbmeddelandet \\'{0}\\' hittades inte!';\r\n\tstatic SomeInstantMessageUsersHaveReadMessage = 'Vissa mottagare har läst ditt meddelande';\r\n\tstatic CompanyCodeIsAlreadyInUse = 'Koden för företaget är redan i bruk!';\r\n\tstatic DeletingEventPartnerParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort incidentpartnern \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic ShowSchema = 'Visa schema';\r\n\tstatic SharedDocumentTemplate = 'Mall för delad dokument';\r\n\tstatic CalendarTaskOpenOccurrence = 'Öppna Förekomst';\r\n\tstatic NameIsAlreadyInUse = 'Namnet används redan!';\r\n\tstatic SavingEditableDocumentParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara dokumentet \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic PreviousCalendarWeek = 'FöregÃ¥ende kalendervecka';\r\n\tstatic DocumentEndDate = 'Giltig till';\r\n\tstatic EnableExternalIntraSystemConfirmation = 'Vill du verkligen aktivera företag i systemet? Företagsdata kommer att sparas i systemet när företaget sparas.';\r\n\tstatic DocumentNameParameterConstainsIllegalCharacters = 'Dokumentnamnet \\'{0}\\' innehÃ¥ller förbjudna tecken (<, >, :, \", /, \\, |, ? eller *) eller slutar med förbjudna tecken (., \\' \\')!';\r\n\tstatic Unlock = 'LÃ¥sa upp';\r\n\tstatic ActiveUserTasks = 'Aktiva användarskapade uppgifter';\r\n\tstatic CalendarTaskRepetitionRepeatIntervalMonthSuffix = 'i mÃ¥naden';\r\n\tstatic WhistleBlowStatisticsNonAnonymousRecords = 'Icke anonyma rapporter';\r\n\tstatic DefaultFamiliarizations = 'Standard bekantskaper';\r\n\tstatic FolderNameMustBeDefined = 'Mappnamn mÃ¥ste definieras!';\r\n\tstatic WhistleBlowEventTypeAttachmentsRemoved = 'Bilagor har tagits bort';\r\n\tstatic RemovingWhistleBlowHandlerWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort hanterare! Fel: \\'{0}\\'';\r\n\tstatic PermissionsForSection = 'Sektionsbehörigheter';\r\n\tstatic AdditionalPermissionAEvents = 'Agerar som hanterare';\r\n\tstatic FormProperties = 'Egenskaper';\r\n\tstatic AuthorizationLevelAdmin = 'Administratörer';\r\n\tstatic SavingEventTypeBsWasNotSuccessfulErrorParameter = 'Det gick inte att spara kategori 2! Fel: \\'{0}\\'';\r\n\tstatic NewComment = 'Ny kommentar';\r\n\tstatic ExternalIntraSystems = 'Externa eSalkku-system';\r\n\tstatic SelectUserGroup = 'Välj Användargrupp';\r\n\tstatic TaskDataRows = 'Rader';\r\n\tstatic PathMustBeDefined = 'Vägen mÃ¥ste definieras!';\r\n\tstatic RenewPersonalization = 'Personalisering';\r\n\tstatic AttachmentParameterDownloaded = 'Bilaga har laddats ner.';\r\n\tstatic AddDefaultHandler = 'Lägg till standardhanterare';\r\n\tstatic VerifyUserName = 'Kontrollera att användarnamnet är korrekt (\\'{0}\\')!';\r\n\tstatic CalendarTaskCategory = 'Kategori';\r\n\tstatic FormulaCbrt = 'Kubikrot';\r\n\tstatic EditBasicEducation = 'Redigera Grundutbildning';\r\n\tstatic EmploymentStartDate = 'Anställningens startdatum';\r\n\tstatic SavingEventDefaultHandlerParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara standardincidenthanteraren \\'{0}\\', eftersom data i standardincidenthanteraren har ändrats samtidigt av en annan användare!';\r\n\tstatic EventTypeB = 'Kategori 2';\r\n\tstatic EditCalendarTask = 'Redigera händelse';\r\n\tstatic TaskPrioritiesMustBeDefinedBeforeAddingTasks = 'Uppgiftsprioriteringar mÃ¥ste definieras innan du lägger till uppgifter!';\r\n\tstatic FailureAudit = 'FailureAudit';\r\n\tstatic DeletingTaskTypesParameterWasSuccessful = 'Uppgiftstyperna \\'{0}\\' har tagits bort!';\r\n\tstatic Expired = 'UtgÃ¥nget';\r\n\tstatic ParameterIsNotValidBankBICCode = '\\'{0}\\' är inte giltig bank-BIC-kod!';\r\n\tstatic DefaultTaskTypes = 'Standardformulär';\r\n\tstatic AddCalendarTaskCategory = 'Lägg till kategori';\r\n\tstatic DefaultFurtherEducation = 'Standard Vidareutbildning';\r\n\tstatic NoMessagesToShow = 'Inga meddelanden att visa!';\r\n\tstatic AddEventTypeBsToEvent = 'Lägg till kategori 2 genom att trycka pÃ¥ plusknappen.';\r\n\tstatic Selected = 'Vald';\r\n\tstatic SavingCalendarTaskCategoryParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara kategori \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic AddingAttachmentParameterWasSuccessful = 'Bilaga \\'{0}\\' har lagts till!';\r\n\tstatic EditAll = 'Redigera alla';\r\n\tstatic RequestParameterNotFound = 'Begäran \\'{0}\\' hittades inte!';\r\n\tstatic EventTypeCParameterIsInUseInParameterEventsAndCannotBeDeleted = 'Kategori 3 \\'{0}\\' används i {1} incidenter och kan inte tas bort!';\r\n\tstatic LastParameterYears = 'Senaste {0} Ã¥ren';\r\n\tstatic FileParameterIsEmpty = 'Filen \\'{0}\\' är tom!';\r\n\tstatic SelectTaskRepetitionType = 'Välj Upprepning av uppgift';\r\n\tstatic SavingEventTypeCsWasSuccessful = 'Kategori 3 har sparats framgÃ¥ngsrikt!';\r\n\tstatic TrainingStartDate = 'Utbildningens startdatum';\r\n\tstatic MovingFilesAndDocumentsToFolderParameterWasSuccessful = 'Filer/dokument har flyttats till mappen \\'{0}\\' framgÃ¥ngsrikt!';\r\n\tstatic ImageOrPdfUpToParameterMb = 'Bild- eller PDF-format, upp till {0} MB';\r\n\tstatic StandardFiltersAndReports = 'Standardfilter och rapporter';\r\n\tstatic CopyPermissionToAllSameLevelFolders = 'Kopiera behörighet till alla mappar pÃ¥ samma nivÃ¥';\r\n\tstatic PanelSize = 'Panelstorlek';\r\n\tstatic ExpiredPlural = 'UtgÃ¥nget';\r\n\tstatic DocumentRootPathMustBeDefined = 'Dokumentets rotsökväg mÃ¥ste definieras!';\r\n\tstatic DefaultFurtherEducations = 'Default Vidareutbildningar';\r\n\tstatic TaskState = 'Uppgiftsstat';\r\n\tstatic AddCompanyTaskType = 'Lägg till uppgiftstyp till företaget';\r\n\tstatic DeletingMessageTypesParameterWasSuccessful = 'Meddelandetyperna \\'{0}\\' har tagits bort!';\r\n\tstatic User = 'Användarkonto';\r\n\tstatic CalendarTaskRepetitionRepeatIntervalYearlySuffix = 'Ã¥r';\r\n\tstatic FieldParameterValueMustBeDefined = 'Värdet för fältet \\'{0}\\' mÃ¥ste definieras!';\r\n\tstatic SavingChartWasNotSuccessfulConcurrencyError = 'Det gick inte att spara diagrammet eftersom data i diagrammet har ändrats samtidigt av en annan användare!';\r\n\tstatic FormField = 'Fält';\r\n\tstatic AddInstantMessageUsersParameterWasSuccessful = 'Deltagarna \"{0}\" har lagts till!';\r\n\tstatic SavingTaskPriorityParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara uppgiftsprioritet \\'{0}\\', eftersom data i uppgiftsprioriteten har ändrats samtidigt av en annan användare!';\r\n\tstatic DoYouReallyWantToRemoveDocumentsParameter = 'Vill du verkligen ta bort {0} valda filer/dokument?';\r\n\tstatic CopyingFilesAndDocumentsToFolderParameterWasNotSuccessfulErrorParameter = 'Det gick inte att kopiera filer/dokument till mappen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic MoneyIn = 'Pengar in';\r\n\tstatic Info = 'Info';\r\n\tstatic RemoveCompanyFromCompanyGroup = 'Ta bort företag frÃ¥n företagsgruppen';\r\n\tstatic SharedFilters = 'Delade filter';\r\n\tstatic Monthly = 'MÃ¥natlig';\r\n\tstatic RecordParameterLockingFailed = 'Det gick inte att lÃ¥sa posten \\'{0}\\'!';\r\n\tstatic FormDecimalNumber = 'Decimaltal';\r\n\tstatic SavingRecordFurtherEducationGroupParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara vidareutbildningsgruppen \\'{0}\\', eftersom data i vidareutbildningsgruppen har ändrats samtidigt av en annan användare!';\r\n\tstatic UserRecordCards = 'Användarregister';\r\n\tstatic RemoveDefaultFurtherEducation = 'Ta bort standard vidareutbildning';\r\n\tstatic DeletingCompanyGroupParameterWasSuccessful = 'Företagsgruppen \\'{0}\\' har tagits bort!';\r\n\tstatic ModifiedBy = 'Modifierad av';\r\n\tstatic DeletingRecordUserTransferredPropertiesParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort överförda egenskaper \"{0}\", eftersom data i överförda egenskaper har ändrats samtidigt av en annan användare!';\r\n\tstatic SendReadReceiptConfirmation = 'Vill du skicka läskvitto?';\r\n\tstatic AccountNumberTkbInDebit = 'Försäljningsfordringar konto';\r\n\tstatic EventsFound = 'Incidenter hittades';\r\n\tstatic DefaultLanguageHasBeenChanged = 'SprÃ¥ket har ändrats!';\r\n\tstatic UserEndDate = 'Giltighet löper ut';\r\n\tstatic SaveMessage = 'Spara meddelande';\r\n\tstatic KeywordCodeMustBeDefined = 'Nyckelord mÃ¥ste definieras!';\r\n\tstatic CurrentCalendarMonth = 'Aktuell kalendermÃ¥nad';\r\n\tstatic OldPasswordIsIncorrect = 'Det gamla lösenordet är felaktigt!';\r\n\tstatic SendingPushNotificationsToParameter = 'Skickar push-meddelanden till användaren \\'{0}\\'...';\r\n\tstatic SavingEventTypeParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara kategori 1 \\'{0}\\', eftersom data i kategori 1 har ändrats samtidigt av en annan användare!';\r\n\tstatic ClickToCancelAutomaticLogout = 'Användarsessionen är pÃ¥ väg att löpa ut, klicka pÃ¥ den här dialogrutan för att förhindra automatisk utloggning.';\r\n\tstatic FormTitles = 'Titlar';\r\n\tstatic TransportCompanies = 'Transportföretag';\r\n\tstatic RecurringCalendarTaskMustHaveAtLeastOneOccurence = 'Ã…terkommande uppgift mÃ¥ste ha minst en förekomst!';\r\n\tstatic DoYouReallyWantToRemoveFormParameter = 'Vill du verkligen ta bort formuläret \\'{0}\\'?';\r\n\tstatic WriteBelowFieldWordParameterToConfirmTheOperation = 'Skriv ordet \\'{0}\\' i fältet nedan för att bekräfta Ã¥tgärden';\r\n\tstatic AddPartnersParameterWasNotSuccessfulErrorParameter = 'Det gick inte att lägga till partner \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic SortOrder = 'Sorteringsordning';\r\n\tstatic NewFamiliarizationMustBeSavedBeforeAttachmentsCanBeAdded = 'Ny bekantskap mÃ¥ste sparas innan bilagor kan läggas till!';\r\n\tstatic LockedDocumentParameterCannotBeMoved = 'Det lÃ¥sta dokumentet \\'{0}\\' kan inte flyttas!';\r\n\tstatic AccountNumberTkbOutDebit = 'Leverantörsskuldkonto';\r\n\tstatic ForLastParameterDays = 'i {0} dagar';\r\n\tstatic DeletingMessageParameterWasSuccessful = 'Meddelandet \\'{0}\\' har tagits bort!';\r\n\tstatic DeletingRecordBasicEducationParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort grundläggande utbildning \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic RemoveLogisticTransportCompany = 'Ta bort Transport Company';\r\n\tstatic WhistleBlowInformantDateAndTime = 'När inträffade detta?';\r\n\tstatic RemoveRecordUser = 'Ta bort användarpost';\r\n\tstatic RemoveEventTypeB = 'Ta bort kategori 2';\r\n\tstatic PanelVisible = 'Panel synlig';\r\n\tstatic KeywordsOrCondition = 'NÃ¥got av de valda sökorden';\r\n\tstatic FormulaDateAndTimeDiffInMinutes = 'Tidsskillnad i minuter';\r\n\tstatic TaskStateLocked = 'LÃ¥st';\r\n\tstatic LockingEditableDocumentParameterWasNotSuccessful = 'Det gick inte att lÃ¥sa dokumentet \\'{0}\\'!';\r\n\tstatic AdditionalPermissionBEvents = 'Ta bort';\r\n\tstatic ArgumentParameterIsNULL = 'Värdet pÃ¥ argumentet \\'{0}\\' är NULL!';\r\n\tstatic QualificationIsInvalid = 'Kvalifikationen är inte giltig!';\r\n\tstatic WhistleBlowInformantMessages = 'Informantmeddelanden';\r\n\tstatic FolderParameterNotFound = 'Mappen \\'{0}\\' hittades inte!';\r\n\tstatic SavingDirectoryItemFolderParameterWasSuccessful = 'Mappen \\'{0}\\' har sparats!';\r\n\tstatic MoveToTrashBin = 'Flytta till papperskorgen';\r\n\tstatic ArchivingRecordUserFurtherEducationsWasNotSuccessfulErrorParameter = 'Misslyckades med att arkivera vidareutbildningar! Fel: \\'{0}\\'';\r\n\tstatic IHaveForgotMyPassword = 'Jag har glömt mitt lösenord';\r\n\tstatic SavingWhistleBlowMessageWasSuccessful = 'Meddelandet har sparats!';\r\n\tstatic UserGroupParameterNotFound = 'Användargruppen \\'{0}\\' hittades inte!';\r\n\tstatic Actions = 'Handlingar';\r\n\tstatic UserGroupCodeIsAlreadyInUse = 'Användargruppskoden används redan!';\r\n\tstatic NoFilesToAdd = 'Inga filer att lägga till!';\r\n\tstatic EventTypeCTitle = 'Incidentidentifieringskategori 3';\r\n\tstatic Title = 'Titel';\r\n\tstatic Send = 'Skicka';\r\n\tstatic TransferredPropertyType = 'ÖverlÃ¥ten egenskapstyp';\r\n\tstatic PasswordMustContainUppercaseChar = 'Lösenordet mÃ¥ste innehÃ¥lla versaler!';\r\n\tstatic OperationAborted = 'Operationen avbröts!';\r\n\tstatic InvalidPasswordChangeRequestParameter = 'Ogiltig begäran om lösenordsändring \\'{0}\\'!';\r\n\tstatic DeletingRecordBasicEducationParameterWasSuccessful = 'Grundutbildningen \\'{0}\\' har tagits bort!';\r\n\tstatic AddRecordUserToUserAccount = 'Lägg till användarpost till befintligt användarkonto';\r\n\tstatic Landscape = 'Landskap';\r\n\tstatic StateOpenPlural = 'Öppen';\r\n\tstatic Comment = 'Kommentar';\r\n\tstatic UsersToBeImported = 'Användare som ska importeras';\r\n\tstatic UserInformation = 'Användarkonto';\r\n\tstatic AdditionalPermissionBWhistleBlow = 'TillstÃ¥ndshantering';\r\n\tstatic TakePicture = 'Ta bild';\r\n\tstatic AddCompanies = 'Lägg till företag';\r\n\tstatic Language = 'SprÃ¥k';\r\n\tstatic LogModuleProperties = 'Loggar egenskaper';\r\n\tstatic RemoveCalendarTask = 'Ta bort händelse';\r\n\tstatic SavingEventPartnerParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara incidentpartnern \\'{0}\\' eftersom data i incidentpartnern har ändrats samtidigt av en annan användare!';\r\n\tstatic PasteGroupPermissions = 'Klistra in gruppbehörigheter frÃ¥n minnet';\r\n\tstatic WhistleBlowSourceMail = 'Post';\r\n\tstatic DoYouReallyWantToRemoveCompanyGroupParameter = 'Vill du verkligen ta bort företagsgruppen \\'{0}\\'?';\r\n\tstatic SelectDate = 'Välj Datum';\r\n\tstatic DeletingEventTypeBParameterWasSuccessful = 'Kategori 2 \\'{0}\\' har tagits bort!';\r\n\tstatic WhistleBlowWasNotFound = 'Visslingsrapport hittades inte!';\r\n\tstatic DeletingRecordFurtherEducationsParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort ytterligare utbildningar \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic EventTypeCParameterNotFound = 'Kategori 3 \\'{0}\\' hittades inte!';\r\n\tstatic IndefinitelyNoLocalization = 'Obegränsat';\r\n\tstatic TaskHandler = 'Hanterare';\r\n\tstatic Reject = 'Avvisa';\r\n\tstatic EventModuleProperties = 'Incidenter Egenskaper';\r\n\tstatic DefaultEventUrgencyClasses = 'Standard brÃ¥dskande klasser';\r\n\tstatic ACopy = 'Kopiera';\r\n\tstatic EditDefaultFurtherEducation = 'Redigera Standard Vidareutbildning';\r\n\tstatic EditEventTypeCs = 'Redigera kategori 3';\r\n\tstatic BasicInformation = 'Allmän';\r\n\tstatic SavingFileFilterParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara filfiltret \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic Clear = 'Klar';\r\n\tstatic FormPlaceholder = 'PlatshÃ¥llartext';\r\n\tstatic AuthorizationLevelSystemAdmin = 'Systemadministratör';\r\n\tstatic FollowUp = 'Uppföljning';\r\n\tstatic RequestPasswordChangeMessage1 = 'Om du har glömt ditt lösenord fyll i ditt nuvarande eSalkku-användarnamn nedan och klicka pÃ¥ ';\r\n\tstatic ResetDocumentVersion = 'Ã…terställ dokumentversion';\r\n\tstatic EventTypeBParameterIsInUseInParameterEventsAndCannotBeDeleted = 'Kategori 2 \\'{0}\\' används i {1} incidenter och kan inte tas bort!';\r\n\tstatic UserRecordStatisticsArchivedCards = 'Arkiverade kort';\r\n\tstatic ReadReceipts = 'Läsa kvitton';\r\n\tstatic FormulaTan = 'Tangent';\r\n\tstatic DeletingKeywordParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort sökordet \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic AdminMustBeDefinedForSectionParameter = 'Administratör mÃ¥ste definieras för avsnittet \\'{0}\\'!';\r\n\tstatic SavingFileFilterParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara filfiltret \\'{0}\\', eftersom data i filfiltret har ändrats samtidigt av en annan användare!';\r\n\tstatic Amount = 'Belopp';\r\n\tstatic FamiliarizationStartDateDateEnd = 'Bekantskap Startdatum - Slut';\r\n\tstatic Order = 'Beställa';\r\n\tstatic LargeSize = 'Stor storlek';\r\n\tstatic AuthorizationLevelNone = 'Inga rättigheter';\r\n\tstatic ActionsAndRootCause = 'Ã…tgärder och rotorsak';\r\n\tstatic Browse = 'Bläddra';\r\n\tstatic EInvoiceOperator = 'E-fakturaoperatör';\r\n\tstatic AddInstantMessageUsersParameterWasNotSuccessfulErrorParameter = 'Det gick inte att lägga till deltagare \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic CopyingFolderDirectoryItemParameterToFolderParameterWasSuccessful = 'Mappen \\'{0}\\' har kopierats till mappen \\'{1}\\'!';\r\n\tstatic TransferredProperties = 'ÖverlÃ¥tna fastigheter';\r\n\tstatic TaskDataRowMustBeSavedBeforeAttachmentsCanBeAdded = 'Raden mÃ¥ste sparas innan bilagor kan läggas till!';\r\n\tstatic WhistleBlowCreateTime = 'Rapportera skickad tid';\r\n\tstatic Last180Days = 'Senaste 180 dagarna';\r\n\tstatic AddDefaultTaskPriority = 'Lägg till standarduppgiftsprioritet';\r\n\tstatic DocumentNameParameterIsIllegal = 'Dokumentnamn \\'{0}\\' är inte tillÃ¥tet (reserverat namn)!';\r\n\tstatic InstantMessageChannelArchivingType = 'Hantering av arkiverad chatt';\r\n\tstatic PrintIsEmpty = 'Utskriften är tom!';\r\n\tstatic Custom = 'Beställnings';\r\n\tstatic AddEventTypeC = 'Lägg till kategori 3';\r\n\tstatic AddEventTypeB = 'Lägg till kategori 2';\r\n\tstatic SavingDirectoryItemDocumentParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara filen \\'{0}\\' eftersom data i filen har ändrats samtidigt av en annan användare!';\r\n\tstatic DoYouReallyWantToRemoveRecordUserEmploymentParameter = 'Vill du verkligen ta bort anställning \\'{0}\\'?';\r\n\tstatic AddEvent = 'Lägg till incident';\r\n\tstatic HasAttachments = 'Har bilagor';\r\n\tstatic ArchiveWhistleBlows = 'Arkivera Whistle Blow-rapporter';\r\n\tstatic LanguageParameterIsNotSupported = 'SprÃ¥ket \\'{0}\\' stöds inte!';\r\n\tstatic Hour = 'Timme';\r\n\tstatic AuthorizationLevel = 'BehörighetsnivÃ¥';\r\n\tstatic DoYouReallyWantToRemoveSelectedRecordBasicEducations = 'Vill du verkligen ta bort utvalda grundutbildningar?';\r\n\tstatic DeletingFileFilterParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort filfiltret \\'{0}\\' eftersom data i filfiltret har ändrats samtidigt av en annan användare!';\r\n\tstatic WhistleBlowNonAnonymousReportInfo = 'Ditt namn kommer endast att vara känt för dem som hanterar din anmälan, och det kommer att förbli anonymt för alla andra.';\r\n\tstatic Minutes = 'Minuter';\r\n\tstatic LockingTaskParameterWasNotSuccessful = 'Det gick inte att lÃ¥sa uppgiften \\'{0}\\'!';\r\n\tstatic DeletingDefaultEventHandlerParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort standardincidenthanteraren \\'{0}\\', eftersom data i standardincidenthanteraren har ändrats samtidigt av en annan användare!';\r\n\tstatic HandlersAndAttachments = 'Hantare och tillbehör';\r\n\tstatic TaskTypeSchemaMustBeDefined = 'Formulärschema mÃ¥ste definieras!';\r\n\tstatic DeletingAttachmentParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort bilagan \\'{0}\\', eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic GetMore = 'Visa mer';\r\n\tstatic CompanyIdClaimNotFound = 'AnvändaransprÃ¥ket \"företags-id\" hittades inte!';\r\n\tstatic TaskRepetitionType = 'Upprepning av uppgift';\r\n\tstatic PositionErrorTimeout = 'Tidsgräns för läsning av platsinformation.';\r\n\tstatic RestoringInstantMessageWasSuccessful = 'Snabbmeddelandet har Ã¥terställts!';\r\n\tstatic EditCompanyGroup = 'Redigera företagsgrupp';\r\n\tstatic FormulaCeil = 'Avrundad till uppÃ¥t';\r\n\tstatic CompanyWithSysAdminAuthorizationLevelNotFound = 'Företaget som är relaterat till användargruppen \\'Systemadministratör\\' hittades inte!';\r\n\tstatic RemovingWhistleBlowHandlersWasSuccessful = 'Hanterare har tagits bort!';\r\n\tstatic MovingTaskParameterToTrashBinWasNotSuccessfulConcurrencyError = 'Det gick inte att flytta uppgiften \\'{0}\\' till papperskorgen eftersom data i uppgiften har ändrats samtidigt av en annan användare!';\r\n\tstatic FormulaCos = 'Cosinus';\r\n\tstatic AccountNumberTkbOutCredit = 'Handelskonto';\r\n\tstatic Receiver = 'Mottagare';\r\n\tstatic PreviewMobile = 'Förhandsgranska (mobil)';\r\n\tstatic ArchivingRecordUserFurtherEducationsWasSuccessful = 'Vidareutbildningar arkiverade framgÃ¥ngsrikt!';\r\n\tstatic RemoveKeyword = 'Ta bort nyckelord';\r\n\tstatic RemoveFolder = 'Ta bort mapp';\r\n\tstatic WhistleBlowActiveReports = 'Aktiva rapporter';\r\n\tstatic DoYouReallyWantToEmailMessageParameter = 'Vill du verkligen skicka meddelandet \\'{0}\\' via e-post? Meddelande kan skickas via e-post endast en gÃ¥ng.';\r\n\tstatic RemoveWhistleBlowCategory = 'Ta bort kategorin Whistle Blow';\r\n\tstatic Update = 'Uppdatering';\r\n\tstatic CopyActiveUserRightsToAllSameLevelFolders = 'Kopiera aktiva behörigheter till alla mappar pÃ¥ samma nivÃ¥';\r\n\tstatic FormShowModifyUser = 'Visa ändra användare';\r\n\tstatic EditEmployment = 'Redigera anställning';\r\n\tstatic UpdatingGroupCodeWasNotSuccessfulErrorParameter = 'Det gick inte att uppdatera gruppkoden! Fel: \\'{0}\\'';\r\n\tstatic FileFilterNameMustBeDefined = 'Filfilternamn mÃ¥ste definieras!';\r\n\tstatic SenderOrReceiver = 'Avsändare eller mottagare';\r\n\tstatic DeletingRecordFamiliarizationParameterWasSuccessful = 'Bekantskapen \\'{0}\\' har tagits bort!';\r\n\tstatic SavingKeywordParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara sökordet \"{0}\", eftersom data i sökordet har ändrats samtidigt av en annan användare!';\r\n\tstatic Action = 'Handling';\r\n\tstatic DoYouReallyWantToRemoveDocumentParameter = 'Vill du verkligen ta bort filen/dokumentet \"{0}\"?';\r\n\tstatic SavingFilterWasSuccessful = 'Filtret har sparats!';\r\n\tstatic SavingTaskParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara uppgiften \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic DoYouReallyWantToRemoveWhistleBlowParameter = 'Vill du verkligen ta bort whistle blow-rapporten \\'{0}\\'?';\r\n\tstatic InstantMessageAttachmentFolderIsNotSpecified = 'Programbilaga för snabbmeddelanden är inte specificerad!';\r\n\tstatic YouHaveNotSavedChangesSaveChangesBeforePublishingTaskType = 'Du har inte sparat ändringar som du har gjort. Spara ändringar innan du publicerar uppgiftstypen.';\r\n\tstatic NoFurtherEducationsToShow = 'Inga vidareutbildningar att visa!';\r\n\tstatic SavingMessageTypeParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att spara meddelandetypen \\'{0}\\', eftersom data i meddelandetypen har ändrats samtidigt av en annan användare!';\r\n\tstatic UserToken = 'Användartoken';\r\n\tstatic CalendarTaskOccurrence = 'Förekomst';\r\n\tstatic CopyOrMoveFolderParameter = 'Kopiera eller flytta mapp \\'{0}\\'';\r\n\tstatic AddEmployment = 'Lägg till anställning';\r\n\tstatic MissingPlural = 'Saknas';\r\n\tstatic SomeWhistleBlowHandlersHaveReadMessage = 'Vissa handläggare av whistleblow-rapporter har läst ditt meddelande';\r\n\tstatic TaskRemainderCheckingAndNotificationFinishedInParameterSeconds = 'Kontroll av Ã¥terstÃ¥ende uppgift och avisering avslutad (varaktighet: {0:N0}s, fel: {1}, uppgifter: {2}, e-postmeddelanden: {3}, push-meddelanden: {4})';\r\n\tstatic RecordUserExcelUserList = 'Personal';\r\n\tstatic DeletingUserParameterWasSuccessful = 'Användarkontot \\'{0}\\' har tagits bort!';\r\n\tstatic TemplateForms = 'Formmallar';\r\n\tstatic InstantMessageAttachmentFolderParameterNotFound = 'Programmets bifogade mappen \\'{0}\\' hittades inte!';\r\n\tstatic DeletingTaskPrioritiesParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort uppgiftsprioriteterna \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic ChangeCompany = 'Byt företag';\r\n\tstatic SearchCurrentTopics = 'Sök efter aktuella ämnen';\r\n\tstatic DoYouReallyWantToMoveTaskParameterToTrashBin = 'Vill du flytta uppgiften \\'{0}\\' till papperskorgen?';\r\n\tstatic WhistleBlowResolutionJunk = 'Skräppost';\r\n\tstatic EditMode = 'Redigera';\r\n\tstatic EmploymentEndDateCannotPrecedeEmploymentStartDate = 'Anställningens slutdatum kan inte föregÃ¥ anställningens startdatum!';\r\n\tstatic EventApprovalWasSuccessful = 'Incidenten godkänd!';\r\n\tstatic UserClaimsNotFound = 'AnvändaransprÃ¥k hittades inte!';\r\n\tstatic UserRecordsDashboard = 'Resursinstrumentpanel';\r\n\tstatic PublishTaskType = 'Publicera uppgiftstyp';\r\n\tstatic RemoveEditableDocument = 'Ta bort dokument';\r\n\tstatic PanelSize1 = '1 x 1';\r\n\tstatic Yes = 'Ja';\r\n\tstatic SearchStartDate = 'Start datum';\r\n\tstatic DeletingTaskPriorityParameterWasSuccessful = 'Uppgiftsprioritet \\'{0}\\' har tagits bort!';\r\n\tstatic TasksExcelByTasks = 'Uppgifter - Excel - Filtrerat efter uppgifter';\r\n\tstatic InheritedUserRights = 'Ärvda behörigheter';\r\n\tstatic SomeEventHandlersHaveReadMessage = 'Vissa incidenthanterare har läst din kommentar';\r\n\tstatic EventTypeCCodeMustBeDefined = 'Kategori 3 namn mÃ¥ste definieras!';\r\n\tstatic EventSettings = 'Incidentinställningar';\r\n\tstatic MovingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att flytta mappen \\'{0}\\' till mappen \\'{1}\\', eftersom data i mappen har ändrats samtidigt av en annan användare!';\r\n\tstatic DocumentZipFileName = 'Dokument_{0:åååå-MM-ddHH-mm}.zip';\r\n\tstatic SavingWhistleBlowWasNotSuccessfulConcurrencyError = 'Det gick inte att spara whistle blow-rapporten eftersom data i rapporten har ändrats samtidigt av en annan användare!';\r\n\tstatic Permission = 'Lov';\r\n\tstatic NotifiedPersons = 'Aviseringar';\r\n\tstatic RemoveCompanyGroup = 'Ta bort företagsgrupp';\r\n\tstatic NoEventsToShow = 'Inga incidenter att visa!';\r\n\tstatic SavingInstantMessageWasNotSuccessfulErrorParameter = 'Det gick inte att spara snabbmeddelandet! Fel: \\'{0}\\'';\r\n\tstatic UserGroup = 'Användargrupp';\r\n\tstatic RemoveMessageType = 'Ta bort meddelandetyp';\r\n\tstatic WhistleBlowDoesNotContainAnyMessage = 'Inga meddelanden skrivs för att rapportera om whistle blow.';\r\n\tstatic ShowReportRowAmountInFrontPage = 'Visa rapportradbelopp pÃ¥ förstasidan';\r\n\tstatic SavingDocumentTemplateParameterWasSuccessful = 'Dokumentmallen \\'{0}\\' har sparats!';\r\n\tstatic DeletingKeywordParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort sökordet \"{0}\", eftersom data i sökordet har ändrats samtidigt av en annan användare!';\r\n\tstatic SelectCompanyGroup = 'Välj Företagsgrupp';\r\n\tstatic DeletingDirectoryItemFolderParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort mappen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic WhistleBlowAnonymityNonAnonymous = 'Icke anonym';\r\n\tstatic DoYouReallyWantToRemoveCompanyParameter = 'Vill du verkligen ta bort företaget \\'{0}\\'?';\r\n\tstatic WhistleBlowStateArchived = 'Arkiverad';\r\n\tstatic SavingTaskTypeParameterWasSuccessful = 'Uppgiftstypen \\'{0}\\' har sparats!';\r\n\tstatic Identification = 'Identifiering';\r\n\tstatic AddFormFromTemplate = 'Lägg till formulär frÃ¥n mall';\r\n\tstatic FormBooleans = 'Sant/falskt';\r\n\tstatic AddCompanyGroupsParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att lägga till företagsgrupper \"{0}\", eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic ShowDraftVersion = 'Visa utkastinnehÃ¥ll';\r\n\tstatic SavingWhistleBlowMessageWasNotSuccessfulErrorParameter = 'Det gick inte att spara meddelandet! Fel: \\'{0}\\'';\r\n\tstatic Draft = 'Förslag';\r\n\tstatic Operation = 'Drift';\r\n\tstatic WhistleBlowDescription = 'Incidentbeskrivning';\r\n\tstatic AddPanel = 'Lägg till panel';\r\n\tstatic TaskPriorityParameterIsInUseInParameterTasksAndCannotBeDeleted = 'Uppgiftsprioritet \\'{0}\\' används i {1} uppgifter och kan inte tas bort!';\r\n\tstatic NoTasksToShow = 'Inga uppgifter att visa!';\r\n\tstatic EventUrgencyClass = 'BrÃ¥dskande klass';\r\n\tstatic PreviousCalendarMonth = 'FöregÃ¥ende kalendermÃ¥nad';\r\n\tstatic EventIsNotApprovedByUser = 'Användaren har inte godkänt händelsen';\r\n\tstatic FormTime = 'Tid (< 24 timmar)';\r\n\tstatic SavingEventTypeParameterWasSuccessful = 'Kategori 1 \\'{0}\\' har sparats!';\r\n\tstatic DeletingWhistleBlowParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort visselblÃ¥sningsrapporten \"{0}\", eftersom data i visselblÃ¥sningsrapporten har ändrats samtidigt av en annan användare!';\r\n\tstatic DeletingRecordUserEmploymentsParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort anställningar \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic Message = 'Meddelande';\r\n\tstatic WhistleBlowSourcePhone = 'Telefon';\r\n\tstatic DeletingInstantMessageUsersParameterWasNotSuccessfulConcurrencyError = 'Det gick inte att ta bort deltagare \"{0}\", eftersom data har ändrats samtidigt av en annan användare!';\r\n\tstatic RestoringInstantMessageWasNotSuccessfulConcurrencyError = 'Det gick inte att Ã¥terställa snabbmeddelandet eftersom data i snabbmeddelandet har ändrats samtidigt av en annan användare!';\r\n\tstatic InstantMessagesMenuTitle = 'HoxUp';\r\n\tstatic DoYouReallyWantToRemoveEventPartnerParameter = 'Vill du verkligen ta bort incidentpartner \\'{0}\\'?';\r\n\tstatic DoYouReallyWantToRemoveDocumentTemplateParameter = 'Vill du verkligen ta bort dokumentmallen \\'{0}\\'?';\r\n\tstatic UserParameterHasInvitedYouToJoinInstantMessageChannelParameter = 'Användaren \\'{0}\\' har bjudit in dig att gÃ¥ med i chatten';\r\n\tstatic Entry = 'Inträde';\r\n\tstatic UserReport = 'Användarens rapport';\r\n\tstatic Events = 'Incidenter';\r\n\tstatic PicturesAreVisibleForAllCompanyUsers = 'Bilder är synliga för alla företagsanvändare';\r\n\tstatic ArchivingRecordUserFamiliarizationsWasNotSuccessfulConcurrencyError = 'Det gick inte att arkivera ytterligare bekantskaper, eftersom data i bekantskaper har ändrats samtidigt av en annan användare!';\r\n\tstatic Number = 'siffra';\r\n\tstatic SelectArchivingMethod = 'Välj Arkiveringsmetod';\r\n\tstatic DeletingWhistleBlowChannelAdminsParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort administratörer \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic SavingEditableDocumentParameterPublishWasSuccessful = 'Dokumentet \\'{0}\\' har publicerats framgÃ¥ngsrikt!';\r\n\tstatic SaveAndEmail = 'Spara och maila';\r\n\tstatic EmptyTaskTrashBin = 'Töm papperskorgen för uppgiften';\r\n\tstatic MovingFolderParameterWasNotSuccessfulErrorParameter = 'Det gick inte att flytta mappen \\'{0}\\' till mappen \\'{1}\\' i filsystemet! Fel: \\'{2}\\'';\r\n\tstatic Channels = 'Chattar';\r\n\tstatic SelectInstantMessageChannelUsers = 'Välj deltagare';\r\n\tstatic ApproveEvent = 'Godkänn event';\r\n\tstatic JobTypeEmail = 'E-mailar';\r\n\tstatic Effectiveness = 'Effektivitet';\r\n\tstatic ReminderWeekBefore = 'veckan innan';\r\n\tstatic Private = 'Privat';\r\n\tstatic RemoveEmployment = 'Ta bort anställning';\r\n\tstatic AddAttachment = 'Bifoga fil';\r\n\tstatic SavingEventTypeParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara kategori 1 \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic SavingDirectoryItemPermissionsWasNotSuccessfulConcurrencyError = 'Det gick inte att spara mappbehörigheter eftersom mappar har ändrats samtidigt av en annan användare!';\r\n\tstatic AddPhotosAndAttachementsToEvent = 'Lägg till foto eller bilaga genom att trycka pÃ¥ kameran eller plusknapparna.';\r\n\tstatic WhistleBlowReportHasBeenSavedTopText = 'Lagra under lösenordet i säker lagring. Lösenorden ger dig tillgÃ¥ng till din rapport. Dela inte lösenord med nÃ¥gon!';\r\n\tstatic SavingUserParametersWasNotSuccessfulErrorParameter = 'Det gick inte att spara användaralternativ! Fel: \\'{0}\\'';\r\n\tstatic WhistleBlowStatisticsAnonymousRecords = 'Anonyma rapporter';\r\n\tstatic FormWeb = 'Webb-app';\r\n\tstatic WhistleBlowEventTypeModified = 'Ändrad';\r\n\tstatic RecentlyUpdated = 'Nyligen uppdaterad';\r\n\tstatic ExternalSystems = 'Externa system';\r\n\tstatic DoYouReallyWantToRemoveCalendarTaskCategoryParameter = 'Do you really want to remove category \\'{0}\\'?';\r\n\tstatic Comments = 'Kommentarer';\r\n\tstatic OptionParameterNotFound = 'Systemalternativet \\'{0}\\' hittades inte!';\r\n\tstatic NoPermission = 'Inga tillstÃ¥nd';\r\n\tstatic SelectCalendarTaskHandlers = 'Välj ansvariga personer';\r\n\tstatic AllCompanyGroups = 'Alla företagsgrupper';\r\n\tstatic SavingPrintWasNotSuccessfulConcurrencyError = 'Det gick inte att spara utskriften \"{0}\", eftersom data i utskriften har ändrats samtidigt av en annan användare!';\r\n\tstatic FormCodeMustBeDefined = 'Formulärkod mÃ¥ste definieras!';\r\n\tstatic ApproveEventResolution = 'Godkänn incidentlösning';\r\n\tstatic TaskPriorityParameterNotFound = 'Uppgiftsprioritet \\'{0}\\' hittades inte!';\r\n\tstatic SelectInstantMessageChannelType = 'Välj vhattyp';\r\n\tstatic Rows = 'rader';\r\n\tstatic FormulaRound = 'Avrundad';\r\n\tstatic DeletingInstantMessageUsersParameterWasSuccessful = 'Deltagarna \"{0}\" har tagits bort!';\r\n\tstatic RestoringTaskParameterFromTrashBinWasSuccessful = 'Uppgiften \\'{0}\\' har Ã¥terställts frÃ¥n papperskorgen!';\r\n\tstatic WriteMessage = 'Skriv meddelande';\r\n\tstatic UnlockingTaskDataRowWasNotSuccessful = 'Det gick inte att lÃ¥sa upp uppgiftsraden!';\r\n\tstatic CreatingFolderParameterWasNotSuccessfulErrorParameter = 'Det gick inte att skapa mappen \\'{0}\\' i filsystemet! Fel: \\'{1}\\'';\r\n\tstatic AdminMessage = 'Meddelande till chefer';\r\n\tstatic SendTime = 'Skicka tid';\r\n\tstatic EventSettingsParameterNotFound = 'Incidentinställningarna \\'{0}\\' hittades inte!';\r\n\tstatic RemoveUserGroupExternalSystemsWasSuccessful = 'Användargruppslänkar till externa system har tagits bort!';\r\n\tstatic WhistleBlowCategories = 'Whistle Blow kategorier';\r\n\tstatic AddingWhistleBlowHandlerWasNotSuccessfulErrorParameter = 'Det gick inte att lägga till hanterare! Fel: \\'{0}\\'';\r\n\tstatic AdditionalPermissions = 'Ytterligare behörigheter';\r\n\tstatic SavingDirectoryItemFolderParameterWasNotSuccessfulErrorParameter = 'Det gick inte att spara mappen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic SavingEditableDocumentParameterApprovalWasNotSuccessfulErrorParameter = 'Det gick inte att godkänna dokumentet \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic AccessRightWrite = 'SkrivtillstÃ¥nd';\r\n\tstatic CalendarTaskCategoryParameterIsInUseInParameterCalendarTasksAndCannotBeDeleted = 'Kategori \\'{0}\\' används i {1} händelser och kan inte tas bort!';\r\n\tstatic SavingUnitsWasSuccessful = 'Enheter har sparats!';\r\n\tstatic UnitChangedFromParameterToParameter = 'Enheten ändrades frÃ¥n \\'{0}\\' till \\'{1}\\'.';\r\n\tstatic FileParameterIsNotOpenXmlWorkbook = 'File \\'{0}\\' is not open xml workbook (.xlsx tai .xlsm)!';\r\n\tstatic NewVersionAvailable = 'Ny applikationsversion tillgänglig! Applikationen kan inte användas innan den har uppdaterats.';\r\n\tstatic ViewLogLine = 'Visa logglinje';\r\n\tstatic WhistleBlowInformantTitle = 'Vad handlar din rapport om?';\r\n\tstatic IgnoreFilePatterns = 'Ignorera filmönster';\r\n\tstatic TaskReport = 'Uppgiftsrapport';\r\n\tstatic EventUrgencyClasses = 'BrÃ¥dskande klasser';\r\n\tstatic EditUserGroup = 'Redigera användargrupp';\r\n\tstatic Documents = 'Dokument';\r\n\tstatic MyReports = 'Användarens rapporter';\r\n\tstatic NewPanel = 'Ny panel';\r\n\tstatic SavingPrintWasSuccessful = 'Utskriften har sparats!';\r\n\tstatic DefaultHandlers = 'Standardhanterare';\r\n\tstatic EditCompany = 'Redigera företag';\r\n\tstatic UserPasswordMustBeValid = 'Lösenordet mÃ¥ste vara minst 8 tecken lÃ¥ngt och det mÃ¥ste innehÃ¥lla smÃ¥ bokstäver, versaler och minst en siffra eller specialtecken.';\r\n\tstatic CompetencyGroup = 'Kompetensgrupp';\r\n\tstatic LockedTaskDataRowCannotBeDeleted = 'LÃ¥st uppgiftsrad kan inte tas bort!';\r\n\tstatic PanelSize2 = '2 x 1';\r\n\tstatic DeletingTaskTypeParameterWasNotSuccessfulErrorParameter = 'Det gick inte att ta bort uppgiftstypen \\'{0}\\'! Fel: \\'{1}\\'';\r\n\tstatic DocumentTemplateParameterNotFound = 'Dokumentmallen \\'{0}\\' hittades inte!';\r\n\tstatic NoNotificationsToSend = 'Inga aviseringar ska skickas!';\r\n\tstatic CompanyName = 'Företagsnamn';\r\n\tstatic EditRow = 'Redigera rad';\r\n\tstatic InviteInstantMessageChannelUser = 'Bjud in deltagare';\r\n\tstatic FormOptions = 'Alternativ';\r\n\tstatic PrivacyPolicyUrl = 'Sekretesspolicy webbadress';\r\n\tstatic FileSynchronizationToDatabaseStarted = 'Filsystemsynkronisering med databas startade';\r\n\tstatic FormulaPI = 'Pi';\r\n\tstatic ShowOnlyUnitsThatAreInUse = 'Visa endast enheter som används';\r\n\tstatic EditableDocumentUnpublishConfirmation = 'Vill du ta bort den publicerade filen?';\r\n\tstatic SavingFilterWasNotSuccessfulErrorParameter = 'Det gick inte att spara filtret! Fel: \\'{1}\\'';\r\n\tstatic UnlockingTaskParameterWasNotSuccessful = 'Det gick inte att lÃ¥sa upp uppgiften \\'{0}\\'!';\r\n\tstatic ExternalSystemCodeClaimNotFound = 'Användarens ansprÃ¥k \\'externalSystemCode\\' hittades inte!';\r\n\tstatic SearchTasks = 'Sök uppgifter';\r\n\tstatic FormDate = 'Datum';\r\n\tstatic TaskDashboard = 'Uppgifter instrumentbräda';\r\n\tstatic SaveReportAs = 'Spara rapport som';\r\n\tstatic EditFamiliarization = 'Redigera bekantskap';\r\n\tstatic AddUserGroups = 'Lägg till användargrupper';\r\n\tstatic AddUserGroupParameterWasSuccessful = 'Användargruppen \\'{0}\\' har lagts till!';\r\n\tstatic WhistleBlowInformation = 'Rapportera information';\r\n\tstatic UserIsCompanyAdminClaimNotFound = 'AnvändaransprÃ¥ket \"userIsCompanyAdmin\" hittades inte!';\r\n\tstatic EditEventTypeBs = 'Redigera kategori 2';\r\n\tstatic AddTaskType = 'Lägg till uppgiftstyp';\r\n\tstatic DefaultTaskStates = 'Default Task States';\r\n\tstatic TaskPriorityCodeMustBeDefined = 'Uppgiftsprioritetsnamn mÃ¥ste definieras!';\r\n\tstatic TaskRemainderCheckingAndNotificationStarted = 'Kontroll av resterande uppgifter och avisering startade';\r\n\tstatic Reminder = 'PÃ¥minnelse';\r\n\tstatic InstantMessageChannelUsers = 'Deltagare';\r\n\tstatic EditSharedDocumentTemplate = 'Redigera mall för delat dokument';\r\n\tstatic SharedFiltersAndReports = 'Delade filter och rapporter';\r\n\tstatic DeletingEventParameterWasSuccessful = 'Incidenten \\'{0}\\' har tagits bort!';\r\n\tstatic NoFavoritesToShow = 'Inga favoriter att visa!';\r\n\tstatic RelatedToDatabaseRecordType = 'Relaterat till';\r\n\tstatic RemovePrint = 'Ta bort utskrift';\r\n}\r\n// ReSharper restore InconsistentNaming\r\n","/* eslint-disable no-mixed-spaces-and-tabs */\r\n/* eslint-disable no-multiple-empty-lines */\r\n/* eslint-disable no-useless-escape */\r\n/* eslint-disable quotes */\r\n/* eslint-disable indent */\r\n/* eslint-disable no-tabs */\r\n/* eslint-disable camelcase */\r\nimport { Translations_en_US } from \"./translations.en-US\";\r\nimport { Translations_sv_FI } from \"./translations.sv-FI\";\r\n\r\n// ReSharper disable InconsistentNaming\r\nexport class Translations_fi {\r\n\tstatic DoYouReallyWantToRemoveTaskPriorityParameter = 'Haluatko todella poistaa tehtävän prioriteetin \\'{0}\\'?';\r\n\tstatic RemoveTransferredProperty = 'Poista luovutettu omaisuus';\r\n\tstatic JobResultParameterNotFound = 'Työtulosta \\'{0}\\' ei löytynyt!';\r\n\tstatic Identifier = 'Tunniste';\r\n\tstatic PrintParameterDownloaded = 'Tuloste on ladattu.';\r\n\tstatic FormSizeLarge = 'Suuri';\r\n\tstatic NotificationsQueuedSuccessfully = 'Ilmoitukset asetettu lähetettäväksi!';\r\n\tstatic TrainingStartDateStart = 'Koulutus alkoi - alku';\r\n\tstatic Unpublish = 'Poista julkaisu';\r\n\tstatic EmptyingTaskTrashBinWasSuccessful = 'Tehtävien roskakori on nyt tyhjä!';\r\n\tstatic Font = 'Kirjasin';\r\n\tstatic DoYouReallyWantToRemoveEventParameter = 'Haluatko todella poistaa havainnon \\'{0}\\'?';\r\n\tstatic DeletingAttachmentsWasNotSuccessfulErrorParameter = 'Liitteiden poisto epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic ObserverAction = 'Havainnon tekijän toimenpiteet';\r\n\tstatic DatabaseCheckingStarted = 'Tietokannan tarkastus aloitettu';\r\n\tstatic SavingEventDefaultHandlerParameterWasNotSuccessfulErrorParameter = 'Oletuskäsittelijän \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic DoYouReallyWantToRemoveRemainderParameter = 'Haluatko todella poistaa muistutuksen \\'{0}\\'?';\r\n\tstatic View = 'Näkymä';\r\n\tstatic ArchivingWhistleBlowsParameterWasNotSuccessfulErrorParameter = 'Ilmoitusten \\'{0}\\' arkistointi epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic SavingMessageSendEmailParameterWasNotSuccessfulConcurrencyError = 'Sähköpostilokin tallennus viestille \\'{0}\\' epäonnistui, koska sähköpostilokin tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic AddCompanyToCompanyGroup = 'Lisää yritys yritysryhmään';\r\n\tstatic WhistleBlowResolutionRejected = 'Hylätty';\r\n\tstatic DeletingRecordUserTransferredPropertyParameterWasNotSuccessfulConcurrencyError = 'Luovutetun omaisuuden \\'{0}\\' poisto epäonnistui, koska luovutetun omaisuuden tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic VoucherPrefix = 'Tositteen etuliite';\r\n\tstatic SavingRecordUserParameterWasSuccessful = 'Henkilöstökortin \\'{0}\\' tallennus onnistui!';\r\n\tstatic InternalAttachments = 'Sisäiset liitteet';\r\n\tstatic CalendarTask = 'Tapahtuma';\r\n\tstatic AllCalendarTaskUsers = 'Kaikki kalenterin käyttäjät';\r\n\tstatic MaximumSizeOfSingleAttachment = 'Liitteen maksimikoko on {0} MB!';\r\n\tstatic ShortName = 'Nimen lyhenne';\r\n\tstatic DeletingRecordUserParameterWasNotSuccessfulErrorParameter = 'Henkilöstökortin \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic Sorting = 'Lajittelu';\r\n\tstatic AddingCalendarTaskHandlerWasNotSuccessfulErrorParameter = 'Vastuuhenkilöiden lisäys epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic GroupByFamiliarization = 'Perehdytyksittäin';\r\n\tstatic DoYouReallyWantToRestoreThisInstantMessage = 'Haluatko todella palauttaa tämän pikaviestin?';\r\n\tstatic DeletingKeywordsParameterWasNotSuccessfulConcurrencyError = 'Avainsanojen \\'{0}\\' poisto epäonnistui, koska avainsanojen tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic RecordUserLogEntryTypeReport = 'Raportointi';\r\n\tstatic AddFurtherEducations = 'Lisää jatkokoulutukset';\r\n\tstatic AddNew = 'Lisää uusi';\r\n\tstatic SelectSubject = 'Valitse aihe';\r\n\tstatic AccessRightNone = 'Ei käyttöoikeutta';\r\n\tstatic Course = 'kurssi';\r\n\tstatic AddChildEventType = 'Lisää alitarkenne 1';\r\n\tstatic FormColumnTitle = 'Sarakkeen otsikko';\r\n\tstatic ExternalSystemUserCodeMustBeDefined = 'Käyttäjän tunnus muussa järjestelmässä täytyy määritellä!';\r\n\tstatic SavingRecordUserTransferredPropertyParameterWasNotSuccessfulConcurrencyError = 'Luovutetun omaisuuden \\'{0}\\' epäonnistui, koska luovutetun omaisuuden tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic AddChildDefaultEventType = 'Lisää oletusalitarkenne 1';\r\n\tstatic DeletingCompaniesParameterWasNotSuccessfulErrorParameter = 'Yritysten \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic PropertyTransferred = 'Luovutettu';\r\n\tstatic DeletingCalendarTaskParameterWasNotSuccessfulErrorParameter = 'Tapahtuman \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic NewRecordUserMustBeSavedBeforeEmploymentsCanBeAdded = 'Uusi henkilöstökortti täytyy tallentaan ennen työpaikkojen lisäämistä!';\r\n\tstatic DoYouReallyWantToRemoveInstantMessageChannelParameter = 'Haluatko todella poistaa keskustelun \\'{0}\\'?';\r\n\tstatic Familiarizations = 'Perehdytykset';\r\n\tstatic Row = 'rivi';\r\n\tstatic RemovePicture = 'Poista kuva';\r\n\tstatic DeletingRecordFurtherEducationGroupParameterWasNotSuccessfulErrorParameter = 'Jatkokoulutusryhmän \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic FormCheckbox = 'Valintaruutu';\r\n\tstatic NewCompanyMustBeSavedBeforePartnersCanBeAdded = 'Uusi yritys täytyy tallentaan ennen kumppanien lisäämistä!';\r\n\tstatic RemoveRecordUserAndUserSetExpired = 'Poista henkilöstökortti ja aseta käyttäjätilin voimassaolo päättyneeksi';\r\n\tstatic InstantMessageChannelAdministrator = 'Ylläpitäjä';\r\n\tstatic AddEventPartner = 'Lisää havaintokumppani';\r\n\tstatic Employment = 'Työpaikka';\r\n\tstatic SavingUserGroupParameterWasNotSuccessfulErrorParameter = 'Käyttäjäryhmän \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic DeletingRecordQualificationsParameterWasNotSuccessfulErrorParameter = 'Pätevyysvaatimusten \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic SavingEventTypeCParameterWasSuccessful = 'Tarkenteen 3 \\'{0}\\' tallennus onnistui!';\r\n\tstatic IncludeArchivedRecordUsers = 'Sisällytä arkistoidut henkilöstökortit';\r\n\tstatic CopyDefaultHandlersToAllSameLevelUnits = 'Kopioi oletuskäsittelijät kaikkiin saman tason yksiköihin';\r\n\tstatic WhistleBlowInformantHint = 'Kerro tarkasti tapauksesta, jotta se on selvitettävissä.';\r\n\tstatic DeletingEventTypeParameterWasNotSuccessfulErrorParameter = 'Tarkenteen 1 \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic DeletingRecordUserTransferredPropertiesParameterWasSuccessful = 'Luovutettujen omaisuuksien \\'{0}\\' poisto onnistui!';\r\n\tstatic InvitationPasswordReset = 'Kutsu / salasanan nollaus';\r\n\tstatic Handlers = 'Käsittelijät';\r\n\tstatic DeletingRecordUserTransferredPropertyParameterWasNotSuccessfulErrorParameter = 'Luovutetun omaisuuden \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic MobileAppInUse = 'Mobiilisovellus käytössä';\r\n\tstatic CompanyThatIsRelatedToEventsCannotBeDeleted = 'Yritystä, joka on lähettänyt tai vastaanottanut havaintoja, ei voi poistaa!';\r\n\tstatic AddEventHandler = 'Lisää käsittelijä';\r\n\tstatic RecordUserExcelFurtherEducation = 'Jatkokoulutukset';\r\n\tstatic EditAttachment = 'Muokkaa liitettä';\r\n\tstatic Tasks = 'Tehtävät';\r\n\tstatic SavingCompanyParameterWasSuccessful = 'Yrityksen \\'{0}\\' tallennus onnistui!';\r\n\tstatic AddingRecordUserSalaryRowsWasNotSuccessfulErrorParameter = 'Palkkarivien lisäys epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic EmailNotificationOfChangedPublishStatus = 'Sähköposti-ilmoitus julkaisun muutoksesta';\r\n\tstatic SavingCompanyGroupParameterWasSuccessful = 'Yritysryhmän \\'{0}\\' tallennus onnistui!';\r\n\tstatic ParameterIsNotValidAccountIBANNumber = '\\'{0}\\' ei ole oikeellinen IBAN-tilinumero!';\r\n\tstatic YouDeletedThisMessage = 'Sinä poistit tämän viestin';\r\n\tstatic WhistleBlowChannelSettings = 'Ilmoituskanavan asetukset';\r\n\tstatic DefaultTaskPriorities = 'Tehtävien oletusprioriteetit';\r\n\tstatic DeletingKeywordParameterWasSuccessful = 'Avainsanan \\'{0}\\' poisto onnistui!';\r\n\tstatic InstantMessageChannelRemoveFromYourselfFromAdministratorsConfirmation = 'Haluatko todella poistaa poistaa itsesi ylläpitäjien joukosta? Vain ylläpitäjät voivat hallita keskustelua.';\r\n\tstatic Unkown = 'Tuntematon';\r\n\tstatic SavingEventSettingsWasNotSuccessfulConcurrencyError = 'Havaintojen asetusten tallennus epäonnistui, koska havaintojen asetuksia on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic SavingRecordUserTransferredPropertyParameterWasSuccessful = 'Luovutetun omaisuuden \\'{0}\\' tallennus onnistui!';\r\n\tstatic WhistleBlowInformantDescription = 'Kerro, mitä on tapahtunut.';\r\n\tstatic DoYouReallyWantToRemoveCalendarTaskParameter = 'Haluatko todella poistaa tapahtuman \\'{0}\\'?';\r\n\tstatic SavingRecordUserQualificationParameterWasSuccessful = 'Pätevyysvaatimuksen \\'{0}\\' tallennus onnistui!';\r\n\tstatic SendInvitationEmailToImportedUsers = 'Lähetä sähköpostikutsu tuoduille käyttäjille';\r\n\tstatic ActiveUserRightsCannotBeCopiedToDirectoryItemFolderParameter = 'Asetettuja käyttöoikeuksia ei voi kopioida kansioon \\'{0}\\'!';\r\n\tstatic SavingJobParameterWasSuccessful = 'Työn \\'{0}\\' tallennus onnistui!';\r\n\tstatic Favorites = 'Suosikit';\r\n\tstatic SentEmails = 'Lähetetyt sähköpostit';\r\n\tstatic WhistleBlowReportIHaveSavedThePassword = 'Olen tallentanut salasanani turvallisesti, jotta voin käyttää sitä ilmoitukseni seurantaan.';\r\n\tstatic SearchDocuments = 'Hae dokumentteja';\r\n\tstatic DoYouReallyWantToUnlockEvent = 'Haluatko todella poistaa havainnon \\'{0}\\' lukituksen?';\r\n\tstatic Invoicing = 'Laskutustiedot';\r\n\tstatic ChartType = 'Kaavion tyyppi';\r\n\tstatic Sender = 'Lähettäjä';\r\n\tstatic DefaultStyle = 'Normaali';\r\n\tstatic ReadImp = 'Luettu';\r\n\tstatic AddUserParameterWasSuccessful = 'Käyttäjätilin \\'{0}\\' lisäys onnistui!';\r\n\tstatic RecordUserLogEntryTypeOpen = 'Luku';\r\n\tstatic ExternalSystemCompanyTokenParameterIsAlreadyInUse = 'Yritys-token \\'{0}\\' on jo käytössä!';\r\n\tstatic RecurringCalendarTaskCannotHaveMoreThanParameterOccurences = 'Toistuvassa tehtävässä voi olla korkeintaan {0} toistoa!';\r\n\tstatic UsersOfThisCompany = 'Oman yrityksen käyttäjät';\r\n\tstatic EmploymentEndDate = 'Työsuhde päättyi';\r\n\tstatic JobDataIsEmpty = 'Työn tiedot puuttuvat!';\r\n\tstatic SavingCalendarTaskParameterWasSuccessful = 'Tapahtuman \\'{0}\\' tallennus onnistui!';\r\n\tstatic UpdateUserGroupParameterExternalSystemsWasNotSuccessfulConcurrencyError = 'Käyttäjäryhmän \\'{0}\\' linkitys ulkoisiin järjestelmiin epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic ExpiredFurtherEducations = 'Vanhentuneet jatkokoulutukset';\r\n\tstatic SavingUnitsWasNotSuccessfulErrorParameter = 'Yksiköiden tallennus epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic WhistleBlowAnonymityAnonymous = 'Anonyymi';\r\n\tstatic TaskDataRowFieldParameterNotFoundInDataSchema = 'Tehtävärivin kenttää \\'{0}\\' ei löytynyt data schemasta!';\r\n\tstatic CalendarTaskEditOccurrence = 'Muokkaa esiintymää';\r\n\tstatic DoYouReallyWantToRemoveEventUrgencyClassParameter = 'Haluatko todella poistaa kiireellisyysluokan \\'{0}\\'?';\r\n\tstatic UserFilterActive = 'Aktiiviset käyttäjätilit';\r\n\tstatic CompanyNameMustBeDefined = 'Yrityksen nimi täytyy määritellä!';\r\n\tstatic SavingEventParameterWasSuccessful = 'Havainnon \\'{0}\\' tallennus onnistui!';\r\n\tstatic LockingEventParameterWasNotSuccessful = 'Havainnon \\'{0}\\' lukitseminen epäonnistui!';\r\n\tstatic AdditionalInformation = 'Lisätiedot';\r\n\tstatic SetUnitPermissions = 'Aseta yksiköiden käyttöoikeudet';\r\n\tstatic PrintRow = 'Tulosta rivi';\r\n\tstatic TimeSpanHalfYear = 'Puoli vuotta';\r\n\tstatic ExpiresInParameterDays = 'Vanhenee {0} päivän kuluessa';\r\n\tstatic SavingEventTypeCParameterWasNotSuccessfulConcurrencyError = 'Tarkenteen 3 \\'{0}\\' tallennus epäonnistui, koska tarkenteen 3 tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic EditableDocumentCodeMustBeDefined = 'Dokumentin nimi täytyy määritellä!';\r\n\tstatic EditFurtherEducation = 'Muokkaa jatkokoulutusta';\r\n\tstatic EventTypeCodeMustBeDefined = 'Tarkenteen nimi täytyy määritellä!';\r\n\tstatic No = 'Ei';\r\n\tstatic RemoveEvent = 'Poista havainto';\r\n\tstatic ChooseHowYouWantToReport = 'Valitse raportoinin tapa';\r\n\tstatic ChangedObserverAction = 'Muuttanut havainnon tekijän toimenpidettä';\r\n\tstatic FormCodeIsAlreadyInUse = 'Lomakkeen nimi on jo käytössä!';\r\n\tstatic RecordUserReport = 'Henkilöstökorttiraportti';\r\n\tstatic RecordUserActiveStateChangePermissionDeniedInUnitParameter = 'Arkistoitu-tilan muuttaminen ei ole sallittu yksikössä \\'{0}\\'!';\r\n\tstatic DoYouReallyWantToRemoveRecordUserParameter = 'Haluatko todella poistaa henkilöstökortin \\'{0}\\'?';\r\n\tstatic Go = 'Mene';\r\n\tstatic FormRowPrint = 'Rivin tuloste';\r\n\tstatic TimeSpanMonth = 'Kuukausi';\r\n\tstatic RemoveDefaultTaskType = 'Poista oletustehtävätyyppi';\r\n\tstatic SavingRecordFurtherEducationGroupParameterWasNotSuccessfulErrorParameter = 'Jatkokoulutusryhmän \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic ReadReceiptMessage = 'Lukukuitattava viesti';\r\n\tstatic DeletingDocumentTemplateParameterWasSuccessful = 'Dokumenttimallin \\'{0}\\' poisto onnistui!';\r\n\tstatic DeletingUserGroupUsersOfCompanyParameterWasNotSuccessfulConcurrencyError = 'Yritykseen \\'{0}\\' liittyvien käyttäjäryhmäliittymien poisto epäonnistui, koska käyttäjäryhmäliittymän tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic DeletingEventTypeParameterWasSuccessful = 'Tarkenteen 1 \\'{0}\\' poisto onnistui!';\r\n\tstatic FamiliarizationsMustBeDefinedBeforeAddingRecordUserFamiliarizations = 'Yrityksen perehdytykset täytyy määritellä ennen kuin perehdytyksiä voi lisätä henkilöstökortille!';\r\n\tstatic AddFolder = 'Lisää kansio';\r\n\tstatic Locked = 'Lukittu';\r\n\tstatic UserProfile = 'Käyttäjätilin tiedot';\r\n\tstatic InstantMessageChannelArchivingTypeRemoveChannelAtDateParameter = 'Poista arkistoitu keskustelu ja viestit {0}';\r\n\tstatic Users = 'Käyttäjätilit';\r\n\tstatic SelectOperatorOrFunction = 'Valitse operaatio tai funktio';\r\n\tstatic ExternalSystemDatabaseInterfaceError = 'Virhe eSalkku-järjestelmän tietokantaliittymässä!';\r\n\tstatic PublishVoucherInOutReportToFileSystem = 'Julkaise koontitosite tiedostojärjestelmään';\r\n\tstatic DeletingMessageTypeParameterWasNotSuccessfulUsedInParameterMessages = 'Viestityypin \\'{0}\\' poisto epäonnistui, koska viestityyppi on {1} viestin käytössä!';\r\n\tstatic LockedEventParameterCannotBeDeleted = 'Lukittua havaintoa \\'{0}\\' ei voi poistaa!';\r\n\tstatic TaskStateCodeIsAlreadyInUse = 'Tehtävän tilan nimi on jo käytössä!';\r\n\tstatic ClearSubUnitPermissions = 'Tyhjennä aliyksiköiden käyttöoikeudet';\r\n\tstatic DaysAgo30 = '30 päivää sitten';\r\n\tstatic SavingImagesWasSuccessful = 'Kuvien tallennus onnistui!';\r\n\tstatic SavingDocumentTemplateParameterWasNotSuccessfulConcurrencyError = 'Dokumenttimallin \\'{0}\\' tallennus epäonnistui, koska dokumenttimallin tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic JobTypePushNotification = 'Push-ilmoitus';\r\n\tstatic AddTaskState = 'Lisää tehtävän tila';\r\n\tstatic SavingTaskStateParameterWasNotSuccessfulConcurrencyError = 'Tehtävän tilan \\'{0}\\' tallennus epäonnistui, koska tehtävän tilan tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic DoYouReallyWantToRemoveFolderParameter = 'Haluatko todella poistaa kansion \\'{0}\\'?';\r\n\tstatic CopyContentToDocumentContent = 'Kopioi sisältö dokumentin sisällöksi';\r\n\tstatic LanguageNonLocalSwedish = 'Svenska';\r\n\tstatic LanguageSwedish = 'ruotsi';\r\n\tstatic SavePrintAs = 'Tallenna tuloste nimellä';\r\n\tstatic WhistleBlowStateNew = 'Uusi';\r\n\tstatic EventTypesMustBeDefinedBeforeAddingEvents = 'Tarkenne 1 täytyy määritellä ennen kuin havaintoja voi lisätä!';\r\n\tstatic AType = 'Tyyppi';\r\n\tstatic KeywordParameterNotFound = 'Avainsanaa \\'{0}\\' ei löytynyt!';\r\n\tstatic AdditionalPermissionAWhistleBlow = 'Voi kommunikoida ilmoittajan kanssa';\r\n\tstatic Characters = 'Merkkiä';\r\n\tstatic ReadReceiptGiven = 'Kuitattu';\r\n\tstatic WhistleBlowGuide = 'Ohje ilmoittamiseen';\r\n\tstatic WhistleBlowResolutionResolved = 'Ratkaistu';\r\n\tstatic DeletingWhistleBlowCategoryParameterWasNotSuccessfulConcurrencyError = 'Ilmoitusluokan \\'{0}\\' poisto epäonnistui, koska ilmoitusluokan tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic UserGroupParameterIsInUseInParameterUsersAndCannotBeDeleted = 'Käyttäjäryhmä \\'{0}\\' on käytössä {1} käyttäjässä eikä sitä voi poistaa!';\r\n\tstatic FormExpression = 'Laskukaava';\r\n\tstatic FieldParameterMaxLengthIsParameter = 'Kentän \\'{0}\\' maksimipituus on {0} merkkiä!';\r\n\tstatic AddingCalendarTaskHandlersWasSuccessful = 'Vastuuhenkilöiden lisäys onnistui!';\r\n\tstatic DeletingEditableDocumentParameterWasNotSuccessfulErrorParameter = 'Dokumentin \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic InstantMessageChannelInformation = 'Keskustelun tiedot';\r\n\tstatic RecordBasicEducationCodeMustBeDefined = 'Peruskoulutuksen nimi täytyy määritellä!';\r\n\tstatic MyFilters = 'Käyttäjän suodattimet';\r\n\tstatic Day = 'päivä';\r\n\tstatic SavingImagesNotSuccessfulErrorParameter = 'Kuvien tallennus epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic DeletingTaskDataRowWasNotSuccessfulConcurrencyError = 'Tehtävärivin poisto epäonnistui, koska tehtävärivin tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic DeletingUserParameterWasNotSuccessfulConcurrencyError = 'Käyttäjätilin \\'{0}\\' poisto epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic RemoveUnit = 'Poista yksikkö';\r\n\tstatic TheUserDoesNotHavePermissionsForThisSystem = 'Kirjautuneella käyttäjällä ei ole oikeuksia tähän järjestelmään!';\r\n\tstatic EditableDocument = 'Dokumentti';\r\n\tstatic NewCompanyGroupMustBeSavedBeforeUsersCanBeAdded = 'Uusi yritysryhmä täytyy tallentaa ennen yritysten lisäämistä!';\r\n\tstatic DeletingCalendarTaskCategoriesParameterWasSuccessful = 'Luokkien \\'{0}\\' poisto onnistui!';\r\n\tstatic RemoveEventHandler = 'Poista käsittelijä';\r\n\tstatic SavingTaskTypeParameterWasNotSuccessfulErrorParameter = 'Tehtävätyypin \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic List = 'Lista';\r\n\tstatic ErrorUserChangeWouldLeadToInvalidDefaultEventHandlers = 'Käyttäjän muutokset johtavat tilanteeseen, jossa joillakin oletuskäsittelijöillä tai tiedotettavilla henkilöillä ei ole enää oikeuksia käsitellä yksikön havaintoja! Muutokset, jotka vaikuttavat oletuskäsittelijöihin tai tiedotettaviin henkilöihin, voi suorittaa ainoastaan Havaintojen asetukset\\'-lomakkeessa!';\r\n\tstatic SavingInstantMessageChannelParameterWasNotSuccessfulConcurrencyError = 'Keskustelun \\'{0}\\' tallennus epäonnistui, koska keskustelun tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic ExpiredFamiliarizations = 'Vanhentuneet perehdytykset';\r\n\tstatic AddPhoto = 'Lisää valokuva';\r\n\tstatic AllDocumentTypes = 'Näytä kaikki dokumenttityypit';\r\n\tstatic DeletingDocumentTemplatesParameterWasNotSuccessfulErrorParameter = 'Dokumenttimallien \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic FormTitle4 = 'Otsikko 4';\r\n\tstatic ValidityEndDate = 'Voimassa päättyen';\r\n\tstatic InstantMessages = 'Pikaviestit';\r\n\tstatic WhistleBlowRecords = 'Ilmoitukset';\r\n\tstatic LockedTaskParameterCannotBeSaved = 'Tehtävä \\'{0}\\' on lukittu toiselle käyttäjälle eikä sitä voi tallentaa!';\r\n\tstatic SelectTaskPriority = 'Valitse tehtävän priorititeetti';\r\n\tstatic SavingCompanyGroupParameterWasNotSuccessfulErrorParameter = 'Yritysryhmän \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic FormTextAreaSize = 'Korkeus';\r\n\tstatic AccessRightWriteInstantMessages = 'Yrityksen sisäiset ja yritysten väliset keskustelut';\r\n\tstatic SSRSParameterReportsFetched = '{0} raporttia haettu SSRS:stä';\r\n\tstatic Hidden = 'Piilotettu';\r\n\tstatic ReadReceiptRequired = 'Kuitattavat';\r\n\tstatic DeletingUserGroupParameterWasNotSuccessfulErrorParameter = 'Käyttäjäryhmän \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic CompanyTaskTypesInstruction = 'Huomioi, että muokkaukset yrityksen lomakkeisiin vaikuttavat myös lomakkeille jo tehtyihin kirjauksiin. Muodosta tarvittaessa uusi lomake + -painikkeesta.';\r\n\tstatic DeletingUserGroupParameterWasNotSuccessfulConcurrencyError = 'Käyttäjäryhmän \\'{0}\\' poisto epäonnistui, koska käyttäjäryhmän tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic SavingMessageSendEmailParameterWasSuccessful = 'Sähköpostilokin tallennus viestille \\'{0}\\' onnistui!';\r\n\tstatic SavingRecordFamiliarizationParameterWasNotSuccessfulErrorParameter = 'Perehdytyksen \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic DeletingRecordQualificationParameterWasNotSuccessfulConcurrencyError = 'Pätevyysvaatimuksen \\'{0}\\' poisto epäonnistui, koska pätevyysvaatimuksen tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic LockedToUser = 'Lukittu käyttäjälle';\r\n\tstatic OperationNotAllowedForRootFolderParameter = 'Operaatiota ei voi suorittaa juurikansiolle \\'{0}\\'!';\r\n\tstatic FormExpressionFormatMinutesToHoursAndMinutes = 'Minuuteista tunneiksi ja minuuteiksi';\r\n\tstatic MessageModuleProperties = 'Ajankohtaista-osion asetukset';\r\n\tstatic FormWidthMobile = 'Leveys mobiiliapissa';\r\n\tstatic AddFamiliarization = 'Lisää perehdytys';\r\n\tstatic EventType = 'Tarkenne 1';\r\n\tstatic Parameters = 'Parametrit';\r\n\tstatic FolderPath = 'Hakemistopolku';\r\n\tstatic TaskParameterNotFound = 'Tehtävää \\'{0}\\' ei löytynyt!';\r\n\tstatic ActivePlural = 'Aktiiviset';\r\n\tstatic ReadingDatabaseParameter = 'Lukee tietokantaa \\'{0}\\'...';\r\n\tstatic SearchEndDate = 'Päiväys loppu';\r\n\tstatic BankBICCode = 'Pankin BIC-koodi';\r\n\tstatic JobTitleMustBeDefined = 'Tehtävänimike täytyy määritellä!';\r\n\tstatic RecordFurtherEducationGroupCodeIsAlreadyInUse = 'Jatkokoulutusryhmän nimi on jo käytössä!';\r\n\tstatic WebPageStyle = 'Sivuston tyyli';\r\n\tstatic SavingMessageTypeParameterWasSuccessful = 'Viestityypin \\'{0}\\' tallennus onnistui!';\r\n\tstatic DeletingWhistleBlowCategoryParameterWasNotSuccessfulErrorParameter = 'Ilmoitusluokan \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic SelectTaskInListToSeeThePreview = 'Valitse tehtävä listasta nähdäksesi sen esikatselussa';\r\n\tstatic DoYouReallyWantToRemoveUserGroupParameter = 'Haluatko todella poistaa käyttäjäryhmän \\'{0}\\'?';\r\n\tstatic ReminderHoursBefore = 'tuntia aikaisemmin';\r\n\tstatic Handling = 'Käsittely';\r\n\tstatic EventHandlerParameterNotFound = 'Käsittelijää \\'{0}\\' ei löytynyt!';\r\n\tstatic UnitIsRelatedToEventPartner = 'Yksikkö liitty havaintokumppaniin';\r\n\tstatic ValidPlural = 'Voimassaolevat';\r\n\tstatic Camera = 'Kamera';\r\n\tstatic CalendarTaskRepetitionRepeatIntervalPrefix = 'Toista';\r\n\tstatic DefaultEventSettings = 'Havaintojen oletusasetukset';\r\n\tstatic UserRecordStatisticsUserAccountConnectedCards = 'Käyttäjätiliin kytkettyjä kortteja';\r\n\tstatic UserIsActiveInWeb = 'Käyttäjätili on aktiivinen web-sovelluksessa.';\r\n\tstatic FormDatesAndTimes = 'Päiväykset ja ajat';\r\n\tstatic DeletingEventUrgencyClassesParameterWasNotSuccessfulErrorParameter = 'Kiireellisyysluokkien \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic AdditionalPermissionAMessage = 'Oikeus lukea kumppaneiden julkaisemia viestejä';\r\n\tstatic SavingEventMessageWasNotSuccessfulErrorParameter = 'Kommentin tallennus epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic Log = 'Loki';\r\n\tstatic Change = 'Vaihda';\r\n\tstatic FormTitle1 = 'Otsikko 1';\r\n\tstatic NoFilters = 'Ei suodattimia!';\r\n\tstatic TaskHandlers = 'Käsittelijät (näkyvyys)';\r\n\tstatic SavingInstantMessageWasSuccessful = 'Pikaviestin tallennus onnistui!';\r\n\tstatic AllLogisticVoucherCustomers = 'Kaikki asiakkaat';\r\n\tstatic SavingTaskPriorityParameterWasSuccessful = 'Tehtävän prioriteetin \\'{0}\\' tallennus onnistui!';\r\n\tstatic GroupByHalfYear = 'Puolivuosittain';\r\n\tstatic PermissionToCreateEvents = 'Oikeus luoda havaintoja';\r\n\tstatic ModifiedActions = 'Muokannut toimenpiteitä';\r\n\tstatic CalendarTaskHandlers = 'Näkyvyys';\r\n\tstatic DoYouReallyWantToSave = 'Haluatko todella tallentaa?';\r\n\tstatic SavingRecordUserQualificationParameterWasNotSuccessfulConcurrencyError = 'Pätevyysvaatimuksen tallennus \\'{0}\\' epäonnistui, koska pätevyysvaatimuksen tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic Public = 'Julkinen';\r\n\tstatic DoYouReallyWantToRemoveRecordQualificationParameter = 'Haluatko todella poistaa pätevyysvaatimuksen \\'{0}\\'?';\r\n\tstatic WorkShift = 'Työvuoro';\r\n\tstatic SelectUser = 'Valitse käyttäjätili';\r\n\tstatic Trigonometry = 'Trigonometria';\r\n\tstatic ThisMessageWasDeleted = 'Tämä viesti on poistettu';\r\n\tstatic UserRecords = 'Henkilöstö';\r\n\tstatic SavingEventTypeCParameterWasNotSuccessfulErrorParameter = 'Tarkenteen 3 \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic AddingRecordUserFamiliarizationsWasSuccessful = 'Perehdytysten lisäys onnistui!';\r\n\tstatic EditDefaultBasicEducation = 'Muokkaa oletusperuskoulutusta';\r\n\tstatic MessageType = 'Viestin tyyppi';\r\n\tstatic YouHaveNotSavedChangesDoYouWantToSaveChanges = 'Et ole tallentanut tekemiäsi muutoksia. Tallennetaanko muutokset?';\r\n\tstatic InstantMessageChannelUserParameterIsNotAllowedToUseChannelParameter = 'Keskustelun \\'{1}\\' käyttö ei ole sallittu käyttäjälle {0}!';\r\n\tstatic FileChangesCheckingAndEmailingFinishedInParameterSeconds = 'Tiedostojen muutosten tarkastus ja lähetys sähköpostitse suoritettu (kesto: {0:N0}s, virheitä: {1}, tiedostoja: {2}, sähköposteja: {3})';\r\n\tstatic AddUserGroupParameterWasNotSuccessfulErrorParameter = 'Käyttäjäryhmän \\'{0}\\' lisäys epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic DefaultBasicEducations = 'Oletusperuskoulutukset';\r\n\tstatic WhistleBlowArchivingTypeChangeStateAndRemoveAllData = 'Siirrä ilmoitus Arkistoitu-tilaan ja säilytä vain tilastoinnissa käytettävät tiedot';\r\n\tstatic SelectCompanyGroupOrCompany = 'Valitse yritysryhmä tai yritys';\r\n\tstatic WhistleBlowInformant = 'Ilmoittaja';\r\n\tstatic DesignArea = 'Suunnittelualue';\r\n\tstatic EditableDocumentSaveBeforeApproveConfirmation = 'Tallennetaanko dokumenttiin tehdyt muutokset hyväksynnän yhteydessä?';\r\n\tstatic EmptyDocument = 'Tyhjä dokumentti';\r\n\tstatic FormPrint = 'Tuloste';\r\n\tstatic DeletingOneTimePasswordWasNotSuccessfulConcurrencyError = 'Kertakäyttöisen salasanan poisto epäonnistui, koska kertakäyttöisen salasanan tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic Color = 'Väri';\r\n\tstatic RecordUserExcelFamiliarization = 'Perehdytykset';\r\n\tstatic Wage = 'Palkka';\r\n\tstatic SavingDirectoryItemDocumentParameterWasNotSuccessfulErrorParameter = 'Tiedoston \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic Salary = 'Palkkaus';\r\n\tstatic RemoveNotifiedPerson = 'Poista tiedotettava henkilö';\r\n\tstatic PrivateAndPublic = 'Yksityinen ja julkinen';\r\n\tstatic LockedCalendarTaskParameterCannotBeDeleted = 'Lukittua tehtävää \\'{0}\\' ei voi poistaa!';\r\n\tstatic DeletingCalendarTaskCategoryParameterWasSuccessful = 'Luokan \\'{0}\\' poisto onnistui!';\r\n\tstatic InstantMessageChannelUsersNotUsable = 'Käyttäjä ei ole enää mukana keskustelussa';\r\n\tstatic AddTaskHandler = 'Lisää käsittelijä';\r\n\tstatic FormTitle2 = 'Otsikko 2';\r\n\tstatic EventTypeBParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted = 'Tarkenteen 2 \\'{0}\\' alitarkenteita on käytössä {1} havainnossa eikä tarkennetta voi poistaa!';\r\n\tstatic Target = 'Kohde';\r\n\tstatic WhistleBlowResolutionTypeMustBeDefined = 'Aseta ratkaisun tyyppi ja kirjaa tarvittaessa kuvaus!';\r\n\tstatic CopyDefaultHandlers = 'Kopioi oletuskäsittelijät';\r\n\tstatic InvitationParameterHasBeenExpired = 'Kutsu \\'{0}\\' on vanhentunut!';\r\n\tstatic SavingCalendarTaskCategoryParameterWasNotSuccessfulConcurrencyError = 'Luokan \\'{0}\\' tallennus epäonnistui, koska luokan tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic CompanyGroupCodeIsAlreadyInUse = 'Yritysryhmän tunnus on jo käytössä!';\r\n\tstatic Interval = 'Aikaväli';\r\n\tstatic LogEventType = 'Lokilaji';\r\n\tstatic DeletingTaskPrioritiesParameterWasNotSuccessfulConcurrencyError = 'Tehtävien prioriteettien \\'{0}\\' poisto epäonnistui, koska tehtävien prioriteettien tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic DeletingTaskDataRowWasSuccessful = 'Tehtävärivin poisto onnistui!';\r\n\tstatic DeletingRecordFamiliarizationsParameterWasNotSuccessfulErrorParameter = 'Perehdytysten \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic UpdatingDatabase = 'Päivittää tietokantaa...';\r\n\tstatic PreviewPanel = 'Esikatselu';\r\n\tstatic MessageTypes = 'Viestityypit';\r\n\tstatic NewRow = 'Uusi rivi';\r\n\tstatic LanguageFinnish = 'suomi';\r\n\tstatic Copy = 'Kopioi';\r\n\tstatic CopyDocumentsFromCompany = 'Kopioi dokumentit yritykseltä';\r\n\tstatic RemoveDefaultTaskState = 'Poista tehtävän oletustila';\r\n\tstatic PushNotificationInUse = 'Haluan vastaanottaa järjestelmän lähettämiä push-ilmoituksia (eSalkku Mobile)';\r\n\tstatic FormulaMin = 'Minimi';\r\n\tstatic FolderCannotBeMovedToItsSubFolder = 'Kansiota ei voi siirtää alikansioonsa!';\r\n\tstatic StudyWeeks = 'opintoviikkoa';\r\n\tstatic And = 'ja';\r\n\tstatic AddPartners = 'Lisää kumppanit';\r\n\tstatic FormDecimals = 'Desimaaleja';\r\n\tstatic SaveCalendarTaskConfirmation = 'Haluatko tallentaa tapahtuman?';\r\n\tstatic FormNormalText = 'Teksti';\r\n\tstatic EditFileFilter = 'Muokkaa tiedostosuodatinta';\r\n\tstatic SavingMessageSendEmailParameterWasNotSuccessfulErrorParameter = 'Sähköpostilokin tallennus viestille \\'{0}\\' epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic CalendarTaskRepetitionCountSuffix = 'kerran jälkeen';\r\n\tstatic UserCodeMustBeDefined = 'Käyttäjätunnus täytyy määritellä!';\r\n\tstatic DefaultEventUrgencyClassParameterCannotBeDeleted = 'Oletuskiireellisyysluokkaa ei voi poistaa!';\r\n\tstatic SavingSettingsWasSuccessful = 'Asetusten tallennus onnistui!';\r\n\tstatic WhistleBlowInternalMessageConfirmation = 'Tallennetaanko uusi sisäinen viesti?';\r\n\tstatic EventTypeBCodeMustBeDefined = 'Tarkenteen 2 nimi täytyy määritellä!';\r\n\tstatic PreventiveAction = 'Ennaltaehkäisevä toimenpide';\r\n\tstatic DownloadDocument = 'Avaa/lataa valitut dokumentit/tiedostot';\r\n\tstatic CalendarTaskRepetitionRepeatIntervalDayMonthSeparator = 'päivä';\r\n\tstatic SelectRecordUserTypeToBeCreated = 'Valitse luotavan henkilöstökortin tyyppi';\r\n\tstatic UserParameterNotFound = 'Käyttäjää \\'{0}\\' ei löytynyt!';\r\n\tstatic DeletingRecordUserTransferredPropertiesParameterWasNotSuccessfulErrorParameter = 'Luovutettujen omaisuuksien \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic ReminderHourBefore = 'tunti aikaisemmin';\r\n\tstatic PageName = 'Sivun nimi';\r\n\tstatic TrainingTime = 'Koulutusaika';\r\n\tstatic InvalidReCAPTCHA = 'Ihmiskäyttäjän vahvistus epäonnistui! Oletko robotti?';\r\n\tstatic WhistleBlowApplicationName = 'Whistle Blower -ilmoituskanava';\r\n\tstatic RemoveLogisticVoucherCustomerPaymentSetting = 'Poista laskutusasetus';\r\n\tstatic DeletingCompaniesParameterWasSuccessful = 'Yritysten \\'{0}\\' poisto onnistui!';\r\n\tstatic City = 'Postitoimipaikka';\r\n\tstatic SavingEventTypeBParameterWasNotSuccessfulErrorParameter = 'Tarkenteen 2 \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic AddTransferredPropertyToMultipleUserRecords = 'Lisää luovutettu omaisuus useaan henkilöstökorttiin';\r\n\tstatic LogoSquare = 'Pieni logo';\r\n\tstatic RemoveTaskPriority = 'Poista tehtävän prioriteetti';\r\n\tstatic TaskTypeParameterIsInUseInParameterTasksAndCannotBeDeleted = 'Lomake \\'{0}\\' on käytössä {1} tehtävässä eikä sitä voi poistaa!';\r\n\tstatic NoToDos = 'Ei hoidettavia asioita';\r\n\tstatic AddFamiliarizations = 'Lisää perehdytykset';\r\n\tstatic Payer = 'Maksaja';\r\n\tstatic ApproveEventHandlerConfirmation = 'Korjaavia toimenpiteitä ei ole kirjattu, haluatko silti hyväksyä havainnon?';\r\n\tstatic RowAmountIncludedInPrint = 'Tulosteeseen sisällytettävien rivien määrä';\r\n\tstatic DeletingRecordBasicEducationsParameterWasSuccessful = 'Peruskoulutusten \\'{0}\\' poisto onnistui!';\r\n\tstatic NewRecordUserMustBeSavedBeforeFurtherEducationsCanBeAdded = 'Uusi henkilöstökortti täytyy tallentaan ennen jatkokoulutusten lisäämistä!';\r\n\tstatic SavingTaskDataRowWasNotSuccessfulErrorParameter = 'Tehtävärivin tallennus epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic UserIsWhistleBlowChannelAdminAndCannotBeDeleted = 'Käyttäjä on ilmoituskanavan ylläpitäjä eikä käyttäjää voi siksi poistaa!';\r\n\tstatic SelectTaskState = 'Valitse tehtävän tila';\r\n\tstatic DoYouReallyWantToRemoveTaskHandlerParameter = 'Haluatko todella poistaa käsittelijän \\'{0}\\'?';\r\n\tstatic WhistleBlowSourceOral = 'Suullinen';\r\n\tstatic TransportCompany = 'Kuljetusyritys';\r\n\tstatic Header = 'Ylätunniste';\r\n\tstatic Payee = 'Maksun saaja';\r\n\tstatic DeletingDocumentTemplateParameterWasNotSuccessfulErrorParameter = 'Dokumenttimallin \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic TaskModuleProperties = 'Tehtävien asetukset';\r\n\tstatic EventReceiverIsPartnerCompany = 'Havainnon vastaanottaja on kumppaniyritys';\r\n\tstatic DeletingInstantMessageUserParameterWasNotSuccessfulErrorParameter = 'Keskustelijan \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic ChangeLanguage = 'Vaihda kieli';\r\n\tstatic AddWhistleBlowChannelAdminsParameterWasSuccessful = 'Ylläpitäjien \\'{0}\\' lisäys onnistui!';\r\n\tstatic AddWhistleBlowChannelAdminParameterWasSuccessful = 'Ylläpitäjän \\'{0}\\' lisäys onnistui!';\r\n\tstatic Familiarization = 'Perehdytys';\r\n\tstatic HandlersMustBeDefined = 'Käsittelijät täytyy määritellä!';\r\n\tstatic AccountNumberTkbInCredit = 'Myyntitili';\r\n\tstatic SavingDefaultHandlersWasNotSuccessfulErrorParameter = 'Oletuskäsittelijöiden tallennus epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic AddRow = 'Lisää rivi';\r\n\tstatic NoInstantMessageChannelsToShow = 'Ei näytettäviä keskusteluja!';\r\n\tstatic EditLogisticVoucherCompanyPaymentSetting = 'Muokkaa laskutusasetusta';\r\n\tstatic NoEvents = 'Ei tapahtumia';\r\n\tstatic DeletingTaskDataRowWasNotSuccessfulErrorParameter = 'Tehtävärivin poisto epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic ExcelFile = 'Excel-tiedosto';\r\n\tstatic DeletingRecordUserEmploymentsParameterWasSuccessful = 'Työpaikkojen \\'{0}\\' poisto onnistui!';\r\n\tstatic InstantMessageChannelMustHaveAtLeastOneAdministrator = 'Keskustelululla täytyy olla ainakin yksi ylläpitäjä!';\r\n\tstatic EmailMessage = 'Sähköpostita viesti';\r\n\tstatic GroupByMonth = 'Kuukausittain';\r\n\tstatic SavingEditableDocumentParameterApprovalWasSuccessful = 'Dokumentin \\'{0}\\' hyväksyntä onnistui!';\r\n\tstatic OtherSettings = 'Muut asetukset';\r\n\tstatic DocumentRootPath = 'Dokumenttien juurihakemisto';\r\n\tstatic FormBoldFont = 'Lihavoitu tyyli';\r\n\tstatic ChartGenerationFailed = 'Kuvaajan luominen epäonnistui!';\r\n\tstatic RemovingTaskHandlerWasNotSuccessfulErrorParameter = 'Käsittelijöiden poisto epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic SetPermissions = 'Asetetut käyttöoikeudet';\r\n\tstatic AddCompaniesParameterWasSuccessful = 'Yritysten \\'{0}\\' lisäys onnistui!';\r\n\tstatic FormCalculated = 'Lasketut';\r\n\tstatic RemoveRemainder = 'Poista muistutus';\r\n\tstatic FormTimeSpan = 'Aikamäärä (t.mm)';\r\n\tstatic AddingAddRecordUserQualificationsWasNotSuccessfulErrorParameter = 'Pätevyysvaatimusten lisäys epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic End = 'Loppu';\r\n\tstatic ThisMessageWasDeletedByInstantMessageChannelAdministrator = 'Tämän viestin on poistanut ylläpitäjä \\'{0}\\'';\r\n\tstatic DeletingRecordBasicEducationParameterWasNotSuccessfulConcurrencyError = 'Peruskoulutuksen \\'{0}\\' poisto epäonnistui, koska peruskoulutuksen tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic ReadMode = 'Lukutila';\r\n\tstatic DeletingEventPartnerParameterWasNotSuccessfulConcurrencyError = 'Havaintokumppanin \\'{0}\\' poisto epäonnistui, koska kumppanin tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic EmailingMessageWasNotSuccessfulErrorParameter = 'Viestin lähetys sähköpostilla epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic RecordUserQualificationParameterNotFound = 'Henkilöstökortin pätevyysvaatimusta \\'{0}\\' ei löytynyt!';\r\n\tstatic AddFamiliarizationToMultipleUserRecords = 'Lisää perehdytys useaan henkilöstökorttiin';\r\n\tstatic Subject = 'Aihe';\r\n\tstatic SharedReportAllCompanies = 'Kaikille yrityksille jaettu raportti';\r\n\tstatic DoYouReallyWantToRemoveSelectedFileFilters = 'Haluatko todella poistaa valitut tiedostosuodattimet?';\r\n\tstatic Loading = 'Lataa...';\r\n\tstatic MessageTypeParameterNotFound = 'Viestityyppiä \\'{0}\\' ei löytynyt!';\r\n\tstatic FileFilters = 'Tiedostosuodattimet';\r\n\tstatic AddInstantMessageChannel = 'Lisää keskustelu';\r\n\tstatic FileFilterCodeMustBeDefined = 'Tiedostosuodattimen tunnus täytyy määritellä!';\r\n\tstatic UpdateUserParameterExternalSystemsWasSuccessful = 'Käyttäjän \\'{0}\\' linkitys ulkoisiin järjestelmiin onnistui!';\r\n\tstatic DocumentRootPathIsNotEmpty = 'Dokumenttien juurihakemisto ei ole tyhjä hakemisto!';\r\n\tstatic TaskStateCodeMustBeDefined = 'Tehtävän tilan nimi täytyy määritellä!';\r\n\tstatic DraftCannotBeApprovedDoYouWantToSaveDraftAnyway = 'Luonnosta ei voi hyväksyä! Haluatko tallentaa luonnoksen siitä huolimatta (hyväksyntää ei tallenneta)?';\r\n\tstatic RecordParameterUnlockingFailedRecordIsWriteLockedToUserParameter = 'Tietueen \\'{0}\\' lukituksen poisto epäonnistui! Tietue on kirjoituslukittu käyttäjälle \\'{0}\\'!';\r\n\tstatic ShowPublishVersion = 'Näytä julkaisuversio';\r\n\tstatic FormUsableInSearchFilter = 'Käytettävissä hakuehdossa';\r\n\tstatic TrainingEndDate = 'Koulutus päättyi';\r\n\tstatic RecordUserEmploymentParameterNotFound = 'Henkilöstökortin työtehtävää \\'{0}\\' ei löytynyt!';\r\n\tstatic ApplicationTempPathParameterNotFound = 'Sovelluksen temp-hakemistoa \\'{0}\\' ei löydy!';\r\n\tstatic LogisticVoucherCustomer = 'Asiakas';\r\n\tstatic Download = 'Lataa';\r\n\tstatic MaxSearchResultCount = 'Haun tulosten maksimimäärä';\r\n\tstatic NewUserMustBeSavedBeforeUserGroupsCanBeAdded = 'Uusi käyttäjä täytyy tallentaan ennen käyttäjäryhmien lisäämistä!';\r\n\tstatic CustomStyleClass = 'Räätälöidyn tyylin luokka';\r\n\tstatic RecordFurtherEducationCodeMustBeDefined = 'Jatkokoulutuksen nimi täytyy määritellä!';\r\n\tstatic RemoveUserFromUserGroup = 'Poista käyttäjätili käyttäjäryhmästä';\r\n\tstatic DoYouReallyWantToRemoveSelectedUsers = 'Haluatko todella poistaa valitut käyttäjät?';\r\n\tstatic InTesting = 'Testauksessa';\r\n\tstatic DeletingEventParameterWasNotSuccessfulErrorParameter = 'Havainnon \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic VoucherInOutReportSavePath = 'Koontitositteen tallennuskansio';\r\n\tstatic SavingUnitPermissionsWasSuccessful = 'Käyttöoikeuksien tallennus yksiköille onnistui!';\r\n\tstatic SelectEventReceiver = 'Valitse havainnon vastaanottaja';\r\n\tstatic MovingFilesAndDocumentsToFolderParameterWasNotSuccessfulConcurrencyError = 'Tiedostojen/dokumenttien siirtäminen kansioon \\'{0}\\' epäonnistui, koska kansion tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic RemoveRow = 'Poista rivi';\r\n\tstatic RecordUserExcelTabName = 'Henkilöstö';\r\n\tstatic SavingJobParameterWasNotSuccessfulErrorParameter = 'Työn \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic Banner = 'Banneri';\r\n\tstatic Portrait = 'Pysty';\r\n\tstatic DoYouReallyWantToRemoveSelectedHandlers = 'Haluatko todella poistaa valitut käsittelijät?';\r\n\tstatic TaskMustBeSavedBeforeAttachmentsCanBeAdded = 'Tehtävä täytyy tallentaa ennen liitteiden lisäämistä!';\r\n\tstatic RememberMe = 'Muista minut';\r\n\tstatic SavingTaskPriorityParameterWasNotSuccessfulErrorParameter = 'Tehtävän prioriteetin \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic BannerPath = 'Bannerihakemisto';\r\n\tstatic ShowArchived = 'Näytä arkistoidut';\r\n\tstatic AddQualification = 'Lisää pätevyysvaatimus';\r\n\tstatic RemovingTaskHandlersWasSuccessful = 'Käsittelijöiden poisto onnistui!';\r\n\tstatic DoYouReallyWantToSaveData = 'Haluatko todella tallentaa tiedot?';\r\n\tstatic Months = 'Kuukautta';\r\n\tstatic WhistleBlowInformantHasReadMessage = 'Ilmoituksen lähettäjä on lukenut viestisi';\r\n\tstatic DocumentTemplateCodeIsAlreadyInUse = 'Dokumenttimallin tunnus on jo käytössä!';\r\n\tstatic EventSenderIsPartnerCompany = 'Havainnon lähettäjä on kumppaniyritys';\r\n\tstatic SelectInstantMessageChannelUser = 'Valitse keskustelija';\r\n\tstatic FamiliarizationStartDateStart = 'Perehdytys alkoi - alku';\r\n\tstatic AddFile = 'Lisää tiedosto';\r\n\tstatic DeletingEventUrgencyClassParameterWasNotSuccessfulErrorParameter = 'Kiireellisyysluokan \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic FormRequired = 'Syöte vaaditaan';\r\n\tstatic UserModuleProperties = 'Käyttätilien asetukset';\r\n\tstatic SearchProperties = 'Mukautettu haku';\r\n\tstatic ReminderDayBefore = 'päivä aikaisemmin';\r\n\tstatic NoDataToShow = 'Ei näytettäviä tietoja!';\r\n\tstatic CalendarTaskStartDateMustBeDefined = 'Tapahtuman alkamisaika täytyy määritellä!';\r\n\tstatic EditDocumentTemplate = 'Muokkaa dokumenttimallia';\r\n\tstatic InstantMessageChannelOneUser = 'Kahdenvälinen keskustelu';\r\n\tstatic Errors = 'Virheitä';\r\n\tstatic FormShowInRow = 'Käytä rivillä';\r\n\tstatic ExpireTime = 'Vanhenemisaika';\r\n\tstatic DeletingCompanyGroupParameterWasNotSuccessfulErrorParameter = 'Yritysryhmän \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic TaskStatesMustBeDefinedBeforeAddingTasks = 'Tehtävien tilat täytyy määritellä ennen kuin tehtäviä voi lisätä!';\r\n\tstatic Folder = 'Kansio';\r\n\tstatic RemoveInstantMessageChannelUser = 'Poista keskustelija';\r\n\tstatic DoYouReallyWantToRemoveRecordFamiliarizationParameter = 'Haluatko todella poistaa perehdytyksen \\'{0}\\'?';\r\n\tstatic Resolution = 'Ratkaisu';\r\n\tstatic ReportDialogInfoText = 'Raportti muodostetaan suodatuksen/hakuehdon mukaisten rivien perusteella.';\r\n\tstatic FirstNameMustBeDefined = 'Etunimi täytyy määritellä!';\r\n\tstatic CalendarTaskRemoveOccurrence = 'Poista esiintymä';\r\n\tstatic SaveToTemplate = 'Tallenna malliksi';\r\n\tstatic ImmediateAction = 'Tehdyt toimenpiteet (välittömät, korjaavat, tms.)';\r\n\tstatic MoveDown = 'Siirrä alaspäin';\r\n\tstatic PaymentSettings = 'Laskutusasetukset';\r\n\tstatic Folders = 'Kansiot';\r\n\tstatic Max = 'Max';\r\n\tstatic CostCentreNumber = 'Kustannuspaikan numero';\r\n\tstatic SendingNotificationsWasNotSuccessfulErrorParameter = 'Viestien lähetys epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic ShowUsers = 'Näytä käyttäjätilit';\r\n\tstatic FormulaMultiplication = 'Kertolasku';\r\n\tstatic NewRecordUserMustBeSavedBeforeQualificationsCanBeAdded = 'Uusi henkilöstökortti täytyy tallentaan ennen pätevyysvaatimusten lisäämistä!';\r\n\tstatic SavingEventUrgencyClassParameterWasNotSuccessfulConcurrencyError = 'Kiireellisyysluokan tallennus \\'{0}\\' epäonnistui, koska kiireellisyysluokan tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic ProcessingTimeDays = 'Käsittelyaika (p)';\r\n\tstatic AddRows = 'Lisää rivit';\r\n\tstatic NotInUse = 'Ei käytössä';\r\n\tstatic AutomaticLogoutDone = 'Automaattinen uloskirjautuminen suoritettu vanhentuneen käyttäjäistunnon vuoksi!';\r\n\tstatic UserRecordStatisticsExpiredFurtherEducations = 'Vanhentuneita jatkokoulutuksia';\r\n\tstatic DeletingUsersParameterWasSuccessful = 'Käyttäjätilien \\'{0}\\' poisto onnistui!';\r\n\tstatic EmailAddress = 'Sähköposti';\r\n\tstatic DoYouReallyWantToRemoveEventTypeParameter = 'Haluatko todella poistaa tarkenteen 1 \\'{0}\\'?';\r\n\tstatic AddPartnersParameterWasNotSuccessfulConcurrencyError = 'Kumppanien \\'{0}\\' lisäys epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic Others = 'Muut';\r\n\tstatic LogSizeInDays = 'Lokin koko päivinä (0 = ei rajoitusta)';\r\n\tstatic EditTask = 'Muokkaa tehtävää';\r\n\tstatic AddUserParameterWasNotSuccessfulErrorParameter = 'Käyttäjätilin \\'{0}\\' lisäys epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic NormalMessage = 'Normaali viesti';\r\n\tstatic PositionErrorPermissionDenied = 'Sovelluksella ei oikeutta lukea sijaintitietoa.';\r\n\tstatic PermissionsToCreateEventsToEventPartner = 'Oikeus luoda havaintoja kumppanille';\r\n\tstatic AddMessage = 'Lisää viesti';\r\n\tstatic FormMaximumValue = 'Maksimiarvo';\r\n\tstatic VoucherSavePath = 'Tositteen tallennuskansio';\r\n\tstatic DoYouReallyWantToRemoveChartPanelParameter = 'Haluatko todella poistaa kaavion \\'{0}\\'?';\r\n\tstatic DeletingFileFiltersParameterWasNotSuccessfulConcurrencyError = 'Tiedostosuodattimien \\'{0}\\' poisto epäonnistui, koska tiedostosuodattimien tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic SavingOptionParameterWasNotSuccessfulErrorParameter = 'Sovellusasetuksen \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic DirectoryItemFolderParameterNotFound = 'Hakemistoa \\'{0}\\' ei löytynyt!';\r\n\tstatic Picture = 'Kuva';\r\n\tstatic TrainingStartDateEnd = 'Koulutus alkoi - loppu';\r\n\tstatic NoModifications = 'Ei tehtyjä muutoksia';\r\n\tstatic ReportGenerationAborted = 'Raportin luominen hylätty!';\r\n\tstatic SelectComponentInFormToSeeComponentProperties = 'Valitse komponentti lomakkeelta nähdäksesi sen ominaisuudet';\r\n\tstatic PaymentSetting = 'Laskutusasetus';\r\n\tstatic FormulaSqrt = 'Neliöjuuri';\r\n\tstatic LogEventTime = 'Ajankohta';\r\n\tstatic Remainder = 'Muistutus';\r\n\tstatic PrivacyPolicy = 'Tietosuojaseloste';\r\n\tstatic AddingTaskHandlersWasSuccessful = 'Käsittelijöiden lisäys onnistui!';\r\n\tstatic DoYouReallyWantToRemoveTaskDataRow = 'Haluatko todella poistaa rivin?';\r\n\tstatic LockingTaskDataRowWasNotSuccessful = 'Tehtävärivin lukitseminen epäonnistui!';\r\n\tstatic EditEditableDocument = 'Muokkaa dokumenttia';\r\n\tstatic FolderParameterAlreadyExistsInTargetFolder = 'Kansio \\'{0}\\' löytyy jo kohdehakemistosta!';\r\n\tstatic ValidityEndDateEnd = 'Voimassa päättyen - loppu';\r\n\tstatic NotSelected = 'Ei valittu';\r\n\tstatic Filter = 'Suodatin';\r\n\tstatic Description = 'Kuvaus';\r\n\tstatic DeletingMessageParameterWasNotSuccessfulConcurrencyError = 'Viestin \\'{0}\\' poisto epäonnistui, koska viestin tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic Code = 'Tunnus';\r\n\tstatic DeletingTaskTypesParameterWasNotSuccessfulConcurrencyError = 'Tehtävätyyppien \\'{0}\\' poisto epäonnistui, koska tehtävätyyppien tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic MessageEndDate = 'Näkyvissä päättyen';\r\n\tstatic ReadImpPlur = 'Luetut';\r\n\tstatic SharedReports = 'Jaetut raportit';\r\n\tstatic SavingEventTypeBsWasSuccessful = 'Tarkenteen 2 tallennus onnistui!';\r\n\tstatic SavingAttachmentsWasNotSuccessfulErrorParameter = 'Liitteiden tallennus epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic DeletingRecordQualificationParameterWasSuccessful = 'Pätevyysvaatimuksen \\'{0}\\' poisto onnistui!';\r\n\tstatic AddingAddRecordUserFurtherEducationsWasNotSuccessfulErrorParameter = 'Jatkokoulutusten lisäys epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic WhistleBlowStatisticsReceivedRecords = 'Vastaanotettuja ilmoituksia';\r\n\tstatic Summary = 'Yhteenveto';\r\n\tstatic ThisPartOfApplicationIsNotInUse = 'Tämä osa sovellusta ei ole enää käytössä!';\r\n\tstatic DeletingEditableDocumentParameterWasNotSuccessfulConcurrencyError = 'Dokumentin \\'{0}\\' poisto epäonnistui, koska dokumentin tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic JobTypeEventNotification = 'Havainnon ilmoitus';\r\n\tstatic EditEventPartner = 'Muokkaa havaintokumppania';\r\n\tstatic CalendarTaskEndDateMustBeAfterStartDate = 'Tapahtuman päättymisaika täytyy olla alkamisajan jälkeen!';\r\n\tstatic PasteDefaultHandlers = 'Liitä oletuskäsittelijät';\r\n\tstatic IndirectCosts = 'Välillinen kustannus';\r\n\tstatic SavingDirectoryItemDocumentParameterWasSuccessful = 'Tiedoston \\'{0}\\' tallennus onnistui!';\r\n\tstatic DeletingWhistleBlowChannelAdminsParameterWasSuccessful = 'Ylläpitäjien \\'{0}\\' poisto onnistui!';\r\n\tstatic CourseCredits = 'opintopistettä';\r\n\tstatic AllInstantMessageUsersHaveReadMessage = 'Kaikki keskustelijat ovat lukeneet viestin';\r\n\tstatic DeletingWhistleBlowChannelAdminParameterWasNotSuccessfulConcurrencyError = 'Ylläpitäjän \\'{0}\\' poisto epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic InstantMessageChannelUserParameterNotFound = 'Keskustelun osapuolta \\'{0}\\' ei löytynyt!';\r\n\tstatic DoYouReallyWantToRemoveRecordBasicEducationParameter = 'Haluatko todella poistaa peruskoulutuksen \\'{0}\\'?';\r\n\tstatic SavingMessageSendPushParameterWasNotSuccessfulConcurrencyError = 'Push-viestilokin tallennus viestille \\'{0}\\' epäonnistui, koska push-viestilokin tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic Move = 'Siirrä';\r\n\tstatic Employments = 'Työpaikat';\r\n\tstatic UserIsActiveInMobile = 'Käyttäjätili on aktiivinen mobiilisovelluksessa.';\r\n\tstatic AddComment = 'Lisää kommentti';\r\n\tstatic AddAtleastOneInstantMessageChannelUsersToInstantMessageChannel = 'Lisää vähintään yksi keskustelija keskusteluun!';\r\n\tstatic DoYouReallyWantToRemoveFilterParameter = 'Haluatko todella poistaa suodattimen \\'{0}\\'?';\r\n\tstatic ReportsStandard = 'Vakioraportit';\r\n\tstatic Warning = 'Varoitus';\r\n\tstatic GeneralAttachments = 'Yleiset liitteet';\r\n\tstatic FormTitle3 = 'Otsikko 3';\r\n\tstatic FormSortAscending = 'Nouseva järjestys';\r\n\tstatic FirstListRow = 'Ensimmäinen listan rivi';\r\n\tstatic DeletingFileFiltersParameterWasNotSuccessfulErrorParameter = 'Tiedostosuodattimien \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic WhistleBlowChannelWasNotFound = 'Ilmoituskanavaa ei löytynyt!';\r\n\tstatic LoggedInCompanyCannotBeDeleted = 'Yritys ei voi poistaa itseään!';\r\n\tstatic RemoveQualification = 'Poista pätevyysvaatimus';\r\n\tstatic FileParameterDownloaded = 'Tedosto \\'{0}\\' on ladattu.';\r\n\tstatic PermissionsForSections = 'Käytössä olevat osiot';\r\n\tstatic AddingAttachmentParameterWasNotSuccessfulErrorParameter = 'Liiteen \\'{0}\\' lisäys epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic TiedostoturvaUseType = 'Tiedostoturva';\r\n\tstatic FormulaAddition = 'Yhteenlasku';\r\n\tstatic CompanyGroupParameterNotFound = 'Yritysryhmää \\'{0}\\' ei löytynyt!';\r\n\tstatic RowInformation = 'Rivin tiedot';\r\n\tstatic AddCompaniesParameterWasNotSuccessfulErrorParameter = 'Yritysten \\'{0}\\' lisäys epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic StudyWeek = 'opintoviikko';\r\n\tstatic UnlockingEditableDocumentParameterWasNotSuccessful = 'Dokumentin \\'{0}\\' lukituksen poisto epäonnistui!';\r\n\tstatic TheSystemDoesNotSupportYourWebBrowserUpdateToLatestBrowserVersion = 'Järjestelmä ei tue selainversiotasi, päivitä selaimesi uusimpaan versioon.';\r\n\tstatic DoYouReallyWantToRemoveAttachmentParameter = 'Haluatko todella poistaa liitteen \\'{0}\\'?';\r\n\tstatic TimeSpanTwoYears = 'Kaksi vuotta';\r\n\tstatic AdditionalFunctions = 'Lisätoiminnot';\r\n\tstatic DirectoryItemDocumentParameterNotFound = 'Tiedostoa \\'{0}\\' ei löytynyt!';\r\n\tstatic WhistleBlowSendReport = 'Lähetä ilmoitus';\r\n\tstatic ValidityEndDateStart = 'Voimassa päättyen - alku';\r\n\tstatic RemoveRecordUserAndKeepUser = 'Poista henkilöstökortti ja säilytä käyttäjätili';\r\n\tstatic InternalMessages = 'Sisäiset viestit';\r\n\tstatic WhistleBlowNewReport = 'Uusi ilmoitus';\r\n\tstatic ImportingUsersParameterWasSuccessful = 'Käyttäjätilien \\'{0}\\' tuonti onnistui!';\r\n\tstatic FamiliarizationStartDate = 'Perehdytys alkoi';\r\n\tstatic SavingEventMessageWasSuccessful = 'Kommentin tallennus onnistui!';\r\n\tstatic AddUsersParameterWasNotSuccessfulConcurrencyError = 'Käyttäjätilien \\'{0}\\' lisäys epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic UnreadMessagesParameter = 'Lukemattomia viestejä: {0}';\r\n\tstatic AddPartnerParameterWasNotSuccessfulErrorParameter = 'Kumppanin \\'{0}\\' lisäys epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic DeletingCalendarTaskCategoriesParameterWasNotSuccessfulErrorParameter = 'Luokkien \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic ValidityDate = 'Voimassaolo';\r\n\tstatic CalendarTaskRepetitionCountPrefix = '';\r\n\tstatic WhistleBlowEventTypeHandlersAdded = 'Käsittelijöitä lisätty';\r\n\tstatic AllJobTitles = 'Kaikki tehtävänimikkeet';\r\n\tstatic AddSharedDocumentTemplate = 'Lisää jaettu dokumenttimalli';\r\n\tstatic DocumentTypes = 'Dokumenttityypit';\r\n\tstatic AddUserGroupParameterWasNotSuccessfulConcurrencyError = 'Käyttäjäryhmän \\'{0}\\' lisäys epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic RemoveTask = 'Poista tehtävä';\r\n\tstatic DeletingPartnerParameterWasSuccessful = 'Kumppanin \\'{0}\\' poisto onnistui!';\r\n\tstatic ApplicationTempPathIsNotSpecified = 'Sovelluksen temp-hakemistoa ei ole määritelty!';\r\n\tstatic RemoveUserGroupExternalSystemsWasNotSuccessfulConcurrencyError = 'Käyttäjäryhmien ja ulkoisten järjestelmien linkityksen poisto epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic SavingDefaultHandlersWasSuccessful = 'Oletuskäsittelijöiden tallennus onnistui!';\r\n\tstatic EventUrgencyClassParameterNotFound = 'Kiireellisyysluokkaa \\'{0}\\' ei löytynyt!';\r\n\tstatic FormDisabled = 'Ei muokattavissa';\r\n\tstatic AddPartnersParameterWasSuccessful = 'Kumppanien \\'{0}\\' lisäys onnistui!';\r\n\tstatic UserFilterExpired = 'Voimassaoloaika päättynyt';\r\n\tstatic DeletingUserGroupsParameterWasNotSuccessfulConcurrencyError = 'Käyttäjäryhmien \\'{0}\\' poisto epäonnistui, koska käyttäjäryhmien tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic PublishVoucherToFileSystem = 'Julkaise tosite tiedostojärjestelmään';\r\n\tstatic ReplyToInstantMessage = 'Vastaa viestiin';\r\n\tstatic FolderNameConstainsIllegalCharacters = 'Kansion nimi sisältää kiellettyjä merkkejä (<, >, :, \", /, \\, |, ? tai *) tai päättyy kiellettyyn merkkiin (., \\' \\')!';\r\n\tstatic RemoveFile = 'Poista tiedosto';\r\n\tstatic NewMenu = 'Uusi valikko';\r\n\tstatic Task = 'Tehtävä';\r\n\tstatic PushEndpoint = 'Push-osoite';\r\n\tstatic SavingApplicationPermissionsWasNotSuccessfulConcurrencyError = 'Asetusten tallennus epäonnistui, koska asetuksia on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic Add = 'Lisää';\r\n\tstatic DeletingRecordUserEmploymentParameterWasNotSuccessfulConcurrencyError = 'Työpaikan \\'{0}\\' poisto epäonnistui, koska työpaikan tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic AccessRightReadInstantMessages = 'Yrityksen sisäiset keskustelut';\r\n\tstatic ExitingInstantMessageChannelWasSuccessful = 'Keskustelusta poistuminen onnistui!';\r\n\tstatic EventParameterUnitChangedFromParameterToParameter = 'Havainnon \\'{0}\\' yksikkö vaihdettu \\'{1}\\' => \\'{2}\\'.';\r\n\tstatic DoYouReallyWantToUnlockEditableDocument = 'Haluatko todella poistaa dokumentin \\'{0}\\' lukituksen?';\r\n\tstatic UserAccountNotConnected = 'Käyttäjätiliä ei kytketty';\r\n\tstatic All = 'Kaikki';\r\n\tstatic FieldParameterValueCanOnlyContainNumbers = 'Kentän \\'{0}\\' arvo voi sisältää ainoastaan numeroita!';\r\n\tstatic PrintRecordUser = 'Tulosta henkilöstökortti';\r\n\tstatic RemoveDocumentTemplate = 'Poista dokumenttimalli';\r\n\tstatic IncludeOnlyActiveUsers = 'Sisällytä vain henkilöt, joiden käyttäjätunnus ja työsuhde on voimassa';\r\n\tstatic AddFileOrTakePicture = 'Lisää tiedosto tai ota kuva';\r\n\tstatic DaysAgo90 = '90 päivää sitten';\r\n\tstatic SavingRecordEmploymentParameterWasNotSuccessfulConcurrencyError = 'Työpaikan tallennus \\'{0}\\' epäonnistui, koska työpaikan tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic DoYouReallyWantToClearLog = 'Haluatko todella tyhjentää lokin?';\r\n\tstatic OldPassword = 'Vanha salasana';\r\n\tstatic RemoveForm = 'Poista lomake';\r\n\tstatic ProcessingFolderParameter = '* Käsittelee kansiota \\'{0}\\'...';\r\n\tstatic WhistleBlowCategoryParameterNotFound = 'Ilmoitusluokkaa \\'{0}\\' ei löytynyt!';\r\n\tstatic ShowUserGroups = 'Näytä käyttäjäryhmät';\r\n\tstatic TaskTypeParameterNotFound = 'Lomaketta \\'{0}\\' ei löytynyt!';\r\n\tstatic ClearSubFolderPermissions = 'Tyhjennä alikansioiden käyttöoikeudet';\r\n\tstatic AddDefaultFurtherEducationGroup = 'Lisää oletusjatkokoulutusryhmä';\r\n\tstatic NewInstantMessageChannel = 'Uusi keskustelu';\r\n\tstatic FamiliarizationEndDate = 'Perehdytys päättyi';\r\n\tstatic ReminderWeeksBefore = 'viikkoa aikaisemmin';\r\n\tstatic RecordFamiliarizationParameterNotFound = 'Perehdytystä \\'{0}\\' ei löytynyt!';\r\n\tstatic WebPushError = 'Web Push -virhe';\r\n\tstatic DocumentTemplateCodeMustBeDefined = 'Dokumenttimallin tunnus täytyy määritellä!';\r\n\tstatic SaveUserFurtherEducationConfirmation = 'Haluatko tallentaa jatkokoulutuksen?';\r\n\tstatic OpenWhistleBlowInstruction = 'Syötä salasana, jonka sait ilmoituksen luotuasi.';\r\n\tstatic WhistleBlowSeverityUnspecified = 'Määrittämättä';\r\n\tstatic FurtherEductionGroupParameterContainsFurtherEducationsAndCannotBeDeleted = 'Jatkokoulutusryhmä \\'{0}\\' sisältää jatkokoulutuksia eikä sitä voi poistaa!';\r\n\tstatic NoAddedEventTypes = 'Ei lisättyjä tarkenteita!';\r\n\tstatic SavingEventParameterWasNotSuccessfulErrorParameter = 'Havainnon \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic DoYouReallyWantToExitInstantMessageChannel = 'Haluatko todella poistua keskustelusta?';\r\n\tstatic DoCleanLog = 'Tyhjennä loki';\r\n\tstatic RecordFurtherEducationCodeIsAlreadyInUse = 'Jatkokoulutuksen nimi on jo käytössä!';\r\n\tstatic EventCreator = 'Kirjaaja';\r\n\tstatic PermissionsForSystems = 'Järjestelmien käyttöoikeudet';\r\n\tstatic ReadError = 'Lukuvirhe!';\r\n\tstatic FolderParameterAlreadyExistsInFileSystem = 'Kansio \\'{0}\\' on jo olemassa tiedostojärjestelmässä!';\r\n\tstatic SaveDraft = 'Tallenna luonnos';\r\n\tstatic FormNumbers = 'Luvut';\r\n\tstatic DeletingInstantMessageWasSuccessful = 'Pikaviestin poisto onnistui!';\r\n\tstatic FormulaFloor = 'Pyöristys alaspäin';\r\n\tstatic EditMessageType = 'Muokkaa viestityyppiä';\r\n\tstatic EditTaskPriority = 'Muokkaa tehtävän prioriteettia';\r\n\tstatic UsedQuota = 'Käytetty tallennustila';\r\n\tstatic Panels = 'Panelit';\r\n\tstatic LockedTaskParameterCannotBeMovedToTrashBin = 'Lukittua tehtävää \\'{0}\\' ei voi siirtää roskakoriin!';\r\n\tstatic FolderTreePermissions = 'Kansiopuun käyttöoikeudet';\r\n\tstatic FormShowModifyDate = 'Näytä muokkauspäivä';\r\n\tstatic WhistleBlowNotFound = 'Ilmoitusta ei löytynyt!';\r\n\tstatic ShowInheritedPermissions = 'Näytä perityt käyttöoikeudet';\r\n\tstatic SaveInstantMessageChannelConfirmation = 'Haluatko tallentaa keskustelun?';\r\n\tstatic AllEventHandlersHaveReadMessage = 'Kaikki havainnot käsittelijät ovat lukeneet kommenttisi';\r\n\tstatic AdditionalPermissionBEventsDialog = 'Havainnon poisto';\r\n\tstatic DefaultEventHandlers = 'Oletuskäsittelijät';\r\n\tstatic SavingWhistleBlowCategoryParameterWasNotSuccessfulErrorParameter = 'Ilmoitusluokan \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic AddFileFilter = 'Lisää tiedostosuodatin';\r\n\tstatic IncludeArchivedFamiliarizations = 'Sisällytä arkistoidut perehdytykset';\r\n\tstatic TaskDataRow = 'Tehtävärivi';\r\n\tstatic LockedTaskParameterCannotBeRestored = 'Lukittua tehtävää \\'{0}\\' ei voi palauttaa!';\r\n\tstatic Preview = 'Esikatselu';\r\n\tstatic ExternalSystemCompanyCodeClaimNotFound = 'Käyttäjän ominaisuutta \\'externalSystemCompanyCode\\' ei löytynyt!';\r\n\tstatic WhistleBlowStateResolved = 'Ratkaistu';\r\n\tstatic SavingCalendarTaskParameterWasNotSuccessfulErrorParameter = 'Tapahtuman \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic DocumentsNotFound = 'Dokumentteja ei löytynyt!';\r\n\tstatic ComparingFileSystemToDatabase = 'Vertailee tiedostojärjestelmää tietokantaan...';\r\n\tstatic RequestPasswordChangeTitle = 'Salasana unohtunut?';\r\n\tstatic DeletingDocumentTemplateParameterWasNotSuccessfulConcurrencyError = 'Dokumenttimallin \\'{0}\\' poisto epäonnistui, koska dokumenttimallin tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic TaxNumber = 'Veronumero';\r\n\tstatic AddingRecordUserFamiliarizationsWasNotSuccessfulErrorParameter = 'Perehdytysten lisäys epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic Archived = 'Arkistoitu';\r\n\tstatic RemoveInvalidDefaultEventHandlersConfirmation = 'Joillakin oletuskäsittelijöillä tai tiedotettavilla henkilöillä ei ole oikeuksia käsitellä yksikön havaintoja. Haluatko poistaa nämä oletuskäsittelijät tai tiedotettavat henkilöt automaattisesti ennen tallennusta?';\r\n\tstatic FormModifyDate = 'Muokkauspäivä';\r\n\tstatic InstantMessageChannelContainsParameterInstantMessageUsersAndCannotBeDeleted = 'Keskusteluun kuuluu muita keskustelijoita, joten sitä voi poistaa!';\r\n\tstatic NewRecordUserMustBeSavedBeforeFamiliarizationsCanBeAdded = 'Uusi henkilöstökortti täytyy tallentaan ennen perehdytysten lisäämistä!';\r\n\tstatic DocumentsSelected = 'tiedostoa valittu';\r\n\tstatic AuthorizationLevelUser = 'Käyttäjä';\r\n\tstatic ScopeCanBeChanged = 'Laajuutta voi muuttaa';\r\n\tstatic WhistleBlowReceiver = 'Vastaanottaja';\r\n\tstatic DefaultEventUrgencyClassMustBeDefinedBeforeAddingEvents = 'Oletuskiireellisyysluokka täytyy määritellä ennen kuin havaintoja voi lisätä!';\r\n\tstatic WhistleBlowInformantMustBeNotifiedLatestAtParameter = 'Ilmoitus täytyy merkitä ratkaistuksi viimeistään {0}!';\r\n\tstatic SearchCalendarTasks = 'Hae tapahtumia';\r\n\tstatic EventTypesGeneric = 'Tarkenteet';\r\n\tstatic DeletingEditableDocumentParameterWasSuccessful = 'Dokumentin \\'{0}\\' poisto onnistui!';\r\n\tstatic FormInitializeFromSavedRow = 'Alusta tallennetulta riviltä';\r\n\tstatic RootCause = 'Juurisyy';\r\n\tstatic CostCentreName = 'Kustannuspaikan nimi';\r\n\tstatic ReadReceiptNotGiven = 'Kuittaamatta';\r\n\tstatic SavingOneTimePasswordWasNotSuccessfulConcurrencyError = 'Kertakäyttöisen salasanan tallennus epäonnistui, koska kertakäyttöisen salasanan tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic AddLogisticVoucherCompanyPaymentSetting = 'Lisää laskutusasetus';\r\n\tstatic LoggedInUser = 'Kirjautuja';\r\n\tstatic UserCodeMustBeValid = 'Käyttäjätunnus täytyy olla 8-50 merkkiä pitkä eikä siinä saa olla välilyöntejä.';\r\n\tstatic PreviewRowPrint = 'Esikatselu (rivin tuloste)';\r\n\tstatic SavingCalendarTaskParameterWasNotSuccessfulConcurrencyError = 'Tapahtuman \\'{0}\\' tallennus epäonnistui, koska tapahtuman tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic TargetsMyCompany = 'Näkyvyys - oma yritys';\r\n\tstatic FieldParameterContainsInvalidCodeCharacters = 'Kentän \\'{0}\\' arvo sisältää merkkejä ( \\, ^, ?, &, <, >, /, +, :), joita ei sallita tunnuksessa tai arvo päättyy pisteeseen!';\r\n\tstatic LogisticVoucher = 'Kuljetusten tilitysjärjestelmä';\r\n\tstatic AccessRightWriteTasks = 'Tehtävien luonti ja suoritus';\r\n\tstatic NewInstantMessageChannelMustBeSavedBeforeUsersCanBeAdded = 'Uusi keskustelu täytyy tallentaa ennen keskustelijoiden lisäämistä!';\r\n\tstatic RecordUserParameterNotFound = 'Henkilöstökorttia \\'{0}\\' ei löytynyt!';\r\n\tstatic EventTypes = 'Tarkenne 1';\r\n\tstatic NormalSize = 'Normaali koko';\r\n\tstatic WhistleBlowSeverityLow = 'Vähäinen';\r\n\tstatic TypeMustBeDefined = 'Tyyppi täytyy määritellä!';\r\n\tstatic ConfirmPassword = 'Vahvista salasana';\r\n\tstatic Logo = 'Logo';\r\n\tstatic DoYouReallyWantToRemoveKeywordParameterItIsUsedByParameterDocuments = 'Haluatko todella poistaa avainsanan \\'{0}\\'? Avainsana on {1} dokumentin/tiedoston käytössä.';\r\n\tstatic ChangeToEditMode = 'Vaihda muokkaustilaan';\r\n\tstatic FormCalculatedDecimalNumber = 'Laskettu desimaaliluku';\r\n\tstatic SharedDocumentTemplates = 'Jaetut dokumenttimallit';\r\n\tstatic SavingEventMessageWasNotSuccessfulConcurrencyError = 'Kommentin tallennus epäonnistui, koska kommentin tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic DeletingAttachmentsParameterWasNotSuccessfulErrorParameter = 'Liitteiden \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic ProjectName = 'Projektin nimi';\r\n\tstatic DoYouReallyWantToRemoveSelectedRecordFurtherEducations = 'Haluatko todella poistaa valitut jatkokoulutukset?';\r\n\tstatic DocumentVersionParameterNotFound = 'Dokumentin versiota \\'{0}\\' ei löytynyt!';\r\n\tstatic SelectRemovingMethod = 'Valitse poiston tapa';\r\n\tstatic Partners = 'Kumppanit';\r\n\tstatic ExpiringIn120Days = 'Sisällytä 120 päivässä vanhenevat koulutukset';\r\n\tstatic DeletingRecordFurtherEducationParameterWasNotSuccessfulConcurrencyError = 'Jatkokoulutuksen \\'{0}\\' poisto epäonnistui, koska jatkokoulutuksen tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic Publish = 'Julkaise';\r\n\tstatic SavingRecordBasicEducationParameterWasSuccessful = 'Peruskoulutuksen \\'{0}\\' tallennus onnistui!';\r\n\tstatic Report = 'Raportti';\r\n\tstatic SelectCompany = 'Valitse yritys';\r\n\tstatic MessageTypeCodeIsAlreadyInUse = 'Viestityypin tunnus on jo käytössä!';\r\n\tstatic Weekly = 'Viikoittain';\r\n\tstatic PageNameMustBeDefined = 'Sivun nimi täytyy täytyy määritellä!';\r\n\tstatic LockedCalendarTaskParameterCannotBeSaved = 'Tehtävä \\'{0}\\' on lukittu toiselle käyttäjälle eikä sitä voi tallentaa!';\r\n\tstatic LogLine = 'Lokirivi';\r\n\tstatic SendEmailInvitationConfirmation = 'Haluatko todella lähettää kutsun järjestelmään sähköpostilla?';\r\n\tstatic SSRSRefreshStarted = 'SSRS virkistys aloitettu';\r\n\tstatic Version = 'Versio';\r\n\tstatic RemoveUser = 'Poista käyttäjätili';\r\n\tstatic AddPermission = 'Lisää käyttöoikeus';\r\n\tstatic RecordEmailNotificationType = 'Haluan vastaanottaa yrityksen jatkokoulutuksien raportin (vanhenevat koulutukset)';\r\n\tstatic DeletingOneTimePasswordWasNotSuccessfulErrorParameter = 'Kertakäyttöisen salasanan poisto epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic TaskMustBeSavedBeforeCalendarTasksCanBeAdded = 'Tehtävä täytyy tallentaa ennen tapahtumien lisäämistä!';\r\n\tstatic ParameterPercentOfFileStorageQuotaUsed = '{0}% tiedostojen tallennustilasta käytetty';\r\n\tstatic PasswordChangeRequestParameterNotFound = 'Salasanan vaihtopyyntöä \\'{0}\\' ei löytynyt!';\r\n\tstatic EducationsAndCompetencies = 'Koulutukset ja pätevyydet';\r\n\tstatic Priority = 'Prioriteetti';\r\n\tstatic AddCompanyGroup = 'Lisää yritysryhmä';\r\n\tstatic DeletingUserParameterWasNotSuccessfulErrorParameter = 'Käyttäjätilin \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic AddUsersParameterWasSuccessful = 'Käyttäjätilien \\'{0}\\' lisäys onnistui!';\r\n\tstatic FormulaSin = 'Sini';\r\n\tstatic EmployeeTypeMustBeDefined = 'Työntekijätyyppi täytyy määritellä!';\r\n\tstatic CompanyTaskTypes = 'Yrityksen lomakkeet';\r\n\tstatic SavingUserParametersWasSuccessful = 'Käyttäjäasetusten tallennus onnistui!';\r\n\tstatic SendingEmailToParameter = 'Lähettää sähköpostia osoitteeseen \\'{0}\\'...';\r\n\tstatic RemoveLogisticVoucherCustomer = 'Poista asiakas';\r\n\tstatic SavingRecordEmploymentParameterWasSuccessful = 'Työpaikan \\'{0}\\' tallennus onnistui!';\r\n\tstatic Properties = 'Asetukset';\r\n\tstatic FormMaxTextLength = 'Tekstin maksimipituus';\r\n\tstatic RemoveFamiliarization = 'Poista perehdytys';\r\n\tstatic CompanyModuleProperties = 'Yrityksen asetukset';\r\n\tstatic UserTypeClaimNotFound = 'Käyttäjän ominaisuutta \\'käyttäjän tyyppi\\' ei löytynyt!';\r\n\tstatic ArchiveExpiredFamiliarizations = 'Arkistoi vanhentuneet perehdytykset';\r\n\tstatic EditableDocumentVersionMustBeDefined = 'Dokumentin versionumero täytyy määritellä!';\r\n\tstatic InstantMessage = 'Pikaviesti';\r\n\tstatic UserCannotRecieveEmailNotifications = 'Käyttäjä ei vastaanota sähköposti-ilmoituksia';\r\n\tstatic Starts = 'Alkaa';\r\n\tstatic DeletingDirectoryItemDocumentParameterWasNotSuccessfulErrorParameter = 'Tiedoston \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic EventTypeCCodeIsAlreadyInUse = 'Tarkenteen 3 nimi on jo käytössä!';\r\n\tstatic AddPartnerParameterWasSuccessful = 'Kumppanin \\'{0}\\' lisäys onnistui!';\r\n\tstatic PasswordIsTooShort = 'Salasana on liian lyhyt!';\r\n\tstatic RenamingFileParameterWasNotSuccessfulErrorParameter = 'Tiedoston uudelleen nimeäminen (\\'{0}\\' => \\'{1}\\') tiedostojärjestelmässä epäonnistui! Virhe: \\'{2}\\'';\r\n\tstatic WhistleBlowEventTypeAttachmentsAdded = 'Liitteitä lisätty';\r\n\tstatic SavingReportWasNotSuccessfulErrorParameter = 'Raportin tallennus epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic ArchiveExpiredFurtherEducations = 'Arkistoi vanhentuneet jatkokoulutukset';\r\n\tstatic DetectingLocation = 'Tunnistaa sijaintia...';\r\n\tstatic SavingFilterWasNotSuccessfulConcurrencyError = 'Suodattimen tallennus epäonnistui, koska suodattimen tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic Phone = 'Puhelin';\r\n\tstatic FormExpressionEditor = 'Kaavaeditori';\r\n\tstatic FiltersStandard = 'Vakiosuodattimet';\r\n\tstatic SelectFurtherEducation = 'Valitse jatkokoulutus';\r\n\tstatic DocumentsParameterOverwriteConfirmation = 'Tiedostot \\'{0}\\' löytyvät jo kansiosta. Haluatko korvata olemassaolevat tiedostot?';\r\n\tstatic FormDefaultValue = 'Oletusarvo';\r\n\tstatic NotificationSettings = 'Ilmoitusasetukset';\r\n\tstatic JobParameterNotFound = 'Työtä \\'{0}\\' ei löytynyt!';\r\n\tstatic Month = 'Kuukausi';\r\n\tstatic ModifiedDescription = 'Muokannut kuvausta';\r\n\tstatic EditableDocumentCodeIsAlreadyInUse = 'Dokumentin nimi on jo käytössä!';\r\n\tstatic LastListRow = 'Viimeinen listan rivi';\r\n\tstatic DocumentParameterAlreadyExists = 'Dokumentti \\'{0}\\' on jo kansiossa!';\r\n\tstatic SelectEventPartner = 'Valitse havaintokumppani';\r\n\tstatic NewInstantMessageChannelGroupInternal = 'Uusi ryhmä (yrityksen sisäinen)';\r\n\tstatic WhistleBlowEventTypeHandlersRemoved = 'Käsittelijöitä poistettu';\r\n\tstatic SendinEmailNotificationsWasNotSuccessfulErrorParameter = 'Tiedotteiden lähetys sähköpostilla epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic DoYouReallyWantToRemoveSelectedEventUrgencyClasses = 'Haluatko todella poistaa valitut kiireellisyysluokat?';\r\n\tstatic DoYouReallyWantToRemoveTaskParameterPermanenty = 'Haluatko todella poistaa tehtävän \\'{0}\\' lopullisesti? Poistettua tehtävää ei ole mahdollista palauttaa.';\r\n\tstatic CompanyRole = 'Yrityksen rooli';\r\n\tstatic AddToHomeScreen = 'Lisää aloitusnäyttöön';\r\n\tstatic RecordUsersFound = 'Henkilöstökortteja löytyi';\r\n\tstatic NewRecordUserMustBeSavedBeforeAttachmentsCanBeAdded = 'Uusi henkilöstökortti täytyy tallentaan ennen liitteiden lisäämistä!';\r\n\tstatic SavingEditableDocumentParameterPublishWasNotSuccessfulErrorParameter = 'Dokumentin \\'{0}\\' julkaisu epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic Entrepreneur = 'Yrittäjä';\r\n\tstatic SendingEmails = 'Lähettää sähköposteja...';\r\n\tstatic EditWhistleBlow = 'Muokkaa ilmoitusta';\r\n\tstatic DeletingTaskStateParameterWasNotSuccessfulErrorParameter = 'Tehtävän tilan \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic AddDefaultBasicEducation = 'Lisää oletusperuskoulutus';\r\n\tstatic Yesterday = 'Eilen';\r\n\tstatic AddEventUrgencyClass = 'Lisää kiireellisyysluokka';\r\n\tstatic FileNameConstainsIllegalCharacters = 'Tiedoston nimi sisältää kiellettyjä merkkejä (<, >, :, \", /, \\, |, ? tai *) tai päättyy kiellettyyn merkkiin (., \\' \\')!';\r\n\tstatic NoImagesToShow = 'Ei näytettäviä kuvia';\r\n\tstatic DoYouReallyWantToRemoveSelectedTaskPriorities = 'Haluatko todella poistaa valitut tehtävien prioriteetit?';\r\n\tstatic EditDefaultEventType = 'Muokkaa oletustarkennetta 1';\r\n\tstatic RemoveAttachment = 'Poista liite';\r\n\tstatic FirstName = 'Etunimi';\r\n\tstatic CalendarTaskStateNotStarted = 'Ei aloitettu';\r\n\tstatic EventHandler = 'Käsittelijä';\r\n\tstatic OpenTrashBin = 'Avaa roskakori';\r\n\tstatic TaskPriorities = 'Tehtävien prioriteetit';\r\n\tstatic WhistleBlowInformantInstuctions = 'Ilmoittajan ohjeet';\r\n\tstatic NewUserGroupMustBeSavedBeforeUsersCanBeAdded = 'Uusi käyttäjäryhmä täytyy tallentaa ennen käyttäjien lisäämistä!';\r\n\tstatic BrowseFiles = 'Selaa tiedostoja';\r\n\tstatic EditRemainder = 'Muokkaa muistutusta';\r\n\tstatic DeletingRecordQualificationParameterWasNotSuccessfulErrorParameter = 'Pätevyysvaatimuksen \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic RecordFurtherEducationParameterIsInUseInParameterRecordUsersQualificationsAndCannotBeDeleted = 'Jatkokoulutus \\'{0}\\' on käytössä pätevyysvaatimuksena {1} henkilöstökortissa eikä sitä voi poistaa!';\r\n\tstatic Start = 'Alku';\r\n\tstatic ModifyDateEndDate = 'Muokkauspäivä päättyen';\r\n\tstatic WhistleBlowStateReceived = 'Vastaanotettu';\r\n\tstatic UserParameterPermissionDeniedForUnitParameter = 'Käyttäjällä \\'{0}\\' ei ole tarvittavia oikeuksia yksikköön \\'{1}\\'!';\r\n\tstatic DeletingTaskParameterWasSuccessful = 'Tehtävän \\'{0}\\' poisto onnistui!';\r\n\tstatic LastNameMustBeDefined = 'Sukunimi täytyy määritellä!';\r\n\tstatic RequiredValidQualificationCount = 'Vaadittu voimassa olevien koulutusten määrä';\r\n\tstatic Qualifications = 'Pätevyysvaatimukset';\r\n\tstatic MaximumPasswordLengthCanParameterCharacters = 'Salasanan enimmäispituus saa olla korkeintaan {0} merkkiä!';\r\n\tstatic EditLogisticVoucherPaymentSetting = 'Muokkaa laskutusasetusta';\r\n\tstatic DocumentNameIsTooLong = 'Dokumentin nimi \\'{0}\\' on liian pitkä!';\r\n\tstatic SavingEditableDocumentParameterWasSuccessful = 'Dokumentin \\'{0}\\' tallennus onnistui!';\r\n\tstatic ExternalsSystemParameterNotFound = 'Ulkoista järjestelmää \\'{0}\\' ei löytynyt!';\r\n\tstatic DefaultCalendarTaskCategories = 'Oletusluokat';\r\n\tstatic EditPayerSettings = 'Muokkaa maksajan asetuksia';\r\n\tstatic EditDefaultTaskPriority = 'Muokkaa tehtävän oletusprioriteettia';\r\n\tstatic Menu = 'Valikko';\r\n\tstatic RecordFurtherEducationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted = 'Jatkokoulutus \\'{0}\\' on käytössä {1} henkilöstökortissa eikä sitä voi poistaa!';\r\n\tstatic Descending = 'Laskeva';\r\n\tstatic NotSet = 'Ei asetettu';\r\n\tstatic DeletingEventUrgencyClassParameterWasNotSuccessfulConcurrencyError = 'Kiireellisyysluokan \\'{0}\\' poisto epäonnistui, koska kiireellisyysluokan tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic AddUserGroupsParameterWasNotSuccessfulErrorParameter = 'Käyttäjäryhmien \\'{0}\\' lisäys epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic ResultGrouping = 'Tulosten ryhmittely';\r\n\tstatic SelectReceiver = 'Valitse vastaanottaja';\r\n\tstatic Continue = 'Jatka';\r\n\tstatic FurtherEducationsMustBeDefinedBeforeAddingRecordUsers = 'Jatkokoulutukset täytyy määritellä ennen kuin henkilöstökortteja voi lisätä!';\r\n\tstatic MoveTaskToTrashBin = 'Siirrä tehtävä roskakoriin';\r\n\tstatic DoYouReallyWantToRemoveMessageTypeParameter = 'Haluatko todella poistaa viestityypin \\'{0}\\'?';\r\n\tstatic RemoveEventPartner = 'Poista havaintokumppani';\r\n\tstatic DeletingTaskParameterWasNotSuccessfulErrorParameter = 'Tehtävän \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic ThisChannelHasBeenArchived = 'Tämä keskustelu on arkistoitu!';\r\n\tstatic Admin = 'Ylläpitäjä';\r\n\tstatic EventsExcel = 'Havainnot - Excel';\r\n\tstatic SavingEventDefaultHandlerParameterWasSuccessful = 'Oletuskäsittelijän \\'{0}\\' tallennus onnistui!';\r\n\tstatic SavingInstantMessageChannelUserUserWasSuccessful = 'Keskustelijan tallennus onnistui!';\r\n\tstatic Password = 'Salasana';\r\n\tstatic EventParameterNotFound = 'Havaintoa \\'{0}\\' ei löytynyt!';\r\n\tstatic AddCompanyGroupParameterWasNotSuccessfulConcurrencyError = 'Yritysryhmän \\'{0}\\' lisäys epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic RemoveDefaultTaskPriority = 'Poista tehtävän oletusprioriteetti';\r\n\tstatic WholeHistory = 'Koko historia';\r\n\tstatic PrintParameterNotFound = 'Tulostetta \\'{0}\\' ei löytynyt!';\r\n\tstatic NextOfKin = 'Lähiomainen';\r\n\tstatic DeletingCompanyParameterWasSuccessful = 'Yrityksen \\'{0}\\' poisto onnistui!';\r\n\tstatic FieldParameterConstainsIllegalCharactersForFileName = 'Kentän \\'{0}\\' arvo sisältää tiedostojen nimissä kiellettyjä merkkejä (<, >, :, \", /, \\, |, ? tai *) tai päättyy kiellettyyn merkkiin (., \\' \\')!';\r\n\tstatic FileNameMustBeDefined = 'Tiedoston nimi täytyy määritellä!';\r\n\tstatic Recurrence = 'Toistuvuus';\r\n\tstatic ChangeSystemLanguageToFinnish = 'Vaihda kieli suomeksi';\r\n\tstatic DocumentApproved = 'Hyväksyjä';\r\n\tstatic Print = 'Tulosta';\r\n\tstatic ProcessedFolderParameterErrorCountParameter = '* Kansio \\'{0}\\' käsitelty, virheitä: {1}';\r\n\tstatic LoggedInUserAccountIsNotActive = 'Kirjautunut käyttäjätunnus ei ole aktiivinen!';\r\n\tstatic CalendarTaskCategoryParameterNotFound = 'Luokkaa \\'{0}\\' ei löytynyt!';\r\n\tstatic Error = 'Virhe';\r\n\tstatic AccessRightFull = 'Kaikki oikeudet';\r\n\tstatic RecordUserLogEntryTypeSave = 'Muokkaus';\r\n\tstatic DeletingUserGroupUsersOfCompanyParameterWasNotSuccessfulErrorParameter = 'Yritykseen \\'{0}\\' liittyvien käyttäjäryhmäliittymien poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic AutoSaveVersionHistorySize = 'Versiohistorian koko tallennuksissa';\r\n\tstatic FilterIsActive = 'Suodatin on asetettu';\r\n\tstatic WorkTimeType = 'Työaikamuoto';\r\n\tstatic InstantMessageChannel = 'Keskustelu';\r\n\tstatic WhistleBlowDateAndTimeCannotBeInFuture = 'Tapahtuma-aika ei voi olla tulevaisuudessa!';\r\n\tstatic PrintFileName = 'Tuloste_{0:yyyy-MM-dd_HH-mm}.pdf';\r\n\tstatic LogCleaning = 'Lokin tyhjennys';\r\n\tstatic OpenCalendarTasks = 'Avoimia tapahtumia';\r\n\tstatic Edit = 'Muokkaa';\r\n\tstatic KeywordCodeIsAlreadyInUse = 'Avainsanan tunnus on jo käytössä!';\r\n\tstatic ContentFiltering = 'Sisällön suodatus';\r\n\tstatic Groups = 'Ryhmät';\r\n\tstatic FormRemoveFieldConfirmation = 'Haluatko todella poistaa kentän lomakkeelta?';\r\n\tstatic TargetsOtherCompanies = 'Näkyvyys - muut yritykset';\r\n\tstatic CalendarTaskRepetitionRepeatIntervalWeeklySuffix = 'viikon välein';\r\n\tstatic DeletingTaskParameterWasNotSuccessfulConcurrencyError = 'Tehtävän \\'{0}\\' poisto epäonnistui, koska tehtävän tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic CalendarTaskFilterByState = 'Tapahtumien suodatus tilan mukaan';\r\n\tstatic PrintEvent = 'Tulosta havainto';\r\n\tstatic MovedToTrashBin = 'Siirretty roskakoriin';\r\n\tstatic UsedFileStorageQuota = 'Käytetty tiedostojen tallennustila';\r\n\tstatic ClassParameterHasNotBeenInitialized = 'Luokkaa \\'{0}\\' ei ole alustettu!';\r\n\tstatic CalendarTaskStateFinished = 'Päättynyt';\r\n\tstatic Hours = 'tuntia';\r\n\tstatic OptionCodeIsAlreadyInUse = 'Sovellusasetuksen tunnus \\'{0}\\' on jo käytössä!';\r\n\tstatic CopyingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulErrorParameter = 'Kansion \\'{0}\\' kopioiminen kansioon \\'{1}\\' epäonnistui! Virhe: \\'{2}\\'';\r\n\tstatic UserFilterNoUserGroup = 'Käyttäjäryhmää ei valittu';\r\n\tstatic DoYouReallyWantToRemoveEventTypeBParameter = 'Haluatko todella poistaa tarkenteen 2 \\'{0}\\'?';\r\n\tstatic Archive = 'Arkistoi';\r\n\tstatic SavingWhistleBlowWasSuccessful = 'Ilmoituksen tallennus onnistui!';\r\n\tstatic Validity = 'Voimassa';\r\n\tstatic DeletingFolderParameterWasNotSuccessfulErrorParameter = 'Kansion \\'{0}\\' poisto tiedostojärjestelmästä epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic AddUnit = 'Lisää yksikkö';\r\n\tstatic FurtherEducations = 'Jatkokoulutukset';\r\n\tstatic SaveEventHandlerConfirmation = 'Haluatko tallentaa havainnon?';\r\n\tstatic RemoveParameterDocuments = 'Poista {0} dokumenttia/tiedostoa';\r\n\tstatic ExternalIntraSystemCompanyTokenMustBeDefined = 'Yritys-token eSalkku-järjestelmässä täytyy määritellä!';\r\n\tstatic DeletingPartnersParameterWasSuccessful = 'Kumppanien \\'{0}\\' poisto onnistui!';\r\n\tstatic Group = 'Ryhmä';\r\n\tstatic EventTypeBTitle = 'Havainnon yksilöinnin tarkenne 2';\r\n\tstatic RecordUser = 'Henkilöstökortti';\r\n\tstatic DeletingTaskTypeParameterWasNotSuccessfulConcurrencyError = 'Tehtävätyypin \\'{0}\\' poisto epäonnistui, koska tehtävätyypin tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic RemoveUserAndRecordUser = 'Poista käyttäjätili sekä henkilöstökortti';\r\n\tstatic FormWidthPrint = 'Leveys tulosteessa';\r\n\tstatic UpdateUserGroupParameterExternalSystemsWasNotSuccessfulErrorParameter = 'Käyttäjäryhmän \\'{0}\\' linkitys ulkoisiin järjestelmiin epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic AddDefaultFurtherEducation = 'Lisää oletusjatkokoulutus';\r\n\tstatic UserParameterCodeIsAlreadyInUse = 'Käyttäjäasetuksen tunnus on jo käytössä!';\r\n\tstatic PasswordHasBeenSetSuccessfully = 'Salasanan asettaminen onnistui. Siirry kirjautumissivulle.';\r\n\tstatic AddUserGroupsParameterWasNotSuccessfulConcurrencyError = 'Käyttäjäryhmien \\'{0}\\' lisäys epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic RemoveReport = 'Poista raportti';\r\n\tstatic AddCompany = 'Lisää yritys';\r\n\tstatic DoYouReallyWantToRemovePartnersParameter = 'Haluatko todella poistaa kumppanit \\'{0}\\'?';\r\n\tstatic State = 'Tila';\r\n\tstatic CompanyCodeMustBeDefined = 'Yrityksen tunnus täytyy määritellä!';\r\n\tstatic SavingApplicationPermissionsWasNotSuccessfulErrorParameter = 'Asetusten tallennus epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic LastWeek = 'Viime viikolla';\r\n\tstatic TheUserNameOrPasswordIsIncorrect = 'Virheellinen käyttäjätunnus tai salasana!';\r\n\tstatic SelectUnit = 'Valitse yksikkö';\r\n\tstatic AddDefaultEventHandler = 'Lisää oletuskäsittelijä';\r\n\tstatic SelectedDocumentTypes = 'Näytä vain valitut dokumenttityypit';\r\n\tstatic FormulaDivision = 'Jakolasku';\r\n\tstatic RemoveCompanyTaskType = 'Poista yrityksen tehtävätyyppi';\r\n\tstatic DeletingRecordQualificationsParameterWasNotSuccessfulConcurrencyError = 'Pätevyysvaatimusten \\'{0}\\' poisto epäonnistui, koska pätevyysvaatimusten tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic RecordEmailNotificationShowExpired = 'Sisällytä raporttiin jo vanhentuneet koulutukset';\r\n\tstatic AllSelected = 'Kaikki';\r\n\tstatic RemoveDocument = 'Poista valitut dokumentit/tiedostot';\r\n\tstatic SavingCompanyParameterWasNotSuccessfulConcurrencyError = 'Yrityksen \\'{0}\\' tallennus epäonnistui, koska yrityksen tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic UserPublicPasswordChangeMessage = 'Voit määritellä uuden salasanasi tällä sivulla. Käyttäjätunnuksesi on ilmoitettu sähköpostissa, joka sisälsi linkin tälle sivulle.';\r\n\tstatic JobTitle = 'Tehtävänimike';\r\n\tstatic EditMessage = 'Muokkaa viestiä';\r\n\tstatic SeasonalWorker = 'Kausityöntekijä';\r\n\tstatic DeletingEventTypeCParameterWasSuccessful = 'Tarkenteen 3 \\'{0}\\' poisto onnistui!';\r\n\tstatic DoYouReallyWantToRemoveThisInstantMessage = 'Haluatko todella poistaa tämän pikaviestin? Huomioithan, että viesti poistetaan kaikilta keskustelijoilta.';\r\n\tstatic AllWhistleBlowHandlersHaveReadMessage = 'Kaikki ilmoituksen käsittelijät ovat lukeneet viestisi';\r\n\tstatic PermissionToIdentificateEvents = 'Oikeus luoda ja yksilöidä havaintoja';\r\n\tstatic SavingDirectoryItemPermissionsNotSuccessfulErrorParameter = 'Kansioiden oikeuksien tallennus epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic Removed = 'Poistettu';\r\n\tstatic WhistleBlowWasNotFoundExplanation = 'Tarkista että syötit ilmoituksen salasanan oikein.';\r\n\tstatic WhistleBlowStateInProgress = 'Tutkittavana';\r\n\tstatic ActiveUserRights = 'Asetetut käyttöoikeudet';\r\n\tstatic MyFiltersAndReports = 'Käyttäjän suodattimet ja raportit';\r\n\tstatic SavingReportWasSuccessful = 'Raportin tallennus onnistui!';\r\n\tstatic ArchivingWhistleBlowsParameterWasSuccessful = 'Ilmoitusten \\'{0}\\' arkistointi onnistui!';\r\n\tstatic EmptyingTaskTrashBinWasSuccessfulErrorParameter = 'Tehtävien roskakorin tyhjennys epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic FormIntegerNumber = 'Kokonaisluku';\r\n\tstatic DeletingEventTypeBParameterWasNotSuccessfulConcurrencyError = 'Tarkenteen 2 \\'{0}\\' poisto epäonnistui, koska tarkenteen 2 tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic FiscalNumber = 'Tilikausinumero';\r\n\tstatic CompanyGroupAll = '\\'kaikki yritykset\\'';\r\n\tstatic SavingUserParameterParameterWasNotSuccessfulConcurrencyError = 'Käyttäjäasetuksen \\'{0}\\' tallennus epäonnistui, koska käyttäjäasetuksen tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic SavingEventPartnerParameterWasSuccessful = 'Havaintokumppanin \\'{0}\\' tallennus onnistui!';\r\n\tstatic OneTimeForm = 'Kertalomake';\r\n\tstatic CalendarTaskCategoryCodeIsAlreadyInUse = 'Luokan nimi on jo käytössä!';\r\n\tstatic CompanyThatIsInUseCannotBeDeleted = 'Yritystä, jonka tila on \\'Käytössä\\', ei voi poistaa!';\r\n\tstatic ClosedPlural = 'Suljetut';\r\n\tstatic Line = 'Rivi';\r\n\tstatic Company = 'Yritys';\r\n\tstatic NotifiedPersonsShort = 'Ilmoitukset';\r\n\tstatic WhistleBlowMustBeReceivedLatestAtParameter = 'Ilmoitus täytyy merkitä vastaanotetuksi viimeistään {0}!';\r\n\tstatic MessageMustBeDefined = 'Viestin sisältö täytyy määritellä!';\r\n\tstatic InheritedUserRight = '(peritty käyttöoikeus)';\r\n\tstatic WhistleBlowArchivingTypeChangeStateAndRemoveInformantData = 'Siirrä ilmoitus Arkistoitu-tilaan ja poista ilmoittajan tiedot';\r\n\tstatic AddPrint = 'Lisää tuloste';\r\n\tstatic FileParameterIsNotImage = 'Tiedosto \\'{0}\\' ei ole kuva!';\r\n\tstatic SaveInstantMessageChannel = 'Tallenna keskustelu';\r\n\tstatic FilterCondition = 'Suodatusehto';\r\n\tstatic UpdateCompanyExternalSystemsWasSuccessful = 'Yrityksen linkitys ulkoisiin järjestelmiin onnistui!';\r\n\tstatic NoEmailsToSend = 'Ei lähetettäviä sähköposteja!';\r\n\tstatic Approve = 'Hyväksy';\r\n\tstatic NoAddedEventTypeCs = 'Ei lisättyjä tarkenteita!';\r\n\tstatic NoAddedEventTypeBs = 'Ei lisättyjä tarkenteita!';\r\n\tstatic SavingCompanyParameterWasNotSuccessfulErrorParameter = 'Yrityksen \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic FormColumnWidthMobile = 'Sarakkeen leveys mobiiliapissa';\r\n\tstatic DeletingTaskPriorityParameterWasNotSuccessfulErrorParameter = 'Tehtävän prioriteetin \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic Missing = 'Puuttuu';\r\n\tstatic WhistleBlowFrontPage = 'Etusivu';\r\n\tstatic WhistleBlowDateAndTime = 'Tapahtuma-aika';\r\n\tstatic AddChildEventTypeB = 'Lisää alitarkenne 2';\r\n\tstatic NewMessage = 'Uusi viesti';\r\n\tstatic SavingEventSettingsWasNotSuccessfulErrorParameter = 'Havaintojen asetusten tallennus epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic Last7Days = '7 viime päivää';\r\n\tstatic ReadingFolderParameter = 'Lukee kansiota \\'{0}\\'...';\r\n\tstatic RemoveUserGroupExternalSystemsWasNotSuccessfulErrorParameter = 'Käyttäjäryhmien ja ulkoisten järjestelmien linkityksen poisto epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic NewEmploymentMustBeSavedBeforeAttachmentsCanBeAdded = 'Uusi työpaikka täytyy tallentaan ennen liitteiden lisäämistä!';\r\n\tstatic DocumentParameterDownloaded = 'Tiedosto on ladattu.';\r\n\tstatic EditTransferredProperty = 'Muokkaa luovutettua omaisuutta';\r\n\tstatic SavingChartWasNotSuccessfulErrorParameter = 'Kuvaajan tallennus epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic Severity = 'Vakavuus';\r\n\tstatic Reminders = 'Muistutukset';\r\n\tstatic SelectEventInListToSeeThePreview = 'Valitse havainto luettelosta nähdäksesi esikatselun';\r\n\tstatic RemoveFromFavorites = 'Poista suosikeista';\r\n\tstatic UserPasswordMustBeDefined = 'Käyttäjän salasana täytyy määritellä!';\r\n\tstatic CalendarTaskRepetitionEndDatePrefix = '';\r\n\tstatic SavingUnitsWasNotSuccessfulConcurrencyError = 'Yksiköiden tallennus epäonnistui, koska yksiköiden tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic DefaultFurtherEducationGroup = 'Oletusjatkokoulutusryhmä';\r\n\tstatic SelectEventType = 'Valitse tarkenne 1';\r\n\tstatic WhistleBlowReportHasBeenSaved = 'Ilmoituksesi on tallennettu';\r\n\tstatic SelectEventHandler = 'Valitse käsittelijä';\r\n\tstatic CompanyTaskTypeTemplates = 'Yrityksen mallilomakkeet';\r\n\tstatic EmailHasBeenAlreadySentForThisMessage = 'Sähköposti on jo lähetetty tälle viestille!';\r\n\tstatic WhistleBlowUrl = 'Ilmoituskanavan web-osoite';\r\n\tstatic CopyingFolderParameterWasNotSuccessfulErrorParameter = 'Kansion \\'{0}\\' kopioiminen tiedostojärjestelmässä kansioon \\'{1}\\' epäonnistui! Virhe: \\'{2}\\'';\r\n\tstatic ValueAddedTaxPercent = 'Arvonlisävero %';\r\n\tstatic Success = 'Onnistui!';\r\n\tstatic SaveEvent = 'Tallenna havainto';\r\n\tstatic UserGroupNameIsAlreadyInUse = 'Käyttäjäryhmän nimi on jo käytössä!';\r\n\tstatic Time = 'Aika';\r\n\tstatic SelectableWhenCreatingAnEvent = 'Valittavissa havaintoa luotaessa';\r\n\tstatic LogIn = 'Kirjaudu';\r\n\tstatic Form = 'Lomake';\r\n\tstatic UpdateUserParameterExternalSystemsWasNotSuccessfulErrorParameter = 'Käyttäjän \\'{0}\\' linkitys ulkoisiin järjestelmiin epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic RemoveLogisticVoucherCompanyPaymentSetting = 'Poista laskutusasetus';\r\n\tstatic EventApprovalWasNotSuccessfulErrorParameter = 'Havainnon hyväksyminen epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic PageFooterText = 'Järjestelmän alatunnisteteksti';\r\n\tstatic ExternalSystemCode = 'Tunnus järjestelmässä';\r\n\tstatic SavingMessageTypeParameterWasNotSuccessfulErrorParameter = 'Viestityypin \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic CurrentWorkPlaceNotAdded = 'Nykyistä työpaikkaa ei lisätty!';\r\n\tstatic BasicEducations = 'Peruskoulutukset';\r\n\tstatic DeletingWhistleBlowChannelAdminsParameterWasNotSuccessfulConcurrencyError = 'Ylläpitäjien \\'{0}\\' poisto epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic SuccessAudit = 'SuccessAudit';\r\n\tstatic FormTextInputs = 'Tekstinsyöttö';\r\n\tstatic RemovePayer = 'Poista maksaja';\r\n\tstatic NoName = 'Nimetön';\r\n\tstatic DeletingRecordUserEmploymentsParameterWasNotSuccessfulConcurrencyError = 'Työpaikkojen \\'{0}\\' poisto epäonnistui, koska työpaikkojen tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic ImageChangeInterval = 'Kuvien vaihtoaika';\r\n\tstatic EditableDocumentPublishUnapprovedConfirmation = 'Haluatko julkaista hyväksymättömän dokumentin tiedostoksi?';\r\n\tstatic UnitProperties = 'Yksikön ominaisuudet';\r\n\tstatic AddingAddRecordUserFurtherEducationsWasSuccessful = 'Jatkokoulutusten lisäys onnistui!';\r\n\tstatic SavingMessageParameterWasSuccessful = 'Viestin \\'{0}\\' tallennus onnistui!';\r\n\tstatic AddCompanyParameterWasSuccessful = 'Yrityksen \\'{0}\\' lisäys onnistui!';\r\n\tstatic RequestPasswordChangeMessage3 = '-nappia. Saat käyttäjätunnukseen liitettyyn sähköpostiisi viestin, joka sisältää linkin ja ohjeet salasanan nollaamiseen.';\r\n\tstatic InvitationParameterNotFound = 'Kutsua \\'{0}\\' ei löytynyt!';\r\n\tstatic FormExpressionFormat = 'Laskukaavan tuloksen muuntaminen';\r\n\tstatic DeletingEventTypeParameterWasNotSuccessfulConcurrencyError = 'Tarkenteen 1 \\'{0}\\' poisto epäonnistui, koska tarkenteen 1 tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic FormulaHypot = 'Hypotenuusa';\r\n\tstatic EventTypeCParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted = 'Tarkenteen 3 \\'{0}\\' alitarkenteita on käytössä {1} havainnossa eikä tarkennetta voi poistaa!';\r\n\tstatic DoYouReallyWantToRemoveUserParameter = 'Haluatko todella poistaa käyttäjän \\'{0}\\'?';\r\n\tstatic OtherInformation = 'Muut tiedot';\r\n\tstatic FormAddDropdownOption = 'Lisää vaihtoehto';\r\n\tstatic InstantMessageChannelUser = 'Keskustelija';\r\n\tstatic File = 'Tiedosto';\r\n\tstatic RemoveRowConfirmation = 'Haluatko todella poistaa rivin {0}?';\r\n\tstatic CkickToChangeTheIcon = 'Klikkaa vaihtaaksesi kuvaketta';\r\n\tstatic CurrentCalendarWeek = 'Kuluva kalenteriviikko';\r\n\tstatic ExternalSystemCompanyCodeMustBeDefined = 'Yrityksen tunnus muussa järjestelmässä täytyy määritellä!';\r\n\tstatic SelectEventTypeB = 'Valitse tarkenne 2';\r\n\tstatic AddImageFromClipboard = 'Lisää kuva leikepöydältä';\r\n\tstatic ErrorUserGroupChangeWouldLeadToInvalidDefaultEventHandlers = 'Käyttäjäryhmän muutokset johtavat tilanteeseen, jossa joillakin oletuskäsittelijöillä tai tiedotettavilla henkilöillä ei ole enää oikeuksia käsitellä yksikön havaintoja! Muutokset, jotka vaikuttavat oletuskäsittelijöihin tai tiedotettaviin henkilöihin, voi suorittaa ainoastaan \\'Havaintojen asetukset\\'-lomakkeessa!';\r\n\tstatic CopyGroupPermissions = 'Kopioi ryhmän käyttöoikeudet muistiin';\r\n\tstatic SavingEventTypesWasSuccessful = 'Tarkenteen 1 tallennus onnistui!';\r\n\tstatic EditTaskState = 'Muokkaa tehtävän tilaa';\r\n\tstatic Value = 'Arvo';\r\n\tstatic Images = 'Kuvat';\r\n\tstatic FieldParameterContainsInvalidCompanyCodeCharacters = 'Kentän \\'{0}\\' arvo sisältää merkkejä (., &, :, \\' \\', ö, ä, à, Ã¥, Ö, Ä, À tai Ã…), joita ei sallita yrityksen tunnuksessa!';\r\n\tstatic ReadingFileParameterWasNotSuccessfulFileNotFound = 'Tiedoston \\'{0}\\' lukeminen tiedostojärjestelmästä epäonnistui! Tiedosta ei löydy!';\r\n\tstatic MaximumSizeOfInstantMessageAttachmentIsParameterMB = 'Pikaviestin liitteen maksimikoko on {0} MB!';\r\n\tstatic UserRecordStatisticsActiveCards = 'Aktiivisia kortteja';\r\n\tstatic UserFirstNameMustBeDefined = 'Käyttäjän etunimi täytyy määritellä!';\r\n\tstatic PaymentVoucherCounter = 'Tositenumerolaskuri';\r\n\tstatic Visibility = 'Näkyvyys';\r\n\tstatic EmployeeTypeIsNotSupported = 'Työntekijätyyppiä \\'{0}\\' ei ole tuettu!';\r\n\tstatic DoYouReallyWantToRemoveKeywordParameter = 'Haluatko todella poistaa avainsanan \\'{0}\\'?';\r\n\tstatic RequestPasswordChangeLinkHasBeenSent = 'Salasananvaihtolinkki on lähetetty sähköpostiisi! Jos viesti ei näy saapuneet kansiossa, tarkasta roskapostikansio.';\r\n\tstatic AddInstantMessageUserParameterWasNotSuccessfulErrorParameter = 'Keskustelijan \\'{0}\\' lisäys epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic RemoveDefaultEventType = 'Poista oletustarkenne 1';\r\n\tstatic Valid = 'Voimassa';\r\n\tstatic UserCodeIsAlreadyInUse = 'Käyttäjätunnus on jo käytössä!';\r\n\tstatic DeletingCompanyGroupParameterWasNotSuccessfulConcurrencyError = 'Yritysryhmän \\'{0}\\' poisto epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic DeletingEventUrgencyClassParameterWasSuccessful = 'Kiireellisyysluokan \\'{0}\\' poisto onnistui!';\r\n\tstatic Files = 'Tiedostot';\r\n\tstatic Drafts = 'Luonnokset';\r\n\tstatic MessageVisibilityPeriodNotActive = 'Viestin näkyvyys ei ole voimassa!';\r\n\tstatic DeletingRecordQualificationsParameterWasSuccessful = 'Pätevyysvaatimusten \\'{0}\\' poisto onnistui!';\r\n\tstatic Observer = 'Havainnon tekijä';\r\n\tstatic EventTypeParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted = 'Tarkenteen 1 \\'{0}\\' alitarkenteita on käytössä {1} havainnossa eikä tarkennetta voi poistaa!';\r\n\tstatic Usage = 'Käyttö';\r\n\tstatic RowForm = 'Rivilomake';\r\n\tstatic FormComponents = 'Komponentit';\r\n\tstatic CompanyParameterNotFound = 'Yritystä \\'{0}\\' ei löytynyt!';\r\n\tstatic DoYouReallyWantToReplaceDocumentTemplateParameter = 'Haluatko todella korvata dokumenttimallin \\'{0}\\'?';\r\n\tstatic AddUserToUserGroup = 'Lisää käyttäjätili käyttäjäryhmään';\r\n\tstatic Aprint = 'Tuloste';\r\n\tstatic InstantMessageChannelOnlyAdministratorCannotExitInstantMessageChannel = 'Keskustelun ainoa ylläpitäjä ei voi poistua keskustelusta!';\r\n\tstatic ReminderDaysBefore = 'päivää aikaisemmin';\r\n\tstatic TitleIsAlreadyInUse = 'Otsikko on jo käytössä!';\r\n\tstatic DoYouWantToAddThisApplicationToHomeScreen = 'Haluatko lisätä tämän sovelluksen aloitusnäyttöön?';\r\n\tstatic DocumentCreated = 'Laatija';\r\n\tstatic TasksExcelByTaskRows = 'Tehtävät - Excel - Suodatettu tehtäväriveittäin';\r\n\tstatic AddingAttachmentsParameterWasNotSuccessfulErrorParameter = 'Liitteiden \\'{0}\\' lisäys epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic FrontPage = 'Etusivu';\r\n\tstatic Cancel = 'Peruuta';\r\n\tstatic FileFilter = 'Tiedostosuodatin';\r\n\tstatic DoYouReallyWantToRemovePrintParameter = 'Haluatko todella poistaa tulosteen \\'{0}\\'?';\r\n\tstatic AddingAddRecordUserQualificationsWasSuccessful = 'Pätevyysvaatimusten lisäys onnistui!';\r\n\tstatic MessagePreservationTime = 'Viestien säilytysaika';\r\n\tstatic ClearSubUnitDefaultHandlers = 'Tyhjennä aliyksiköiden oletuskäsittelijät';\r\n\tstatic NotificationsSentSuccessfully = 'Ilmoitusten lähettäminen onnistui!';\r\n\tstatic InstantMessageSettings = 'Pikaviestiasetukset (HoxUp)';\r\n\tstatic SavingReadReceiptWasNotSuccessfulErrorParameter = 'Lukukuittauksen tallennus epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic TaskDataRowParameterNotFound = 'Tehtävän riviä \\'{0}\\' ei löytynyt!';\r\n\tstatic Path = 'Polku';\r\n\tstatic Competency = 'Pätevyys';\r\n\tstatic MovingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulErrorParameter = 'Kansion \\'{0}\\' siirtäminen kansioon \\'{1}\\' epäonnistui! Virhe: \\'{2}\\'';\r\n\tstatic CalendarTaskRemoveSeries = 'Poista sarja';\r\n\tstatic DeletingRecordBasicEducationsParameterWasNotSuccessfulErrorParameter = 'Peruskoulutusten \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic AddWhistleBlowChannelAdminParameterWasNotSuccessfulErrorParameter = 'Ylläpitäjän \\'{0}\\' lisäys epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic DownloadPdf = 'Lataa Pdf';\r\n\tstatic Import = 'Tuo';\r\n\tstatic WhistleBlowNonAnonymousReport = 'Lähettäjän tiedot sisältävä ilmoitus';\r\n\tstatic EmploymentType = 'Työsuhdetyyppi';\r\n\tstatic FileSynchronizationToDatabaseFinishedInParameterSeconds = 'Tiedostojärjestelmän synkronointi tietokantaan suoritettu (kesto: {0:N0}s, virheitä: {1}, hakemistoja: {2}, virheettömiä hakemistoja: {3})';\r\n\tstatic RemoveEventType = 'Poista tarkenne 1';\r\n\tstatic DeletingRecordUserTransferredPropertyParameterWasSuccessful = 'Luovutetun omaisuuden \\'{0}\\' poisto onnistui!';\r\n\tstatic AllDay = 'Koko päivä';\r\n\tstatic Resources = 'Resurssit';\r\n\tstatic AddTransferredProperty = 'Lisää luovutettu omaisuus';\r\n\tstatic DocumentTemplates = 'Dokumenttimallit';\r\n\tstatic UserSessionHasBeenExpired = 'Käyttäjäistunto on vanhentunut!';\r\n\tstatic SavingRecordFurtherEducationGroupParameterWasSuccessful = 'Jatkokoulutusryhmän \\'{0}\\' tallennus onnistui!';\r\n\tstatic AddDefaultTaskState = 'Lisää tehtävän oletustila';\r\n\tstatic JobTypeMessageNotification = 'Viestin ilmoitus';\r\n\tstatic SavingKeywordParameterWasSuccessful = 'Avainsanan \\'{0}\\' tallennus onnistui!';\r\n\tstatic AccessRightReadCalendarTask = 'Oikeus luoda omia tapahtumia';\r\n\tstatic DoYouReallyWantToRemoveFileFilterParameter = 'Haluatko todella poistaa tiedostosuodattimen \\'{0}\\'?';\r\n\tstatic AddEventMessageConfirmation = 'Haluatko lisätä kommentin? Kommenttia ei voi muokata lisäämisen jälkeen.';\r\n\tstatic LockedDocumentsParameterCannotBeMoved = 'Lukittuja dokumentteja \\'{0}\\' ei voi siirtää!';\r\n\tstatic RemoveTaskState = 'Poista tehtävän tila';\r\n\tstatic Conversions = 'Muunnokset';\r\n\tstatic Created = 'Luotu';\r\n\tstatic CalendarTaskRepetitionEnd = 'Lopeta';\r\n\tstatic DeletingRecordFamiliarizationParameterWasNotSuccessfulErrorParameter = 'Perehdytyksen \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic UserHasUsedMobile = 'Käyttäjätili on ollut aktiivinen mobiilisovelluksessa viimeisen 30 päivän aikana.';\r\n\tstatic RemoveBasicEducation = 'Poista peruskoulutus';\r\n\tstatic VersionInformation = 'Versiotiedot';\r\n\tstatic Days = 'päivää';\r\n\tstatic CkickToChangeThePicture = 'Klikkaa vaihtaaksesi kuvaa';\r\n\tstatic PostalCode = 'Postinumero';\r\n\tstatic RecordUserLogEntryTypePrint = 'Tulostus';\r\n\tstatic NameMustBeDefined = 'Nimi täytyy määritellä!';\r\n\tstatic ExternalSystemUserTokenParameterIsAlreadyInUse = 'Käyttäjä-token \\'{0}\\' on jo käytössä!';\r\n\tstatic WhistleBlowResolutionCanceled = 'Peruutettu';\r\n\tstatic Theme = 'Teema';\r\n\tstatic SaveFilterAs = 'Tallenna suodatin nimellä';\r\n\tstatic AttachmentIsEmpty = 'Liitetiedosto \\'{0}\\' on tyhjä!';\r\n\tstatic SaveTask = 'Tallenna tehtävä';\r\n\tstatic FormModifyUser = 'Muokkaaja';\r\n\tstatic FormHeight = 'Korkeus';\r\n\tstatic RemovePermission = 'Poista käyttöoikeus';\r\n\tstatic DeletingInstantMessageChannelWasNotSuccessfulErrorParameter = 'Keskustelun poisto epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic UserGroupsMustBeDefined = 'Käyttäjäryhmät täytyy määritellä!';\r\n\tstatic PrintGenerationFailed = 'Tulosteen luominen epäonnistui!';\r\n\tstatic LogDocumentPreview = 'Lokita dokumentin esikatselu';\r\n\tstatic DeletingOneTimePasswordWasSuccessful = 'Kertakäyttöisen salasanan poisto onnistui!';\r\n\tstatic FormulaTrunc = 'Kokonaisosa';\r\n\tstatic SendPasswordChangeEmailConfirmation = 'Haluatko todella lähettää salasananvaihtolinkin sähköpostilla?';\r\n\tstatic DeletingTaskStateParameterWasNotSuccessfulConcurrencyError = 'Tehtävän tilan \\'{0}\\' poisto epäonnistui, koska tehtävän tilan tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic Years = 'Vuotta';\r\n\tstatic SavingEventTypeCsWasNotSuccessfulErrorParameter = 'Tarkenteen 3 tallennus epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic DeletingDefaultEventHandlerParameterWasNotSuccessfulErrorParameter = 'Oletuskäsittelijän \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic SavingMessageParameterWasNotSuccessfulConcurrencyError = 'Viestin \\'{0}\\' tallennus epäonnistui, koska viestin tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic RecordUserTrangerredPropertyParameterNotFound = 'Luovutettua omaisuutta \\'{0}\\' ei löytynyt!';\r\n\tstatic PreviewWeb = 'Esikatselu (web)';\r\n\tstatic RemoveComment = 'Poista kommentti';\r\n\tstatic TimeSpanYear = 'Vuosi';\r\n\tstatic OpenCalendarTask = 'Avaa tapahtuma';\r\n\tstatic FormulaExponent = 'Eksponentti';\r\n\tstatic Voluntary = 'Vapaaehtoinen';\r\n\tstatic SavingRecordFurtherEducationParameterWasNotSuccessfulErrorParameter = 'Jatkokoulutuksen \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic WhistleBlowChannelParameterNotFound = 'Ilmoituskanavaa \\'{0}\\' ei löytynyt!';\r\n\tstatic SelectMonth = 'Valitse kuukausi';\r\n\tstatic CalendarTaskStateStarted = 'Aloitettu';\r\n\tstatic DeletingRecordBasicEducationsParameterWasNotSuccessfulConcurrencyError = 'Peruskoulutusten \\'{0}\\' poisto epäonnistui, koska peruskoulutusten tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic TaskStateParameterIsInUseInParameterTasksAndCannotBeDeleted = 'Tehtävän tila \\'{0}\\' on käytössä {1} tehtävässä eikä sitä voi poistaa!';\r\n\tstatic WhistleBlowAnonymousReport = 'Ilmoita anonyymisti';\r\n\tstatic DeletingEventTypeCParameterWasNotSuccessfulErrorParameter = 'Tarkenteen 3 \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic Operators = 'Operaatiot';\r\n\tstatic CreatingFileParameterWasNotSuccessfulErrorParameter = 'Tiedoston \\'{0}\\' luominen tiedostojärjestelmään epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic SourceFolderAndTargetFolderAreSame = 'Lähdekansio ja kohdekansio ovat samat!';\r\n\tstatic DeletingRecordFurtherEducationParameterWasSuccessful = 'Jatkokoulutuksen \\'{0}\\' poisto onnistui!';\r\n\tstatic SavingDocumentTemplateParameterWasNotSuccessfulErrorParameter = 'Dokumenttimallin \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic AddDocumentTemplate = 'Lisää dokumenttimalli';\r\n\tstatic AddTask = 'Lisää tehtävä';\r\n\tstatic PublicationOfEditableDocumentCannotBeRemoved = 'Dokumentin julkaisua ei voi poistaa!';\r\n\tstatic AddQualifications = 'Lisää pätevyysvaatimukset';\r\n\tstatic SavingUnitPermissionsWasNotSuccessfulConcurrencyError = 'Käyttöoikeuksien tallennus yksiköille epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic RemoveDefaultHandler = 'Poista oletuskäsittelijä';\r\n\tstatic ChartGenerationAborted = 'Kuvaajan luominen hylätty!';\r\n\tstatic SystemAdminMessage = 'Viesti kaikille järjestelmän käyttäjille';\r\n\tstatic AddTarget = 'Lisää kohde';\r\n\tstatic TargetDoesNotHaveFoldersWithWritePermissions = 'Kohteessa ei ole kansioita, joihin on muokkausoikeudet!';\r\n\tstatic UpdateCompanyExternalSystemsWasNotSuccessfulErrorParameter = 'Yrityksen linkitys ulkoisiin järjestelmiin epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic DeletingMessageTypeParameterWasSuccessful = 'Viestityypin \\'{0}\\' poisto onnistui!';\r\n\tstatic LockedTaskDataRowCannotBeSaved = 'Tehtävärivi on lukittu toiselle käyttäjälle eikä sitä voi tallentaa!';\r\n\tstatic RemoveLogisticVoucherPaymentSetting = 'Poista laskutusasetus';\r\n\tstatic WhistleBlowSourceEmail = 'Sähköposti';\r\n\tstatic DeletingKeywordsParameterWasSuccessful = 'Avainsanojen \\'{0}\\' poisto onnistui!';\r\n\tstatic SavingRecordFamiliarizationParameterWasNotSuccessfulConcurrencyError = 'Perehdytyksen tallennus \\'{0}\\' epäonnistui, koska perehdytyksen tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic SavingPrintWasNotSuccessfulErrorParameter = 'Tulosteen tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic DeletingCalendarTaskParameterWasSuccessful = 'Tapahtuman \\'{0}\\' poisto onnistui!';\r\n\tstatic SavingRecordBasicEducationParameterWasNotSuccessfulConcurrencyError = 'Peruskoulutuksen tallennus \\'{0}\\' epäonnistui, koska peruskoulutuksen tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic DeletingMessageTypeParameterWasNotSuccessfulErrorParameter = 'Viestityypin \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic EventClosed = 'Havainto suljettu';\r\n\tstatic DeletingAttachmentsParameterWasSuccessful = 'Liitteiden \\'{0}\\' poisto onnistui!';\r\n\tstatic SendReadReceipt = 'Kuittaa luetuksi';\r\n\tstatic SaveTaskConfirmation = 'Haluatko tallentaa tehtävän?';\r\n\tstatic TaskStates = 'Tehtävien tilat';\r\n\tstatic ActionIsNotAuthorized = 'Toiminto ei ole sallittu!';\r\n\tstatic SavingInstantMessageChannelUserWasNotSuccessfulErrorParameter = 'Keskustelijan tallennus epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic Communication = 'Viestintä';\r\n\tstatic WhistleBlowSourceSystem = 'Järjestelmä';\r\n\tstatic NotValid = 'Ei voimassa';\r\n\tstatic DocumentModuleProperties = 'Dokumenttien asetukset';\r\n\tstatic LoginTitle = 'Kirjaudu PKY-LAATU -Intraan';\r\n\tstatic Unit = 'Yksikkö';\r\n\tstatic FormEmptyArea = 'Tyhjä alue';\r\n\tstatic DoYouReallyWantToUnlockMessage = 'Haluatko todella poistaa viestin \\'{0}\\' lukituksen?';\r\n\tstatic PublishEvent = 'Julkaise havainto';\r\n\tstatic AddKeyword = 'Lisää avainsana';\r\n\tstatic RemoveEventUrgencyClass = 'Poista kiireellisyysluokka';\r\n\tstatic Competencies = 'Pätevyydet';\r\n\tstatic DeletingInstantMessageChannelWasNotSuccessfulConcurrencyError = 'Keskustelun poisto epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic Saved = 'Tallennettu';\r\n\tstatic UserCodeUpdateWasNotSuccessfulErrorParameter = 'Käyttäjätunnuksen päivitys epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic AddCompanyGroupsParameterWasSuccessful = 'Yritysryhmien \\'{0}\\' lisäys onnistui!';\r\n\tstatic OK = 'Ok';\r\n\tstatic ReferenceNumberPrefix = 'Viitenumeron etuliite';\r\n\tstatic DocumentProperties = 'Dokumentin/tiedoston ominaisuudet';\r\n\tstatic TaskCreated = 'Laatija';\r\n\tstatic Close = 'Sulje';\r\n\tstatic Messages = 'Viestit';\r\n\tstatic FieldsToBePrinted = 'Tulostettavat kentät';\r\n\tstatic WhistleBlowSourceOther = 'Muu';\r\n\tstatic AddRecordUser = 'Lisää henkilöstokortti';\r\n\tstatic EditPermission = 'Muokkaa käyttöoikeutta';\r\n\tstatic UserGroupNameMustBeDefined = 'Käyttäjäryhmän nimi täytyy määritellä!';\r\n\tstatic WhistleBlowStatisticsRecordCount = 'Aktiivisia ilmoituksia';\r\n\tstatic WelcomeToUseEsalkkuSystem = 'Tervetuloa käyttämään eSalkku-järjestelmää! Ennen käytön aloittamista määrittele salasanasi. Käyttäjätunnuksesi on ilmoitettu sähköpostikutsussa.';\r\n\tstatic DoYouReallyWantToRemoveSelectedMessageTypes = 'Haluatko todella poistaa valitut viestityypit?';\r\n\tstatic TaskPriorityCodeIsAlreadyInUse = 'Tehtävän prioriteetin nimi on jo käytössä!';\r\n\tstatic IdentificationDetails = 'Yksilöinnin lisätieto';\r\n\tstatic CurrentTopicsAbbr = 'Ajankoht.';\r\n\tstatic SavingRecordEmploymentParameterWasNotSuccessfulErrorParameter = 'Työpaikan \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic LockedDocumentParameterCannotBeDeleted = 'Lukittua dokumenttia \\'{0}\\' ei voi poistaa!';\r\n\tstatic Empty = 'Tyhjä';\r\n\tstatic UserRecordStatisticsSavedCards = 'Tallennettuja kortteja';\r\n\tstatic DependencyResolvingFailedForInterfaceParameter = 'Toteutusta ei löytynyt rajapinnalle \\'{0}\\'!';\r\n\tstatic AddingWhistleBlowHandlersWasSuccessful = 'Käsittelijöiden lisäys onnistui!';\r\n\tstatic ProcessingTime = 'Käsittelyaika';\r\n\tstatic SavingMessageParameterWasNotSuccessfulErrorParameter = 'Viestin \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic CompanyGroups = 'Yritysryhmät';\r\n\tstatic EmptyForm = 'Tyhjä lomake';\r\n\tstatic SpecifedTimeFrame = 'Asetettu aikaväli';\r\n\tstatic AddDefaultTaskType = 'Lisää oletustehtävätyyppi';\r\n\tstatic AddCalendarTask = 'Lisää tapahtuma';\r\n\tstatic AddPartnersByClickingPlusButton = 'Lisää kumppanit plus-painikkeesta.';\r\n\tstatic DeletingEventTypeBParameterWasNotSuccessfulErrorParameter = 'Tarkenteen 2 \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic RemovingCalendarTaskHandlersWasSuccessful = 'Vastuuhenkilöiden poisto onnistui!';\r\n\tstatic SavingRecordUserQualificationParameterWasNotSuccessfulErrorParameter = 'Pätevyysvaatimuksen \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic StartDate = 'Näkyvissä alkaen';\r\n\tstatic NewWhistleBlowMustBeSavedBeforeHandlersCanBeAdded = 'Uusi ilmoitus täytyy tallentaan ennen rivien lisäämistä!';\r\n\tstatic EditEventTypeB = 'Muokkaa tarkennetta 2';\r\n\tstatic Closed = 'Suljettu';\r\n\tstatic CustomerNumber = 'Asiakasnumero';\r\n\tstatic Reports = 'Raportit';\r\n\tstatic DaysAgo60 = '60 päivää sitten';\r\n\tstatic UnkownErrorHasBeenOccured = 'Sovelluksessa tapahtui odottamaton virhe!';\r\n\tstatic InstantMessageUserInvitationAcceptTypeCanInvite = 'Minut voi kutsua keskusteluun';\r\n\tstatic Schema = 'Skeema';\r\n\tstatic UserGroupAll = '\\'kaikki käyttäjät\\'';\r\n\tstatic Admins = 'Ylläpitäjät';\r\n\tstatic CompanyGroupModuleProperties = 'Yritysryhmien asetukset';\r\n\tstatic RecordUserLogEntryTypeCreate = 'Luonti';\r\n\tstatic SendEmailInvitation = 'Lähetä kutsu järjestelmään sähköpostilla';\r\n\tstatic SendReadReceiptInfo = 'Kuittaa viesti luetuksi ✓-painikkeesta.';\r\n\tstatic SavingRecordUserTransferredPropertyParameterWasNotSuccessfulErrorParameter = 'Luovutetun omaisuuden \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic EmailAddressMustBeValid = 'Sähköpostiosoitteen täytyy olla oikeellinen sähköpostiosoite!';\r\n\tstatic AddEventTypeCsToEvent = 'Lisää tarkenne 3 plus-painikkeesta.';\r\n\tstatic DoYouReallyWantToRemoveSelectedCalendarTaskHandlers = 'Haluatko todella poistaa valitut vastuuhenkilöt?';\r\n\tstatic Uploaded = 'Ladattu';\r\n\tstatic UnreadInstantMessages = 'Lukemattomia viestejä';\r\n\tstatic SendingEmail = 'Lähettää sähköpostia...';\r\n\tstatic TaskTypeNameMustBeDefined = 'Lomakeen nimi täytyy määritellä!';\r\n\tstatic ExpiringIn180Days = 'Sisällytä 180 päivässä vanhenevat koulutukset';\r\n\tstatic CompanyGroupCodeMustBeDefined = 'Yritysryhmän tunnus täytyy määritellä!';\r\n\tstatic Modified = 'Muokattu';\r\n\tstatic EmailNotificationInUse = 'Haluan vastaanottaa järjestelmän lähettämiä sähköposti-ilmoituksia';\r\n\tstatic FormColumnWidthPrint = 'Sarakkeen leveys tulosteessa';\r\n\tstatic Unlimited = 'Rajoittamaton';\r\n\tstatic FolderParameterAlreadyExists = 'Kansio \\'{0}\\' on jo olemassa!';\r\n\tstatic EditRecordUser = 'Muokkaa henkilöstökorttia';\r\n\tstatic EventReport = 'Havaintoraportti';\r\n\tstatic DocumentContentsSearch = 'Haku dokumentin sisällöstä';\r\n\tstatic ZipFileParameterNotFound = 'Zip-tiedostoa \\'{0}\\' ei löytynyt!';\r\n\tstatic MyLastModifications = 'Käyttäjän viimeisimmät muutokset';\r\n\tstatic ExternalSystemUserCodeClaimNotFound = 'Käyttäjän ominaisuutta \\'externalSystemUserCode\\' ei löytynyt!';\r\n\tstatic AllUserGroups = 'Kaikki käyttäjäryhmät';\r\n\tstatic DocumentApproval = 'Dokumentin hyväksyntä';\r\n\tstatic IgnoreFolderPatterns = 'Kansioiden piilottamisessa käytettävä like-ehto';\r\n\tstatic DeletingCompanyGroupsParameterWasNotSuccessfulConcurrencyError = 'Yritysryhmien \\'{0}\\' poisto epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic LoginAddress = 'Kirjautumisosoite';\r\n\tstatic AddCompanyGroupsParameterWasNotSuccessfulErrorParameter = 'Yritysryhmien \\'{0}\\' lisäys epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic StateOpen = 'Avoin';\r\n\tstatic SavingUserParameterWasNotSuccessfulConcurrencyError = 'Käyttäjän \\'{0}\\' tallennus epäonnistui, koska käyttäjän tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic InvalidValueParameter = 'Virheellinen arvo \\'{0}\\'!';\r\n\tstatic SavingInstantMessageChannelParameterWasSuccessful = 'Keskustelun \\'{0}\\' tallennus onnistui!';\r\n\tstatic FormSizeMedium = 'Keskikokoinen';\r\n\tstatic WhistleBlowStatisticsUnreadMessages = 'Lukemattomia viestejä';\r\n\tstatic MessageTypeCodeMustBeDefined = 'Viestityypin tunnus täytyy määritellä!';\r\n\tstatic DocumentParameterOverwriteConfirmation = 'Tiedosto \\'{0}\\' löytyy jo kansiosta. Haluatko korvata olemassaolevan tiedoston?';\r\n\tstatic DeletingRecordFamiliarizationsParameterWasNotSuccessfulConcurrencyError = 'Perehdytysten \\'{0}\\' poisto epäonnistui, koska perehdytysten tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic CheckingExistanceOfFolderParameterWasNotSuccessfulErrorParameter = 'Kansion \\'{0}\\' olemassolon tarkistaminen epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic DeletingAttachmentParameterWasSuccessful = 'Liiteen \\'{0}\\' poisto onnistui!';\r\n\tstatic UserIdClaimNotFound = 'Käyttäjän ominaisuutta \\'id\\' ei löytynyt!';\r\n\tstatic SaveUserFurtherEducation = 'Tallenna jatkokoulutus';\r\n\tstatic ProjectNumber = 'Projektin numero';\r\n\tstatic DefaultDeductionWithoutTax = 'Vähennyksen oletusmäärä (ALV 0%)';\r\n\tstatic FormTextInput = 'Tekstikenttä';\r\n\tstatic EditDefaultHandlers = 'Muokkaa oletuskäsittelijöitä';\r\n\tstatic Last120Days = '120 viime päivää';\r\n\tstatic DeletingWhistleBlowCategoriesParameterWasNotSuccessfulErrorParameter = 'Ilmoitusluokkien \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic FormDropdownOptionsDialog = 'Avattavan listan vaihtoehdot';\r\n\tstatic MarkMessageAsRead = 'Kuittaa viesti luetuksi';\r\n\tstatic FileStorageQuotaGB = 'Tiedostojen tallennustilan koko (GB)';\r\n\tstatic EmptyingTaskTrashBinWasNotSuccessfulConcurrencyError = 'Tehtävien roskakorin tyhjennys epäonnistui, koska tehtäviän tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic SendMessage = 'Lähetä viesti';\r\n\tstatic RestoringTaskParameterFromTrashBinWasNotSuccessfulConcurrencyError = 'Tehtävän \\'{0}\\' palauttaminen roskakorista epäonnistui, koska tehtävän tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic SavingChartWasSuccessful = 'Kuvaajan tallennus onnistui!';\r\n\tstatic CalendarTaskCategories = 'Luokat';\r\n\tstatic PasswordHasBeenCopiedToClipboard = 'Salasana on kopioitu leikepöydälle!';\r\n\tstatic DeletingInstantMessageChannelWasSuccessful = 'Keskustelun poisto onnistui!';\r\n\tstatic TimeMustBeDefined = 'Aika täytyy määritellä!';\r\n\tstatic DoYouReallyWantToRemoveFileParameter = 'Haluatko todella poistaa tiedoston \\'{0}\\'?';\r\n\tstatic UserNotAllowedToViewNotifier = 'Rajoitettu käsittelyoikeus: Käyttäjällä ei oikeutta ilmoittajan näkymään.';\r\n\tstatic SaveComment = 'Tallenna kommentti';\r\n\tstatic AdditionalSettings = 'Lisäasetukset';\r\n\tstatic ImageProperties = 'Kuvien asetukset';\r\n\tstatic UploadDocument = 'Lisää tiedosto';\r\n\tstatic Contents = 'Sisältö';\r\n\tstatic PermissionsOtherCompanies = 'Käyttöoikeudet (muut yritykset)';\r\n\tstatic FormTextPreWrap = 'Säilytä rivinvaihdot';\r\n\tstatic SavingReportWasNotSuccessfulConcurrencyError = 'Raportin tallennus epäonnistui, koska raportin tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic Employee = 'Työntekijä';\r\n\tstatic LanguageNonLocalEnglish = 'English';\r\n\tstatic RecordUserModuleProperties = 'Henkilöstön asetukset';\r\n\tstatic EditEventType = 'Muokkaa tarkennetta 1';\r\n\tstatic UserGroups = 'Käyttäjäryhmät';\r\n\tstatic WhistleBlowStatisticsResolvedRecords = 'Ratkaistuja ilmoituksia';\r\n\tstatic DeletingWhistleBlowParameterWasSuccessful = 'Ilmoituksen \\'{0}\\' poisto onnistui!';\r\n\tstatic SelectImageFile = 'Valitse kuvatiedosto!';\r\n\tstatic DeletingFileFilterParameterWasNotSuccessfulUsedInParameterFolders = 'Tiedostosuodattimen \\'{0}\\' poisto epäonnistui, koska tiedostosuodatin on {1} kansion käytössä!';\r\n\tstatic TogglePreviewPanel = 'Näytä/piilota esikatselu';\r\n\tstatic MovingTaskParameterToTrashBinWasNotSuccessfulErrorParameter = 'Tehtävän \\'{0}\\' siirto roskakoriin epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic FolderProperties = 'Kansion ominaisuudet';\r\n\tstatic DeletingDirectoryItemFolderParameterWasNotSuccessfulConcurrencyError = 'Kansion \\'{0}\\' poisto epäonnistui, koska kansion tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic NewCompanyInformation = 'Uusi yritys';\r\n\tstatic ShowOnMap = 'Näytä kartalla';\r\n\tstatic DeletingTaskPrioritiesParameterWasSuccessful = 'Tehtävien prioriteettien \\'{0}\\' poisto onnistui!';\r\n\tstatic TaskMustBeSavedBeforeNewDataRowsCanBeAdded = 'Tehtävä täytyy tallentaa ennen rivien lisäämistä!';\r\n\tstatic DeletingCompanyParameterWasNotSuccessfulErrorParameter = 'Yrityksen \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic CommentMustNotBeEmpty = 'Kommentti ei saa olla tyhjä!';\r\n\tstatic EventsToApprove = 'Havaintoja hyväksyttävänä';\r\n\tstatic DeletingTaskTypesParameterWasNotSuccessfulErrorParameter = 'Tehtävätyyppien \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic FileFilterCodeIsAlreadyInUse = 'Tiedostosuodattimen tunnus on jo käytössä!';\r\n\tstatic RemoveFurtherEducation = 'Poista jatkokoulutus';\r\n\tstatic MessageStartDateMustBeDefined = 'Viestin näkyvissä alkaen päivä täytyy määritellä!';\r\n\tstatic DefaultEventHandlersAndNotifiedPersons = 'Oletuskäsittelijät ja ilmoitukset';\r\n\tstatic DeletingPartnersParameterWasNotSuccessfulConcurrencyError = 'Kumppanien \\'{0}\\' poisto epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic EventTypeMustBeDefined = 'Tarkenne 1 täytyy määritellä!';\r\n\tstatic WhistleBlowCategory = 'Ilmoitusluokka';\r\n\tstatic FileParameterAlreadyExistsInFileSystem = 'Tiedosto \\'{0}\\' on jo olemassa tiedostojärjestelmässä!';\r\n\tstatic DeletingTaskStatesParameterWasSuccessful = 'Tehtävien tilojen \\'{0}\\' poisto onnistui!';\r\n\tstatic ModifyExistingDocumentTemplate = 'Muokkaa olemassaolevaa mallia';\r\n\tstatic CalendarTaskSeries = 'Sarja';\r\n\tstatic TitleMustBeDefined = 'Otsikko täytyy määritellä!';\r\n\tstatic AddUserParameterWasNotSuccessfulConcurrencyError = 'Käyttäjätilin \\'{0}\\' lisäys epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic WhistleBlowChannelWasNotFoundExplanation = 'Tarkista että syötit ilmoituskanavan internet-osoitteen oikein selaimen osoiteriville.';\r\n\tstatic FormInitializeFromSavedRowDialog = 'Alusta oletusarvo tallennetulta riviltä';\r\n\tstatic RemoveUserAndKeepRecordUser = 'Poista käyttäjätili ja säilytä henkilöstökortti';\r\n\tstatic Keywords = 'Avainsanat';\r\n\tstatic SelectRecordUsers = 'Valitse henkilöstökortit';\r\n\tstatic AddCompanyParameterWasNotSuccessfulErrorParameter = 'Yrityksen \\'{0}\\' lisäys epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic UserRecordStatisticsExpiredQualifications = 'Vanhentuneita pätevyysvaatimuksia';\r\n\tstatic DaysAgo120 = '120 päivää sitten';\r\n\tstatic WhistleBlowResolutionOther = 'Muu';\r\n\tstatic AddCompanyGroupParameterWasSuccessful = 'Yritysryhmän \\'{0}\\' lisäys onnistui!';\r\n\tstatic ZipFileCreationFailed = 'Zip-tiedoston luominen epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic EmailsSentSuccessfully = 'Sähköpostien lähettäminen onnistui!';\r\n\tstatic AccessRightReadTasks = 'Tehtävien suoritus';\r\n\tstatic DeletingCompaniesParameterWasNotSuccessfulConcurrencyError = 'Yritysten \\'{0}\\' poisto epäonnistui, koska yritysten tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic AddMessageType = 'Lisää viestityyppi';\r\n\tstatic AddBasicEducation = 'Lisää peruskoulutus';\r\n\tstatic SaveAndSend = 'Tallenna ja lähetä';\r\n\tstatic RemoveTaskPermanently = 'Poista tehtävä lopullisesti';\r\n\tstatic NotAssigned = 'Ei käsittelyssä';\r\n\tstatic EditUnit = 'Muokkaa yksikköä';\r\n\tstatic FormColumnWidth = 'Sarakkeen leveys';\r\n\tstatic PasswordMustContainLowercaseChar = 'Salasanan täytyy sisältää pienaakkonen!';\r\n\tstatic ServiceFeePercent = 'Palveluprovisio (%)';\r\n\tstatic ImportingUsersParameterWasNotSuccessfulErrorParameter = 'Käyttäjätilien \\'{0}\\' tuonti epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic ApprovedEvent = 'Hyväksynyt havainnon';\r\n\tstatic RecordFurtherEducationParameterNotFound = 'Jatkokoulutusta \\'{0}\\' ei löytynyt!';\r\n\tstatic PasswordChangeRequestHasBeenExpired = 'Salasanan vaihtopyyntö \\'{0}\\' on vanhentunut!';\r\n\tstatic RecordUserFamiliarizationParameterNotFound = 'Henkilöstökortin perehdytystä \\'{0}\\' ei löytynyt!';\r\n\tstatic MessageDateMustBeDefined = 'Viestin päiväys täytyy määritellä!';\r\n\tstatic InUse = 'Käytössä';\r\n\tstatic CurrentWorkPlace = 'Nykyinen työpaikka';\r\n\tstatic AllUnits = 'Kaikki yksiköt';\r\n\tstatic Remainders = 'Muistutukset';\r\n\tstatic InstantMessageChannelParameterNotFound = 'Keskustelua \\'{0}\\' ei löytynyt!';\r\n\tstatic Orientation = 'Suunta';\r\n\tstatic YouHaveUnapprovedChangesDoYouWantApproveChanges = 'Et ole hyväksynyt tekemiäsi muutoksia. Hyväksytäänkö muutokset?';\r\n\tstatic SavingUserParameterParameterWasNotSuccessfulErrorParameter = 'Käyttäjäasetuksen \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic UseInheritedContentFiltering = 'Käytä perittyä sisällön suodatusta';\r\n\tstatic PreviousCalendarYear = 'Edellinen kalenterivuosi';\r\n\tstatic ToggleArchivedFurtherEducations = 'Näytä/piilota arkistoidut jatkokoulutukset';\r\n\tstatic Intern = 'Työharjoittelija';\r\n\tstatic DecreasingVersionHistorySizeRemovesCurrentlySavedVersionHistoryRecords = 'Huom! Versiohistorian pienentäminen poistaa aiemmin tallennettuja versioita versiohistoriasta.';\r\n\tstatic PublishVersionHistorySize = 'Versiohistorian koko julkaisuissa';\r\n\tstatic Keyword = 'Avainsana';\r\n\tstatic DeletingRecordUserEmploymentParameterWasSuccessful = 'Työpaikan \\'{0}\\' poisto onnistui!';\r\n\tstatic RecordFamiliarizationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted = 'Perehdytys \\'{0}\\' on käytössä {1} henkilöstökortissa eikä sitä voi poistaa!';\r\n\tstatic InstantMessageUserInvitationAcceptTypeCannotInvite = 'Minua ei voi kutsua keskusteluun';\r\n\tstatic SelectUrgencyClass = 'Valitse kiireellisyysluokka';\r\n\tstatic Restore = 'Palauta';\r\n\tstatic MaximumTotalSizeOfAttachmentsIsParameterMB = 'Liitteiden suurin yhteiskoko on {0} MB!';\r\n\tstatic ResolutionDescription = 'Ratkaisun kuvaus';\r\n\tstatic EmptyTaskTrashBinConfirmation = 'Haluatko todella poistaa kaikki tehtävät roskakorista lopullisesti? Poistettuja tehtäviä ei ole mahdollista palauttaa.';\r\n\tstatic DeletingDocumentTemplatesParameterWasNotSuccessfulConcurrencyError = 'Dokumenttimallien \\'{0}\\' poisto epäonnistui, koska dokumenttimallien tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic LanguageNonLocalFinnish = 'Suomi';\r\n\tstatic VersionHistory = 'Versiohistoria';\r\n\tstatic Min = 'Min';\r\n\tstatic EditEventTypeC = 'Muokkaa tarkennetta 3';\r\n\tstatic Choose = 'Valitse';\r\n\tstatic QualificationIsValid = 'Pätevyysvaatimus on voimassa';\r\n\tstatic ChangingPasswordWasNotSuccessfulConcurrencyError = 'Salasanan vaihto epäonnistui, koska käyttäjän tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic DeletingEventUrgencyClassesParameterWasSuccessful = 'Kiireellisyysluokkien \\'{0}\\' poisto onnistui!';\r\n\tstatic RecordUserExcelSalary = 'Palkkaus';\r\n\tstatic Event = 'Havainto';\r\n\tstatic RestoreTaskFromTrashBin = 'Palauta tehtävä roskakorista';\r\n\tstatic RemovingEventHandlersWasSuccessful = 'Käsittelijöiden poisto onnistui!';\r\n\tstatic Anonymity = 'Anonymiteetti';\r\n\tstatic FormFalse = 'Epätosi';\r\n\tstatic SearchCondition = 'hakuehto';\r\n\tstatic Category = 'Luokka';\r\n\tstatic DeletingEventParameterWasNotSuccessfulConcurrencyError = 'Havainnon \\'{0}\\' poisto epäonnistui, koska havainnon tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic SharedFilter = 'Jaettu suodatin';\r\n\tstatic AddRemainder = 'Lisää muistutus';\r\n\tstatic TrashBin = 'Roskakori';\r\n\tstatic SelectCategory = 'Valitse luokka';\r\n\tstatic UsedInParameterTasks = 'Käytetty {0} tehtävässä';\r\n\tstatic WhistleBlowSeverityNormal = 'Normaali';\r\n\tstatic SearchEvents = 'Hae havaintoja';\r\n\tstatic ClosedEvent = 'Sulkenut havainnon';\r\n\tstatic NoCalendarTasksToShow = 'Ei näytettäviä tapahtumia';\r\n\tstatic PreviewPrint = 'Esikatselu (tuloste)';\r\n\tstatic SavingEventTypesWasNotSuccessfulErrorParameter = 'Tarkenteen 1 tallennus epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic WhistleBlowArchivingTypeChangeState = 'Siirrä ilmoitus Arkistoitu-tilaan';\r\n\tstatic AddCompanyGroups = 'Lisää yritysryhmät';\r\n\tstatic FolderName = 'Kansion nimi';\r\n\tstatic DeletingCalendarTaskCategoryParameterWasNotSuccessfulErrorParameter = 'Luokan \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic DeletingTaskTypeParameterWasSuccessful = 'Tehtävätyypin \\'{0}\\' poisto onnistui!';\r\n\tstatic InstantMessageChannelInternal = 'Yrityksen sisäinen';\r\n\tstatic AdministratorUserCodeMustBeDefined = 'Järjestelmänvalvojan käyttäjätunnus täytyy määritellä!';\r\n\tstatic CreatingCompressedFileWasNotSuccessfulErrorParameter = 'Tiedostojen pakkaus epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic DoYouReallyWantToRemoveSharedDocumentTemplateParameter = 'Haluatko todella poistaa jaetun dokumenttimallin \\'{0}\\'?';\r\n\tstatic DeletingUserParametersWasNotSuccessfulConcurrencyError = 'Käyttäjäasetusten poisto epäonnistui, koska käyttäjäasetusten tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic DeletingAttachmentParameterWasNotSuccessfulErrorParameter = 'Liiteen \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic DeletingDocumentTemplatesParameterWasSuccessful = 'Dokumenttimallien \\'{0}\\' poisto onnistui!';\r\n\tstatic PanelName = 'Panelin nimi';\r\n\tstatic UserCodeParameterMustBeValid = 'Käyttäjätunnus täytyy olla 8-50 merkkiä pitkä eikä siinä saa olla välilyöntejä (\\'{0}\\').';\r\n\tstatic RemovePartner = 'Poista kumppani';\r\n\tstatic SourceDescription = 'Lähteen kuvaus';\r\n\tstatic CopyingFileParameterWasNotSuccessfulErrorParameter = 'Tiedoston \\'{0}\\' kopioiminen tiedostojärjestelmässä tiedostoksi \\'{1}\\' epäonnistui! Virhe: \\'{2}\\'';\r\n\tstatic Other = 'Muu';\r\n\tstatic DeletingPartnerParameterWasNotSuccessfulConcurrencyError = 'Kumppanin \\'{0}\\' poisto epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic FormulaDateAndTimeDiffInTimeSpan = 'Aikaero tunteina';\r\n\tstatic AccessRightWriteRecords = 'Kaikki yksikön henkilöstökortit';\r\n\tstatic AdditionalPermissionARecords = 'Arkistointi ja poisto';\r\n\tstatic SavingTaskDataRowWasNotSuccessfulConcurrencyError = 'Tehtävärivin tallennus epäonnistui, koska tehtävärivin tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic UserName = 'Käyttäjätunnus';\r\n\tstatic ReadingFileParameterWasNotSuccessfulErrorParameter = 'Tiedoston \\'{0}\\' lukeminen tiedostojärjestelmästä epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic DeletingCalendarTaskParameterWasNotSuccessfulConcurrencyError = 'Tapahtuman \\'{0}\\' poisto epäonnistui, koska tapahtuman tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic Approval = 'Hyväksyntä';\r\n\tstatic ExternalIntraSystemUserTokenMustBeDefined = 'Käyttäjä-token eSalkku-järjestelmässä täytyy määritellä!';\r\n\tstatic Repeated = 'Toistuva';\r\n\tstatic WhistleBlowChannelMustHaveAtLeastOneAdministrator = 'Ilmoituskanavalla täytyy olla ainakin yksi ylläpitäjä!';\r\n\tstatic Internet = 'Internet';\r\n\tstatic AgencyWorker = 'Vuokratyöntekijä';\r\n\tstatic Remove = 'Poista';\r\n\tstatic EmailSendDate = 'Sähköpostin päiväys';\r\n\tstatic IpAddress = 'IP-osoite';\r\n\tstatic DeletingCompanyGroupsParameterWasNotSuccessfulErrorParameter = 'Yritysryhmien \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic Text = 'Teksti';\r\n\tstatic RecordBasicEducationCodeIsAlreadyInUse = 'Peruskoulutuksen nimi on jo käytössä!';\r\n\tstatic InstantMessageChannelGroupExternal = 'Ryhmä (yritysten välinen)';\r\n\tstatic Yearly = 'Vuosittain';\r\n\tstatic AddForm = 'Lisää lomake';\r\n\tstatic Test = 'Testaa';\r\n\tstatic DeletingEventPartnerParameterWasSuccessful = 'Havaintokumppanin \\'{0}\\' poisto onnistui!';\r\n\tstatic CompanyNumber = 'Yritysnumero';\r\n\tstatic CalendarTaskParameterNotFound = 'Tapahtumaa \\'{0}\\' ei löytynyt!';\r\n\tstatic FormSizeExtraLarge = 'Hyvin suuri';\r\n\tstatic PublishVersion = 'Julkaisuversio';\r\n\tstatic UserCanBeSelectedAsEventHandler = 'Käyttäjä voidaan asettaa havaintojen käsittelijäksi';\r\n\tstatic RemoveTaskHandler = 'Poista käsittelijä';\r\n\tstatic ClearSubUnitDefaultHandlersAndNotifiedPersons = 'Tyhjennä aliyksiköiden oletuskäsittelijät ja tiedotettavat henkilöt';\r\n\tstatic DoYouReallyWantToRemoveSelectedForms = 'Haluatko todella poistaa valitut lomakkeet?';\r\n\tstatic SavingWhistleBlowCategoryParameterWasNotSuccessfulConcurrencyError = 'Ilmoitusluokan tallennus \\'{0}\\' epäonnistui, koska ilmoitusluokan tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic SavingTaskStateParameterWasNotSuccessfulErrorParameter = 'Tehtävän tilan \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic FileParameterNotFound = 'Tiedostoa \\'{0}\\' ei löytynyt!';\r\n\tstatic ByName = 'Nimen mukaan';\r\n\tstatic PrintTask = 'Tulosta tehtävä';\r\n\tstatic AddPartnerCompanies = 'Lisää kumppanit, joille yritys voi jakaa sisältöä';\r\n\tstatic AddUser = 'Lisää käyttäjätili';\r\n\tstatic DeletingUsersParameterWasNotSuccessfulErrorParameter = 'Käyttäjätilien \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic GeneralInfo = 'Yleiset tiedot';\r\n\tstatic Published = 'Julkaistu';\r\n\tstatic CurrentTopics = 'Ajankohtaista';\r\n\tstatic SaveFilter = 'Tallenna suodatin';\r\n\tstatic AddPayer = 'Lisää maksaja';\r\n\tstatic SavePasswordAndMoveToLoginPage = 'Tallenna salasana ja siirry kirjautumissivulle';\r\n\tstatic SaveAsFavorite = 'Tallenna suosikiksi';\r\n\tstatic DraftCannotBeApproved = 'Luonnosta ei voi hyväksyä!';\r\n\tstatic WhistleBlowSeverityVeryLow = 'Hyvin vähäinen';\r\n\tstatic DownloadAttachment = 'Lataa valittu liitetiedosto';\r\n\tstatic InstantMessageChannelGroupInternal = 'Ryhmä (yrityksen sisäinen)';\r\n\tstatic Publisher = 'Julkaisija';\r\n\tstatic Courses = 'kurssia';\r\n\tstatic AuthorizationLevelSuperUser = 'Superkäyttäjä';\r\n\tstatic WageGroup = 'Palkkaryhmä';\r\n\tstatic RemoveCompany = 'Poista yritys';\r\n\tstatic OnlyImageAndPdfAttachmentsAreAllowedInvalidAttachmentParamater = 'Ainoastaan pdf ja kuva-tyyppiset liitteet on sallittu! Virheelliset liitteet \\'{0}\\'.';\r\n\tstatic SavingInstantMessageChannelUserWasNotSuccessfulConcurrencyError = 'Keskustelijan tallennus epäonnistui, koska keskustelijan tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic AddEventTypesToEvent = 'Lisää tarkenne 1 plus-painikkeesta.';\r\n\tstatic UserRecordStatisticsExpiringInSixMonthsFamiliarizations = '6 kk sisällä vanhentuvia perehdytyksiä';\r\n\tstatic FileChangesCheckingAndEmailingStarted = 'Tiedostojen muutosten tarkastus ja lähetys sähköpostitse aloitettu';\r\n\tstatic DeletingWhistleBlowChannelAdminParameterWasNotSuccessfulErrorParameter = 'Ylläpitäjän \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic DocumentPublished = 'Julkaisija';\r\n\tstatic Unread = 'Lukematta';\r\n\tstatic ImportUserDialogInstruction = 'Lisää excel-tiedosto tuodaksesi käyttäjätilejä tai lataa excel-tiedoston malli, johon voit täyttää tuotavien käyttäjätilien tiedot.';\r\n\tstatic AddingEventHandlerWasNotSuccessfulErrorParameter = 'Käsittelijöiden lisäys epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic DoYouReallyWantToCreateRemainderInPast = 'Haluatko todella luoda muistutuksen menneisyyteen?';\r\n\tstatic PasswordMustContainDigitOrSpecialCharacter = 'Salasanan täytyy sisältää numero tai erikoismerkki!';\r\n\tstatic Today = 'Tänään';\r\n\tstatic SavingWhistleBlowChannelParameterWasSuccessful = 'Ilmoituskanavan \\'{0}\\' tallennus onnistui!';\r\n\tstatic DocumentModulePropertiesSaveWasSuccessful = 'Dokumenttien asetuksien tallennus onnistui!';\r\n\tstatic TasksFound = 'Tehtäviä löytyi';\r\n\tstatic UserReports = 'Henkilöstöraportit';\r\n\tstatic EditableDocumentApproveConfirmation = 'Asetetaanko hyväksyntä dokumenttiin?';\r\n\tstatic ChartProperties = 'Kuvaajan asetukset';\r\n\tstatic DeletingUserGroupsParameterWasSuccessful = 'Käyttäjäryhmien \\'{0}\\' poisto onnistui!';\r\n\tstatic CalendarTaskEditSeries = 'Muokkaa sarjaa';\r\n\tstatic ExpiresInYear = 'Vanhenee vuoden kuluessa';\r\n\tstatic Week = 'Viikko';\r\n\tstatic MaximumSizeOfFilesThatCanBeAddedInBatchIsParameterMB = 'Kerralla lisättävien tiedostojen maksimiyhteiskoko on {0} MB!';\r\n\tstatic Instructions = 'Ohjeita';\r\n\tstatic ArchivingRecordUserFamiliarizationsWasNotSuccessfulErrorParameter = 'Perehdytysten arkistointi epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic SavingEventPartnerParameterWasNotSuccessfulErrorParameter = 'Havaintokumppanin \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic EInvoiceAddress = 'Verkkolaskuosoite';\r\n\tstatic SavingApplicationPermissionsWasSuccessful = 'Asetusten tallennus onnistui!';\r\n\tstatic ExitingInstantMessageChannelWasNotSuccessfulConcurrencyError = 'Keskustelusta poistuminen epäonnistui, koska keskustelun tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic Search = 'Hae';\r\n\tstatic SavingOneTimePasswordParameterWasSuccessful = 'Kertakäyttöisen salasanan tallennus onnistui!';\r\n\tstatic DeletingRecordFurtherEducationsParameterWasSuccessful = 'Jatkokoulutusten \\'{0}\\' poisto onnistui!';\r\n\tstatic FormDropdownOption = 'Vaihtoehto';\r\n\tstatic DoYouReallyWantToRemoveTaskStateParameter = 'Haluatko todella poistaa tehtävän tilan \\'{0}\\'?';\r\n\tstatic CalendarTaskHandlerFilter = 'Vastuuhenkilö';\r\n\tstatic EventApprovalWasNotSuccessfulConcurrencyError = 'Havainnon hyväksyminen epäonnistui, koska käsittelijän tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic AddWhistleBlowChannelAdminsParameterWasNotSuccessfulErrorParameter = 'Ylläpitäjien \\'{0}\\' lisäys epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic AddCompaniesParameterWasNotSuccessfulConcurrencyError = 'Yritysten \\'{0}\\' lisäys epäonnistui, koska yritysten tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic UserIsSystemAdminClaimNotFound = 'Käyttäjän ominaisuutta \\'userIsSystemAdmin\\' ei löytynyt!';\r\n\tstatic WhistleBlowAnonymousReportInfo = 'Valitse tämä vaihtoehto, jos et halua paljastaa nimeäsi raportoinnin yhteydessä.';\r\n\tstatic DeletingWhistleBlowCategoriesParameterWasSuccessful = 'Ilmoitusluokkien \\'{0}\\' poisto onnistui!';\r\n\tstatic MaximumSizeOfAttachmentThatCanBeAddedInBatchIsParameterMB = 'Kerralla lisättävien liitteiden maksimiyhteiskoko on {0} MB!';\r\n\tstatic SavingUserGroupParameterWasNotSuccessfulConcurrencyError = 'Käyttäjäryhmän \\'{0}\\' tallennus epäonnistui, koska käyttäjäryhmän tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic EmployeeType = 'Työntekijätyyppi';\r\n\tstatic EventTypeC = 'Tarkenne 3';\r\n\tstatic EventTypeBCodeIsAlreadyInUse = 'Tarkenteen 2 nimi on jo käytössä!';\r\n\tstatic TimeSpanQuarter = 'Kvartaali';\r\n\tstatic OpenWhistleBlow = 'Avaa ilmoitus';\r\n\tstatic DeletingDirectoryItemDocumentParameterWasNotSuccessfulConcurrencyError = 'Tiedoston \\'{0}\\' poisto epäonnistui, koska tiedoston tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic UseObserverAction = 'Näytä havainnon tekijän toimenpiteet -kenttä';\r\n\tstatic LogisticVoucherCustomers = 'Asiakkaat';\r\n\tstatic PermissionToCreateEventsToPartners = 'Oikeus luoda havaintoja kumppaneille';\r\n\tstatic AmountOfComments = 'Kommenttien määrä';\r\n\tstatic DeletingOptionParameterWasNotSuccessfulErrorParameter = 'Sovellusasetuksen \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic NewCompanyMustBeSavedBeforeCompanyGroupsCanBeAdded = 'Uusi yritys täytyy tallentaan ennen yritysryhmien lisäämistä!';\r\n\tstatic UnitMustBeSelected = 'Yksikkö täytyy valita!';\r\n\tstatic AddEventHandlersToEvent = 'Lisää käsittelijä plus-painikkeesta.';\r\n\tstatic ObserverActionMustBeDefined = 'Havainnon tekijän toimenpiteet täytyy määritellä!';\r\n\tstatic AddLogisticVoucherCustomerPaymentSetting = 'Lisää laskutusasetus';\r\n\tstatic DescriptionMustBeDefined = 'Kuvaus täytyy määritellä!';\r\n\tstatic AddUsersParameterWasNotSuccessfulErrorParameter = 'Käyttäjätilien \\'{0}\\' lisäys epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic DocumentIsEmpty = 'Dokumentti on tyhjä!';\r\n\tstatic CompanyGroup = 'Yritysryhmä';\r\n\tstatic SavingEventTypeBParameterWasNotSuccessfulConcurrencyError = 'Tarkenteen 2 \\'{0}\\' tallennus epäonnistui, koska tarkenteen 2 tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic AddCompanyParameterWasNotSuccessfulConcurrencyError = 'Yrityksen \\'{0}\\' lisäys epäonnistui, koska yrityksen tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic WhistleBlowResolutionUnspecified = 'Määrittämättä';\r\n\tstatic RequestValidationErrorOnFieldParameterWithValueParameter = 'Kentän \\'{0}\\' arvo \\'{1}\\' sisältää web-sovelluksissa vaaralliseksi tulkittua sisältöä!';\r\n\tstatic FormCalculatedIntegerNumber = 'Laskettu kokonaisluku';\r\n\tstatic EventUrgencyClassParameterIsInUseInParameterEventsAndCannotBeDeleted = 'Kiireellisyysluokka \\'{0}\\' on käytössä {1} havainnossa eikä sitä voi poistaa!';\r\n\tstatic PrintTextPublished = 'Julkaistu';\r\n\tstatic SavingRecordBasicEducationParameterWasNotSuccessfulErrorParameter = 'Peruskoulutuksen \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic AddUsers = 'Lisää käyttäjätilit';\r\n\tstatic DefaultEventTypes = 'Oletustarkenteet 1';\r\n\tstatic DeletingMetadataFromFileParameterFailed = 'Metatietojen poistaminen tiedostosta \\'{0}\\' epäonnistui!';\r\n\tstatic UnitHandlingIncomingEvents = 'Yksikkö, joka käsittelee kumppanin lähettämät havainnot';\r\n\tstatic CalendarTaskOpenSeries = 'Avaa sarja';\r\n\tstatic RemoveFilter = 'Poista suodatin';\r\n\tstatic Select = 'Valitse';\r\n\tstatic ReminderMinutesBefore = 'minuuttia aikaisemmin';\r\n\tstatic RecordParameterLockingFailedRecordIsWriteLockedToUserParameter = 'Tietueen \\'{0}\\' lukitseminen epäonnistui! Tietue on kirjoituslukittu käyttäjälle \\'{0}\\'!';\r\n\tstatic Units = 'Yksiköt';\r\n\tstatic ReportsModified = 'Suosikkiraportit';\r\n\tstatic SavingTaskParameterWasNotSuccessfulConcurrencyError = 'Tehtävän \\'{0}\\' tallennus epäonnistui, koska tehtävän tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic DoYouReallyWantToUnlockTaskDataRow = 'Haluatko todella poistaa tehtävärivin lukituksen?';\r\n\tstatic Year = 'Vuosi';\r\n\tstatic EventHandlers = 'Käsittelijät';\r\n\tstatic DataTransferError = 'Tiedonsiirtovirhe!';\r\n\tstatic SendPasswordChangeEmail = 'Lähetä salasananvaihtolinkki sähköpostilla';\r\n\tstatic AddLogisticVoucherPaymentSetting = 'Lisää laskutusasetus';\r\n\tstatic WhistleBlowCategoryParameterIsInUseInParameterWhistleBlowsAndCannotBeDeleted = 'Ilmoitusluokka \\'{0}\\' on käytössä {1} ilmoituksessa eikä sitä voi poistaa!';\r\n\tstatic ModifyExistingSharedDocumentTemplate = 'Muokkaa olemassaolevaa jaettua mallia';\r\n\tstatic WhistleBlowFollowReport = 'Seuraa ilmoitusta';\r\n\tstatic DeletingCompanyParameterWasNotSuccessfulConcurrencyError = 'Yrityksen \\'{0}\\' poisto epäonnistui, koska yrityksen tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic SavingTaskStateParameterWasSuccessful = 'Tehtävän tilan \\'{0}\\' tallennus onnistui!';\r\n\tstatic MovingFilesAndDocumentsToFolderParameterWasNotSuccessfulErrorParameter = 'Tiedostojen/dokumenttien siirtäminen kansioon \\'{0}\\' epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic CopyPermissionToAllSameLevelUnits = 'Kopioi käyttöoikeus kaikkiin saman tason yksiköihin';\r\n\tstatic Default = 'Oletus';\r\n\tstatic Relation = 'Liittyy';\r\n\tstatic FormCompactStyle = 'Tiivis tyyli';\r\n\tstatic ArchivingRecordUserFurtherEducationsWasNotSuccessfulConcurrencyError = 'Jatkokoulutusten arkistointi epäonnistui, koska jatkokoulutusten tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic SavingKeywordParameterWasNotSuccessfulErrorParameter = 'Avainsanan \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic Open = 'Avaa';\r\n\tstatic DeletingFileFilterParameterWasSuccessful = 'Tiedostosuodattimen \\'{0}\\' poisto onnistui!';\r\n\tstatic CompanyGroupNameMustBeDefined = 'Yritysryhmän nimi täytyy määritellä!';\r\n\tstatic RecordUserExcelQualification = 'Pätevyysvaatimukset';\r\n\tstatic SavingEventParameterWasNotSuccessfulConcurrencyError = 'Havainnon \\'{0}\\' tallennus epäonnistui, koska havainnon tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic AddingAddRecordUserTransferredPropertiesWasNotSuccessfulErrorParameter = 'Luovutetun omaisuuden lisäys epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic Save = 'Tallenna';\r\n\tstatic UserAccountMustBeSelected = 'Käyttäjätili täytyy valita!';\r\n\tstatic SavingRecordUserParameterWasNotSuccessfulErrorParameter = 'Henkilöstökortin \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic NoReports = 'Ei raportteja!';\r\n\tstatic IncludeArchivedFurtherEducations = 'Sisällytä arkistoidut koulutukset';\r\n\tstatic DoYouReallyWantToRemoveWhistleBlowCategoryParameter = 'Haluatko todella poistaa ilmoitusluokan \\'{0}\\'?';\r\n\tstatic SavingOptionParameterWasSuccessful = 'Sovellusasetuksen \\'{0}\\' tallennus onnistui!';\r\n\tstatic MessageParameterNotFound = 'Viestiä \\'{0}\\' ei löytynyt!';\r\n\tstatic UserIsInstantMessageChannelOnlyAdministratorInParameterInstantMessageChannels = 'Käyttäjä on keskustelun ainoa ylläpitäjä {0} keskustelussa!';\r\n\tstatic AddWhistleBlow = 'Lisää ilmoitus';\r\n\tstatic Location = 'Sijainti';\r\n\tstatic DoYouWantToPublishEvent = 'Haluatko julkaista havainnon?';\r\n\tstatic EditableDocumentParameterNotFound = 'Dokumenttia \\'{0}\\' ei löytynyt!';\r\n\tstatic MessageTypesMustBeDefinedBeforeAddingMessages = 'Viestityypit täytyy määritellä ennen kuin viestejä voi lisätä!';\r\n\tstatic RemoveCalendarTaskCategory = 'Poista luokka';\r\n\tstatic DeletingInstantMessageChannelParameterWasNotSuccessfulConcurrencyError = 'Keskustelun \\'{0}\\' poisto epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic AdminMustBeDefined = 'Ylläpitäjä täytyy täytyy määritellä!';\r\n\tstatic FormBuilder = 'Lomaketyökalu';\r\n\tstatic AddCompanyGroupParameterWasNotSuccessfulErrorParameter = 'Yritysryhmän \\'{0}\\' lisäys epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic EventIsApprovedByUser = 'Käyttäjä on hyväksynyt havainnon';\r\n\tstatic ThisWeek = 'Tällä viikolla';\r\n\tstatic AccessRightReadWhistleBlow = 'Rajattu käsittely';\r\n\tstatic ExpiresInParameterMonths = 'Vanhenee {0} kuukauden kuluessa';\r\n\tstatic KeywordsAndCondition = 'Kaikki valitut avainsanat';\r\n\tstatic AddingAddRecordUserTransferredPropertiesWasSuccessful = 'Luovutetun omaisuuden lisäys onnistui!';\r\n\tstatic Permissions = 'Käyttöoikeudet';\r\n\tstatic InheritedContentFilter = '(peritty sisällön suodatus)';\r\n\tstatic UserFilterInActive = 'Pois käytöstä';\r\n\tstatic UserRecordStatisticsMissingQualifications = 'Puuttuvia pätevyysvaatimuksia';\r\n\tstatic FormulaAbs = 'Absoluuttinen arvo';\r\n\tstatic DirectoryItemDocumentsNotFound = 'Tiedostoja/dokumentteja ei löytynyt!';\r\n\tstatic Attachments = 'Liitteet';\r\n\tstatic DeletingInstantMessageUserParameterWasSuccessful = 'Keskustelijan \\'{0}\\' poisto onnistui!';\r\n\tstatic ReminderNone = 'Ei muistutusta';\r\n\tstatic RemoveMessage = 'Poista viesti';\r\n\tstatic ContentVersion = 'Sisältöversio';\r\n\tstatic PayeeUsersCanLogInToTheSystem = 'Yrityksen käyttäjät voivat kirjautua järjestelmään';\r\n\tstatic FormExpressionMustBeDefined = 'Laskukaava täytyy määritellä';\r\n\tstatic AddingEventHandlersWasSuccessful = 'Käsittelijöiden lisäys onnistui!';\r\n\tstatic AccountIBANNumber = 'IBAN-tilinumero';\r\n\tstatic PersonalIdentityCode = 'Henkilötunnus';\r\n\tstatic DoYouReallyWantToRemoveSelectedRecordFamiliarizations = 'Haluatko todella poistaa valitut perehdytykset?';\r\n\tstatic DoYouReallyWantToRemoveEventTypeCParameter = 'Haluatko todella poistaa tarkenteen 3 \\'{0}\\'?';\r\n\tstatic SavingCompanyGroupParameterWasNotSuccessfulConcurrencyError = 'Yritysryhmän \\'{0}\\' tallennus epäonnistui, koska yritysryhmän tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic DeletingRecordFamiliarizationParameterWasNotSuccessfulConcurrencyError = 'Perehdytyksen \\'{0}\\' poisto epäonnistui, koska perehdytyksen tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic FormSizeDefault = 'Normaali';\r\n\tstatic UserRecordStatisticsExpiredFamiliarizations = 'Vanhentuneita perehdytyksiä';\r\n\tstatic Expand = 'Laajenna';\r\n\tstatic UserRecordStatisticsExpiringInSixMonthsFurtherEducations = '6 kk sisällä vanhentuvia jatkokoulutuksia';\r\n\tstatic ChangedEventUnit = 'Muuttanut havainnon yksikköä';\r\n\tstatic ReadReceiptGivenPlur = 'Kuitatut';\r\n\tstatic DateMustBeDefined = 'Päiväys täytyy määritellä!';\r\n\tstatic EventTypeParameterNotFound = 'Tarkennetta 1 \\'{0}\\' ei löytynyt!';\r\n\tstatic DeletingRecordFurtherEducationGroupParameterWasNotSuccessfulConcurrencyError = 'Jatkokoulutusryhmän \\'{0}\\' poisto epäonnistui, koska jatkokoulutusryhmän tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic SavingMessageSendPushParameterWasSuccessful = 'Push-viestilokin tallennus viestille \\'{0}\\' onnistui!';\r\n\tstatic DoYouReallyWantToRemoveSelectedCalendarTaskCategories = 'Haluatko todella poistaa valitut luokat?';\r\n\tstatic LoadMore = 'Lataa lisää';\r\n\tstatic DeletingDefaultEventHandlerParameterWasSuccessful = 'Oletuskäsittelijän \\'{0}\\' poisto onnistui!';\r\n\tstatic AccessRightReadEvents = 'Havaintojen luonti';\r\n\tstatic RecordUserWithSameFirstNameMiddleNameAndLastNameAlreadyExists = 'Henkilöstökortti samalla etunimellä \\'{0}\\', sukunimellä \\'{2}\\' ja muilla etunimillä \\'{1}\\' on jo olemassa!';\r\n\tstatic PrivacyPolicyUrlMustBeDefined = 'Tietosuojaselosteen web-osoite täytyy täytyy määritellä!';\r\n\tstatic ForwardMessage = 'Lähetä edelleen';\r\n\tstatic EventTypeBParameterNotFound = 'Tarkennetta 2 \\'{0}\\' ei löytynyt!';\r\n\tstatic GroupByEducation = 'Koulutuksittain';\r\n\tstatic DeletingUserGroupParameterWasSuccessful = 'Käyttäjäryhmän \\'{0}\\' poisto onnistui!';\r\n\tstatic SelectEventTypeC = 'Valitse tarkenne 3';\r\n\tstatic RefreshList = 'Päivitä lista';\r\n\tstatic NewPrint = 'Uusi tuloste';\r\n\tstatic DeletingTaskPriorityParameterWasNotSuccessfulConcurrencyError = 'Tehtävän prioriteetin \\'{0}\\' poisto epäonnistui, koska tehtävän prioriteetin tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic NewInstantMessageChannelGroup = 'Uusi ryhmä';\r\n\tstatic ChangedUrgencyClass = 'Muuttanut havainnon kiireellisyysluokkaa';\r\n\tstatic SavingOptionParameterWasNotSuccessfulConcurrencyError = 'Sovellusasetuksen \\'{0}\\' tallennus epäonnistui, koska sovellusasetuksen tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic Next = 'Seuraava';\r\n\tstatic DeletingUserGroupUsersOfCompanyParameterWasSuccessful = 'Yritykseen \\'{0}\\' liittyvien käyttäjäryhmäliittymien poisto onnistui!';\r\n\tstatic AllUsersOfTheUnit = 'Kaikki yksikön käyttäjät';\r\n\tstatic ClickToChangeTheLogo = 'Klikkaa vaihtaaksesi logoa';\r\n\tstatic DeletingTaskStatesParameterWasNotSuccessfulConcurrencyError = 'Tehtävien tilojen \\'{0}\\' poisto epäonnistui, koska tehtävien tilojen tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic TargetCompany = 'Kohdeyritys';\r\n\tstatic SavingRecordUserParameterWasNotSuccessfulConcurrencyError = 'Henkilöstökortin \\'{0}\\' tallennus epäonnistui, koska henkilöstökortin tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic FamiliarizationTime = 'Perehdytysaika';\r\n\tstatic AddPartner = 'Lisää kumppani';\r\n\tstatic CopyingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulConcurrencyError = 'Kansion \\'{0}\\' kopioiminen kansioon \\'{1}\\' epäonnistui, koska kansion tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic EditWhistleBlowChannel = 'Muokkaa ilmoituskanavaa';\r\n\tstatic DocumentNameIsIllegal = 'Dokumentin nimi ei ole sallittu (varattu nimi)!';\r\n\tstatic ByDate = 'Päiväyksen mukaan';\r\n\tstatic FolderMustBeEmptyBeforeItCanBeRemoved = 'Poistettavan kansion täytyy olla tyhjä!';\r\n\tstatic UserLastNameMustBeDefined = 'Käyttäjän sukunimi täytyy määritellä!';\r\n\tstatic SavingOneTimePasswordWasNotSuccessfulErrorParameter = 'Kertakäyttöisen salasanan tallennus epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic FullNameClaimNotFound = 'Käyttäjän ominaisuutta \\'nimi\\' ei löytynyt!';\r\n\tstatic RenewPersonalizationWithUser = 'Korvaa yksilöintitiedot valitun käyttäjätilin tiedoilla';\r\n\tstatic SavingUserParameterWasNotSuccessfulErrorParameter = 'Käyttäjän \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic AddSalaryRowToMultipleUserRecords = 'Lisää palkkarivi useaan henkilöstökorttiin';\r\n\tstatic AddingTaskHandlerWasNotSuccessfulErrorParameter = 'Käsittelijöiden lisäys epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic RestoringTaskParameterFromTrashBinWasNotSuccessfulErrorParameter = 'Tehtävän \\'{0}\\' palauttaminen roskakorista epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic MovingFolderDirectoryItemParameterToFolderParameterWasSuccessful = 'Kansion \\'{0}\\' siirtäminen kansioon \\'{1}\\' onnistui!';\r\n\tstatic VersionProperties = 'Version tiedot';\r\n\tstatic LastName = 'Sukunimi';\r\n\tstatic DoYouReallyWantToRemoveRecordFurtherEducationGroupParameter = 'Haluatko todella poistaa jatkokoulutusryhmän \\'{0}\\'?';\r\n\tstatic FormLineBreak = 'Rivinvaihto';\r\n\tstatic FormTrue = 'Tosi';\r\n\tstatic AttachmentParameterNotFound = 'Liitetiedostoa \\'{0}\\' ei löytynyt!';\r\n\tstatic UnlockingEventParameterWasNotSuccessful = 'Havainnon \\'{0}\\' lukituksen poisto epäonnistui!';\r\n\tstatic AddUserGroupsParameterWasSuccessful = 'Käyttäjäryhmien \\'{0}\\' lisäys onnistui!';\r\n\tstatic EditInstantMessageChannel = 'Muokkaa keskustelua';\r\n\tstatic UserCodeClaimNotFound = 'Käyttäjän ominaisuutta \\'code\\' ei löytynyt!';\r\n\tstatic WhistleBlowSeverityHigh = 'Vakava';\r\n\tstatic MessageMustBeSavedBeforeAttachmentsCanBeAdded = 'Viesti täytyy tallentaa ennen liitteiden lisäämistä!';\r\n\tstatic ApproveEventHandlerConfirmation2 = 'Haluatko todella hyväksyä havainnon?';\r\n\tstatic SavingDirectoryItemPermissionsWasSuccessful = 'Kansioiden oikeuksien tallennus onnistui!';\r\n\tstatic WhistleBlowStatisticsInProgressRecords = 'Tutkittavia ilmoituksia';\r\n\tstatic SearchFurtherEducations = 'Hae jatkokoulutuksia';\r\n\tstatic MiddleName = 'Muut etunimet';\r\n\tstatic DeletingPartnerParameterWasNotSuccessfulErrorParameter = 'Kumppanin \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic SavingRecordFurtherEducationParameterWasNotSuccessfulConcurrencyError = 'Jatkokoulutuksen tallennus \\'{0}\\' epäonnistui, koska jatkokoulutuksen tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic DoYouReallyWantToUnlockCalendarTask = 'Haluatko todella poistaa tehtävän \\'{0}\\' lukituksen?';\r\n\tstatic MoneyOut = 'Lähtevä raha';\r\n\tstatic SavingUnitPermissionsWasNotSuccessfulErrorParameter = 'Käyttöoikeuksien tallennus yksiköille epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic MovingTaskParameterToTrashBinWasSuccessful = 'Tehtävä \\'{0}\\' siirretty roskakoriin!';\r\n\tstatic Paste = 'Liitä';\r\n\tstatic SavingTaskDataRowWasSuccessful = 'Tehtävärivin tallennus onnistui!';\r\n\tstatic WhistleBlowSourceUnspecified = 'Määrittämättä';\r\n\tstatic GetPhoto = 'Ota valokuva';\r\n\tstatic CreatingNotifications = 'Luo ilmoituksia...';\r\n\tstatic SavingUserGroupParameterWasSuccessful = 'Käyttäjäryhmän \\'{0}\\' tallennus onnistui!';\r\n\tstatic WhistleBlowDashboard = 'Whistleblower etusivu';\r\n\tstatic FormDropdowns = 'Avattavat luettelot';\r\n\tstatic ChangePassword = 'Vaihda salasana';\r\n\tstatic EventPartnerParameterNotFound = 'Havaintokumppania \\'{0}\\' ei löytynyt!';\r\n\tstatic SelectDocumentTemplate = 'Valitse dokumenttimalli';\r\n\tstatic DoYouReallyWantToRemoveSelectedKeywords = 'Haluatko todella poistaa valitut keywords?';\r\n\tstatic PrintOrientation = 'Tulostussuunta';\r\n\tstatic AddRecordUserAndUserAccount = 'Lisää henkilöstökortti ja muodosta käyttäjätili';\r\n\tstatic Source = 'Lähde';\r\n\tstatic LoggedInUserCannotBeDeleted = 'Käyttäjä ei voi poistaa itseään!';\r\n\tstatic DeletingPartnersParameterWasNotSuccessfulErrorParameter = 'Kumppanien \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic RemoveSharedDocumentTemplate = 'Poista jaettu dokumenttimalli';\r\n\tstatic AddHandlers = 'Lisää käsittelijät';\r\n\tstatic WhistleBlowInformantButtonHint = 'Älä sisällytä ilmoitukseen arkaluonteisia henkilötietoja, elleivät ne ole välttämättömiä ilmoituksen kannalta.';\r\n\tstatic UnpublishingEditableDocumentParameterWasSuccessful = 'Dokumentin \\'{0}\\' julkaisun poisto onnistui!';\r\n\tstatic DoYouReallyWantToRemovePartnerParameter = 'Haluatko todella poistaa kumppanin \\'{0}\\'?';\r\n\tstatic DeletingFileFiltersParameterWasSuccessful = 'Tiedostosuodattimien \\'{0}\\' poisto onnistui!';\r\n\tstatic DeletingUsersParameterWasNotSuccessfulConcurrencyError = 'Käyttäjätilien \\'{0}\\' poisto epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic AddAttachementsToEvent = 'Lisää liite plus-painikkeesta.';\r\n\tstatic UserGroupCodeMustBeDefined = 'Käyttäjäryhmän tunnus täytyy määritellä!';\r\n\tstatic AddDefaultEventType = 'Lisää oletustarkenne 1';\r\n\tstatic Last30Days = '30 viime päivää';\r\n\tstatic DoYouReallyWantToRemoveSelectedTaskStates = 'Haluatko todella poistaa valitut tehtävien tilat?';\r\n\tstatic ArchivingRecordUserFamiliarizationsWasSuccessful = 'Perehdytysten arkistointi onnistui!';\r\n\tstatic UnitParameterNotFound = 'Yksikköä \\'{0}\\' ei löytynyt!';\r\n\tstatic AdvancePaymentReportPath = 'Ennakkomaksuraportin sijainti';\r\n\tstatic CalendarTaskRepetitionRepeatIntervalMonthlySuffix = 'kuukauden välein';\r\n\tstatic AddTransferredProperties = 'Lisää luovutettu omaisuus';\r\n\tstatic DeletingEventUrgencyClassesParameterWasNotSuccessfulConcurrencyError = 'Kiireellisyysluokkien \\'{0}\\' poisto epäonnistui, koska kiireellisyysluokkien tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic ChangingPasswordWasNotSuccessfulErrorParameter = 'Salasanan vaihto epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic WhistleBlowChannelPageNameCodeIsAlreadyInUse = 'Ilmoituskanavan sivun nimi on jo käytössä!';\r\n\tstatic PasswordConfirmationDoesNotMatchPassword = 'Salasanan vahvistus ei ole sama kuin salasana!';\r\n\tstatic DeletingUserParametersWasNotSuccessfulErrorParameter = 'Käyttäjäasetusten poisto epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic DeletingInstantMessageWasNotSuccessfulConcurrencyError = 'Pikaviestin poisto epäonnistui, koska pikaviestin tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic AddedComment = 'Lisännyt kommentin';\r\n\tstatic ParameterResults = '({0} tulosta)';\r\n\tstatic UpdatingApplication = 'Päivitetään sovellusta...';\r\n\tstatic EventPartners = 'Havaintokumppanit';\r\n\tstatic Ends = 'Loppuu';\r\n\tstatic CopyOrMoveFilesDocuments = 'Kopioi tai siirrä valitut tiedostot/dokumentit';\r\n\tstatic PortalInUse = 'Kirjautumissivusto käytössä';\r\n\tstatic PaymentTermInDays = 'Maksuaika päivinä';\r\n\tstatic CopyOrMoveFolder = 'Kopioi tai siirrä kansio';\r\n\tstatic BasicEducation = 'Peruskoulutus';\r\n\tstatic SelectDocumentInListToSeeThePreview = 'Valitse dokumentti listasta nähdäksesi sen esikatselussa';\r\n\tstatic DefaultLanguage = 'Kieli';\r\n\tstatic EditDefaultTaskType = 'Muokkaa oletustehtävätyyppiä';\r\n\tstatic DeletingCompanyGroupsParameterWasSuccessful = 'Yritysryhmien \\'{0}\\' poisto onnistui!';\r\n\tstatic SavingTaskParameterWasSuccessful = 'Tehtävän \\'{0}\\' tallennus onnistui!';\r\n\tstatic SelectCustomer = 'Valitse asiakas';\r\n\tstatic SavingWhistleBlowChannelParameterWasNotSuccessfulConcurrencyError = 'Ilmoituskanavan tallennus \\'{0}\\' epäonnistui, koska ilmoituskanavan tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic NotRepeated = 'Ei toistuva';\r\n\tstatic DeletingUserParametersWasSuccessful = 'Käyttäjäasetusten poisto onnistui!';\r\n\tstatic EditDefaultEventHandlersAndNotifiedPersons = 'Muokkaa oletuskäsittelijöitä ja tiedotettavia henkilöitä';\r\n\tstatic TaskHandlerParameterNotFound = 'Käsittelijää \\'{0}\\' ei löytynyt!';\r\n\tstatic SavingUserParameterParameterWasSuccessful = 'Käyttäjäasetuksen \\'{0}\\' tallennus onnistui!';\r\n\tstatic FilesParameterAreEmpty = 'Tiedostot \\'{0}\\' ovat tyhjiä!';\r\n\tstatic FolderNameIsTooLong = 'Kansion nimi \\'{0}\\' on liian pitkä!';\r\n\tstatic FileUploadWasSuccessful = 'Tiedostojen lisäys onnistui!';\r\n\tstatic WaitingToBeApproved = 'Odottaa hyväksyntää';\r\n\tstatic EditDefaultTaskState = 'Muokkaa tehtävän oletustilaa';\r\n\tstatic WhistleBlowState = 'Ilmoituksen tila';\r\n\tstatic AddChildEventTypeC = 'Lisää alitarkenne 3';\r\n\tstatic SelectReminder = 'Valitse muistutus';\r\n\tstatic CanShareContentToCompanies = 'Kumppanit, joille yritys voi jakaa sisältöä';\r\n\tstatic VersionParameterPublishedAsPdfFile = 'Versio {0} julkaistu pdf-tiedostoksi';\r\n\tstatic UserGroupModuleProperties = 'Käyttäjäryhmien asetukset';\r\n\tstatic DeletingMessageParameterWasNotSuccessfulErrorParameter = 'Viestin \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic RemoveRecordUserAndUser = 'Poista henkilöstökortti ja käyttäjätili';\r\n\tstatic CloseSystem = 'Sulje järjestelmä';\r\n\tstatic OldestMessage = 'Vanhin viesti';\r\n\tstatic PositionErrorUnavailable = 'Sijaintitietoa ei saatavilla.';\r\n\tstatic AddNotifiedPerson = 'Lisää tiedotettava henkilö';\r\n\tstatic DeletingUserGroupsParameterWasNotSuccessfulErrorParameter = 'Käyttäjäryhmien \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic ExportToExcel = 'Vie Exceliin';\r\n\tstatic EmailSent = 'Sähköposti lähetetty';\r\n\tstatic MaximumSizeOfDocumentThatCanBeAddedInBatchIsParameterMB = 'Kerralla lisättävien dokumenttien maksimiyhteiskoko on {0} MB!';\r\n\tstatic SavingReadReceiptWasSuccessful = 'Lukukuittauksen tallennus onnistui!';\r\n\tstatic DeletingRecordFurtherEducationParameterWasNotSuccessfulErrorParameter = 'Jatkokoulutuksen \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic InstantMessageChannelArchivingTypeKeepMessages = 'Säilytä arkistoitu keskustelu viesteineen';\r\n\tstatic WhistleBlowStatisticsNewRecords = 'Uusia ilmoituksia';\r\n\tstatic FurtherEducationParameterNotFound = 'Jatkokoulutusta \\'{0}\\' ei löytynyt!';\r\n\tstatic FileRemovalWasSuccessful = 'Tiedoston poisto onnistui!';\r\n\tstatic ApprovalComment = 'Hyväksymiskommentti';\r\n\tstatic ChangeSystemLanguageToSwedish = 'Vaihda kieli ruotsiksi';\r\n\tstatic MinimumPasswordLengthMustBeAtLeastParameterCharacters = 'Salasanan vähimmäispituuden täytyy olla vähintään {0} merkkiä!';\r\n\tstatic EventTypeCodeIsAlreadyInUse = 'Tarkenteen nimi on jo käytössä!';\r\n\tstatic SavingWhistleBlowWasNotSuccessfulErrorParameter = 'Ilmoituksen tallennus epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic WhistleBlowReportHasBeenSavedBottomText = 'Sinun on tallennettava salasanasi tältä sivulta ennen kuin voit sulkea tämän sivun.';\r\n\tstatic AdministratorPasswordMustBeDefined = 'Järjestelmänvalvojan salasana täytyy määritellä!';\r\n\tstatic MessageTypeClass = 'Viestin luokka';\r\n\tstatic Returned = 'Palautettu';\r\n\tstatic AccessRightWriteWhistleBlow = 'Ilmoituksen käsittely';\r\n\tstatic PublishDate = 'Julkaisupäivä';\r\n\tstatic FormRowColumn = 'Rivin sarake';\r\n\tstatic Functions = 'Funktiot';\r\n\tstatic WhistleBlowInformantMessageConfirmation = 'Lähetetäänkö uusi viesti ilmoittajalle?';\r\n\tstatic WhistleBlowUrlInfo = 'Osoitetta voi muuttaa vain järjestelmän ylläpitäjä';\r\n\tstatic DocumentNameConstainsIllegalCharacters = 'Dokumentin nimi sisältää kiellettyjä merkkejä (<, >, :, \", /, \\, |, ? tai *) tai päättyy kiellettyyn merkkiin (., \\' \\')!';\r\n\tstatic RemoveDefaultBasicEducation = 'Poista oletusperuskoulutus';\r\n\tstatic EventTypeParameterIsInUseInParameterEventsAndCannotBeDeleted = 'Tarkenne 1 \\'{0}\\' on käytössä {1} havainnossa eikä sitä voi poistaa!';\r\n\tstatic FormMinimumValue = 'Minimiarvo';\r\n\tstatic IdCard = 'Henkilökortti';\r\n\tstatic SavingEventUrgencyClassParameterWasNotSuccessfulErrorParameter = 'Kiireellisyysluokan \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic SavingDefaultHandlersWasNotSuccessfulConcurrencyError = 'Oletuskäsittelijöiden tallennus epäonnistui, koska oletuskäsittelijöitä on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic AdditionalPermissionAInstantMessages = 'Käyttöoikeuksien hallinta';\r\n\tstatic AddEmployments = 'Lisää työpaikat';\r\n\tstatic DeletingRecordUserParameterWasSuccessful = 'Henkilöstökortin \\'{0}\\' poisto onnistui!';\r\n\tstatic AddRecordUserWithoutUserAccount = 'Lisää henkilöstökortti ilman käyttäjätiliä';\r\n\tstatic AddInstantMessageUserParameterWasSuccessful = 'Keskustelijan \\'{0}\\' lisäys onnistui!';\r\n\tstatic AddTaskPriority = 'Lisää tehtävän prioriteetti';\r\n\tstatic RemovingCalendarTaskHandlerWasNotSuccessfulErrorParameter = 'Vastuuhenkilöiden poisto epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic Total = 'Yhteensä';\r\n\tstatic DefaultEventHandlerParameterNotFound = 'Oletuskäsittelijää \\'{0}\\' ei löytynyt!';\r\n\tstatic AddEventType = 'Lisää tarkenne 1';\r\n\tstatic DeletingFileParameterWasNotSuccessfulErrorParameter = 'Tiedoston \\'{0}\\' poisto tiedostojärjestelmästä epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic CompanyCodeContainsIllegalCharacters = 'Yrityksen tunnus sisältää kiellettyjä merkkejä (., &, :, \\' \\', ö, ä, à, Ã¥, Ö, Ä, À tai Ã…)!';\r\n\tstatic SavingWhistleBlowChannelParameterWasNotSuccessfulErrorParameter = 'Ilmoituskanavan \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic ScopeUnit = 'Yksikkö';\r\n\tstatic EditEvent = 'Muokkaa havaintoa';\r\n\tstatic DoYouReallyWantToRemoveUnitParameter = 'Haluatko todella poistaa yksikön \\'{0}\\'?';\r\n\tstatic UserRecordStatisticsExpiringInSixMonthsQualifications = '6 kk sisällä vanhentuvia pätevyysvaatimuksia';\r\n\tstatic CalendarTaskChangeSelectedDateToSeeTheTasks = 'Muuta valittua päivämäärää tai tilasuodatinta nähdäksesi tapahtumat';\r\n\tstatic Addition = 'Lisä';\r\n\tstatic AccessRightReadRecords = 'Oma henkilöstökortti';\r\n\tstatic AddingAttachmentsParameterWasSuccessful = 'Liitteiden \\'{0}\\' lisäys onnistui!';\r\n\tstatic Sending = 'Lähettää...';\r\n\tstatic EventTypeBs = 'Tarkenne 2';\r\n\tstatic AttachmentImageSize = 'Liitekuvien esikatselukuvan koko';\r\n\tstatic UserEventsNotApproved = 'Käyttäjän luomia havaintoja hyväksymättä';\r\n\tstatic DeletingRecordUserEmploymentParameterWasNotSuccessfulErrorParameter = 'Työpaikan \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic DoYouReallyWantToUnlockTask = 'Haluatko todella poistaa tehtävän \\'{0}\\' lukituksen?';\r\n\tstatic FormFontSize = 'Tekstin koko';\r\n\tstatic NewTransferredPropertyMustBeSavedBeforeAttachmentsCanBeAdded = 'Uusi luovutettu omaisuus täytyy tallentaan ennen liitteiden lisäämistä!';\r\n\tstatic Name = 'Nimi';\r\n\tstatic WhistleBlowSeverityCritical = 'Hyvin vakava';\r\n\tstatic CreateReport = 'Luo raportti';\r\n\tstatic FormWidth = 'Leveys';\r\n\tstatic WhistleBlowMessageHasNotBeenSentCloseConfirmation = 'Keskeneräistä viestiä ole vielä lähetetty. Haluatko sulkea lomakkeen?';\r\n\tstatic CopyUnitDefaultHandlersAndNotifiedPersonsToAllSameLevelUnits = 'Kopioi oletuskäsittelijät ja tiedotettavat henkilöt kaikkiin saman tason yksiköihin';\r\n\tstatic TaskStateParameterNotFound = 'Tehtävän tilaa \\'{0}\\' ei löytynyt!';\r\n\tstatic DirectCosts = 'Välitön kustannus';\r\n\tstatic DeletingRecordFurtherEducationGroupParameterWasSuccessful = 'Jatkokoulutusryhmän \\'{0}\\' poisto onnistui!';\r\n\tstatic Calendar = 'Kalenteri';\r\n\tstatic ANew = 'Uusi';\r\n\tstatic DeletingKeywordsParameterWasNotSuccessfulErrorParameter = 'Avainsanojen \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic EmailAddressDoesNotExist = 'Sähköpostiosoitetta ei löytynyt!';\r\n\tstatic CurrentCalendarYear = 'Kuluva kalenterivuosi';\r\n\tstatic EditLogisticVoucherTransportCompany = 'Muokkaa kuljetusyritystä';\r\n\tstatic Approved = 'Hyväksytty';\r\n\tstatic SSRSRefreshFinishedInParameterSeconds = 'SSRS virkistys suoritettu (kesto: {0:N0}s)';\r\n\tstatic RecordFurtherEducationGroupParameterNotFound = 'Jatkokoulutusryhmää \\'{0}\\' ei löytynyt!';\r\n\tstatic ActiveTasks = 'Aktiivisia tehtäviä';\r\n\tstatic DraftVersion = 'Muokkausversio';\r\n\tstatic FormTextArea = 'Pitkä tekstikenttä';\r\n\tstatic RequireReadReceipt = 'Vaatii lukukuittauksen';\r\n\tstatic WhistleBlow = 'Whistleblower';\r\n\tstatic PreviewIsNotSupportedForThisFileType = 'Esikatselu ei tue tämän tiedostotyypin näyttämistä!';\r\n\tstatic TransferToChannel = 'Siirry keskusteluun';\r\n\tstatic DoYouReallyWantToRemoveRecordUserTransferredPropertyParameter = 'Haluatko todella poistaa luovutetun omaisuuden \\'{0}\\'?';\r\n\tstatic GroupByQuarter = 'Kvartaaleittain';\r\n\tstatic CompanyLogo = 'Yrityksen logo';\r\n\tstatic WhistleBlowCategoryCodeIsAlreadyInUse = 'Ilmoitusluokan nimi on jo käytössä!';\r\n\tstatic InvalidInvitationParameter = 'Virheellinen kutsu \\'{0}\\'!';\r\n\tstatic FileFilterParameterNotFound = 'Tiedostosuodatinta \\'{0}\\' ei löytynyt!';\r\n\tstatic PanelSize4 = '2 x 2';\r\n\tstatic DoYouReallyWantToRemoveDefaultEventHandlerParameter = 'Haluatko todella poistaa oletuskäsittelijän \\'{0}\\'?';\r\n\tstatic RestoringInstantMessageWasNotSuccessfulErrorParameter = 'Pikaviestin palautus epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic LogOut = 'Kirjaudu ulos';\r\n\tstatic WorkShiftType = 'Työvuoromuoto';\r\n\tstatic SavingUserParametersWasNotSuccessfulConcurrencyError = 'Käyttäjäasetusten tallennus epäonnistui, koska käyttäjäasetusten tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic ChangesMaxAmount = 'Muutosten maksimimäärä';\r\n\tstatic ValidPasswordMustBeDefined = 'Oikeellinen salasana täytyy määritellä!';\r\n\tstatic AllPartners = '\\'Kaikki kumppanit\\'';\r\n\tstatic EditEventTypes = 'Muokkaa tarkenteita 1';\r\n\tstatic ValidityEndDateExpirationTime = 'Voimassaolon vanhenemisaika';\r\n\tstatic DeletingTaskStatesParameterWasNotSuccessfulErrorParameter = 'Tehtävien tilojen \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic Settings = 'Asetukset';\r\n\tstatic TaskTypesMustBeDefinedBeforeAddingTasks = 'Lomakkeet täytyy määritellä ennen kuin tehtäviä voi lisätä!';\r\n\tstatic DeletingCalendarTaskCategoryParameterWasNotSuccessfulConcurrencyError = 'Luokan \\'{0}\\' poisto epäonnistui, koska luokan tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic SavingInstantMessageChannelParameterWasNotSuccessfulErrorParameter = 'Keskustelun \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic ValidityStartDate = 'Voimassa alkaen';\r\n\tstatic AllCompanies = 'Kaikki yritykset';\r\n\tstatic Scope = 'Laajuus';\r\n\tstatic RenamingFolderParameterWasNotSuccessfulErrorParameter = 'Kansion uudelleen nimeäminen (\\'{0}\\' => \\'{1}\\') tiedostojärjestelmässä epäonnistui! Virhe: \\'{2}\\'';\r\n\tstatic DoYouReallyWantToRemoveEditableDocumentParameter = 'Haluatko todella poistaa dokumentin \\'{0}\\'? Myös dokumenttiin mahdollisesti liittyvä tiedosto poistetaan.';\r\n\tstatic DeletingWhistleBlowParameterWasNotSuccessfulErrorParameter = 'Ilmoituksen \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic DoYouReallyWantToRemoveReportParameter = 'Haluatko todella poistaa raportin \\'{0}\\'?';\r\n\tstatic SaveReport = 'Tallenna raportti';\r\n\tstatic RecordBasicEducationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted = 'Peruskoulutus \\'{0}\\' on käytössä {1} henkilöstökortissa eikä sitä voi poistaa!';\r\n\tstatic Rejected = 'Kieltäynyt';\r\n\tstatic AddFurtherEducationToMultipleUserRecords = 'Lisää jatkokoulutus useaan henkilöstökorttiin';\r\n\tstatic PrintTextPrinted = 'Tulostettu';\r\n\tstatic FurtherEducationGroup = 'Jatkokoulutusryhmä';\r\n\tstatic WhistleBlowPasswordConfirmed = 'Ilmoituksesi on nyt lähetetty. Voit seurata ilmoituksesi käsittelyn edistymistä klikkaamalla pääsivulla olevaa \"Seuraa ilmoitusta\" -painiketta.';\r\n\tstatic NewPassword = 'Uusi salasana';\r\n\tstatic DocumentTemplate = 'Dokumenttimalli';\r\n\tstatic ToDo = 'Hoidettavia asioita';\r\n\tstatic DoYouReallyWantToRemoveSelectedDocumentTemplates = 'Haluatko todella poistaa valitut dokumenttimallit?';\r\n\tstatic FormSortField = 'Lajittelukenttä';\r\n\tstatic DeletingInstantMessageUserParameterWasNotSuccessfulConcurrencyError = 'Keskustelijan \\'{0}\\' poisto epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic EditLogisticVoucherCustomerPaymentSetting = 'Muokkaa laskutusasetusta';\r\n\tstatic FormMobile = 'Mobiiliappi';\r\n\tstatic PermissionDeniedForOperation = 'Käyttäjällä ei ole oikeuksia kyseiseen toimintoon!';\r\n\tstatic NotApproved = 'Ei hyväksytty';\r\n\tstatic RequestPasswordChangeMessage2 = 'Lähetä';\r\n\tstatic NoPublishedMessages = 'Ei julkaistuja viestejä';\r\n\tstatic FormulaMax = 'Maksimi';\r\n\tstatic SavingEventSettingsWasSuccessful = 'Havaintojen asetusten tallennus onnistui!';\r\n\tstatic DeletingDirectoryItemDocumentParameterWasSuccessful = 'Tiedoston \\'{0}\\' poisto onnistui!';\r\n\tstatic DisableExternalIntraSystemConfirmation = 'Haluatko todella poistaa yrityksen järjestelmän käytöstä? Tallennettaessa yrityksen tiedot poistetaan järjestelmästä.';\r\n\tstatic GroupByYear = 'Vuosittain';\r\n\tstatic ChangingPasswordWasSuccessful = 'Salasanan vaihto onnistui!';\r\n\tstatic OldestModification = 'Vanhin muokkaus';\r\n\tstatic DeletingRecordFurtherEducationsParameterWasNotSuccessfulConcurrencyError = 'Jatkokoulutusten \\'{0}\\' poisto epäonnistui, koska jatkokoulutusten tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic FormulaSubtraction = 'Vähennyslasku';\r\n\tstatic MinimumPasswordLength = 'Salasanan vähimmäispituus';\r\n\tstatic DeletingCalendarTaskCategoriesParameterWasNotSuccessfulConcurrencyError = 'Luokkien \\'{0}\\' poisto epäonnistui, koska luokkien tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic AddQualificationToMultipleUserRecords = 'Lisää pätevyysvaatimus useaan henkilöstökorttiin';\r\n\tstatic FormRemoveColumnFromRowConfirmation = 'Haluatko todella poistaa sarakkeen riviltä?';\r\n\tstatic AddFurtherEducationGroup = 'Lisää jatkokoulutusryhmä';\r\n\tstatic ContactPerson = 'Yhteyshenkilö';\r\n\tstatic FormDropdown = 'Avattava luettelo';\r\n\tstatic SelectForm = 'Valitse lomake';\r\n\tstatic ExpiringIn90Days = 'Sisällytä 90 päivässä vanhenevat koulutukset';\r\n\tstatic WhistleBlowParameterNotFound = 'Ilmoitusta \\'{0}\\' ei löytynyt!';\r\n\tstatic DeletingAttachmentsParameterWasNotSuccessfulConcurrencyError = 'Liitteiden \\'{0}\\' poisto epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic CheckingExistanceOfFileParameterWasNotSuccessfulErrorParameter = 'Tiedoston \\'{0}\\' olemassolon tarkistaminen epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic UnitCodeIsAlreadyInUse = 'Yksikön nimi on jo käytössä!';\r\n\tstatic DeletingInstantMessageWasNotSuccessfulErrorParameter = 'Pikaviestin poisto epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic FormSizeSmall = 'Pieni';\r\n\tstatic WhistleBlowChannel = 'Ilmoituskanava';\r\n\tstatic UpdateUserGroupParameterExternalSystemsWasSuccessful = 'Käyttäjäryhmän \\'{0}\\' linkitys ulkoisiin järjestelmiin onnistui!';\r\n\tstatic WhistleBlowEventTypeMessageAdded = 'Viesti lisätty';\r\n\tstatic Modification = 'Muutos';\r\n\tstatic CreatingUserTokenWasNotSuccessfulErrorParameter = 'Salasananvaihtotunnuksen luominen epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic AddWhistleBlowCategory = 'Lisää ilmoitusluokka';\r\n\tstatic LanguageEnglish = 'englanti';\r\n\tstatic SavingFileFilterParameterWasSuccessful = 'Tiedostosuodattimen \\'{0}\\' tallennus onnistui!';\r\n\tstatic Invited = 'Kutsuttu';\r\n\tstatic NoneSelected = 'Ei valittuja';\r\n\tstatic GroupByUnit = 'Yksiköittäin';\r\n\tstatic RemoveTaskType = 'Poista tehtävätyyppi';\r\n\tstatic DownloadFileTemplate = 'Lataa mallitiedosto';\r\n\tstatic AddPartnerParameterWasNotSuccessfulConcurrencyError = 'Kumppanin \\'{0}\\' lisäys epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic EditCompanyTaskType = 'Muokkaa yrityksen tehtävätyyppiä';\r\n\tstatic ReportGenerationFailed = 'Raportin luominen epäonnistui!';\r\n\tstatic RemoveFileFilter = 'Poista tiedostosuodatin';\r\n\tstatic BrowserInfo = 'Selain';\r\n\tstatic DeletingMessageTypeParameterWasNotSuccessfulConcurrencyError = 'Viestityypin \\'{0}\\' poisto epäonnistui, koska viestityypin tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic DoYouReallyWantToRemoveEventHandlerParameter = 'Haluatko todella poistaa käsittelijän \\'{0}\\'?';\r\n\tstatic BusinessIdentityCode = 'Y-tunnus';\r\n\tstatic FormRelativeDefinition = 'Suhteellinen määritys';\r\n\tstatic Education = 'Koulutus';\r\n\tstatic EditLogisticVoucherCustomer = 'Muokkaa asiakasta';\r\n\tstatic Date = 'Päiväys';\r\n\tstatic DriversLicenseType = 'Ajo-oikeusluokat';\r\n\tstatic CalendarTaskRepetitionRepeatIntervalMonthPrefix = 'Kuukauden';\r\n\tstatic ModifyDate = 'Muokkauspäivä';\r\n\tstatic LastYear = 'Viime vuosi';\r\n\tstatic EditableDocumentPublishConfirmation = 'Haluatko julkaista dokumentin tiedostoksi?';\r\n\tstatic BirthDate = 'Syntymäaika';\r\n\tstatic EditUser = 'Muokkaa käyttäjätiliä';\r\n\tstatic EventMessageConfirmation = 'Tallennetaanko uusi kommentti?';\r\n\tstatic CompanyInstantMessageChannels = 'Yrityksen keskustelut';\r\n\tstatic OthersLastModifications = 'Yrityksen viimeisimmät muutokset';\r\n\tstatic SavingTaskTypeParameterWasNotSuccessfulConcurrencyError = 'Tehtävätyypin \\'{0}\\' tallennus epäonnistui, koska tehtävätyypin tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic ChangeToReadMode = 'Vaihda lukutilaan';\r\n\tstatic AddToFavorites = 'Lisää suosikkeihin';\r\n\tstatic EventTypeTitle = 'Havainnon yksilöinnin tarkenne 1';\r\n\tstatic AddUserGroup = 'Lisää käyttäjäryhmä';\r\n\tstatic Ascending = 'Nouseva';\r\n\tstatic AddEventMessage = 'Lisää kommentti';\r\n\tstatic DeletingRecordUserParameterWasNotSuccessfulConcurrencyError = 'Henkilöstökortin \\'{0}\\' poisto epäonnistui, koska henkilöstökortin tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic DeletingMessageTypesParameterWasNotSuccessfulErrorParameter = 'Viestityyppien \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic JobLineParameterNotFound = 'Työriviä \\'{0}\\' ei löytynyt!';\r\n\tstatic SavingUserParameterWasSuccessful = 'Käyttäjän \\'{0}\\' tallennus onnistui!';\r\n\tstatic SelectUserGroupOrUser = 'Valitse käyttäjäryhmä tai käyttäjätili';\r\n\tstatic MessageTitleMustBeDefined = 'Viestin otsikko täytyy määritellä!';\r\n\tstatic Collapse = 'Supista';\r\n\tstatic NewRecordUserMustBeSavedBeforeRowsCanBeAdded = 'Uusi henkilöstökortti täytyy tallentaan ennen rivien lisäämistä!';\r\n\tstatic RecordUserFurtherEducationParameterNotFound = 'Henkilöstökortin jatkokoulutusta \\'{0}\\' ei löytynyt!';\r\n\tstatic AnyTime = 'Milloin tahansa';\r\n\tstatic DeletingTaskStateParameterWasSuccessful = 'Tehtävän tilan \\'{0}\\' poisto onnistui!';\r\n\tstatic MoveUp = 'Siirrä ylöspäin';\r\n\tstatic InvalidValueInArgumentParameter = 'Virheellinen arvo parametrissa \\'{0}\\'!';\r\n\tstatic UpdateCompanyExternalSystemsWasNotSuccessfulConcurrencyError = 'Yrityksen linkitys ulkoisiin järjestelmiin epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic Filters = 'Suodattimet';\r\n\tstatic CopyingFilesAndDocumentsToFolderParameterWasSuccessful = 'Tiedostojen/dokumenttien kopioiminen kansioon \\'{0}\\' onnistui!';\r\n\tstatic SavingEventUrgencyClassParameterWasSuccessful = 'Kiireellisyysluokan \\'{0}\\' tallennus onnistui!';\r\n\tstatic AccessRightRead = 'Oikeus lukea sisältöä';\r\n\tstatic PostalAddress = 'Osoite';\r\n\tstatic OtherCompanies = 'Muut yritykset';\r\n\tstatic TrainingEndDateCannotPrecedeTrainingStartDate = 'Koulutus päättyi -päivä ei voi olla aikaisemmin kuin koulutus alkoi -päivä!';\r\n\tstatic WhistleBlowEventTypeCreated = 'Luotu';\r\n\tstatic RemoveDefaultEventHandler = 'Poista oletuskäsittelijä';\r\n\tstatic EventTypeCs = 'Tarkenne 3';\r\n\tstatic NewPasswordMustBeDefined = 'Uusi salasana täytyy määritellä!';\r\n\tstatic LockedTaskParameterCannotBeDeleted = 'Lukittua tehtävää \\'{0}\\' ei voi poistaa!';\r\n\tstatic ApplicationName = 'eSalkku';\r\n\tstatic SavingEditableDocumentParameterWasNotSuccessfulConcurrencyError = 'Dokumentin \\'{0}\\' tallennus epäonnistui, koska dokumentin tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic ImportUsers = 'Tuo käyttäjätilejä';\r\n\tstatic LockedEventParameterCannotBeSaved = 'Havainto \\'{0}\\' on lukittu toiselle käyttäjälle eikä sitä voi tallentaa!';\r\n\tstatic DoYouReallyWantToRemoveRecordFurtherEducationParameter = 'Haluatko todella poistaa jatkokoulutuksen \\'{0}\\'?';\r\n\tstatic DeletingWhistleBlowChannelAdminParameterWasSuccessful = 'Ylläpitäjän \\'{0}\\' poisto onnistui!';\r\n\tstatic DeletingFileFilterParameterWasNotSuccessfulErrorParameter = 'Tiedostosuodattimen \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic Previous = 'Edellinen';\r\n\tstatic DeletingInstantMessageUsersParameterWasNotSuccessfulErrorParameter = 'Keskustelijoiden \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic ModifyDateStartDate = 'Muokkauspäivä alkaen';\r\n\tstatic SavingCalendarTaskCategoryParameterWasSuccessful = 'Luokan \\'{0}\\' tallennus onnistui!';\r\n\tstatic EmailAddressParameterIsInvalid = 'Sähköpostiosoite \\'{0}\\' on virheellinen!';\r\n\tstatic EditKeyword = 'Muokkaa avainsanaa';\r\n\tstatic DeletingEventTypeCParameterWasNotSuccessfulConcurrencyError = 'Tarkenteen 3 \\'{0}\\' poisto epäonnistui, koska tarkenteen 3 tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic SavingWhistleBlowCategoryParameterWasSuccessful = 'Ilmoitusluokan \\'{0}\\' tallennus onnistui!';\r\n\tstatic Required = 'Pakollinen';\r\n\tstatic SavingMessageSendPushParameterWasNotSuccessfulErrorParameter = 'Push-viestilokin tallennus viestille \\'{0}\\' epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic CourseCredit = 'opintopiste';\r\n\tstatic RemoveUserGroup = 'Poista käyttäjäryhmä';\r\n\tstatic DeletingWhistleBlowCategoriesParameterWasNotSuccessfulConcurrencyError = 'Ilmoitusluokkien \\'{0}\\' poisto epäonnistui, koska ilmoitusluokkien tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic CalendarTaskRepetitionEndDateSuffix = 'jälkeen';\r\n\tstatic JobLineDataIsEmpty = 'Työrivin tiedot puuttuvat!';\r\n\tstatic MessageUnit = 'Julkaisija yksikkö';\r\n\tstatic SharedReportCompany = 'Yritykselle jaettu raportti';\r\n\tstatic Document = 'Dokumentti';\r\n\tstatic FurtherEducation = 'Jatkokoulutus';\r\n\tstatic SendingPusNotificationsWasNotSuccessfulErrorParameter = 'Push-viestien lähetys epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic CreatingPrint = 'Luodaan tulostetta...';\r\n\tstatic MessageVisibilityPeriodNotStarted = 'Viestin näkyvyys ei ole vielä alkanut!';\r\n\tstatic InstantMessageUserInvitationAcceptTypeAutoAcceptInvitation = 'Hyväksyn automaattisesti kutsun keskusteluun';\r\n\tstatic WhistleBlowReport = 'Ilmoitus';\r\n\tstatic CopyingFilesAndDocumentsToFolderParameterWasNotSuccessfulConcurrencyError = 'Tiedostojen/dokumenttien kopioiminen kansioon \\'{0}\\' epäonnistui, koska kansion tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic Administrator = 'Järjestelmänvalvoja';\r\n\tstatic RemoveUserAndRecordUserArchive = 'Poista käyttäjätili ja arkistoi henkilöstökortti';\r\n\tstatic InstantMessagePartners = 'Pikaviestikumppanit';\r\n\tstatic TaskPriority = 'Prioriteetti';\r\n\tstatic AddingRecordUserSalaryRowsWasSuccessful = 'Palkkarivien lisäys onnistui!';\r\n\tstatic ChangeSystemLanguageToEnglish = 'Vaihda kieli englanniksi';\r\n\tstatic RemovingEventHandlerWasNotSuccessfulErrorParameter = 'Käsittelijöiden poisto epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic Partner = 'Kumppani';\r\n\tstatic DoYouReallyWantToRemoveMessageParameter = 'Haluatko todella poistaa viestin \\'{0}\\'?';\r\n\tstatic RemoveTarget = 'Poista kohde';\r\n\tstatic AddCommentsToEvent = 'Lisää kommentti plus-painikkeesta.';\r\n\tstatic Companies = 'Yritykset';\r\n\tstatic FormTextAlignmentRight = 'Tasaa teksti oikealle';\r\n\tstatic PanelSize3 = '1 x 2';\r\n\tstatic SaveAndPublish = 'Tallenna ja julkaise';\r\n\tstatic CalendarTasks = 'Tapahtumat';\r\n\tstatic DeletingRecordFamiliarizationsParameterWasSuccessful = 'Perehdytysten \\'{0}\\' poisto onnistui!';\r\n\tstatic HoursPerTrainingDay = 'Tunteja koulutuspäivässä';\r\n\tstatic PasswordMustBeDefined = 'Salasana täytyy määritellä!';\r\n\tstatic RemoveEventTypeC = 'Poista tarkenne 3';\r\n\tstatic ExitingInstantMessageChannelWasNotSuccessfulErrorParameter = 'Keskustelusta poistuminen epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic ExitInstantMessageChannel = 'Poistu keskustelusta';\r\n\tstatic SavePrint = 'Tallenna tuloste';\r\n\tstatic AddLogisticVoucherTransportCompany = 'Lisää kuljetusyritys';\r\n\tstatic DefineRecordUserFurtherEducation = 'Määrittele jatkokoulutus';\r\n\tstatic EventPartnerIsAlreadyInDefined = 'Havaintokumppani on jo määritelty!';\r\n\tstatic BasicEducationsMustBeDefinedBeforeAddingRecordUsers = 'Peruskoulutukset täytyy määritellä ennen kuin henkilöstökortteja voi lisätä!';\r\n\tstatic FormulaRemainder = 'Jakojäännös';\r\n\tstatic SavingEventTypeBParameterWasSuccessful = 'Tarkenteen 2 \\'{0}\\' tallennus onnistui!';\r\n\tstatic EventsDashboard = 'Havainnot etusivu';\r\n\tstatic UserAccountConnected = 'Käyttäjätili kytketty';\r\n\tstatic DeletingDirectoryItemFolderParameterWasSuccessful = 'Kansion \\'{0}\\' poisto onnistui!';\r\n\tstatic Card = 'Kortti';\r\n\tstatic SavingRecordFamiliarizationParameterWasSuccessful = 'Perehdytyksen \\'{0}\\' tallennus onnistui!';\r\n\tstatic SelectState = 'Valitse tila';\r\n\tstatic Qualification = 'Pätevyysvaatimus';\r\n\tstatic GroupByPerson = 'Henkilöittäin';\r\n\tstatic DeletingWhistleBlowCategoryParameterWasSuccessful = 'Ilmoitusluokan \\'{0}\\' poisto onnistui!';\r\n\tstatic AddFurtherEducation = 'Lisää jatkokoulutus';\r\n\tstatic UnitNameMustBeDefined = 'Yksikön nimi täytyy määritellä!';\r\n\tstatic NewFurtherEducationMustBeSavedBeforeAttachmentsCanBeAdded = 'Uusi jatkokoulutus täytyy tallentaan ennen liitteiden lisäämistä!';\r\n\tstatic EventHandlersExcelTitle = 'Käsittelijät (x = hyväksytty)';\r\n\tstatic ActiveState = 'Tila';\r\n\tstatic UpdateUserParameterExternalSystemsWasNotSuccessfulConcurrencyError = 'Käyttäjän \\'{0}\\' linkitys ulkoisiin järjestelmiin epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic AddEditableDocument = 'Lisää dokumentti';\r\n\tstatic SharedReport = 'Jaettu raportti';\r\n\tstatic NewRecordUserMustBeSavedBeforeTransferredPropertiesCanBeAdded = 'Uusi henkilöstökortti täytyy tallentaan ennen luovutetun omaisuuden lisäämistä!';\r\n\tstatic SavingDirectoryItemFolderParameterWasNotSuccessfulConcurrencyError = 'Kansion \\'{0}\\' tallennus epäonnistui, koska kansion tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic AccessRightWriteEvents = 'Havaintojen luonti ja käsittely';\r\n\tstatic PageBreakBetweenGroups = 'Sivuta ryhmittelyn perusteella';\r\n\tstatic SavingRecordFurtherEducationParameterWasSuccessful = 'Jatkokoulutuksen \\'{0}\\' tallennus onnistui!';\r\n\tstatic DeletingMessageTypesParameterWasNotSuccessfulConcurrencyError = 'Viestityyppien \\'{0}\\' poisto epäonnistui, koska viestityyppien tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic DocumentModified = 'Päivittäjä';\r\n\tstatic FamiliarizationTrainer = 'Perehdyttäjä';\r\n\tstatic CompanyCodeClaimNotFound = 'Käyttäjän ominaisuutta \\'yrityksen tunnus\\' ei löytynyt!';\r\n\tstatic RecordFamiliarizationCodeIsAlreadyInUse = 'Perehdytyksen nimi on jo käytössä!';\r\n\tstatic AddLogisticVoucherCustomer = 'Lisää asiakas';\r\n\tstatic RecordBasicEducationParameterNotFound = 'Peruskoulutusta \\'{0}\\' ei löytynyt!';\r\n\tstatic DefaultSettings = 'Oletusasetukset';\r\n\tstatic InvalidRequest = 'Virheellinen kutsu!';\r\n\tstatic CompanyToken = 'Yritys-token';\r\n\tstatic InstantMessageParameterNotFound = 'Pikaviestiä \\'{0}\\' ei löytynyt!';\r\n\tstatic SomeInstantMessageUsersHaveReadMessage = 'Osa keskustelijoista on lukenut viestin';\r\n\tstatic CompanyCodeIsAlreadyInUse = 'Yrityksen tunnus on jo käytössä!';\r\n\tstatic DeletingEventPartnerParameterWasNotSuccessfulErrorParameter = 'Havaintokumppanin \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic ShowSchema = 'Näytä skeema';\r\n\tstatic SharedDocumentTemplate = 'Jaettu dokumenttimalli';\r\n\tstatic CalendarTaskOpenOccurrence = 'Avaa esiintymää';\r\n\tstatic NameIsAlreadyInUse = 'Nimi on jo käytössä!';\r\n\tstatic SavingEditableDocumentParameterWasNotSuccessfulErrorParameter = 'Dokumentin \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic PreviousCalendarWeek = 'Edellinen kalenteriviikko';\r\n\tstatic DocumentEndDate = 'Voimassaoloaika';\r\n\tstatic EnableExternalIntraSystemConfirmation = 'Haluatko todella ottaa yrityksen käyttöön järjestelmässä? Tallennettaessa yrityksen tiedot tallennetaan myös järjestelmään.';\r\n\tstatic DocumentNameParameterConstainsIllegalCharacters = 'Dokumentin nimi \\'{0}\\' sisältää kiellettyjä merkkejä (<, >, :, \", /, \\, |, ? tai *) tai päättyy kiellettyyn merkkiin (., \\' \\')!';\r\n\tstatic Unlock = 'Poista lukitus';\r\n\tstatic ActiveUserTasks = 'Aktiivisia käyttäjän luomia tehtävä';\r\n\tstatic CalendarTaskRepetitionRepeatIntervalMonthSuffix = 'päivä';\r\n\tstatic WhistleBlowStatisticsNonAnonymousRecords = 'Nimellisiä ilmoituksia';\r\n\tstatic DefaultFamiliarizations = 'Oletusperehdytykset';\r\n\tstatic FolderNameMustBeDefined = 'Kansion nimi täytyy määritellä!';\r\n\tstatic WhistleBlowEventTypeAttachmentsRemoved = 'Liitteitä poistettu';\r\n\tstatic RemovingWhistleBlowHandlerWasNotSuccessfulErrorParameter = 'Käsittelijöiden poisto epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic PermissionsForSection = 'Osion käyttöoikeudet';\r\n\tstatic AdditionalPermissionAEvents = 'Käsittelijänä toimiminen';\r\n\tstatic FormProperties = 'Ominaisuudet';\r\n\tstatic AuthorizationLevelAdmin = 'Järjestelmänvalvoja';\r\n\tstatic SavingEventTypeBsWasNotSuccessfulErrorParameter = 'Tarkenteen 2 tallennus epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic NewComment = 'Uusi kommentti';\r\n\tstatic ExternalIntraSystems = 'eSalkku-järjestelmät';\r\n\tstatic SelectUserGroup = 'Valitse käyttäjäryhmä';\r\n\tstatic TaskDataRows = 'Rivit';\r\n\tstatic PathMustBeDefined = 'Polku täytyy määritellä!';\r\n\tstatic RenewPersonalization = 'Yksilöintitiedot';\r\n\tstatic AttachmentParameterDownloaded = 'Liitetiedosto on ladattu.';\r\n\tstatic AddDefaultHandler = 'Lisää oletuskäsittelijä';\r\n\tstatic VerifyUserName = 'Tarkista käyttäjätunnus (\\'{0}\\')!';\r\n\tstatic CalendarTaskCategory = 'Luokka';\r\n\tstatic FormulaCbrt = 'Kuutiojuuri';\r\n\tstatic EditBasicEducation = 'Muokkaa peruskoulutusta';\r\n\tstatic EmploymentStartDate = 'Työsuhde alkoi';\r\n\tstatic SavingEventDefaultHandlerParameterWasNotSuccessfulConcurrencyError = 'Oletuskäsittelijän \\'{0}\\' tallennus epäonnistui, koska oletuskäsittelijän tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic EventTypeB = 'Tarkenne 2';\r\n\tstatic EditCalendarTask = 'Muokkaa tapahtumaa';\r\n\tstatic TaskPrioritiesMustBeDefinedBeforeAddingTasks = 'Tehtävien prioriteetit täytyy määritellä ennen kuin tehtäviä voi lisätä!';\r\n\tstatic FailureAudit = 'FailureAudit';\r\n\tstatic DeletingTaskTypesParameterWasSuccessful = 'Tehtävätyyppien \\'{0}\\' poisto onnistui!';\r\n\tstatic Expired = 'Vanhentunut';\r\n\tstatic ParameterIsNotValidBankBICCode = '\\'{0}\\' ei ole oikeellinen pankin BIC-koodi!';\r\n\tstatic DefaultTaskTypes = 'Oletuslomakkeet';\r\n\tstatic AddCalendarTaskCategory = 'Lisää luokka';\r\n\tstatic DefaultFurtherEducation = 'Oletusjatkokoulutus';\r\n\tstatic NoMessagesToShow = 'Ei näytettäviä viestejä!';\r\n\tstatic AddEventTypeBsToEvent = 'Lisää tarkenne 2 plus-painikkeesta.';\r\n\tstatic Selected = 'Valittu';\r\n\tstatic SavingCalendarTaskCategoryParameterWasNotSuccessfulErrorParameter = 'Luokan \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic AddingAttachmentParameterWasSuccessful = 'Liiteen \\'{0}\\' lisäys onnistui!';\r\n\tstatic EditAll = 'Muokkaa kaikkia';\r\n\tstatic RequestParameterNotFound = 'Pyyntöä \\'{0}\\' ei löytynyt!';\r\n\tstatic EventTypeCParameterIsInUseInParameterEventsAndCannotBeDeleted = 'Tarkenne 3 \\'{0}\\' on käytössä {1} havainnossa eikä sitä voi poistaa!';\r\n\tstatic LastParameterYears = 'Viimeiset {0} vuotta';\r\n\tstatic FileParameterIsEmpty = 'Tiedosto \\'{0}\\' on tyhjä!';\r\n\tstatic SelectTaskRepetitionType = 'Valitse tehtävän toistuvuus';\r\n\tstatic SavingEventTypeCsWasSuccessful = 'Tarkenteen 3 tallennus onnistui!';\r\n\tstatic TrainingStartDate = 'Koulutus alkoi';\r\n\tstatic MovingFilesAndDocumentsToFolderParameterWasSuccessful = 'Tiedostojen/dokumenttien siirtäminen kansioon \\'{0}\\' onnistui!';\r\n\tstatic ImageOrPdfUpToParameterMb = 'Kuva tai PDF-tiedostot (maksimissaan {0} MB)';\r\n\tstatic StandardFiltersAndReports = 'Vakiosuodattimet ja -raportit';\r\n\tstatic CopyPermissionToAllSameLevelFolders = 'Kopioi käyttöoikeus kaikkiin saman tason kansioihin';\r\n\tstatic PanelSize = 'Panelin koko';\r\n\tstatic ExpiredPlural = 'Vanhentuneet';\r\n\tstatic DocumentRootPathMustBeDefined = 'Dokumenttien juurihakemisto täytyy määritellä!';\r\n\tstatic DefaultFurtherEducations = 'Oletusjatkokoulutukset';\r\n\tstatic TaskState = 'Tehtävän tila';\r\n\tstatic AddCompanyTaskType = 'Lisää tehtävätyyppi yritykselle';\r\n\tstatic DeletingMessageTypesParameterWasSuccessful = 'Viestityyppien \\'{0}\\' poisto onnistui!';\r\n\tstatic User = 'Käyttäjätili';\r\n\tstatic CalendarTaskRepetitionRepeatIntervalYearlySuffix = 'vuoden välein';\r\n\tstatic FieldParameterValueMustBeDefined = 'Kentän \\'{0}\\' arvo täytyy määritellä!';\r\n\tstatic SavingChartWasNotSuccessfulConcurrencyError = 'Kuvaajan tallennus epäonnistui, koska kuvaajan tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic FormField = 'Kenttä';\r\n\tstatic AddInstantMessageUsersParameterWasSuccessful = 'Keskustelijoiden \\'{0}\\' lisäys onnistui!';\r\n\tstatic SavingTaskPriorityParameterWasNotSuccessfulConcurrencyError = 'Tehtävän prioriteetin \\'{0}\\' tallennus epäonnistui, koska tehtävän prioriteetin tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic DoYouReallyWantToRemoveDocumentsParameter = 'Haluatko todella poistaa {0} valittua dokumenttia/tiedostoa?';\r\n\tstatic CopyingFilesAndDocumentsToFolderParameterWasNotSuccessfulErrorParameter = 'Tiedostojen/dokumenttien kopioiminen kansioon \\'{0}\\' epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic MoneyIn = 'Saapuva raha';\r\n\tstatic Info = 'Info';\r\n\tstatic RemoveCompanyFromCompanyGroup = 'Poista yritys yritysryhmästä';\r\n\tstatic SharedFilters = 'Jaetut suodattimet';\r\n\tstatic Monthly = 'Kuukausittain';\r\n\tstatic RecordParameterLockingFailed = 'Tietueen \\'{0}\\' lukitseminen epäonnistui!';\r\n\tstatic FormDecimalNumber = 'Desimaaliluku';\r\n\tstatic SavingRecordFurtherEducationGroupParameterWasNotSuccessfulConcurrencyError = 'Jatkokoulutusryhmän tallennus \\'{0}\\' epäonnistui, koska jatkokoulutusryhmän tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic UserRecordCards = 'Henkilöstökortit';\r\n\tstatic RemoveDefaultFurtherEducation = 'Poista oletusjatkokoulutus';\r\n\tstatic DeletingCompanyGroupParameterWasSuccessful = 'Yritysryhmän \\'{0}\\' poisto onnistui!';\r\n\tstatic ModifiedBy = 'Muokkaaja';\r\n\tstatic DeletingRecordUserTransferredPropertiesParameterWasNotSuccessfulConcurrencyError = 'Luovutettujen omaisuuksien \\'{0}\\' poisto epäonnistui, koska luovutettujen omaisuuksien tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic SendReadReceiptConfirmation = 'Haluatko kuitata viestin luetuksi?';\r\n\tstatic AccountNumberTkbInDebit = 'Myyntisaamistili';\r\n\tstatic EventsFound = 'Havaintoja löytyi';\r\n\tstatic DefaultLanguageHasBeenChanged = 'Kieli on muutettu!';\r\n\tstatic UserEndDate = 'Voimassaoloaika päättyy';\r\n\tstatic SaveMessage = 'Tallenna viesti';\r\n\tstatic KeywordCodeMustBeDefined = 'Avainsanan tunnus täytyy määritellä!';\r\n\tstatic CurrentCalendarMonth = 'Kuluva kalenterikuukausi';\r\n\tstatic OldPasswordIsIncorrect = 'Vanha salasana on virheellinen!';\r\n\tstatic SendingPushNotificationsToParameter = 'Lähettää push-viestejä käyttäjälle \\'{0}\\'...';\r\n\tstatic SavingEventTypeParameterWasNotSuccessfulConcurrencyError = 'Tarkenteen 1 \\'{0}\\' tallennus epäonnistui, koska tarkenteen 1 tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic ClickToCancelAutomaticLogout = 'Käyttäjäistunto on vanhenemassa, klikkaa tätä lomaketta estääksesi järjestelmän sulkemisen.';\r\n\tstatic FormTitles = 'Otsikot';\r\n\tstatic TransportCompanies = 'Kuljetusyritykset';\r\n\tstatic RecurringCalendarTaskMustHaveAtLeastOneOccurence = 'Toistuvassa tehtävässä täytyy olla vähintään yksi toisto!';\r\n\tstatic DoYouReallyWantToRemoveFormParameter = 'Haluatko todella poistaa lomakkeen \\'{0}\\'?';\r\n\tstatic WriteBelowFieldWordParameterToConfirmTheOperation = 'Kirjoita alla olevaan kenttään sana \\'{0}\\' vahvistaaksesi toiminto:';\r\n\tstatic AddPartnersParameterWasNotSuccessfulErrorParameter = 'Kumppanien \\'{0}\\' lisäys epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic SortOrder = 'Järjestysnumero';\r\n\tstatic NewFamiliarizationMustBeSavedBeforeAttachmentsCanBeAdded = 'Uusi perehdytys täytyy tallentaan ennen liitteiden lisäämistä!';\r\n\tstatic LockedDocumentParameterCannotBeMoved = 'Lukittua dokumenttia \\'{0}\\' ei voi siirtää!';\r\n\tstatic AccountNumberTkbOutDebit = 'Ostovelka';\r\n\tstatic ForLastParameterDays = '{0} vrk ajalta';\r\n\tstatic DeletingMessageParameterWasSuccessful = 'Viestin \\'{0}\\' poisto onnistui!';\r\n\tstatic DeletingRecordBasicEducationParameterWasNotSuccessfulErrorParameter = 'Peruskoulutuksen \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic RemoveLogisticTransportCompany = 'Poista kuljetusyritys';\r\n\tstatic WhistleBlowInformantDateAndTime = 'Milloin tämä tapahtui?';\r\n\tstatic RemoveRecordUser = 'Poista henkilöstökortti';\r\n\tstatic RemoveEventTypeB = 'Poista tarkenne 2';\r\n\tstatic PanelVisible = 'Paneli näkyvissä';\r\n\tstatic KeywordsOrCondition = 'Joku valituista avainsanoista';\r\n\tstatic FormulaDateAndTimeDiffInMinutes = 'Aikaero minuutteina';\r\n\tstatic TaskStateLocked = 'Lukittu';\r\n\tstatic LockingEditableDocumentParameterWasNotSuccessful = 'Dokumentin \\'{0}\\' lukitseminen epäonnistui!';\r\n\tstatic AdditionalPermissionBEvents = 'Poisto';\r\n\tstatic ArgumentParameterIsNULL = 'Parametrin \\'{0}\\' arvo on NULL!';\r\n\tstatic QualificationIsInvalid = 'Pätevyysvaatimus ei ole voimassa!';\r\n\tstatic WhistleBlowInformantMessages = 'Ilmoittajan viestit';\r\n\tstatic FolderParameterNotFound = 'Kansiota \\'{0}\\' ei löytynyt!';\r\n\tstatic SavingDirectoryItemFolderParameterWasSuccessful = 'Kansion \\'{0}\\' tallennus onnistui!';\r\n\tstatic MoveToTrashBin = 'Siirrä roskakoriin';\r\n\tstatic ArchivingRecordUserFurtherEducationsWasNotSuccessfulErrorParameter = 'Jatkokoulutusten arkistointi epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic IHaveForgotMyPassword = 'Olen unohtanut salasanani';\r\n\tstatic SavingWhistleBlowMessageWasSuccessful = 'Viestin tallennus onnistui!';\r\n\tstatic UserGroupParameterNotFound = 'Käyttäjäryhmää \\'{0}\\' ei löytynyt!';\r\n\tstatic Actions = 'Toimenpiteet';\r\n\tstatic UserGroupCodeIsAlreadyInUse = 'Käyttäjäryhmän tunnus on jo käytössä!';\r\n\tstatic NoFilesToAdd = 'Ei lisättäviä tiedostoja!';\r\n\tstatic EventTypeCTitle = 'Havainnon yksilöinnin tarkenne 3';\r\n\tstatic Title = 'Otsikko';\r\n\tstatic Send = 'Lähetä';\r\n\tstatic TransferredPropertyType = 'Luovutetun omaisuuden tyyppi';\r\n\tstatic PasswordMustContainUppercaseChar = 'Salasanan täytyy sisältää suuraakkonen!';\r\n\tstatic OperationAborted = 'Toiminto keskeytetty!';\r\n\tstatic InvalidPasswordChangeRequestParameter = 'Virheellinen salasanan vaihtopyyntö \\'{0}\\'!';\r\n\tstatic DeletingRecordBasicEducationParameterWasSuccessful = 'Peruskoulutuksen \\'{0}\\' poisto onnistui!';\r\n\tstatic AddRecordUserToUserAccount = 'Lisää henkilöstökortti olemassaolevaan käyttäjätiliin';\r\n\tstatic Landscape = 'Vaaka';\r\n\tstatic StateOpenPlural = 'Avoimet';\r\n\tstatic Comment = 'Kommentti';\r\n\tstatic UsersToBeImported = 'Tuotavat käyttäjätilit';\r\n\tstatic UserInformation = 'Käyttäjätilin tiedot';\r\n\tstatic AdditionalPermissionBWhistleBlow = 'Käyttöoikeuksien hallinta';\r\n\tstatic TakePicture = 'Ota valokuva';\r\n\tstatic AddCompanies = 'Lisää yritykset';\r\n\tstatic Language = 'Kieli';\r\n\tstatic LogModuleProperties = 'Lokin asetukset';\r\n\tstatic RemoveCalendarTask = 'Poista tapahtuma';\r\n\tstatic SavingEventPartnerParameterWasNotSuccessfulConcurrencyError = 'Havaintokumppanin \\'{0}\\' tallennus epäonnistui, koska kumppanin tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic PasteGroupPermissions = 'Liitä ryhmän käyttöikeudet muistista';\r\n\tstatic WhistleBlowSourceMail = 'Kirje';\r\n\tstatic DoYouReallyWantToRemoveCompanyGroupParameter = 'Haluatko todella poistaa yritysryhmän \\'{0}\\'?';\r\n\tstatic SelectDate = 'Valitse päiväys';\r\n\tstatic DeletingEventTypeBParameterWasSuccessful = 'Tarkenteen 2 \\'{0}\\' poisto onnistui!';\r\n\tstatic WhistleBlowWasNotFound = 'Ilmoitusta ei löytynyt!';\r\n\tstatic DeletingRecordFurtherEducationsParameterWasNotSuccessfulErrorParameter = 'Jatkokoulutusten \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic EventTypeCParameterNotFound = 'Tarkennetta 3 \\'{0}\\' ei löytynyt!';\r\n\tstatic IndefinitelyNoLocalization = 'Toistaiseksi';\r\n\tstatic TaskHandler = 'Käsittelijä';\r\n\tstatic Reject = 'Kieltäydy';\r\n\tstatic EventModuleProperties = 'Havaintojen asetukset';\r\n\tstatic DefaultEventUrgencyClasses = 'Oletuskiireellisyysluokat';\r\n\tstatic ACopy = 'Kopio';\r\n\tstatic EditDefaultFurtherEducation = 'Muokkaa oletusjatkokoulutusta';\r\n\tstatic EditEventTypeCs = 'Muokkaa tarkenteita 3';\r\n\tstatic BasicInformation = 'Perustiedot';\r\n\tstatic SavingFileFilterParameterWasNotSuccessfulErrorParameter = 'Tiedostosuodattimen \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic Clear = 'Tyhjennä';\r\n\tstatic FormPlaceholder = 'Ohjeteksti';\r\n\tstatic AuthorizationLevelSystemAdmin = 'Järjestelmän ylläpitäjä';\r\n\tstatic FollowUp = 'Seuranta';\r\n\tstatic RequestPasswordChangeMessage1 = 'Jos olet unohtanut salasanasi, täytä eSalkku-käyttäjätunnus alla olevaan kenttään ja klikkaa ';\r\n\tstatic ResetDocumentVersion = 'Alusta dokumentin laatija- ja versiotiedot';\r\n\tstatic EventTypeBParameterIsInUseInParameterEventsAndCannotBeDeleted = 'Tarkenne 2 \\'{0}\\' on käytössä {1} havainnossa eikä sitä voi poistaa!';\r\n\tstatic UserRecordStatisticsArchivedCards = 'Arkistoituja kortteja';\r\n\tstatic ReadReceipts = 'Lukukuittaukset';\r\n\tstatic FormulaTan = 'Tangentti';\r\n\tstatic DeletingKeywordParameterWasNotSuccessfulErrorParameter = 'Avainsanan \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic AdminMustBeDefinedForSectionParameter = 'Ylläpitäjä täytyy määritellä osiolle \\'{0}\\'!';\r\n\tstatic SavingFileFilterParameterWasNotSuccessfulConcurrencyError = 'Tiedostosuodattimen \\'{0}\\' tallennus epäonnistui, koska tiedostosuodattimen tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic Amount = 'Määrä';\r\n\tstatic FamiliarizationStartDateDateEnd = 'Perehdytys alkoi - loppu';\r\n\tstatic Order = 'Järjestys';\r\n\tstatic LargeSize = 'Suuri koko';\r\n\tstatic AuthorizationLevelNone = 'Ei oikeuksia';\r\n\tstatic ActionsAndRootCause = 'Toimenpiteet ja juurisyy';\r\n\tstatic Browse = 'Selaa';\r\n\tstatic EInvoiceOperator = 'Verkkolaskuoperaattori';\r\n\tstatic AddInstantMessageUsersParameterWasNotSuccessfulErrorParameter = 'Keskustelijoiden \\'{0}\\' lisäys epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic CopyingFolderDirectoryItemParameterToFolderParameterWasSuccessful = 'Kansion \\'{0}\\' kopioiminen kansioon \\'{1}\\' onnistui!';\r\n\tstatic TransferredProperties = 'Luovutettu omaisuus';\r\n\tstatic TaskDataRowMustBeSavedBeforeAttachmentsCanBeAdded = 'Rivi täytyy tallentaa ennen liitteiden lisäämistä!';\r\n\tstatic WhistleBlowCreateTime = 'Ilmoituksen lähetysaika';\r\n\tstatic Last180Days = '180 viime päivää';\r\n\tstatic AddDefaultTaskPriority = 'Lisää tehtävän oletusprioriteetti';\r\n\tstatic DocumentNameParameterIsIllegal = 'Dokumentin nimi \\'{0}\\' ei ole sallittu (varattu nimi)!';\r\n\tstatic InstantMessageChannelArchivingType = 'Arkistoidun keskustelun käsittely';\r\n\tstatic PrintIsEmpty = 'Tuloste on tyhjä!';\r\n\tstatic Custom = 'Räätälöity';\r\n\tstatic AddEventTypeC = 'Lisää tarkenne 3';\r\n\tstatic AddEventTypeB = 'Lisää tarkenne 2';\r\n\tstatic SavingDirectoryItemDocumentParameterWasNotSuccessfulConcurrencyError = 'Tiedoston \\'{0}\\' tallennus epäonnistui, koska tiedoston tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic DoYouReallyWantToRemoveRecordUserEmploymentParameter = 'Haluatko todella poistaa työn \\'{0}\\'?';\r\n\tstatic AddEvent = 'Lisää havainto';\r\n\tstatic HasAttachments = 'Liitteitä on';\r\n\tstatic ArchiveWhistleBlows = 'Arkistoi ilmoituksia';\r\n\tstatic LanguageParameterIsNotSupported = 'Kieltä \\'{0}\\' ei ole tuettu!';\r\n\tstatic Hour = 'tunti';\r\n\tstatic AuthorizationLevel = 'Käyttöoikeustaso';\r\n\tstatic DoYouReallyWantToRemoveSelectedRecordBasicEducations = 'Haluatko todella poistaa valitut peruskoulutukset?';\r\n\tstatic DeletingFileFilterParameterWasNotSuccessfulConcurrencyError = 'Tiedostosuodattimen \\'{0}\\' poisto epäonnistui, koska tiedostosuodattimen tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic WhistleBlowNonAnonymousReportInfo = 'Nimesi on ainoastaan ilmoistusten käsitellijöiden tiedossa eikä sitä paljasteta muille.';\r\n\tstatic Minutes = 'Minuuttia';\r\n\tstatic LockingTaskParameterWasNotSuccessful = 'Tehtävän \\'{0}\\' lukitseminen epäonnistui!';\r\n\tstatic DeletingDefaultEventHandlerParameterWasNotSuccessfulConcurrencyError = 'Oletuskäsittelijän \\'{0}\\' poisto epäonnistui, koska oletuskäsittelijän tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic HandlersAndAttachments = 'Käsittely ja liitteet';\r\n\tstatic TaskTypeSchemaMustBeDefined = 'Lomakeen skeema täytyy määritellä!';\r\n\tstatic DeletingAttachmentParameterWasNotSuccessfulConcurrencyError = 'Liiteen \\'{0}\\' poisto epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic GetMore = 'Hae lisää';\r\n\tstatic CompanyIdClaimNotFound = 'Käyttäjän ominaisuutta \\'yrityksen id\\' ei löytynyt!';\r\n\tstatic TaskRepetitionType = 'Tehtävän toistuvuus';\r\n\tstatic PositionErrorTimeout = 'Sijaintitietoa ei löytynyt tarpeeksi nopeasti.';\r\n\tstatic RestoringInstantMessageWasSuccessful = 'Pikaviestin palautus onnistui!';\r\n\tstatic EditCompanyGroup = 'Muokkaa yritysryhmää';\r\n\tstatic FormulaCeil = 'Pyöristys ylöspäin';\r\n\tstatic CompanyWithSysAdminAuthorizationLevelNotFound = 'Yritystä, johon on liitetty \\'Järjestelmän ylläpitäjä\\'-tason käyttäjäryhmä ei löytynyt!';\r\n\tstatic RemovingWhistleBlowHandlersWasSuccessful = 'Käsittelijöiden poisto onnistui!';\r\n\tstatic MovingTaskParameterToTrashBinWasNotSuccessfulConcurrencyError = 'Tehtävän \\'{0}\\' siirto roskakoriin epäonnistui, koska tehtävän tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic FormulaCos = 'Kosini';\r\n\tstatic AccountNumberTkbOutCredit = 'Ostotili';\r\n\tstatic Receiver = 'Vastaanottaja';\r\n\tstatic PreviewMobile = 'Esikatselu (mobiili)';\r\n\tstatic ArchivingRecordUserFurtherEducationsWasSuccessful = 'Jatkokoulutusten arkistointi onnistui!';\r\n\tstatic RemoveKeyword = 'Poista avainsana';\r\n\tstatic RemoveFolder = 'Poista kansio';\r\n\tstatic WhistleBlowActiveReports = 'Aktiiviset ilmoitukset';\r\n\tstatic DoYouReallyWantToEmailMessageParameter = 'Haluatko todella lähettää viestin \\'{0}\\' sähköpostilla? Viestin voi lähettää sähköpostilla vain yhden kerran.';\r\n\tstatic RemoveWhistleBlowCategory = 'Poista ilmoitusluokka';\r\n\tstatic Update = 'Päivitä';\r\n\tstatic CopyActiveUserRightsToAllSameLevelFolders = 'Kopioi asetetut käyttöoikeudet kaikkiin saman tason kansioihin';\r\n\tstatic FormShowModifyUser = 'Näytä muokkaaja';\r\n\tstatic EditEmployment = 'Muokkaa työtä';\r\n\tstatic UpdatingGroupCodeWasNotSuccessfulErrorParameter = 'Ryhmätunnuksen päivitys epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic FileFilterNameMustBeDefined = 'Tiedostosuodattimen nimi täytyy määritellä!';\r\n\tstatic SenderOrReceiver = 'Lähettäjä tai vastaanottaja';\r\n\tstatic DeletingRecordFamiliarizationParameterWasSuccessful = 'Perehdytyksen \\'{0}\\' poisto onnistui!';\r\n\tstatic SavingKeywordParameterWasNotSuccessfulConcurrencyError = 'Avainsanan \\'{0}\\' tallennus epäonnistui, koska avainsanan tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic Action = 'Toiminto';\r\n\tstatic DoYouReallyWantToRemoveDocumentParameter = 'Haluatko todella poistaa dokumentin/tiedoston \\'{0}\\'?';\r\n\tstatic SavingFilterWasSuccessful = 'Suodattimen tallennus onnistui!';\r\n\tstatic SavingTaskParameterWasNotSuccessfulErrorParameter = 'Tehtävän \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic DoYouReallyWantToRemoveWhistleBlowParameter = 'Haluatko todella poistaa ilmoituksen \\'{0}\\'?';\r\n\tstatic InstantMessageAttachmentFolderIsNotSpecified = 'Sovelluksen pikaviestien liitteiden hakemistoa ei ole määritelty!';\r\n\tstatic YouHaveNotSavedChangesSaveChangesBeforePublishingTaskType = 'Et ole tallentanut tekemiäsi muutoksia. Tallenna muutokset ennen tehtävätyypin julkaisua.';\r\n\tstatic NoFurtherEducationsToShow = 'Ei näytettäviä jatkokoulutuksia!';\r\n\tstatic SavingMessageTypeParameterWasNotSuccessfulConcurrencyError = 'Viestityypin \\'{0}\\' tallennus epäonnistui, koska viestityypin tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic UserToken = 'Käyttäjä-token';\r\n\tstatic CalendarTaskOccurrence = 'Esiintymä';\r\n\tstatic CopyOrMoveFolderParameter = 'Kopioi tai siirrä kansio \\'{0}\\'';\r\n\tstatic AddEmployment = 'Lisää työ';\r\n\tstatic MissingPlural = 'Puuttuvat';\r\n\tstatic SomeWhistleBlowHandlersHaveReadMessage = 'Osa ilmoituksen käsittelijöistä on lukenut viestisi';\r\n\tstatic TaskRemainderCheckingAndNotificationFinishedInParameterSeconds = 'Tehtävien muistutusten tarkastus ja ilmoitus suoritettu (kesto: {0:N0}s, virheitä: {1}, tehtäviä: {2}, sähköposteja: {3}, push-viestejä: {4})';\r\n\tstatic RecordUserExcelUserList = 'Henkilöstölistaus';\r\n\tstatic DeletingUserParameterWasSuccessful = 'Käyttäjätilin \\'{0}\\' poisto onnistui!';\r\n\tstatic TemplateForms = 'Mallilomakkeet';\r\n\tstatic InstantMessageAttachmentFolderParameterNotFound = 'Sovelluksen pikaviestien liitteiden hakemistoa \\'{0}\\' ei löydy!';\r\n\tstatic DeletingTaskPrioritiesParameterWasNotSuccessfulErrorParameter = 'Tehtävien prioriteettien \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic ChangeCompany = 'Vaihda yritystä';\r\n\tstatic SearchCurrentTopics = 'Hae ajankohtaista';\r\n\tstatic DoYouReallyWantToMoveTaskParameterToTrashBin = 'Haluatko siirtää tehtävän \\'{0}\\' roskakoriin?';\r\n\tstatic WhistleBlowResolutionJunk = 'Roskaposti';\r\n\tstatic EditMode = 'Muokkaustila';\r\n\tstatic EmploymentEndDateCannotPrecedeEmploymentStartDate = 'Työsuhde päättyi -päivä ei voi olla aikaisemmin kuin työsuhde alkoi -päivä!';\r\n\tstatic EventApprovalWasSuccessful = 'Havainnon hyväksyminen onnistui!';\r\n\tstatic UserClaimsNotFound = 'Käyttäjän ominaisuuksia ei löytynyt!';\r\n\tstatic UserRecordsDashboard = 'Resurssit etusivu';\r\n\tstatic PublishTaskType = 'Julkaise tehtävätyyppi';\r\n\tstatic RemoveEditableDocument = 'Poista dokumentti';\r\n\tstatic PanelSize1 = '1 x 1';\r\n\tstatic Yes = 'Kyllä';\r\n\tstatic SearchStartDate = 'Päiväys alku';\r\n\tstatic DeletingTaskPriorityParameterWasSuccessful = 'Tehtävän prioriteetin \\'{0}\\' poisto onnistui!';\r\n\tstatic TasksExcelByTasks = 'Tehtävät - Excel - Suodatettu tehtävittäin';\r\n\tstatic InheritedUserRights = 'Perityt käyttöoikeudet';\r\n\tstatic SomeEventHandlersHaveReadMessage = 'Osa havainnon käsittelijöistä on lukenut kommenttisi';\r\n\tstatic EventTypeCCodeMustBeDefined = 'Tarkenteen 3 nimi täytyy määritellä!';\r\n\tstatic EventSettings = 'Havaintojen asetukset';\r\n\tstatic MovingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulConcurrencyError = 'Kansion \\'{0}\\' siirtäminen kansioon \\'{1}\\' epäonnistui, koska kansion tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic DocumentZipFileName = 'Dokumentit_{0:yyyy-MM-dd_HH-mm}.zip';\r\n\tstatic SavingWhistleBlowWasNotSuccessfulConcurrencyError = 'Ilmoituksen tallennus epäonnistui, koska ilmoituksen tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic Permission = 'Käyttöoikeus';\r\n\tstatic NotifiedPersons = 'Ilmoitus kirjatusta havainnosta';\r\n\tstatic RemoveCompanyGroup = 'Poista yritysryhmä';\r\n\tstatic NoEventsToShow = 'Ei kirjattuja havaintoja!';\r\n\tstatic SavingInstantMessageWasNotSuccessfulErrorParameter = 'Pikaviestin tallennus epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic UserGroup = 'Käyttäjäryhmä';\r\n\tstatic RemoveMessageType = 'Poista viestityyppi';\r\n\tstatic WhistleBlowDoesNotContainAnyMessage = 'Ilmoitukseen ei ole vielä kirjoitettu viestejä';\r\n\tstatic ShowReportRowAmountInFrontPage = 'Näytä raportin rivien määrä etusivulla';\r\n\tstatic SavingDocumentTemplateParameterWasSuccessful = 'Dokumenttimallin \\'{0}\\' tallennus onnistui!';\r\n\tstatic DeletingKeywordParameterWasNotSuccessfulConcurrencyError = 'Avainsanan \\'{0}\\' poisto epäonnistui, koska avainsanan tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic SelectCompanyGroup = 'Valitse yritysryhmä';\r\n\tstatic DeletingDirectoryItemFolderParameterWasNotSuccessfulErrorParameter = 'Kansion \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic WhistleBlowAnonymityNonAnonymous = 'Nimellinen';\r\n\tstatic DoYouReallyWantToRemoveCompanyParameter = 'Haluatko todella poistaa yrityksen \\'{0}\\'?';\r\n\tstatic WhistleBlowStateArchived = 'Arkistoitu';\r\n\tstatic SavingTaskTypeParameterWasSuccessful = 'Tehtävätyypin \\'{0}\\' tallennus onnistui!';\r\n\tstatic Identification = 'Yksilöinti';\r\n\tstatic AddFormFromTemplate = 'Lisää lomake mallista';\r\n\tstatic FormBooleans = 'Tosi/epätosi';\r\n\tstatic AddCompanyGroupsParameterWasNotSuccessfulConcurrencyError = 'Yritysryhmien \\'{0}\\' lisäys epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic ShowDraftVersion = 'Näytä muokkausversio';\r\n\tstatic SavingWhistleBlowMessageWasNotSuccessfulErrorParameter = 'Viestin tallennus epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic Draft = 'Luonnos';\r\n\tstatic Operation = 'Operaatio';\r\n\tstatic WhistleBlowDescription = 'Tapahtuman kuvaus';\r\n\tstatic AddPanel = 'Lisää paneli';\r\n\tstatic TaskPriorityParameterIsInUseInParameterTasksAndCannotBeDeleted = 'Tehtävän prioriteetti \\'{0}\\' on käytössä {1} tehtävässä eikä sitä voi poistaa!';\r\n\tstatic NoTasksToShow = 'Ei kirjattuja tehtäviä!';\r\n\tstatic EventUrgencyClass = 'Kiireellisyysluokka';\r\n\tstatic PreviousCalendarMonth = 'Edellinen kalenterikuukausi';\r\n\tstatic EventIsNotApprovedByUser = 'Käyttäjä ei ole hyväksynyt havaintoa';\r\n\tstatic FormTime = 'Aika';\r\n\tstatic SavingEventTypeParameterWasSuccessful = 'Tarkenteen 1 \\'{0}\\' tallennus onnistui!';\r\n\tstatic DeletingWhistleBlowParameterWasNotSuccessfulConcurrencyError = 'Ilmoituksen \\'{0}\\' poisto epäonnistui, koska ilmoituksen tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic DeletingRecordUserEmploymentsParameterWasNotSuccessfulErrorParameter = 'Työpaikkojen \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic Message = 'Viesti';\r\n\tstatic WhistleBlowSourcePhone = 'Puhelin';\r\n\tstatic DeletingInstantMessageUsersParameterWasNotSuccessfulConcurrencyError = 'Keskustelijoiden \\'{0}\\' poisto epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic RestoringInstantMessageWasNotSuccessfulConcurrencyError = 'Pikaviestin palautus epäonnistui, koska pikaviestin tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic InstantMessagesMenuTitle = 'HoxUp';\r\n\tstatic DoYouReallyWantToRemoveEventPartnerParameter = 'Haluatko todella poistaa havaintokumppanin \\'{0}\\'?';\r\n\tstatic DoYouReallyWantToRemoveDocumentTemplateParameter = 'Haluatko todella poistaa dokumenttimallin \\'{0}\\'?';\r\n\tstatic UserParameterHasInvitedYouToJoinInstantMessageChannelParameter = 'Käyttäjä \\'{0}\\' on kutsunut sinut liittymään keskusteluun';\r\n\tstatic Entry = 'Merkintä';\r\n\tstatic UserReport = 'Käyttäjän raportti';\r\n\tstatic Events = 'Havainnot';\r\n\tstatic PicturesAreVisibleForAllCompanyUsers = 'Asetetut kuvat näytetään kaikille yrityksen käyttäjille';\r\n\tstatic ArchivingRecordUserFamiliarizationsWasNotSuccessfulConcurrencyError = 'Perehdytysten arkistointi epäonnistui, koska perehdytysten tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic Number = 'Numero';\r\n\tstatic SelectArchivingMethod = 'Valitse arkistoinnin tapa';\r\n\tstatic DeletingWhistleBlowChannelAdminsParameterWasNotSuccessfulErrorParameter = 'Ylläpitäjien \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic SavingEditableDocumentParameterPublishWasSuccessful = 'Dokumentin \\'{0}\\' julkaisu onnistui!';\r\n\tstatic SaveAndEmail = 'Tallenna ja sähköpostita';\r\n\tstatic EmptyTaskTrashBin = 'Tyhjännä tehtävien roskakori';\r\n\tstatic MovingFolderParameterWasNotSuccessfulErrorParameter = 'Kansion \\'{0}\\' siirtäminen tiedostojärjestelmässä kansioon \\'{1}\\' epäonnistui! Virhe: \\'{2}\\'';\r\n\tstatic Channels = 'Keskustelut';\r\n\tstatic SelectInstantMessageChannelUsers = 'Valitse keskustelijat';\r\n\tstatic ApproveEvent = 'Hyväksy havainto';\r\n\tstatic JobTypeEmail = 'Sähköpostitus';\r\n\tstatic Effectiveness = 'Vaikuttavuus';\r\n\tstatic ReminderWeekBefore = 'viikko aikaisemmin';\r\n\tstatic Private = 'Yksityinen';\r\n\tstatic RemoveEmployment = 'Poista työ';\r\n\tstatic AddAttachment = 'Lisää liite';\r\n\tstatic SavingEventTypeParameterWasNotSuccessfulErrorParameter = 'Tarkenteen 1 \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic SavingDirectoryItemPermissionsWasNotSuccessfulConcurrencyError = 'Kansioiden oikeuksien tallennus epäonnistui, koska tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic AddPhotosAndAttachementsToEvent = 'Lisää valokuva tai liite kamera tai plus-painikkeesta.';\r\n\tstatic WhistleBlowReportHasBeenSavedTopText = 'Tallenna alla oleva salasana ja säilytä sitä turvallisesti. Salasana antaa pääsyn tallennettuun ilmoitukseesi. Älä jaa salasanaa kenenkään kanssa!';\r\n\tstatic SavingUserParametersWasNotSuccessfulErrorParameter = 'Käyttäjäasetusten tallennus epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic WhistleBlowStatisticsAnonymousRecords = 'Anonyymejä ilmoituksia';\r\n\tstatic FormWeb = 'Web-sovellus';\r\n\tstatic WhistleBlowEventTypeModified = 'Muokattu';\r\n\tstatic RecentlyUpdated = 'Päivitetty hetki sitten';\r\n\tstatic ExternalSystems = 'Muut järjestelmät';\r\n\tstatic DoYouReallyWantToRemoveCalendarTaskCategoryParameter = 'Haluatko todella poistaa luokan \\'{0}\\'?';\r\n\tstatic Comments = 'Kommentit';\r\n\tstatic OptionParameterNotFound = 'Sovellusasetusta \\'{0}\\' ei löytynyt!';\r\n\tstatic NoPermission = 'Ei oikeutta';\r\n\tstatic SelectCalendarTaskHandlers = 'Valitse vastuuhenkilöt';\r\n\tstatic AllCompanyGroups = 'Kaikki yritysryhmät';\r\n\tstatic SavingPrintWasNotSuccessfulConcurrencyError = 'Tulosteen \\'{0}\\' tallennus epäonnistui, koska tulosteen tietoja on muokattu samaan aikaan toisen käyttäjän toimesta!';\r\n\tstatic FormCodeMustBeDefined = 'Lomakkeen tunnus täytyy määritellä!';\r\n\tstatic ApproveEventResolution = 'Hyväksy havainto käsitellyksi';\r\n\tstatic TaskPriorityParameterNotFound = 'Tehtävän prioriteettia \\'{0}\\' ei löytynyt!';\r\n\tstatic SelectInstantMessageChannelType = 'Valitse keskustelun tyyppi';\r\n\tstatic Rows = 'riviä';\r\n\tstatic FormulaRound = 'Pyöristys';\r\n\tstatic DeletingInstantMessageUsersParameterWasSuccessful = 'Keskustelijoiden \\'{0}\\' poisto onnistui!';\r\n\tstatic RestoringTaskParameterFromTrashBinWasSuccessful = 'Tehtävä \\'{0}\\' palautettu roskakorista!';\r\n\tstatic WriteMessage = 'Kirjoita viesti';\r\n\tstatic UnlockingTaskDataRowWasNotSuccessful = 'Tehtävärivin lukituksen poisto epäonnistui!';\r\n\tstatic CreatingFolderParameterWasNotSuccessfulErrorParameter = 'Kansion \\'{0}\\' luominen tiedostojärjestelmään epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic AdminMessage = 'Viesti johdolle';\r\n\tstatic SendTime = 'Lähetysaika';\r\n\tstatic EventSettingsParameterNotFound = 'Havaintojen asetuksia \\'{0}\\' ei löytynyt!';\r\n\tstatic RemoveUserGroupExternalSystemsWasSuccessful = 'Käyttäjäryhmien ja ulkoisten järjestelmien linkityksen poisto onnistui!';\r\n\tstatic WhistleBlowCategories = 'Ilmoitusluokat';\r\n\tstatic AddingWhistleBlowHandlerWasNotSuccessfulErrorParameter = 'Käsittelijöiden lisäys epäonnistui! Virhe: \\'{0}\\'';\r\n\tstatic AdditionalPermissions = 'Lisäkäyttöoikeudet';\r\n\tstatic SavingDirectoryItemFolderParameterWasNotSuccessfulErrorParameter = 'Kansion \\'{0}\\' tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic SavingEditableDocumentParameterApprovalWasNotSuccessfulErrorParameter = 'Dokumentin \\'{0}\\' hyväksyntä epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic AccessRightWrite = 'Oikeus muokata sisältöä';\r\n\tstatic CalendarTaskCategoryParameterIsInUseInParameterCalendarTasksAndCannotBeDeleted = 'Luokka \\'{0}\\' on käytössä {1} tapahtumassa eikä sitä voi poistaa!';\r\n\tstatic SavingUnitsWasSuccessful = 'Yksiköiden tallennus onnistui!';\r\n\tstatic UnitChangedFromParameterToParameter = 'Yksikkö vaihdettu \\'{0}\\' => \\'{1}\\'.';\r\n\tstatic FileParameterIsNotOpenXmlWorkbook = 'Tiedosto \\'{0}\\' ei ole Open XML Workbook (.xlsx tai .xlsm)!';\r\n\tstatic NewVersionAvailable = 'Uusi versio sovelluksesta saatavilla! Sovellusta ei voi käyttää ennen kuin sovellus on päivitetty.';\r\n\tstatic ViewLogLine = 'Näytä lokirivi';\r\n\tstatic WhistleBlowInformantTitle = 'Mikä on huolenaiheesi?';\r\n\tstatic IgnoreFilePatterns = 'Tiedostojen piilottamisessa käytettävä like-ehto';\r\n\tstatic TaskReport = 'Tehtäväraportti';\r\n\tstatic EventUrgencyClasses = 'Kiireellisyysluokat';\r\n\tstatic EditUserGroup = 'Muokkaa käyttäjäryhmää';\r\n\tstatic Documents = 'Dokumentit';\r\n\tstatic MyReports = 'Käyttäjän raportit';\r\n\tstatic NewPanel = 'Uusi paneli';\r\n\tstatic SavingPrintWasSuccessful = 'Tulosteen tallennus onnistui!';\r\n\tstatic DefaultHandlers = 'Oletuskäsittelijät';\r\n\tstatic EditCompany = 'Muokkaa yritystä';\r\n\tstatic UserPasswordMustBeValid = 'Salasanan täytyy olla vähintään 8 merkkiä pitkä ja pitää sisältää isoja ja pieniä kirjaimia sekä vähintään yksi erikoismerkki tai numero.';\r\n\tstatic CompetencyGroup = 'Pätevyysryhmä';\r\n\tstatic LockedTaskDataRowCannotBeDeleted = 'Lukittua tehtäväriviä ei voi poistaa!';\r\n\tstatic PanelSize2 = '2 x 1';\r\n\tstatic DeletingTaskTypeParameterWasNotSuccessfulErrorParameter = 'Tehtävätyypin \\'{0}\\' poisto epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic DocumentTemplateParameterNotFound = 'Dokumenttimallia \\'{0}\\' ei löytynyt!';\r\n\tstatic NoNotificationsToSend = 'Ei lähetettäviä viestejä!';\r\n\tstatic CompanyName = 'Yrityksen nimi';\r\n\tstatic EditRow = 'Muokkaa riviä';\r\n\tstatic InviteInstantMessageChannelUser = 'Kutsu keskustelija';\r\n\tstatic FormOptions = 'Vaihtoehdot';\r\n\tstatic PrivacyPolicyUrl = 'Tietosuojaselosteen web-osoite';\r\n\tstatic FileSynchronizationToDatabaseStarted = 'Tiedostojärjestelmän synkronointi tietokantaan aloitettu';\r\n\tstatic FormulaPI = 'Pii';\r\n\tstatic ShowOnlyUnitsThatAreInUse = 'Näytä vain käytössä olevat yksiköt';\r\n\tstatic EditableDocumentUnpublishConfirmation = 'Haluatko poistaa julkaistun tiedoston?';\r\n\tstatic SavingFilterWasNotSuccessfulErrorParameter = 'Suodattimen tallennus epäonnistui! Virhe: \\'{1}\\'';\r\n\tstatic UnlockingTaskParameterWasNotSuccessful = 'Tehtävän \\'{0}\\' lukituksen poisto epäonnistui!';\r\n\tstatic ExternalSystemCodeClaimNotFound = 'Käyttäjän ominaisuutta \\'externalSystemCode\\' ei löytynyt!';\r\n\tstatic SearchTasks = 'Hae tehtäviä';\r\n\tstatic FormDate = 'Päiväys';\r\n\tstatic TaskDashboard = 'Tehtävät etusivu';\r\n\tstatic SaveReportAs = 'Tallenna raportti nimellä';\r\n\tstatic EditFamiliarization = 'Muokkaa perehdytystä';\r\n\tstatic AddUserGroups = 'Lisää käyttäjäryhmät';\r\n\tstatic AddUserGroupParameterWasSuccessful = 'Käyttäjäryhmän \\'{0}\\' lisäys onnistui!';\r\n\tstatic WhistleBlowInformation = 'Ilmoituksen tiedot';\r\n\tstatic UserIsCompanyAdminClaimNotFound = 'Käyttäjän ominaisuutta \\'userIsCompanyAdmin\\' ei löytynyt!';\r\n\tstatic EditEventTypeBs = 'Muokkaa tarkenteita 2';\r\n\tstatic AddTaskType = 'Lisää tehtävätyyppi';\r\n\tstatic DefaultTaskStates = 'Tehtävien oletustilat';\r\n\tstatic TaskPriorityCodeMustBeDefined = 'Tehtävän prioriteetin nimi täytyy määritellä!';\r\n\tstatic TaskRemainderCheckingAndNotificationStarted = 'Tehtävien muistutusten tarkastus ja ilmoitus aloitettu';\r\n\tstatic Reminder = 'Muistutus';\r\n\tstatic InstantMessageChannelUsers = 'Keskustelijat';\r\n\tstatic EditSharedDocumentTemplate = 'Muokkaa jaettua dokumenttimallia';\r\n\tstatic SharedFiltersAndReports = 'Jaetut suodattimet ja raportit';\r\n\tstatic DeletingEventParameterWasSuccessful = 'Havainnon \\'{0}\\' poisto onnistui!';\r\n\tstatic NoFavoritesToShow = 'Ei määriteltyjä suosikkeja!';\r\n\tstatic RelatedToDatabaseRecordType = 'Liittyy tietoon';\r\n\tstatic RemovePrint = 'Poista tuloste';\r\n}\r\n\r\nexport class Translations {\r\n\tstatic DoYouReallyWantToRemoveTaskPriorityParameter: string = Translations_fi.DoYouReallyWantToRemoveTaskPriorityParameter;\r\n\tstatic RemoveTransferredProperty: string = Translations_fi.RemoveTransferredProperty;\r\n\tstatic JobResultParameterNotFound: string = Translations_fi.JobResultParameterNotFound;\r\n\tstatic Identifier: string = Translations_fi.Identifier;\r\n\tstatic PrintParameterDownloaded: string = Translations_fi.PrintParameterDownloaded;\r\n\tstatic FormSizeLarge: string = Translations_fi.FormSizeLarge;\r\n\tstatic NotificationsQueuedSuccessfully: string = Translations_fi.NotificationsQueuedSuccessfully;\r\n\tstatic TrainingStartDateStart: string = Translations_fi.TrainingStartDateStart;\r\n\tstatic Unpublish: string = Translations_fi.Unpublish;\r\n\tstatic EmptyingTaskTrashBinWasSuccessful: string = Translations_fi.EmptyingTaskTrashBinWasSuccessful;\r\n\tstatic Font: string = Translations_fi.Font;\r\n\tstatic DoYouReallyWantToRemoveEventParameter: string = Translations_fi.DoYouReallyWantToRemoveEventParameter;\r\n\tstatic DeletingAttachmentsWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingAttachmentsWasNotSuccessfulErrorParameter;\r\n\tstatic ObserverAction: string = Translations_fi.ObserverAction;\r\n\tstatic DatabaseCheckingStarted: string = Translations_fi.DatabaseCheckingStarted;\r\n\tstatic SavingEventDefaultHandlerParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingEventDefaultHandlerParameterWasNotSuccessfulErrorParameter;\r\n\tstatic DoYouReallyWantToRemoveRemainderParameter: string = Translations_fi.DoYouReallyWantToRemoveRemainderParameter;\r\n\tstatic View: string = Translations_fi.View;\r\n\tstatic ArchivingWhistleBlowsParameterWasNotSuccessfulErrorParameter: string = Translations_fi.ArchivingWhistleBlowsParameterWasNotSuccessfulErrorParameter;\r\n\tstatic SavingMessageSendEmailParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingMessageSendEmailParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic AddCompanyToCompanyGroup: string = Translations_fi.AddCompanyToCompanyGroup;\r\n\tstatic WhistleBlowResolutionRejected: string = Translations_fi.WhistleBlowResolutionRejected;\r\n\tstatic DeletingRecordUserTransferredPropertyParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingRecordUserTransferredPropertyParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic VoucherPrefix: string = Translations_fi.VoucherPrefix;\r\n\tstatic SavingRecordUserParameterWasSuccessful: string = Translations_fi.SavingRecordUserParameterWasSuccessful;\r\n\tstatic InternalAttachments: string = Translations_fi.InternalAttachments;\r\n\tstatic CalendarTask: string = Translations_fi.CalendarTask;\r\n\tstatic AllCalendarTaskUsers: string = Translations_fi.AllCalendarTaskUsers;\r\n\tstatic MaximumSizeOfSingleAttachment: string = Translations_fi.MaximumSizeOfSingleAttachment;\r\n\tstatic ShortName: string = Translations_fi.ShortName;\r\n\tstatic DeletingRecordUserParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingRecordUserParameterWasNotSuccessfulErrorParameter;\r\n\tstatic Sorting: string = Translations_fi.Sorting;\r\n\tstatic AddingCalendarTaskHandlerWasNotSuccessfulErrorParameter: string = Translations_fi.AddingCalendarTaskHandlerWasNotSuccessfulErrorParameter;\r\n\tstatic GroupByFamiliarization: string = Translations_fi.GroupByFamiliarization;\r\n\tstatic DoYouReallyWantToRestoreThisInstantMessage: string = Translations_fi.DoYouReallyWantToRestoreThisInstantMessage;\r\n\tstatic DeletingKeywordsParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingKeywordsParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic RecordUserLogEntryTypeReport: string = Translations_fi.RecordUserLogEntryTypeReport;\r\n\tstatic AddFurtherEducations: string = Translations_fi.AddFurtherEducations;\r\n\tstatic AddNew: string = Translations_fi.AddNew;\r\n\tstatic SelectSubject: string = Translations_fi.SelectSubject;\r\n\tstatic AccessRightNone: string = Translations_fi.AccessRightNone;\r\n\tstatic Course: string = Translations_fi.Course;\r\n\tstatic AddChildEventType: string = Translations_fi.AddChildEventType;\r\n\tstatic FormColumnTitle: string = Translations_fi.FormColumnTitle;\r\n\tstatic ExternalSystemUserCodeMustBeDefined: string = Translations_fi.ExternalSystemUserCodeMustBeDefined;\r\n\tstatic SavingRecordUserTransferredPropertyParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingRecordUserTransferredPropertyParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic AddChildDefaultEventType: string = Translations_fi.AddChildDefaultEventType;\r\n\tstatic DeletingCompaniesParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingCompaniesParameterWasNotSuccessfulErrorParameter;\r\n\tstatic PropertyTransferred: string = Translations_fi.PropertyTransferred;\r\n\tstatic DeletingCalendarTaskParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingCalendarTaskParameterWasNotSuccessfulErrorParameter;\r\n\tstatic NewRecordUserMustBeSavedBeforeEmploymentsCanBeAdded: string = Translations_fi.NewRecordUserMustBeSavedBeforeEmploymentsCanBeAdded;\r\n\tstatic DoYouReallyWantToRemoveInstantMessageChannelParameter: string = Translations_fi.DoYouReallyWantToRemoveInstantMessageChannelParameter;\r\n\tstatic Familiarizations: string = Translations_fi.Familiarizations;\r\n\tstatic Row: string = Translations_fi.Row;\r\n\tstatic RemovePicture: string = Translations_fi.RemovePicture;\r\n\tstatic DeletingRecordFurtherEducationGroupParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingRecordFurtherEducationGroupParameterWasNotSuccessfulErrorParameter;\r\n\tstatic FormCheckbox: string = Translations_fi.FormCheckbox;\r\n\tstatic NewCompanyMustBeSavedBeforePartnersCanBeAdded: string = Translations_fi.NewCompanyMustBeSavedBeforePartnersCanBeAdded;\r\n\tstatic RemoveRecordUserAndUserSetExpired: string = Translations_fi.RemoveRecordUserAndUserSetExpired;\r\n\tstatic InstantMessageChannelAdministrator: string = Translations_fi.InstantMessageChannelAdministrator;\r\n\tstatic AddEventPartner: string = Translations_fi.AddEventPartner;\r\n\tstatic Employment: string = Translations_fi.Employment;\r\n\tstatic SavingUserGroupParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingUserGroupParameterWasNotSuccessfulErrorParameter;\r\n\tstatic DeletingRecordQualificationsParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingRecordQualificationsParameterWasNotSuccessfulErrorParameter;\r\n\tstatic SavingEventTypeCParameterWasSuccessful: string = Translations_fi.SavingEventTypeCParameterWasSuccessful;\r\n\tstatic IncludeArchivedRecordUsers: string = Translations_fi.IncludeArchivedRecordUsers;\r\n\tstatic CopyDefaultHandlersToAllSameLevelUnits: string = Translations_fi.CopyDefaultHandlersToAllSameLevelUnits;\r\n\tstatic WhistleBlowInformantHint: string = Translations_fi.WhistleBlowInformantHint;\r\n\tstatic DeletingEventTypeParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingEventTypeParameterWasNotSuccessfulErrorParameter;\r\n\tstatic DeletingRecordUserTransferredPropertiesParameterWasSuccessful: string = Translations_fi.DeletingRecordUserTransferredPropertiesParameterWasSuccessful;\r\n\tstatic InvitationPasswordReset: string = Translations_fi.InvitationPasswordReset;\r\n\tstatic Handlers: string = Translations_fi.Handlers;\r\n\tstatic DeletingRecordUserTransferredPropertyParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingRecordUserTransferredPropertyParameterWasNotSuccessfulErrorParameter;\r\n\tstatic MobileAppInUse: string = Translations_fi.MobileAppInUse;\r\n\tstatic CompanyThatIsRelatedToEventsCannotBeDeleted: string = Translations_fi.CompanyThatIsRelatedToEventsCannotBeDeleted;\r\n\tstatic AddEventHandler: string = Translations_fi.AddEventHandler;\r\n\tstatic RecordUserExcelFurtherEducation: string = Translations_fi.RecordUserExcelFurtherEducation;\r\n\tstatic EditAttachment: string = Translations_fi.EditAttachment;\r\n\tstatic Tasks: string = Translations_fi.Tasks;\r\n\tstatic SavingCompanyParameterWasSuccessful: string = Translations_fi.SavingCompanyParameterWasSuccessful;\r\n\tstatic AddingRecordUserSalaryRowsWasNotSuccessfulErrorParameter: string = Translations_fi.AddingRecordUserSalaryRowsWasNotSuccessfulErrorParameter;\r\n\tstatic EmailNotificationOfChangedPublishStatus: string = Translations_fi.EmailNotificationOfChangedPublishStatus;\r\n\tstatic SavingCompanyGroupParameterWasSuccessful: string = Translations_fi.SavingCompanyGroupParameterWasSuccessful;\r\n\tstatic ParameterIsNotValidAccountIBANNumber: string = Translations_fi.ParameterIsNotValidAccountIBANNumber;\r\n\tstatic YouDeletedThisMessage: string = Translations_fi.YouDeletedThisMessage;\r\n\tstatic WhistleBlowChannelSettings: string = Translations_fi.WhistleBlowChannelSettings;\r\n\tstatic DefaultTaskPriorities: string = Translations_fi.DefaultTaskPriorities;\r\n\tstatic DeletingKeywordParameterWasSuccessful: string = Translations_fi.DeletingKeywordParameterWasSuccessful;\r\n\tstatic InstantMessageChannelRemoveFromYourselfFromAdministratorsConfirmation: string = Translations_fi.InstantMessageChannelRemoveFromYourselfFromAdministratorsConfirmation;\r\n\tstatic Unkown: string = Translations_fi.Unkown;\r\n\tstatic SavingEventSettingsWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingEventSettingsWasNotSuccessfulConcurrencyError;\r\n\tstatic SavingRecordUserTransferredPropertyParameterWasSuccessful: string = Translations_fi.SavingRecordUserTransferredPropertyParameterWasSuccessful;\r\n\tstatic WhistleBlowInformantDescription: string = Translations_fi.WhistleBlowInformantDescription;\r\n\tstatic DoYouReallyWantToRemoveCalendarTaskParameter: string = Translations_fi.DoYouReallyWantToRemoveCalendarTaskParameter;\r\n\tstatic SavingRecordUserQualificationParameterWasSuccessful: string = Translations_fi.SavingRecordUserQualificationParameterWasSuccessful;\r\n\tstatic SendInvitationEmailToImportedUsers: string = Translations_fi.SendInvitationEmailToImportedUsers;\r\n\tstatic ActiveUserRightsCannotBeCopiedToDirectoryItemFolderParameter: string = Translations_fi.ActiveUserRightsCannotBeCopiedToDirectoryItemFolderParameter;\r\n\tstatic SavingJobParameterWasSuccessful: string = Translations_fi.SavingJobParameterWasSuccessful;\r\n\tstatic Favorites: string = Translations_fi.Favorites;\r\n\tstatic SentEmails: string = Translations_fi.SentEmails;\r\n\tstatic WhistleBlowReportIHaveSavedThePassword: string = Translations_fi.WhistleBlowReportIHaveSavedThePassword;\r\n\tstatic SearchDocuments: string = Translations_fi.SearchDocuments;\r\n\tstatic DoYouReallyWantToUnlockEvent: string = Translations_fi.DoYouReallyWantToUnlockEvent;\r\n\tstatic Invoicing: string = Translations_fi.Invoicing;\r\n\tstatic ChartType: string = Translations_fi.ChartType;\r\n\tstatic Sender: string = Translations_fi.Sender;\r\n\tstatic DefaultStyle: string = Translations_fi.DefaultStyle;\r\n\tstatic ReadImp: string = Translations_fi.ReadImp;\r\n\tstatic AddUserParameterWasSuccessful: string = Translations_fi.AddUserParameterWasSuccessful;\r\n\tstatic RecordUserLogEntryTypeOpen: string = Translations_fi.RecordUserLogEntryTypeOpen;\r\n\tstatic ExternalSystemCompanyTokenParameterIsAlreadyInUse: string = Translations_fi.ExternalSystemCompanyTokenParameterIsAlreadyInUse;\r\n\tstatic RecurringCalendarTaskCannotHaveMoreThanParameterOccurences: string = Translations_fi.RecurringCalendarTaskCannotHaveMoreThanParameterOccurences;\r\n\tstatic UsersOfThisCompany: string = Translations_fi.UsersOfThisCompany;\r\n\tstatic EmploymentEndDate: string = Translations_fi.EmploymentEndDate;\r\n\tstatic JobDataIsEmpty: string = Translations_fi.JobDataIsEmpty;\r\n\tstatic SavingCalendarTaskParameterWasSuccessful: string = Translations_fi.SavingCalendarTaskParameterWasSuccessful;\r\n\tstatic UpdateUserGroupParameterExternalSystemsWasNotSuccessfulConcurrencyError: string = Translations_fi.UpdateUserGroupParameterExternalSystemsWasNotSuccessfulConcurrencyError;\r\n\tstatic ExpiredFurtherEducations: string = Translations_fi.ExpiredFurtherEducations;\r\n\tstatic SavingUnitsWasNotSuccessfulErrorParameter: string = Translations_fi.SavingUnitsWasNotSuccessfulErrorParameter;\r\n\tstatic WhistleBlowAnonymityAnonymous: string = Translations_fi.WhistleBlowAnonymityAnonymous;\r\n\tstatic TaskDataRowFieldParameterNotFoundInDataSchema: string = Translations_fi.TaskDataRowFieldParameterNotFoundInDataSchema;\r\n\tstatic CalendarTaskEditOccurrence: string = Translations_fi.CalendarTaskEditOccurrence;\r\n\tstatic DoYouReallyWantToRemoveEventUrgencyClassParameter: string = Translations_fi.DoYouReallyWantToRemoveEventUrgencyClassParameter;\r\n\tstatic UserFilterActive: string = Translations_fi.UserFilterActive;\r\n\tstatic CompanyNameMustBeDefined: string = Translations_fi.CompanyNameMustBeDefined;\r\n\tstatic SavingEventParameterWasSuccessful: string = Translations_fi.SavingEventParameterWasSuccessful;\r\n\tstatic LockingEventParameterWasNotSuccessful: string = Translations_fi.LockingEventParameterWasNotSuccessful;\r\n\tstatic AdditionalInformation: string = Translations_fi.AdditionalInformation;\r\n\tstatic SetUnitPermissions: string = Translations_fi.SetUnitPermissions;\r\n\tstatic PrintRow: string = Translations_fi.PrintRow;\r\n\tstatic TimeSpanHalfYear: string = Translations_fi.TimeSpanHalfYear;\r\n\tstatic ExpiresInParameterDays: string = Translations_fi.ExpiresInParameterDays;\r\n\tstatic SavingEventTypeCParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingEventTypeCParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic EditableDocumentCodeMustBeDefined: string = Translations_fi.EditableDocumentCodeMustBeDefined;\r\n\tstatic EditFurtherEducation: string = Translations_fi.EditFurtherEducation;\r\n\tstatic EventTypeCodeMustBeDefined: string = Translations_fi.EventTypeCodeMustBeDefined;\r\n\tstatic No: string = Translations_fi.No;\r\n\tstatic RemoveEvent: string = Translations_fi.RemoveEvent;\r\n\tstatic ChooseHowYouWantToReport: string = Translations_fi.ChooseHowYouWantToReport;\r\n\tstatic ChangedObserverAction: string = Translations_fi.ChangedObserverAction;\r\n\tstatic FormCodeIsAlreadyInUse: string = Translations_fi.FormCodeIsAlreadyInUse;\r\n\tstatic RecordUserReport: string = Translations_fi.RecordUserReport;\r\n\tstatic RecordUserActiveStateChangePermissionDeniedInUnitParameter: string = Translations_fi.RecordUserActiveStateChangePermissionDeniedInUnitParameter;\r\n\tstatic DoYouReallyWantToRemoveRecordUserParameter: string = Translations_fi.DoYouReallyWantToRemoveRecordUserParameter;\r\n\tstatic Go: string = Translations_fi.Go;\r\n\tstatic FormRowPrint: string = Translations_fi.FormRowPrint;\r\n\tstatic TimeSpanMonth: string = Translations_fi.TimeSpanMonth;\r\n\tstatic RemoveDefaultTaskType: string = Translations_fi.RemoveDefaultTaskType;\r\n\tstatic SavingRecordFurtherEducationGroupParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingRecordFurtherEducationGroupParameterWasNotSuccessfulErrorParameter;\r\n\tstatic ReadReceiptMessage: string = Translations_fi.ReadReceiptMessage;\r\n\tstatic DeletingDocumentTemplateParameterWasSuccessful: string = Translations_fi.DeletingDocumentTemplateParameterWasSuccessful;\r\n\tstatic DeletingUserGroupUsersOfCompanyParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingUserGroupUsersOfCompanyParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic DeletingEventTypeParameterWasSuccessful: string = Translations_fi.DeletingEventTypeParameterWasSuccessful;\r\n\tstatic FamiliarizationsMustBeDefinedBeforeAddingRecordUserFamiliarizations: string = Translations_fi.FamiliarizationsMustBeDefinedBeforeAddingRecordUserFamiliarizations;\r\n\tstatic AddFolder: string = Translations_fi.AddFolder;\r\n\tstatic Locked: string = Translations_fi.Locked;\r\n\tstatic UserProfile: string = Translations_fi.UserProfile;\r\n\tstatic InstantMessageChannelArchivingTypeRemoveChannelAtDateParameter: string = Translations_fi.InstantMessageChannelArchivingTypeRemoveChannelAtDateParameter;\r\n\tstatic Users: string = Translations_fi.Users;\r\n\tstatic SelectOperatorOrFunction: string = Translations_fi.SelectOperatorOrFunction;\r\n\tstatic ExternalSystemDatabaseInterfaceError: string = Translations_fi.ExternalSystemDatabaseInterfaceError;\r\n\tstatic PublishVoucherInOutReportToFileSystem: string = Translations_fi.PublishVoucherInOutReportToFileSystem;\r\n\tstatic DeletingMessageTypeParameterWasNotSuccessfulUsedInParameterMessages: string = Translations_fi.DeletingMessageTypeParameterWasNotSuccessfulUsedInParameterMessages;\r\n\tstatic LockedEventParameterCannotBeDeleted: string = Translations_fi.LockedEventParameterCannotBeDeleted;\r\n\tstatic TaskStateCodeIsAlreadyInUse: string = Translations_fi.TaskStateCodeIsAlreadyInUse;\r\n\tstatic ClearSubUnitPermissions: string = Translations_fi.ClearSubUnitPermissions;\r\n\tstatic DaysAgo30: string = Translations_fi.DaysAgo30;\r\n\tstatic SavingImagesWasSuccessful: string = Translations_fi.SavingImagesWasSuccessful;\r\n\tstatic SavingDocumentTemplateParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingDocumentTemplateParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic JobTypePushNotification: string = Translations_fi.JobTypePushNotification;\r\n\tstatic AddTaskState: string = Translations_fi.AddTaskState;\r\n\tstatic SavingTaskStateParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingTaskStateParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic DoYouReallyWantToRemoveFolderParameter: string = Translations_fi.DoYouReallyWantToRemoveFolderParameter;\r\n\tstatic CopyContentToDocumentContent: string = Translations_fi.CopyContentToDocumentContent;\r\n\tstatic LanguageNonLocalSwedish: string = Translations_fi.LanguageNonLocalSwedish;\r\n\tstatic LanguageSwedish: string = Translations_fi.LanguageSwedish;\r\n\tstatic SavePrintAs: string = Translations_fi.SavePrintAs;\r\n\tstatic WhistleBlowStateNew: string = Translations_fi.WhistleBlowStateNew;\r\n\tstatic EventTypesMustBeDefinedBeforeAddingEvents: string = Translations_fi.EventTypesMustBeDefinedBeforeAddingEvents;\r\n\tstatic AType: string = Translations_fi.AType;\r\n\tstatic KeywordParameterNotFound: string = Translations_fi.KeywordParameterNotFound;\r\n\tstatic AdditionalPermissionAWhistleBlow: string = Translations_fi.AdditionalPermissionAWhistleBlow;\r\n\tstatic Characters: string = Translations_fi.Characters;\r\n\tstatic ReadReceiptGiven: string = Translations_fi.ReadReceiptGiven;\r\n\tstatic WhistleBlowGuide: string = Translations_fi.WhistleBlowGuide;\r\n\tstatic WhistleBlowResolutionResolved: string = Translations_fi.WhistleBlowResolutionResolved;\r\n\tstatic DeletingWhistleBlowCategoryParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingWhistleBlowCategoryParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic UserGroupParameterIsInUseInParameterUsersAndCannotBeDeleted: string = Translations_fi.UserGroupParameterIsInUseInParameterUsersAndCannotBeDeleted;\r\n\tstatic FormExpression: string = Translations_fi.FormExpression;\r\n\tstatic FieldParameterMaxLengthIsParameter: string = Translations_fi.FieldParameterMaxLengthIsParameter;\r\n\tstatic AddingCalendarTaskHandlersWasSuccessful: string = Translations_fi.AddingCalendarTaskHandlersWasSuccessful;\r\n\tstatic DeletingEditableDocumentParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingEditableDocumentParameterWasNotSuccessfulErrorParameter;\r\n\tstatic InstantMessageChannelInformation: string = Translations_fi.InstantMessageChannelInformation;\r\n\tstatic RecordBasicEducationCodeMustBeDefined: string = Translations_fi.RecordBasicEducationCodeMustBeDefined;\r\n\tstatic MyFilters: string = Translations_fi.MyFilters;\r\n\tstatic Day: string = Translations_fi.Day;\r\n\tstatic SavingImagesNotSuccessfulErrorParameter: string = Translations_fi.SavingImagesNotSuccessfulErrorParameter;\r\n\tstatic DeletingTaskDataRowWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingTaskDataRowWasNotSuccessfulConcurrencyError;\r\n\tstatic DeletingUserParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingUserParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic RemoveUnit: string = Translations_fi.RemoveUnit;\r\n\tstatic TheUserDoesNotHavePermissionsForThisSystem: string = Translations_fi.TheUserDoesNotHavePermissionsForThisSystem;\r\n\tstatic EditableDocument: string = Translations_fi.EditableDocument;\r\n\tstatic NewCompanyGroupMustBeSavedBeforeUsersCanBeAdded: string = Translations_fi.NewCompanyGroupMustBeSavedBeforeUsersCanBeAdded;\r\n\tstatic DeletingCalendarTaskCategoriesParameterWasSuccessful: string = Translations_fi.DeletingCalendarTaskCategoriesParameterWasSuccessful;\r\n\tstatic RemoveEventHandler: string = Translations_fi.RemoveEventHandler;\r\n\tstatic SavingTaskTypeParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingTaskTypeParameterWasNotSuccessfulErrorParameter;\r\n\tstatic List: string = Translations_fi.List;\r\n\tstatic ErrorUserChangeWouldLeadToInvalidDefaultEventHandlers: string = Translations_fi.ErrorUserChangeWouldLeadToInvalidDefaultEventHandlers;\r\n\tstatic SavingInstantMessageChannelParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingInstantMessageChannelParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic ExpiredFamiliarizations: string = Translations_fi.ExpiredFamiliarizations;\r\n\tstatic AddPhoto: string = Translations_fi.AddPhoto;\r\n\tstatic AllDocumentTypes: string = Translations_fi.AllDocumentTypes;\r\n\tstatic DeletingDocumentTemplatesParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingDocumentTemplatesParameterWasNotSuccessfulErrorParameter;\r\n\tstatic FormTitle4: string = Translations_fi.FormTitle4;\r\n\tstatic ValidityEndDate: string = Translations_fi.ValidityEndDate;\r\n\tstatic InstantMessages: string = Translations_fi.InstantMessages;\r\n\tstatic WhistleBlowRecords: string = Translations_fi.WhistleBlowRecords;\r\n\tstatic LockedTaskParameterCannotBeSaved: string = Translations_fi.LockedTaskParameterCannotBeSaved;\r\n\tstatic SelectTaskPriority: string = Translations_fi.SelectTaskPriority;\r\n\tstatic SavingCompanyGroupParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingCompanyGroupParameterWasNotSuccessfulErrorParameter;\r\n\tstatic FormTextAreaSize: string = Translations_fi.FormTextAreaSize;\r\n\tstatic AccessRightWriteInstantMessages: string = Translations_fi.AccessRightWriteInstantMessages;\r\n\tstatic SSRSParameterReportsFetched: string = Translations_fi.SSRSParameterReportsFetched;\r\n\tstatic Hidden: string = Translations_fi.Hidden;\r\n\tstatic ReadReceiptRequired: string = Translations_fi.ReadReceiptRequired;\r\n\tstatic DeletingUserGroupParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingUserGroupParameterWasNotSuccessfulErrorParameter;\r\n\tstatic CompanyTaskTypesInstruction: string = Translations_fi.CompanyTaskTypesInstruction;\r\n\tstatic DeletingUserGroupParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingUserGroupParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic SavingMessageSendEmailParameterWasSuccessful: string = Translations_fi.SavingMessageSendEmailParameterWasSuccessful;\r\n\tstatic SavingRecordFamiliarizationParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingRecordFamiliarizationParameterWasNotSuccessfulErrorParameter;\r\n\tstatic DeletingRecordQualificationParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingRecordQualificationParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic LockedToUser: string = Translations_fi.LockedToUser;\r\n\tstatic OperationNotAllowedForRootFolderParameter: string = Translations_fi.OperationNotAllowedForRootFolderParameter;\r\n\tstatic FormExpressionFormatMinutesToHoursAndMinutes: string = Translations_fi.FormExpressionFormatMinutesToHoursAndMinutes;\r\n\tstatic MessageModuleProperties: string = Translations_fi.MessageModuleProperties;\r\n\tstatic FormWidthMobile: string = Translations_fi.FormWidthMobile;\r\n\tstatic AddFamiliarization: string = Translations_fi.AddFamiliarization;\r\n\tstatic EventType: string = Translations_fi.EventType;\r\n\tstatic Parameters: string = Translations_fi.Parameters;\r\n\tstatic FolderPath: string = Translations_fi.FolderPath;\r\n\tstatic TaskParameterNotFound: string = Translations_fi.TaskParameterNotFound;\r\n\tstatic ActivePlural: string = Translations_fi.ActivePlural;\r\n\tstatic ReadingDatabaseParameter: string = Translations_fi.ReadingDatabaseParameter;\r\n\tstatic SearchEndDate: string = Translations_fi.SearchEndDate;\r\n\tstatic BankBICCode: string = Translations_fi.BankBICCode;\r\n\tstatic JobTitleMustBeDefined: string = Translations_fi.JobTitleMustBeDefined;\r\n\tstatic RecordFurtherEducationGroupCodeIsAlreadyInUse: string = Translations_fi.RecordFurtherEducationGroupCodeIsAlreadyInUse;\r\n\tstatic WebPageStyle: string = Translations_fi.WebPageStyle;\r\n\tstatic SavingMessageTypeParameterWasSuccessful: string = Translations_fi.SavingMessageTypeParameterWasSuccessful;\r\n\tstatic DeletingWhistleBlowCategoryParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingWhistleBlowCategoryParameterWasNotSuccessfulErrorParameter;\r\n\tstatic SelectTaskInListToSeeThePreview: string = Translations_fi.SelectTaskInListToSeeThePreview;\r\n\tstatic DoYouReallyWantToRemoveUserGroupParameter: string = Translations_fi.DoYouReallyWantToRemoveUserGroupParameter;\r\n\tstatic ReminderHoursBefore: string = Translations_fi.ReminderHoursBefore;\r\n\tstatic Handling: string = Translations_fi.Handling;\r\n\tstatic EventHandlerParameterNotFound: string = Translations_fi.EventHandlerParameterNotFound;\r\n\tstatic UnitIsRelatedToEventPartner: string = Translations_fi.UnitIsRelatedToEventPartner;\r\n\tstatic ValidPlural: string = Translations_fi.ValidPlural;\r\n\tstatic Camera: string = Translations_fi.Camera;\r\n\tstatic CalendarTaskRepetitionRepeatIntervalPrefix: string = Translations_fi.CalendarTaskRepetitionRepeatIntervalPrefix;\r\n\tstatic DefaultEventSettings: string = Translations_fi.DefaultEventSettings;\r\n\tstatic UserRecordStatisticsUserAccountConnectedCards: string = Translations_fi.UserRecordStatisticsUserAccountConnectedCards;\r\n\tstatic UserIsActiveInWeb: string = Translations_fi.UserIsActiveInWeb;\r\n\tstatic FormDatesAndTimes: string = Translations_fi.FormDatesAndTimes;\r\n\tstatic DeletingEventUrgencyClassesParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingEventUrgencyClassesParameterWasNotSuccessfulErrorParameter;\r\n\tstatic AdditionalPermissionAMessage: string = Translations_fi.AdditionalPermissionAMessage;\r\n\tstatic SavingEventMessageWasNotSuccessfulErrorParameter: string = Translations_fi.SavingEventMessageWasNotSuccessfulErrorParameter;\r\n\tstatic Log: string = Translations_fi.Log;\r\n\tstatic Change: string = Translations_fi.Change;\r\n\tstatic FormTitle1: string = Translations_fi.FormTitle1;\r\n\tstatic NoFilters: string = Translations_fi.NoFilters;\r\n\tstatic TaskHandlers: string = Translations_fi.TaskHandlers;\r\n\tstatic SavingInstantMessageWasSuccessful: string = Translations_fi.SavingInstantMessageWasSuccessful;\r\n\tstatic AllLogisticVoucherCustomers: string = Translations_fi.AllLogisticVoucherCustomers;\r\n\tstatic SavingTaskPriorityParameterWasSuccessful: string = Translations_fi.SavingTaskPriorityParameterWasSuccessful;\r\n\tstatic GroupByHalfYear: string = Translations_fi.GroupByHalfYear;\r\n\tstatic PermissionToCreateEvents: string = Translations_fi.PermissionToCreateEvents;\r\n\tstatic ModifiedActions: string = Translations_fi.ModifiedActions;\r\n\tstatic CalendarTaskHandlers: string = Translations_fi.CalendarTaskHandlers;\r\n\tstatic DoYouReallyWantToSave: string = Translations_fi.DoYouReallyWantToSave;\r\n\tstatic SavingRecordUserQualificationParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingRecordUserQualificationParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic Public: string = Translations_fi.Public;\r\n\tstatic DoYouReallyWantToRemoveRecordQualificationParameter: string = Translations_fi.DoYouReallyWantToRemoveRecordQualificationParameter;\r\n\tstatic WorkShift: string = Translations_fi.WorkShift;\r\n\tstatic SelectUser: string = Translations_fi.SelectUser;\r\n\tstatic Trigonometry: string = Translations_fi.Trigonometry;\r\n\tstatic ThisMessageWasDeleted: string = Translations_fi.ThisMessageWasDeleted;\r\n\tstatic UserRecords: string = Translations_fi.UserRecords;\r\n\tstatic SavingEventTypeCParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingEventTypeCParameterWasNotSuccessfulErrorParameter;\r\n\tstatic AddingRecordUserFamiliarizationsWasSuccessful: string = Translations_fi.AddingRecordUserFamiliarizationsWasSuccessful;\r\n\tstatic EditDefaultBasicEducation: string = Translations_fi.EditDefaultBasicEducation;\r\n\tstatic MessageType: string = Translations_fi.MessageType;\r\n\tstatic YouHaveNotSavedChangesDoYouWantToSaveChanges: string = Translations_fi.YouHaveNotSavedChangesDoYouWantToSaveChanges;\r\n\tstatic InstantMessageChannelUserParameterIsNotAllowedToUseChannelParameter: string = Translations_fi.InstantMessageChannelUserParameterIsNotAllowedToUseChannelParameter;\r\n\tstatic FileChangesCheckingAndEmailingFinishedInParameterSeconds: string = Translations_fi.FileChangesCheckingAndEmailingFinishedInParameterSeconds;\r\n\tstatic AddUserGroupParameterWasNotSuccessfulErrorParameter: string = Translations_fi.AddUserGroupParameterWasNotSuccessfulErrorParameter;\r\n\tstatic DefaultBasicEducations: string = Translations_fi.DefaultBasicEducations;\r\n\tstatic WhistleBlowArchivingTypeChangeStateAndRemoveAllData: string = Translations_fi.WhistleBlowArchivingTypeChangeStateAndRemoveAllData;\r\n\tstatic SelectCompanyGroupOrCompany: string = Translations_fi.SelectCompanyGroupOrCompany;\r\n\tstatic WhistleBlowInformant: string = Translations_fi.WhistleBlowInformant;\r\n\tstatic DesignArea: string = Translations_fi.DesignArea;\r\n\tstatic EditableDocumentSaveBeforeApproveConfirmation: string = Translations_fi.EditableDocumentSaveBeforeApproveConfirmation;\r\n\tstatic EmptyDocument: string = Translations_fi.EmptyDocument;\r\n\tstatic FormPrint: string = Translations_fi.FormPrint;\r\n\tstatic DeletingOneTimePasswordWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingOneTimePasswordWasNotSuccessfulConcurrencyError;\r\n\tstatic Color: string = Translations_fi.Color;\r\n\tstatic RecordUserExcelFamiliarization: string = Translations_fi.RecordUserExcelFamiliarization;\r\n\tstatic Wage: string = Translations_fi.Wage;\r\n\tstatic SavingDirectoryItemDocumentParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingDirectoryItemDocumentParameterWasNotSuccessfulErrorParameter;\r\n\tstatic Salary: string = Translations_fi.Salary;\r\n\tstatic RemoveNotifiedPerson: string = Translations_fi.RemoveNotifiedPerson;\r\n\tstatic PrivateAndPublic: string = Translations_fi.PrivateAndPublic;\r\n\tstatic LockedCalendarTaskParameterCannotBeDeleted: string = Translations_fi.LockedCalendarTaskParameterCannotBeDeleted;\r\n\tstatic DeletingCalendarTaskCategoryParameterWasSuccessful: string = Translations_fi.DeletingCalendarTaskCategoryParameterWasSuccessful;\r\n\tstatic InstantMessageChannelUsersNotUsable: string = Translations_fi.InstantMessageChannelUsersNotUsable;\r\n\tstatic AddTaskHandler: string = Translations_fi.AddTaskHandler;\r\n\tstatic FormTitle2: string = Translations_fi.FormTitle2;\r\n\tstatic EventTypeBParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted: string = Translations_fi.EventTypeBParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted;\r\n\tstatic Target: string = Translations_fi.Target;\r\n\tstatic WhistleBlowResolutionTypeMustBeDefined: string = Translations_fi.WhistleBlowResolutionTypeMustBeDefined;\r\n\tstatic CopyDefaultHandlers: string = Translations_fi.CopyDefaultHandlers;\r\n\tstatic InvitationParameterHasBeenExpired: string = Translations_fi.InvitationParameterHasBeenExpired;\r\n\tstatic SavingCalendarTaskCategoryParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingCalendarTaskCategoryParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic CompanyGroupCodeIsAlreadyInUse: string = Translations_fi.CompanyGroupCodeIsAlreadyInUse;\r\n\tstatic Interval: string = Translations_fi.Interval;\r\n\tstatic LogEventType: string = Translations_fi.LogEventType;\r\n\tstatic DeletingTaskPrioritiesParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingTaskPrioritiesParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic DeletingTaskDataRowWasSuccessful: string = Translations_fi.DeletingTaskDataRowWasSuccessful;\r\n\tstatic DeletingRecordFamiliarizationsParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingRecordFamiliarizationsParameterWasNotSuccessfulErrorParameter;\r\n\tstatic UpdatingDatabase: string = Translations_fi.UpdatingDatabase;\r\n\tstatic PreviewPanel: string = Translations_fi.PreviewPanel;\r\n\tstatic MessageTypes: string = Translations_fi.MessageTypes;\r\n\tstatic NewRow: string = Translations_fi.NewRow;\r\n\tstatic LanguageFinnish: string = Translations_fi.LanguageFinnish;\r\n\tstatic Copy: string = Translations_fi.Copy;\r\n\tstatic CopyDocumentsFromCompany: string = Translations_fi.CopyDocumentsFromCompany;\r\n\tstatic RemoveDefaultTaskState: string = Translations_fi.RemoveDefaultTaskState;\r\n\tstatic PushNotificationInUse: string = Translations_fi.PushNotificationInUse;\r\n\tstatic FormulaMin: string = Translations_fi.FormulaMin;\r\n\tstatic FolderCannotBeMovedToItsSubFolder: string = Translations_fi.FolderCannotBeMovedToItsSubFolder;\r\n\tstatic StudyWeeks: string = Translations_fi.StudyWeeks;\r\n\tstatic And: string = Translations_fi.And;\r\n\tstatic AddPartners: string = Translations_fi.AddPartners;\r\n\tstatic FormDecimals: string = Translations_fi.FormDecimals;\r\n\tstatic SaveCalendarTaskConfirmation: string = Translations_fi.SaveCalendarTaskConfirmation;\r\n\tstatic FormNormalText: string = Translations_fi.FormNormalText;\r\n\tstatic EditFileFilter: string = Translations_fi.EditFileFilter;\r\n\tstatic SavingMessageSendEmailParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingMessageSendEmailParameterWasNotSuccessfulErrorParameter;\r\n\tstatic CalendarTaskRepetitionCountSuffix: string = Translations_fi.CalendarTaskRepetitionCountSuffix;\r\n\tstatic UserCodeMustBeDefined: string = Translations_fi.UserCodeMustBeDefined;\r\n\tstatic DefaultEventUrgencyClassParameterCannotBeDeleted: string = Translations_fi.DefaultEventUrgencyClassParameterCannotBeDeleted;\r\n\tstatic SavingSettingsWasSuccessful: string = Translations_fi.SavingSettingsWasSuccessful;\r\n\tstatic WhistleBlowInternalMessageConfirmation: string = Translations_fi.WhistleBlowInternalMessageConfirmation;\r\n\tstatic EventTypeBCodeMustBeDefined: string = Translations_fi.EventTypeBCodeMustBeDefined;\r\n\tstatic PreventiveAction: string = Translations_fi.PreventiveAction;\r\n\tstatic DownloadDocument: string = Translations_fi.DownloadDocument;\r\n\tstatic CalendarTaskRepetitionRepeatIntervalDayMonthSeparator: string = Translations_fi.CalendarTaskRepetitionRepeatIntervalDayMonthSeparator;\r\n\tstatic SelectRecordUserTypeToBeCreated: string = Translations_fi.SelectRecordUserTypeToBeCreated;\r\n\tstatic UserParameterNotFound: string = Translations_fi.UserParameterNotFound;\r\n\tstatic DeletingRecordUserTransferredPropertiesParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingRecordUserTransferredPropertiesParameterWasNotSuccessfulErrorParameter;\r\n\tstatic ReminderHourBefore: string = Translations_fi.ReminderHourBefore;\r\n\tstatic PageName: string = Translations_fi.PageName;\r\n\tstatic TrainingTime: string = Translations_fi.TrainingTime;\r\n\tstatic InvalidReCAPTCHA: string = Translations_fi.InvalidReCAPTCHA;\r\n\tstatic WhistleBlowApplicationName: string = Translations_fi.WhistleBlowApplicationName;\r\n\tstatic RemoveLogisticVoucherCustomerPaymentSetting: string = Translations_fi.RemoveLogisticVoucherCustomerPaymentSetting;\r\n\tstatic DeletingCompaniesParameterWasSuccessful: string = Translations_fi.DeletingCompaniesParameterWasSuccessful;\r\n\tstatic City: string = Translations_fi.City;\r\n\tstatic SavingEventTypeBParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingEventTypeBParameterWasNotSuccessfulErrorParameter;\r\n\tstatic AddTransferredPropertyToMultipleUserRecords: string = Translations_fi.AddTransferredPropertyToMultipleUserRecords;\r\n\tstatic LogoSquare: string = Translations_fi.LogoSquare;\r\n\tstatic RemoveTaskPriority: string = Translations_fi.RemoveTaskPriority;\r\n\tstatic TaskTypeParameterIsInUseInParameterTasksAndCannotBeDeleted: string = Translations_fi.TaskTypeParameterIsInUseInParameterTasksAndCannotBeDeleted;\r\n\tstatic NoToDos: string = Translations_fi.NoToDos;\r\n\tstatic AddFamiliarizations: string = Translations_fi.AddFamiliarizations;\r\n\tstatic Payer: string = Translations_fi.Payer;\r\n\tstatic ApproveEventHandlerConfirmation: string = Translations_fi.ApproveEventHandlerConfirmation;\r\n\tstatic RowAmountIncludedInPrint: string = Translations_fi.RowAmountIncludedInPrint;\r\n\tstatic DeletingRecordBasicEducationsParameterWasSuccessful: string = Translations_fi.DeletingRecordBasicEducationsParameterWasSuccessful;\r\n\tstatic NewRecordUserMustBeSavedBeforeFurtherEducationsCanBeAdded: string = Translations_fi.NewRecordUserMustBeSavedBeforeFurtherEducationsCanBeAdded;\r\n\tstatic SavingTaskDataRowWasNotSuccessfulErrorParameter: string = Translations_fi.SavingTaskDataRowWasNotSuccessfulErrorParameter;\r\n\tstatic UserIsWhistleBlowChannelAdminAndCannotBeDeleted: string = Translations_fi.UserIsWhistleBlowChannelAdminAndCannotBeDeleted;\r\n\tstatic SelectTaskState: string = Translations_fi.SelectTaskState;\r\n\tstatic DoYouReallyWantToRemoveTaskHandlerParameter: string = Translations_fi.DoYouReallyWantToRemoveTaskHandlerParameter;\r\n\tstatic WhistleBlowSourceOral: string = Translations_fi.WhistleBlowSourceOral;\r\n\tstatic TransportCompany: string = Translations_fi.TransportCompany;\r\n\tstatic Header: string = Translations_fi.Header;\r\n\tstatic Payee: string = Translations_fi.Payee;\r\n\tstatic DeletingDocumentTemplateParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingDocumentTemplateParameterWasNotSuccessfulErrorParameter;\r\n\tstatic TaskModuleProperties: string = Translations_fi.TaskModuleProperties;\r\n\tstatic EventReceiverIsPartnerCompany: string = Translations_fi.EventReceiverIsPartnerCompany;\r\n\tstatic DeletingInstantMessageUserParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingInstantMessageUserParameterWasNotSuccessfulErrorParameter;\r\n\tstatic ChangeLanguage: string = Translations_fi.ChangeLanguage;\r\n\tstatic AddWhistleBlowChannelAdminsParameterWasSuccessful: string = Translations_fi.AddWhistleBlowChannelAdminsParameterWasSuccessful;\r\n\tstatic AddWhistleBlowChannelAdminParameterWasSuccessful: string = Translations_fi.AddWhistleBlowChannelAdminParameterWasSuccessful;\r\n\tstatic Familiarization: string = Translations_fi.Familiarization;\r\n\tstatic HandlersMustBeDefined: string = Translations_fi.HandlersMustBeDefined;\r\n\tstatic AccountNumberTkbInCredit: string = Translations_fi.AccountNumberTkbInCredit;\r\n\tstatic SavingDefaultHandlersWasNotSuccessfulErrorParameter: string = Translations_fi.SavingDefaultHandlersWasNotSuccessfulErrorParameter;\r\n\tstatic AddRow: string = Translations_fi.AddRow;\r\n\tstatic NoInstantMessageChannelsToShow: string = Translations_fi.NoInstantMessageChannelsToShow;\r\n\tstatic EditLogisticVoucherCompanyPaymentSetting: string = Translations_fi.EditLogisticVoucherCompanyPaymentSetting;\r\n\tstatic NoEvents: string = Translations_fi.NoEvents;\r\n\tstatic DeletingTaskDataRowWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingTaskDataRowWasNotSuccessfulErrorParameter;\r\n\tstatic ExcelFile: string = Translations_fi.ExcelFile;\r\n\tstatic DeletingRecordUserEmploymentsParameterWasSuccessful: string = Translations_fi.DeletingRecordUserEmploymentsParameterWasSuccessful;\r\n\tstatic InstantMessageChannelMustHaveAtLeastOneAdministrator: string = Translations_fi.InstantMessageChannelMustHaveAtLeastOneAdministrator;\r\n\tstatic EmailMessage: string = Translations_fi.EmailMessage;\r\n\tstatic GroupByMonth: string = Translations_fi.GroupByMonth;\r\n\tstatic SavingEditableDocumentParameterApprovalWasSuccessful: string = Translations_fi.SavingEditableDocumentParameterApprovalWasSuccessful;\r\n\tstatic OtherSettings: string = Translations_fi.OtherSettings;\r\n\tstatic DocumentRootPath: string = Translations_fi.DocumentRootPath;\r\n\tstatic FormBoldFont: string = Translations_fi.FormBoldFont;\r\n\tstatic ChartGenerationFailed: string = Translations_fi.ChartGenerationFailed;\r\n\tstatic RemovingTaskHandlerWasNotSuccessfulErrorParameter: string = Translations_fi.RemovingTaskHandlerWasNotSuccessfulErrorParameter;\r\n\tstatic SetPermissions: string = Translations_fi.SetPermissions;\r\n\tstatic AddCompaniesParameterWasSuccessful: string = Translations_fi.AddCompaniesParameterWasSuccessful;\r\n\tstatic FormCalculated: string = Translations_fi.FormCalculated;\r\n\tstatic RemoveRemainder: string = Translations_fi.RemoveRemainder;\r\n\tstatic FormTimeSpan: string = Translations_fi.FormTimeSpan;\r\n\tstatic AddingAddRecordUserQualificationsWasNotSuccessfulErrorParameter: string = Translations_fi.AddingAddRecordUserQualificationsWasNotSuccessfulErrorParameter;\r\n\tstatic End: string = Translations_fi.End;\r\n\tstatic ThisMessageWasDeletedByInstantMessageChannelAdministrator: string = Translations_fi.ThisMessageWasDeletedByInstantMessageChannelAdministrator;\r\n\tstatic DeletingRecordBasicEducationParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingRecordBasicEducationParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic ReadMode: string = Translations_fi.ReadMode;\r\n\tstatic DeletingEventPartnerParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingEventPartnerParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic EmailingMessageWasNotSuccessfulErrorParameter: string = Translations_fi.EmailingMessageWasNotSuccessfulErrorParameter;\r\n\tstatic RecordUserQualificationParameterNotFound: string = Translations_fi.RecordUserQualificationParameterNotFound;\r\n\tstatic AddFamiliarizationToMultipleUserRecords: string = Translations_fi.AddFamiliarizationToMultipleUserRecords;\r\n\tstatic Subject: string = Translations_fi.Subject;\r\n\tstatic SharedReportAllCompanies: string = Translations_fi.SharedReportAllCompanies;\r\n\tstatic DoYouReallyWantToRemoveSelectedFileFilters: string = Translations_fi.DoYouReallyWantToRemoveSelectedFileFilters;\r\n\tstatic Loading: string = Translations_fi.Loading;\r\n\tstatic MessageTypeParameterNotFound: string = Translations_fi.MessageTypeParameterNotFound;\r\n\tstatic FileFilters: string = Translations_fi.FileFilters;\r\n\tstatic AddInstantMessageChannel: string = Translations_fi.AddInstantMessageChannel;\r\n\tstatic FileFilterCodeMustBeDefined: string = Translations_fi.FileFilterCodeMustBeDefined;\r\n\tstatic UpdateUserParameterExternalSystemsWasSuccessful: string = Translations_fi.UpdateUserParameterExternalSystemsWasSuccessful;\r\n\tstatic DocumentRootPathIsNotEmpty: string = Translations_fi.DocumentRootPathIsNotEmpty;\r\n\tstatic TaskStateCodeMustBeDefined: string = Translations_fi.TaskStateCodeMustBeDefined;\r\n\tstatic DraftCannotBeApprovedDoYouWantToSaveDraftAnyway: string = Translations_fi.DraftCannotBeApprovedDoYouWantToSaveDraftAnyway;\r\n\tstatic RecordParameterUnlockingFailedRecordIsWriteLockedToUserParameter: string = Translations_fi.RecordParameterUnlockingFailedRecordIsWriteLockedToUserParameter;\r\n\tstatic ShowPublishVersion: string = Translations_fi.ShowPublishVersion;\r\n\tstatic FormUsableInSearchFilter: string = Translations_fi.FormUsableInSearchFilter;\r\n\tstatic TrainingEndDate: string = Translations_fi.TrainingEndDate;\r\n\tstatic RecordUserEmploymentParameterNotFound: string = Translations_fi.RecordUserEmploymentParameterNotFound;\r\n\tstatic ApplicationTempPathParameterNotFound: string = Translations_fi.ApplicationTempPathParameterNotFound;\r\n\tstatic LogisticVoucherCustomer: string = Translations_fi.LogisticVoucherCustomer;\r\n\tstatic Download: string = Translations_fi.Download;\r\n\tstatic MaxSearchResultCount: string = Translations_fi.MaxSearchResultCount;\r\n\tstatic NewUserMustBeSavedBeforeUserGroupsCanBeAdded: string = Translations_fi.NewUserMustBeSavedBeforeUserGroupsCanBeAdded;\r\n\tstatic CustomStyleClass: string = Translations_fi.CustomStyleClass;\r\n\tstatic RecordFurtherEducationCodeMustBeDefined: string = Translations_fi.RecordFurtherEducationCodeMustBeDefined;\r\n\tstatic RemoveUserFromUserGroup: string = Translations_fi.RemoveUserFromUserGroup;\r\n\tstatic DoYouReallyWantToRemoveSelectedUsers: string = Translations_fi.DoYouReallyWantToRemoveSelectedUsers;\r\n\tstatic InTesting: string = Translations_fi.InTesting;\r\n\tstatic DeletingEventParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingEventParameterWasNotSuccessfulErrorParameter;\r\n\tstatic VoucherInOutReportSavePath: string = Translations_fi.VoucherInOutReportSavePath;\r\n\tstatic SavingUnitPermissionsWasSuccessful: string = Translations_fi.SavingUnitPermissionsWasSuccessful;\r\n\tstatic SelectEventReceiver: string = Translations_fi.SelectEventReceiver;\r\n\tstatic MovingFilesAndDocumentsToFolderParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.MovingFilesAndDocumentsToFolderParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic RemoveRow: string = Translations_fi.RemoveRow;\r\n\tstatic RecordUserExcelTabName: string = Translations_fi.RecordUserExcelTabName;\r\n\tstatic SavingJobParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingJobParameterWasNotSuccessfulErrorParameter;\r\n\tstatic Banner: string = Translations_fi.Banner;\r\n\tstatic Portrait: string = Translations_fi.Portrait;\r\n\tstatic DoYouReallyWantToRemoveSelectedHandlers: string = Translations_fi.DoYouReallyWantToRemoveSelectedHandlers;\r\n\tstatic TaskMustBeSavedBeforeAttachmentsCanBeAdded: string = Translations_fi.TaskMustBeSavedBeforeAttachmentsCanBeAdded;\r\n\tstatic RememberMe: string = Translations_fi.RememberMe;\r\n\tstatic SavingTaskPriorityParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingTaskPriorityParameterWasNotSuccessfulErrorParameter;\r\n\tstatic BannerPath: string = Translations_fi.BannerPath;\r\n\tstatic ShowArchived: string = Translations_fi.ShowArchived;\r\n\tstatic AddQualification: string = Translations_fi.AddQualification;\r\n\tstatic RemovingTaskHandlersWasSuccessful: string = Translations_fi.RemovingTaskHandlersWasSuccessful;\r\n\tstatic DoYouReallyWantToSaveData: string = Translations_fi.DoYouReallyWantToSaveData;\r\n\tstatic Months: string = Translations_fi.Months;\r\n\tstatic WhistleBlowInformantHasReadMessage: string = Translations_fi.WhistleBlowInformantHasReadMessage;\r\n\tstatic DocumentTemplateCodeIsAlreadyInUse: string = Translations_fi.DocumentTemplateCodeIsAlreadyInUse;\r\n\tstatic EventSenderIsPartnerCompany: string = Translations_fi.EventSenderIsPartnerCompany;\r\n\tstatic SelectInstantMessageChannelUser: string = Translations_fi.SelectInstantMessageChannelUser;\r\n\tstatic FamiliarizationStartDateStart: string = Translations_fi.FamiliarizationStartDateStart;\r\n\tstatic AddFile: string = Translations_fi.AddFile;\r\n\tstatic DeletingEventUrgencyClassParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingEventUrgencyClassParameterWasNotSuccessfulErrorParameter;\r\n\tstatic FormRequired: string = Translations_fi.FormRequired;\r\n\tstatic UserModuleProperties: string = Translations_fi.UserModuleProperties;\r\n\tstatic SearchProperties: string = Translations_fi.SearchProperties;\r\n\tstatic ReminderDayBefore: string = Translations_fi.ReminderDayBefore;\r\n\tstatic NoDataToShow: string = Translations_fi.NoDataToShow;\r\n\tstatic CalendarTaskStartDateMustBeDefined: string = Translations_fi.CalendarTaskStartDateMustBeDefined;\r\n\tstatic EditDocumentTemplate: string = Translations_fi.EditDocumentTemplate;\r\n\tstatic InstantMessageChannelOneUser: string = Translations_fi.InstantMessageChannelOneUser;\r\n\tstatic Errors: string = Translations_fi.Errors;\r\n\tstatic FormShowInRow: string = Translations_fi.FormShowInRow;\r\n\tstatic ExpireTime: string = Translations_fi.ExpireTime;\r\n\tstatic DeletingCompanyGroupParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingCompanyGroupParameterWasNotSuccessfulErrorParameter;\r\n\tstatic TaskStatesMustBeDefinedBeforeAddingTasks: string = Translations_fi.TaskStatesMustBeDefinedBeforeAddingTasks;\r\n\tstatic Folder: string = Translations_fi.Folder;\r\n\tstatic RemoveInstantMessageChannelUser: string = Translations_fi.RemoveInstantMessageChannelUser;\r\n\tstatic DoYouReallyWantToRemoveRecordFamiliarizationParameter: string = Translations_fi.DoYouReallyWantToRemoveRecordFamiliarizationParameter;\r\n\tstatic Resolution: string = Translations_fi.Resolution;\r\n\tstatic ReportDialogInfoText: string = Translations_fi.ReportDialogInfoText;\r\n\tstatic FirstNameMustBeDefined: string = Translations_fi.FirstNameMustBeDefined;\r\n\tstatic CalendarTaskRemoveOccurrence: string = Translations_fi.CalendarTaskRemoveOccurrence;\r\n\tstatic SaveToTemplate: string = Translations_fi.SaveToTemplate;\r\n\tstatic ImmediateAction: string = Translations_fi.ImmediateAction;\r\n\tstatic MoveDown: string = Translations_fi.MoveDown;\r\n\tstatic PaymentSettings: string = Translations_fi.PaymentSettings;\r\n\tstatic Folders: string = Translations_fi.Folders;\r\n\tstatic Max: string = Translations_fi.Max;\r\n\tstatic CostCentreNumber: string = Translations_fi.CostCentreNumber;\r\n\tstatic SendingNotificationsWasNotSuccessfulErrorParameter: string = Translations_fi.SendingNotificationsWasNotSuccessfulErrorParameter;\r\n\tstatic ShowUsers: string = Translations_fi.ShowUsers;\r\n\tstatic FormulaMultiplication: string = Translations_fi.FormulaMultiplication;\r\n\tstatic NewRecordUserMustBeSavedBeforeQualificationsCanBeAdded: string = Translations_fi.NewRecordUserMustBeSavedBeforeQualificationsCanBeAdded;\r\n\tstatic SavingEventUrgencyClassParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingEventUrgencyClassParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic ProcessingTimeDays: string = Translations_fi.ProcessingTimeDays;\r\n\tstatic AddRows: string = Translations_fi.AddRows;\r\n\tstatic NotInUse: string = Translations_fi.NotInUse;\r\n\tstatic AutomaticLogoutDone: string = Translations_fi.AutomaticLogoutDone;\r\n\tstatic UserRecordStatisticsExpiredFurtherEducations: string = Translations_fi.UserRecordStatisticsExpiredFurtherEducations;\r\n\tstatic DeletingUsersParameterWasSuccessful: string = Translations_fi.DeletingUsersParameterWasSuccessful;\r\n\tstatic EmailAddress: string = Translations_fi.EmailAddress;\r\n\tstatic DoYouReallyWantToRemoveEventTypeParameter: string = Translations_fi.DoYouReallyWantToRemoveEventTypeParameter;\r\n\tstatic AddPartnersParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.AddPartnersParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic Others: string = Translations_fi.Others;\r\n\tstatic LogSizeInDays: string = Translations_fi.LogSizeInDays;\r\n\tstatic EditTask: string = Translations_fi.EditTask;\r\n\tstatic AddUserParameterWasNotSuccessfulErrorParameter: string = Translations_fi.AddUserParameterWasNotSuccessfulErrorParameter;\r\n\tstatic NormalMessage: string = Translations_fi.NormalMessage;\r\n\tstatic PositionErrorPermissionDenied: string = Translations_fi.PositionErrorPermissionDenied;\r\n\tstatic PermissionsToCreateEventsToEventPartner: string = Translations_fi.PermissionsToCreateEventsToEventPartner;\r\n\tstatic AddMessage: string = Translations_fi.AddMessage;\r\n\tstatic FormMaximumValue: string = Translations_fi.FormMaximumValue;\r\n\tstatic VoucherSavePath: string = Translations_fi.VoucherSavePath;\r\n\tstatic DoYouReallyWantToRemoveChartPanelParameter: string = Translations_fi.DoYouReallyWantToRemoveChartPanelParameter;\r\n\tstatic DeletingFileFiltersParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingFileFiltersParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic SavingOptionParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingOptionParameterWasNotSuccessfulErrorParameter;\r\n\tstatic DirectoryItemFolderParameterNotFound: string = Translations_fi.DirectoryItemFolderParameterNotFound;\r\n\tstatic Picture: string = Translations_fi.Picture;\r\n\tstatic TrainingStartDateEnd: string = Translations_fi.TrainingStartDateEnd;\r\n\tstatic NoModifications: string = Translations_fi.NoModifications;\r\n\tstatic ReportGenerationAborted: string = Translations_fi.ReportGenerationAborted;\r\n\tstatic SelectComponentInFormToSeeComponentProperties: string = Translations_fi.SelectComponentInFormToSeeComponentProperties;\r\n\tstatic PaymentSetting: string = Translations_fi.PaymentSetting;\r\n\tstatic FormulaSqrt: string = Translations_fi.FormulaSqrt;\r\n\tstatic LogEventTime: string = Translations_fi.LogEventTime;\r\n\tstatic Remainder: string = Translations_fi.Remainder;\r\n\tstatic PrivacyPolicy: string = Translations_fi.PrivacyPolicy;\r\n\tstatic AddingTaskHandlersWasSuccessful: string = Translations_fi.AddingTaskHandlersWasSuccessful;\r\n\tstatic DoYouReallyWantToRemoveTaskDataRow: string = Translations_fi.DoYouReallyWantToRemoveTaskDataRow;\r\n\tstatic LockingTaskDataRowWasNotSuccessful: string = Translations_fi.LockingTaskDataRowWasNotSuccessful;\r\n\tstatic EditEditableDocument: string = Translations_fi.EditEditableDocument;\r\n\tstatic FolderParameterAlreadyExistsInTargetFolder: string = Translations_fi.FolderParameterAlreadyExistsInTargetFolder;\r\n\tstatic ValidityEndDateEnd: string = Translations_fi.ValidityEndDateEnd;\r\n\tstatic NotSelected: string = Translations_fi.NotSelected;\r\n\tstatic Filter: string = Translations_fi.Filter;\r\n\tstatic Description: string = Translations_fi.Description;\r\n\tstatic DeletingMessageParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingMessageParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic Code: string = Translations_fi.Code;\r\n\tstatic DeletingTaskTypesParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingTaskTypesParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic MessageEndDate: string = Translations_fi.MessageEndDate;\r\n\tstatic ReadImpPlur: string = Translations_fi.ReadImpPlur;\r\n\tstatic SharedReports: string = Translations_fi.SharedReports;\r\n\tstatic SavingEventTypeBsWasSuccessful: string = Translations_fi.SavingEventTypeBsWasSuccessful;\r\n\tstatic SavingAttachmentsWasNotSuccessfulErrorParameter: string = Translations_fi.SavingAttachmentsWasNotSuccessfulErrorParameter;\r\n\tstatic DeletingRecordQualificationParameterWasSuccessful: string = Translations_fi.DeletingRecordQualificationParameterWasSuccessful;\r\n\tstatic AddingAddRecordUserFurtherEducationsWasNotSuccessfulErrorParameter: string = Translations_fi.AddingAddRecordUserFurtherEducationsWasNotSuccessfulErrorParameter;\r\n\tstatic WhistleBlowStatisticsReceivedRecords: string = Translations_fi.WhistleBlowStatisticsReceivedRecords;\r\n\tstatic Summary: string = Translations_fi.Summary;\r\n\tstatic ThisPartOfApplicationIsNotInUse: string = Translations_fi.ThisPartOfApplicationIsNotInUse;\r\n\tstatic DeletingEditableDocumentParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingEditableDocumentParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic JobTypeEventNotification: string = Translations_fi.JobTypeEventNotification;\r\n\tstatic EditEventPartner: string = Translations_fi.EditEventPartner;\r\n\tstatic CalendarTaskEndDateMustBeAfterStartDate: string = Translations_fi.CalendarTaskEndDateMustBeAfterStartDate;\r\n\tstatic PasteDefaultHandlers: string = Translations_fi.PasteDefaultHandlers;\r\n\tstatic IndirectCosts: string = Translations_fi.IndirectCosts;\r\n\tstatic SavingDirectoryItemDocumentParameterWasSuccessful: string = Translations_fi.SavingDirectoryItemDocumentParameterWasSuccessful;\r\n\tstatic DeletingWhistleBlowChannelAdminsParameterWasSuccessful: string = Translations_fi.DeletingWhistleBlowChannelAdminsParameterWasSuccessful;\r\n\tstatic CourseCredits: string = Translations_fi.CourseCredits;\r\n\tstatic AllInstantMessageUsersHaveReadMessage: string = Translations_fi.AllInstantMessageUsersHaveReadMessage;\r\n\tstatic DeletingWhistleBlowChannelAdminParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingWhistleBlowChannelAdminParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic InstantMessageChannelUserParameterNotFound: string = Translations_fi.InstantMessageChannelUserParameterNotFound;\r\n\tstatic DoYouReallyWantToRemoveRecordBasicEducationParameter: string = Translations_fi.DoYouReallyWantToRemoveRecordBasicEducationParameter;\r\n\tstatic SavingMessageSendPushParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingMessageSendPushParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic Move: string = Translations_fi.Move;\r\n\tstatic Employments: string = Translations_fi.Employments;\r\n\tstatic UserIsActiveInMobile: string = Translations_fi.UserIsActiveInMobile;\r\n\tstatic AddComment: string = Translations_fi.AddComment;\r\n\tstatic AddAtleastOneInstantMessageChannelUsersToInstantMessageChannel: string = Translations_fi.AddAtleastOneInstantMessageChannelUsersToInstantMessageChannel;\r\n\tstatic DoYouReallyWantToRemoveFilterParameter: string = Translations_fi.DoYouReallyWantToRemoveFilterParameter;\r\n\tstatic ReportsStandard: string = Translations_fi.ReportsStandard;\r\n\tstatic Warning: string = Translations_fi.Warning;\r\n\tstatic GeneralAttachments: string = Translations_fi.GeneralAttachments;\r\n\tstatic FormTitle3: string = Translations_fi.FormTitle3;\r\n\tstatic FormSortAscending: string = Translations_fi.FormSortAscending;\r\n\tstatic FirstListRow: string = Translations_fi.FirstListRow;\r\n\tstatic DeletingFileFiltersParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingFileFiltersParameterWasNotSuccessfulErrorParameter;\r\n\tstatic WhistleBlowChannelWasNotFound: string = Translations_fi.WhistleBlowChannelWasNotFound;\r\n\tstatic LoggedInCompanyCannotBeDeleted: string = Translations_fi.LoggedInCompanyCannotBeDeleted;\r\n\tstatic RemoveQualification: string = Translations_fi.RemoveQualification;\r\n\tstatic FileParameterDownloaded: string = Translations_fi.FileParameterDownloaded;\r\n\tstatic PermissionsForSections: string = Translations_fi.PermissionsForSections;\r\n\tstatic AddingAttachmentParameterWasNotSuccessfulErrorParameter: string = Translations_fi.AddingAttachmentParameterWasNotSuccessfulErrorParameter;\r\n\tstatic TiedostoturvaUseType: string = Translations_fi.TiedostoturvaUseType;\r\n\tstatic FormulaAddition: string = Translations_fi.FormulaAddition;\r\n\tstatic CompanyGroupParameterNotFound: string = Translations_fi.CompanyGroupParameterNotFound;\r\n\tstatic RowInformation: string = Translations_fi.RowInformation;\r\n\tstatic AddCompaniesParameterWasNotSuccessfulErrorParameter: string = Translations_fi.AddCompaniesParameterWasNotSuccessfulErrorParameter;\r\n\tstatic StudyWeek: string = Translations_fi.StudyWeek;\r\n\tstatic UnlockingEditableDocumentParameterWasNotSuccessful: string = Translations_fi.UnlockingEditableDocumentParameterWasNotSuccessful;\r\n\tstatic TheSystemDoesNotSupportYourWebBrowserUpdateToLatestBrowserVersion: string = Translations_fi.TheSystemDoesNotSupportYourWebBrowserUpdateToLatestBrowserVersion;\r\n\tstatic DoYouReallyWantToRemoveAttachmentParameter: string = Translations_fi.DoYouReallyWantToRemoveAttachmentParameter;\r\n\tstatic TimeSpanTwoYears: string = Translations_fi.TimeSpanTwoYears;\r\n\tstatic AdditionalFunctions: string = Translations_fi.AdditionalFunctions;\r\n\tstatic DirectoryItemDocumentParameterNotFound: string = Translations_fi.DirectoryItemDocumentParameterNotFound;\r\n\tstatic WhistleBlowSendReport: string = Translations_fi.WhistleBlowSendReport;\r\n\tstatic ValidityEndDateStart: string = Translations_fi.ValidityEndDateStart;\r\n\tstatic RemoveRecordUserAndKeepUser: string = Translations_fi.RemoveRecordUserAndKeepUser;\r\n\tstatic InternalMessages: string = Translations_fi.InternalMessages;\r\n\tstatic WhistleBlowNewReport: string = Translations_fi.WhistleBlowNewReport;\r\n\tstatic ImportingUsersParameterWasSuccessful: string = Translations_fi.ImportingUsersParameterWasSuccessful;\r\n\tstatic FamiliarizationStartDate: string = Translations_fi.FamiliarizationStartDate;\r\n\tstatic SavingEventMessageWasSuccessful: string = Translations_fi.SavingEventMessageWasSuccessful;\r\n\tstatic AddUsersParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.AddUsersParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic UnreadMessagesParameter: string = Translations_fi.UnreadMessagesParameter;\r\n\tstatic AddPartnerParameterWasNotSuccessfulErrorParameter: string = Translations_fi.AddPartnerParameterWasNotSuccessfulErrorParameter;\r\n\tstatic DeletingCalendarTaskCategoriesParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingCalendarTaskCategoriesParameterWasNotSuccessfulErrorParameter;\r\n\tstatic ValidityDate: string = Translations_fi.ValidityDate;\r\n\tstatic CalendarTaskRepetitionCountPrefix: string = Translations_fi.CalendarTaskRepetitionCountPrefix;\r\n\tstatic WhistleBlowEventTypeHandlersAdded: string = Translations_fi.WhistleBlowEventTypeHandlersAdded;\r\n\tstatic AllJobTitles: string = Translations_fi.AllJobTitles;\r\n\tstatic AddSharedDocumentTemplate: string = Translations_fi.AddSharedDocumentTemplate;\r\n\tstatic DocumentTypes: string = Translations_fi.DocumentTypes;\r\n\tstatic AddUserGroupParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.AddUserGroupParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic RemoveTask: string = Translations_fi.RemoveTask;\r\n\tstatic DeletingPartnerParameterWasSuccessful: string = Translations_fi.DeletingPartnerParameterWasSuccessful;\r\n\tstatic ApplicationTempPathIsNotSpecified: string = Translations_fi.ApplicationTempPathIsNotSpecified;\r\n\tstatic RemoveUserGroupExternalSystemsWasNotSuccessfulConcurrencyError: string = Translations_fi.RemoveUserGroupExternalSystemsWasNotSuccessfulConcurrencyError;\r\n\tstatic SavingDefaultHandlersWasSuccessful: string = Translations_fi.SavingDefaultHandlersWasSuccessful;\r\n\tstatic EventUrgencyClassParameterNotFound: string = Translations_fi.EventUrgencyClassParameterNotFound;\r\n\tstatic FormDisabled: string = Translations_fi.FormDisabled;\r\n\tstatic AddPartnersParameterWasSuccessful: string = Translations_fi.AddPartnersParameterWasSuccessful;\r\n\tstatic UserFilterExpired: string = Translations_fi.UserFilterExpired;\r\n\tstatic DeletingUserGroupsParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingUserGroupsParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic PublishVoucherToFileSystem: string = Translations_fi.PublishVoucherToFileSystem;\r\n\tstatic ReplyToInstantMessage: string = Translations_fi.ReplyToInstantMessage;\r\n\tstatic FolderNameConstainsIllegalCharacters: string = Translations_fi.FolderNameConstainsIllegalCharacters;\r\n\tstatic RemoveFile: string = Translations_fi.RemoveFile;\r\n\tstatic NewMenu: string = Translations_fi.NewMenu;\r\n\tstatic Task: string = Translations_fi.Task;\r\n\tstatic PushEndpoint: string = Translations_fi.PushEndpoint;\r\n\tstatic SavingApplicationPermissionsWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingApplicationPermissionsWasNotSuccessfulConcurrencyError;\r\n\tstatic Add: string = Translations_fi.Add;\r\n\tstatic DeletingRecordUserEmploymentParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingRecordUserEmploymentParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic AccessRightReadInstantMessages: string = Translations_fi.AccessRightReadInstantMessages;\r\n\tstatic ExitingInstantMessageChannelWasSuccessful: string = Translations_fi.ExitingInstantMessageChannelWasSuccessful;\r\n\tstatic EventParameterUnitChangedFromParameterToParameter: string = Translations_fi.EventParameterUnitChangedFromParameterToParameter;\r\n\tstatic DoYouReallyWantToUnlockEditableDocument: string = Translations_fi.DoYouReallyWantToUnlockEditableDocument;\r\n\tstatic UserAccountNotConnected: string = Translations_fi.UserAccountNotConnected;\r\n\tstatic All: string = Translations_fi.All;\r\n\tstatic FieldParameterValueCanOnlyContainNumbers: string = Translations_fi.FieldParameterValueCanOnlyContainNumbers;\r\n\tstatic PrintRecordUser: string = Translations_fi.PrintRecordUser;\r\n\tstatic RemoveDocumentTemplate: string = Translations_fi.RemoveDocumentTemplate;\r\n\tstatic IncludeOnlyActiveUsers: string = Translations_fi.IncludeOnlyActiveUsers;\r\n\tstatic AddFileOrTakePicture: string = Translations_fi.AddFileOrTakePicture;\r\n\tstatic DaysAgo90: string = Translations_fi.DaysAgo90;\r\n\tstatic SavingRecordEmploymentParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingRecordEmploymentParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic DoYouReallyWantToClearLog: string = Translations_fi.DoYouReallyWantToClearLog;\r\n\tstatic OldPassword: string = Translations_fi.OldPassword;\r\n\tstatic RemoveForm: string = Translations_fi.RemoveForm;\r\n\tstatic ProcessingFolderParameter: string = Translations_fi.ProcessingFolderParameter;\r\n\tstatic WhistleBlowCategoryParameterNotFound: string = Translations_fi.WhistleBlowCategoryParameterNotFound;\r\n\tstatic ShowUserGroups: string = Translations_fi.ShowUserGroups;\r\n\tstatic TaskTypeParameterNotFound: string = Translations_fi.TaskTypeParameterNotFound;\r\n\tstatic ClearSubFolderPermissions: string = Translations_fi.ClearSubFolderPermissions;\r\n\tstatic AddDefaultFurtherEducationGroup: string = Translations_fi.AddDefaultFurtherEducationGroup;\r\n\tstatic NewInstantMessageChannel: string = Translations_fi.NewInstantMessageChannel;\r\n\tstatic FamiliarizationEndDate: string = Translations_fi.FamiliarizationEndDate;\r\n\tstatic ReminderWeeksBefore: string = Translations_fi.ReminderWeeksBefore;\r\n\tstatic RecordFamiliarizationParameterNotFound: string = Translations_fi.RecordFamiliarizationParameterNotFound;\r\n\tstatic WebPushError: string = Translations_fi.WebPushError;\r\n\tstatic DocumentTemplateCodeMustBeDefined: string = Translations_fi.DocumentTemplateCodeMustBeDefined;\r\n\tstatic SaveUserFurtherEducationConfirmation: string = Translations_fi.SaveUserFurtherEducationConfirmation;\r\n\tstatic OpenWhistleBlowInstruction: string = Translations_fi.OpenWhistleBlowInstruction;\r\n\tstatic WhistleBlowSeverityUnspecified: string = Translations_fi.WhistleBlowSeverityUnspecified;\r\n\tstatic FurtherEductionGroupParameterContainsFurtherEducationsAndCannotBeDeleted: string = Translations_fi.FurtherEductionGroupParameterContainsFurtherEducationsAndCannotBeDeleted;\r\n\tstatic NoAddedEventTypes: string = Translations_fi.NoAddedEventTypes;\r\n\tstatic SavingEventParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingEventParameterWasNotSuccessfulErrorParameter;\r\n\tstatic DoYouReallyWantToExitInstantMessageChannel: string = Translations_fi.DoYouReallyWantToExitInstantMessageChannel;\r\n\tstatic DoCleanLog: string = Translations_fi.DoCleanLog;\r\n\tstatic RecordFurtherEducationCodeIsAlreadyInUse: string = Translations_fi.RecordFurtherEducationCodeIsAlreadyInUse;\r\n\tstatic EventCreator: string = Translations_fi.EventCreator;\r\n\tstatic PermissionsForSystems: string = Translations_fi.PermissionsForSystems;\r\n\tstatic ReadError: string = Translations_fi.ReadError;\r\n\tstatic FolderParameterAlreadyExistsInFileSystem: string = Translations_fi.FolderParameterAlreadyExistsInFileSystem;\r\n\tstatic SaveDraft: string = Translations_fi.SaveDraft;\r\n\tstatic FormNumbers: string = Translations_fi.FormNumbers;\r\n\tstatic DeletingInstantMessageWasSuccessful: string = Translations_fi.DeletingInstantMessageWasSuccessful;\r\n\tstatic FormulaFloor: string = Translations_fi.FormulaFloor;\r\n\tstatic EditMessageType: string = Translations_fi.EditMessageType;\r\n\tstatic EditTaskPriority: string = Translations_fi.EditTaskPriority;\r\n\tstatic UsedQuota: string = Translations_fi.UsedQuota;\r\n\tstatic Panels: string = Translations_fi.Panels;\r\n\tstatic LockedTaskParameterCannotBeMovedToTrashBin: string = Translations_fi.LockedTaskParameterCannotBeMovedToTrashBin;\r\n\tstatic FolderTreePermissions: string = Translations_fi.FolderTreePermissions;\r\n\tstatic FormShowModifyDate: string = Translations_fi.FormShowModifyDate;\r\n\tstatic WhistleBlowNotFound: string = Translations_fi.WhistleBlowNotFound;\r\n\tstatic ShowInheritedPermissions: string = Translations_fi.ShowInheritedPermissions;\r\n\tstatic SaveInstantMessageChannelConfirmation: string = Translations_fi.SaveInstantMessageChannelConfirmation;\r\n\tstatic AllEventHandlersHaveReadMessage: string = Translations_fi.AllEventHandlersHaveReadMessage;\r\n\tstatic AdditionalPermissionBEventsDialog: string = Translations_fi.AdditionalPermissionBEventsDialog;\r\n\tstatic DefaultEventHandlers: string = Translations_fi.DefaultEventHandlers;\r\n\tstatic SavingWhistleBlowCategoryParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingWhistleBlowCategoryParameterWasNotSuccessfulErrorParameter;\r\n\tstatic AddFileFilter: string = Translations_fi.AddFileFilter;\r\n\tstatic IncludeArchivedFamiliarizations: string = Translations_fi.IncludeArchivedFamiliarizations;\r\n\tstatic TaskDataRow: string = Translations_fi.TaskDataRow;\r\n\tstatic LockedTaskParameterCannotBeRestored: string = Translations_fi.LockedTaskParameterCannotBeRestored;\r\n\tstatic Preview: string = Translations_fi.Preview;\r\n\tstatic ExternalSystemCompanyCodeClaimNotFound: string = Translations_fi.ExternalSystemCompanyCodeClaimNotFound;\r\n\tstatic WhistleBlowStateResolved: string = Translations_fi.WhistleBlowStateResolved;\r\n\tstatic SavingCalendarTaskParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingCalendarTaskParameterWasNotSuccessfulErrorParameter;\r\n\tstatic DocumentsNotFound: string = Translations_fi.DocumentsNotFound;\r\n\tstatic ComparingFileSystemToDatabase: string = Translations_fi.ComparingFileSystemToDatabase;\r\n\tstatic RequestPasswordChangeTitle: string = Translations_fi.RequestPasswordChangeTitle;\r\n\tstatic DeletingDocumentTemplateParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingDocumentTemplateParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic TaxNumber: string = Translations_fi.TaxNumber;\r\n\tstatic AddingRecordUserFamiliarizationsWasNotSuccessfulErrorParameter: string = Translations_fi.AddingRecordUserFamiliarizationsWasNotSuccessfulErrorParameter;\r\n\tstatic Archived: string = Translations_fi.Archived;\r\n\tstatic RemoveInvalidDefaultEventHandlersConfirmation: string = Translations_fi.RemoveInvalidDefaultEventHandlersConfirmation;\r\n\tstatic FormModifyDate: string = Translations_fi.FormModifyDate;\r\n\tstatic InstantMessageChannelContainsParameterInstantMessageUsersAndCannotBeDeleted: string = Translations_fi.InstantMessageChannelContainsParameterInstantMessageUsersAndCannotBeDeleted;\r\n\tstatic NewRecordUserMustBeSavedBeforeFamiliarizationsCanBeAdded: string = Translations_fi.NewRecordUserMustBeSavedBeforeFamiliarizationsCanBeAdded;\r\n\tstatic DocumentsSelected: string = Translations_fi.DocumentsSelected;\r\n\tstatic AuthorizationLevelUser: string = Translations_fi.AuthorizationLevelUser;\r\n\tstatic ScopeCanBeChanged: string = Translations_fi.ScopeCanBeChanged;\r\n\tstatic WhistleBlowReceiver: string = Translations_fi.WhistleBlowReceiver;\r\n\tstatic DefaultEventUrgencyClassMustBeDefinedBeforeAddingEvents: string = Translations_fi.DefaultEventUrgencyClassMustBeDefinedBeforeAddingEvents;\r\n\tstatic WhistleBlowInformantMustBeNotifiedLatestAtParameter: string = Translations_fi.WhistleBlowInformantMustBeNotifiedLatestAtParameter;\r\n\tstatic SearchCalendarTasks: string = Translations_fi.SearchCalendarTasks;\r\n\tstatic EventTypesGeneric: string = Translations_fi.EventTypesGeneric;\r\n\tstatic DeletingEditableDocumentParameterWasSuccessful: string = Translations_fi.DeletingEditableDocumentParameterWasSuccessful;\r\n\tstatic FormInitializeFromSavedRow: string = Translations_fi.FormInitializeFromSavedRow;\r\n\tstatic RootCause: string = Translations_fi.RootCause;\r\n\tstatic CostCentreName: string = Translations_fi.CostCentreName;\r\n\tstatic ReadReceiptNotGiven: string = Translations_fi.ReadReceiptNotGiven;\r\n\tstatic SavingOneTimePasswordWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingOneTimePasswordWasNotSuccessfulConcurrencyError;\r\n\tstatic AddLogisticVoucherCompanyPaymentSetting: string = Translations_fi.AddLogisticVoucherCompanyPaymentSetting;\r\n\tstatic LoggedInUser: string = Translations_fi.LoggedInUser;\r\n\tstatic UserCodeMustBeValid: string = Translations_fi.UserCodeMustBeValid;\r\n\tstatic PreviewRowPrint: string = Translations_fi.PreviewRowPrint;\r\n\tstatic SavingCalendarTaskParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingCalendarTaskParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic TargetsMyCompany: string = Translations_fi.TargetsMyCompany;\r\n\tstatic FieldParameterContainsInvalidCodeCharacters: string = Translations_fi.FieldParameterContainsInvalidCodeCharacters;\r\n\tstatic LogisticVoucher: string = Translations_fi.LogisticVoucher;\r\n\tstatic AccessRightWriteTasks: string = Translations_fi.AccessRightWriteTasks;\r\n\tstatic NewInstantMessageChannelMustBeSavedBeforeUsersCanBeAdded: string = Translations_fi.NewInstantMessageChannelMustBeSavedBeforeUsersCanBeAdded;\r\n\tstatic RecordUserParameterNotFound: string = Translations_fi.RecordUserParameterNotFound;\r\n\tstatic EventTypes: string = Translations_fi.EventTypes;\r\n\tstatic NormalSize: string = Translations_fi.NormalSize;\r\n\tstatic WhistleBlowSeverityLow: string = Translations_fi.WhistleBlowSeverityLow;\r\n\tstatic TypeMustBeDefined: string = Translations_fi.TypeMustBeDefined;\r\n\tstatic ConfirmPassword: string = Translations_fi.ConfirmPassword;\r\n\tstatic Logo: string = Translations_fi.Logo;\r\n\tstatic DoYouReallyWantToRemoveKeywordParameterItIsUsedByParameterDocuments: string = Translations_fi.DoYouReallyWantToRemoveKeywordParameterItIsUsedByParameterDocuments;\r\n\tstatic ChangeToEditMode: string = Translations_fi.ChangeToEditMode;\r\n\tstatic FormCalculatedDecimalNumber: string = Translations_fi.FormCalculatedDecimalNumber;\r\n\tstatic SharedDocumentTemplates: string = Translations_fi.SharedDocumentTemplates;\r\n\tstatic SavingEventMessageWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingEventMessageWasNotSuccessfulConcurrencyError;\r\n\tstatic DeletingAttachmentsParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingAttachmentsParameterWasNotSuccessfulErrorParameter;\r\n\tstatic ProjectName: string = Translations_fi.ProjectName;\r\n\tstatic DoYouReallyWantToRemoveSelectedRecordFurtherEducations: string = Translations_fi.DoYouReallyWantToRemoveSelectedRecordFurtherEducations;\r\n\tstatic DocumentVersionParameterNotFound: string = Translations_fi.DocumentVersionParameterNotFound;\r\n\tstatic SelectRemovingMethod: string = Translations_fi.SelectRemovingMethod;\r\n\tstatic Partners: string = Translations_fi.Partners;\r\n\tstatic ExpiringIn120Days: string = Translations_fi.ExpiringIn120Days;\r\n\tstatic DeletingRecordFurtherEducationParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingRecordFurtherEducationParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic Publish: string = Translations_fi.Publish;\r\n\tstatic SavingRecordBasicEducationParameterWasSuccessful: string = Translations_fi.SavingRecordBasicEducationParameterWasSuccessful;\r\n\tstatic Report: string = Translations_fi.Report;\r\n\tstatic SelectCompany: string = Translations_fi.SelectCompany;\r\n\tstatic MessageTypeCodeIsAlreadyInUse: string = Translations_fi.MessageTypeCodeIsAlreadyInUse;\r\n\tstatic Weekly: string = Translations_fi.Weekly;\r\n\tstatic PageNameMustBeDefined: string = Translations_fi.PageNameMustBeDefined;\r\n\tstatic LockedCalendarTaskParameterCannotBeSaved: string = Translations_fi.LockedCalendarTaskParameterCannotBeSaved;\r\n\tstatic LogLine: string = Translations_fi.LogLine;\r\n\tstatic SendEmailInvitationConfirmation: string = Translations_fi.SendEmailInvitationConfirmation;\r\n\tstatic SSRSRefreshStarted: string = Translations_fi.SSRSRefreshStarted;\r\n\tstatic Version: string = Translations_fi.Version;\r\n\tstatic RemoveUser: string = Translations_fi.RemoveUser;\r\n\tstatic AddPermission: string = Translations_fi.AddPermission;\r\n\tstatic RecordEmailNotificationType: string = Translations_fi.RecordEmailNotificationType;\r\n\tstatic DeletingOneTimePasswordWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingOneTimePasswordWasNotSuccessfulErrorParameter;\r\n\tstatic TaskMustBeSavedBeforeCalendarTasksCanBeAdded: string = Translations_fi.TaskMustBeSavedBeforeCalendarTasksCanBeAdded;\r\n\tstatic ParameterPercentOfFileStorageQuotaUsed: string = Translations_fi.ParameterPercentOfFileStorageQuotaUsed;\r\n\tstatic PasswordChangeRequestParameterNotFound: string = Translations_fi.PasswordChangeRequestParameterNotFound;\r\n\tstatic EducationsAndCompetencies: string = Translations_fi.EducationsAndCompetencies;\r\n\tstatic Priority: string = Translations_fi.Priority;\r\n\tstatic AddCompanyGroup: string = Translations_fi.AddCompanyGroup;\r\n\tstatic DeletingUserParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingUserParameterWasNotSuccessfulErrorParameter;\r\n\tstatic AddUsersParameterWasSuccessful: string = Translations_fi.AddUsersParameterWasSuccessful;\r\n\tstatic FormulaSin: string = Translations_fi.FormulaSin;\r\n\tstatic EmployeeTypeMustBeDefined: string = Translations_fi.EmployeeTypeMustBeDefined;\r\n\tstatic CompanyTaskTypes: string = Translations_fi.CompanyTaskTypes;\r\n\tstatic SavingUserParametersWasSuccessful: string = Translations_fi.SavingUserParametersWasSuccessful;\r\n\tstatic SendingEmailToParameter: string = Translations_fi.SendingEmailToParameter;\r\n\tstatic RemoveLogisticVoucherCustomer: string = Translations_fi.RemoveLogisticVoucherCustomer;\r\n\tstatic SavingRecordEmploymentParameterWasSuccessful: string = Translations_fi.SavingRecordEmploymentParameterWasSuccessful;\r\n\tstatic Properties: string = Translations_fi.Properties;\r\n\tstatic FormMaxTextLength: string = Translations_fi.FormMaxTextLength;\r\n\tstatic RemoveFamiliarization: string = Translations_fi.RemoveFamiliarization;\r\n\tstatic CompanyModuleProperties: string = Translations_fi.CompanyModuleProperties;\r\n\tstatic UserTypeClaimNotFound: string = Translations_fi.UserTypeClaimNotFound;\r\n\tstatic ArchiveExpiredFamiliarizations: string = Translations_fi.ArchiveExpiredFamiliarizations;\r\n\tstatic EditableDocumentVersionMustBeDefined: string = Translations_fi.EditableDocumentVersionMustBeDefined;\r\n\tstatic InstantMessage: string = Translations_fi.InstantMessage;\r\n\tstatic UserCannotRecieveEmailNotifications: string = Translations_fi.UserCannotRecieveEmailNotifications;\r\n\tstatic Starts: string = Translations_fi.Starts;\r\n\tstatic DeletingDirectoryItemDocumentParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingDirectoryItemDocumentParameterWasNotSuccessfulErrorParameter;\r\n\tstatic EventTypeCCodeIsAlreadyInUse: string = Translations_fi.EventTypeCCodeIsAlreadyInUse;\r\n\tstatic AddPartnerParameterWasSuccessful: string = Translations_fi.AddPartnerParameterWasSuccessful;\r\n\tstatic PasswordIsTooShort: string = Translations_fi.PasswordIsTooShort;\r\n\tstatic RenamingFileParameterWasNotSuccessfulErrorParameter: string = Translations_fi.RenamingFileParameterWasNotSuccessfulErrorParameter;\r\n\tstatic WhistleBlowEventTypeAttachmentsAdded: string = Translations_fi.WhistleBlowEventTypeAttachmentsAdded;\r\n\tstatic SavingReportWasNotSuccessfulErrorParameter: string = Translations_fi.SavingReportWasNotSuccessfulErrorParameter;\r\n\tstatic ArchiveExpiredFurtherEducations: string = Translations_fi.ArchiveExpiredFurtherEducations;\r\n\tstatic DetectingLocation: string = Translations_fi.DetectingLocation;\r\n\tstatic SavingFilterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingFilterWasNotSuccessfulConcurrencyError;\r\n\tstatic Phone: string = Translations_fi.Phone;\r\n\tstatic FormExpressionEditor: string = Translations_fi.FormExpressionEditor;\r\n\tstatic FiltersStandard: string = Translations_fi.FiltersStandard;\r\n\tstatic SelectFurtherEducation: string = Translations_fi.SelectFurtherEducation;\r\n\tstatic DocumentsParameterOverwriteConfirmation: string = Translations_fi.DocumentsParameterOverwriteConfirmation;\r\n\tstatic FormDefaultValue: string = Translations_fi.FormDefaultValue;\r\n\tstatic NotificationSettings: string = Translations_fi.NotificationSettings;\r\n\tstatic JobParameterNotFound: string = Translations_fi.JobParameterNotFound;\r\n\tstatic Month: string = Translations_fi.Month;\r\n\tstatic ModifiedDescription: string = Translations_fi.ModifiedDescription;\r\n\tstatic EditableDocumentCodeIsAlreadyInUse: string = Translations_fi.EditableDocumentCodeIsAlreadyInUse;\r\n\tstatic LastListRow: string = Translations_fi.LastListRow;\r\n\tstatic DocumentParameterAlreadyExists: string = Translations_fi.DocumentParameterAlreadyExists;\r\n\tstatic SelectEventPartner: string = Translations_fi.SelectEventPartner;\r\n\tstatic NewInstantMessageChannelGroupInternal: string = Translations_fi.NewInstantMessageChannelGroupInternal;\r\n\tstatic WhistleBlowEventTypeHandlersRemoved: string = Translations_fi.WhistleBlowEventTypeHandlersRemoved;\r\n\tstatic SendinEmailNotificationsWasNotSuccessfulErrorParameter: string = Translations_fi.SendinEmailNotificationsWasNotSuccessfulErrorParameter;\r\n\tstatic DoYouReallyWantToRemoveSelectedEventUrgencyClasses: string = Translations_fi.DoYouReallyWantToRemoveSelectedEventUrgencyClasses;\r\n\tstatic DoYouReallyWantToRemoveTaskParameterPermanenty: string = Translations_fi.DoYouReallyWantToRemoveTaskParameterPermanenty;\r\n\tstatic CompanyRole: string = Translations_fi.CompanyRole;\r\n\tstatic AddToHomeScreen: string = Translations_fi.AddToHomeScreen;\r\n\tstatic RecordUsersFound: string = Translations_fi.RecordUsersFound;\r\n\tstatic NewRecordUserMustBeSavedBeforeAttachmentsCanBeAdded: string = Translations_fi.NewRecordUserMustBeSavedBeforeAttachmentsCanBeAdded;\r\n\tstatic SavingEditableDocumentParameterPublishWasNotSuccessfulErrorParameter: string = Translations_fi.SavingEditableDocumentParameterPublishWasNotSuccessfulErrorParameter;\r\n\tstatic Entrepreneur: string = Translations_fi.Entrepreneur;\r\n\tstatic SendingEmails: string = Translations_fi.SendingEmails;\r\n\tstatic EditWhistleBlow: string = Translations_fi.EditWhistleBlow;\r\n\tstatic DeletingTaskStateParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingTaskStateParameterWasNotSuccessfulErrorParameter;\r\n\tstatic AddDefaultBasicEducation: string = Translations_fi.AddDefaultBasicEducation;\r\n\tstatic Yesterday: string = Translations_fi.Yesterday;\r\n\tstatic AddEventUrgencyClass: string = Translations_fi.AddEventUrgencyClass;\r\n\tstatic FileNameConstainsIllegalCharacters: string = Translations_fi.FileNameConstainsIllegalCharacters;\r\n\tstatic NoImagesToShow: string = Translations_fi.NoImagesToShow;\r\n\tstatic DoYouReallyWantToRemoveSelectedTaskPriorities: string = Translations_fi.DoYouReallyWantToRemoveSelectedTaskPriorities;\r\n\tstatic EditDefaultEventType: string = Translations_fi.EditDefaultEventType;\r\n\tstatic RemoveAttachment: string = Translations_fi.RemoveAttachment;\r\n\tstatic FirstName: string = Translations_fi.FirstName;\r\n\tstatic CalendarTaskStateNotStarted: string = Translations_fi.CalendarTaskStateNotStarted;\r\n\tstatic EventHandler: string = Translations_fi.EventHandler;\r\n\tstatic OpenTrashBin: string = Translations_fi.OpenTrashBin;\r\n\tstatic TaskPriorities: string = Translations_fi.TaskPriorities;\r\n\tstatic WhistleBlowInformantInstuctions: string = Translations_fi.WhistleBlowInformantInstuctions;\r\n\tstatic NewUserGroupMustBeSavedBeforeUsersCanBeAdded: string = Translations_fi.NewUserGroupMustBeSavedBeforeUsersCanBeAdded;\r\n\tstatic BrowseFiles: string = Translations_fi.BrowseFiles;\r\n\tstatic EditRemainder: string = Translations_fi.EditRemainder;\r\n\tstatic DeletingRecordQualificationParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingRecordQualificationParameterWasNotSuccessfulErrorParameter;\r\n\tstatic RecordFurtherEducationParameterIsInUseInParameterRecordUsersQualificationsAndCannotBeDeleted: string = Translations_fi.RecordFurtherEducationParameterIsInUseInParameterRecordUsersQualificationsAndCannotBeDeleted;\r\n\tstatic Start: string = Translations_fi.Start;\r\n\tstatic ModifyDateEndDate: string = Translations_fi.ModifyDateEndDate;\r\n\tstatic WhistleBlowStateReceived: string = Translations_fi.WhistleBlowStateReceived;\r\n\tstatic UserParameterPermissionDeniedForUnitParameter: string = Translations_fi.UserParameterPermissionDeniedForUnitParameter;\r\n\tstatic DeletingTaskParameterWasSuccessful: string = Translations_fi.DeletingTaskParameterWasSuccessful;\r\n\tstatic LastNameMustBeDefined: string = Translations_fi.LastNameMustBeDefined;\r\n\tstatic RequiredValidQualificationCount: string = Translations_fi.RequiredValidQualificationCount;\r\n\tstatic Qualifications: string = Translations_fi.Qualifications;\r\n\tstatic MaximumPasswordLengthCanParameterCharacters: string = Translations_fi.MaximumPasswordLengthCanParameterCharacters;\r\n\tstatic EditLogisticVoucherPaymentSetting: string = Translations_fi.EditLogisticVoucherPaymentSetting;\r\n\tstatic DocumentNameIsTooLong: string = Translations_fi.DocumentNameIsTooLong;\r\n\tstatic SavingEditableDocumentParameterWasSuccessful: string = Translations_fi.SavingEditableDocumentParameterWasSuccessful;\r\n\tstatic ExternalsSystemParameterNotFound: string = Translations_fi.ExternalsSystemParameterNotFound;\r\n\tstatic DefaultCalendarTaskCategories: string = Translations_fi.DefaultCalendarTaskCategories;\r\n\tstatic EditPayerSettings: string = Translations_fi.EditPayerSettings;\r\n\tstatic EditDefaultTaskPriority: string = Translations_fi.EditDefaultTaskPriority;\r\n\tstatic Menu: string = Translations_fi.Menu;\r\n\tstatic RecordFurtherEducationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted: string = Translations_fi.RecordFurtherEducationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted;\r\n\tstatic Descending: string = Translations_fi.Descending;\r\n\tstatic NotSet: string = Translations_fi.NotSet;\r\n\tstatic DeletingEventUrgencyClassParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingEventUrgencyClassParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic AddUserGroupsParameterWasNotSuccessfulErrorParameter: string = Translations_fi.AddUserGroupsParameterWasNotSuccessfulErrorParameter;\r\n\tstatic ResultGrouping: string = Translations_fi.ResultGrouping;\r\n\tstatic SelectReceiver: string = Translations_fi.SelectReceiver;\r\n\tstatic Continue: string = Translations_fi.Continue;\r\n\tstatic FurtherEducationsMustBeDefinedBeforeAddingRecordUsers: string = Translations_fi.FurtherEducationsMustBeDefinedBeforeAddingRecordUsers;\r\n\tstatic MoveTaskToTrashBin: string = Translations_fi.MoveTaskToTrashBin;\r\n\tstatic DoYouReallyWantToRemoveMessageTypeParameter: string = Translations_fi.DoYouReallyWantToRemoveMessageTypeParameter;\r\n\tstatic RemoveEventPartner: string = Translations_fi.RemoveEventPartner;\r\n\tstatic DeletingTaskParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingTaskParameterWasNotSuccessfulErrorParameter;\r\n\tstatic ThisChannelHasBeenArchived: string = Translations_fi.ThisChannelHasBeenArchived;\r\n\tstatic Admin: string = Translations_fi.Admin;\r\n\tstatic EventsExcel: string = Translations_fi.EventsExcel;\r\n\tstatic SavingEventDefaultHandlerParameterWasSuccessful: string = Translations_fi.SavingEventDefaultHandlerParameterWasSuccessful;\r\n\tstatic SavingInstantMessageChannelUserUserWasSuccessful: string = Translations_fi.SavingInstantMessageChannelUserUserWasSuccessful;\r\n\tstatic Password: string = Translations_fi.Password;\r\n\tstatic EventParameterNotFound: string = Translations_fi.EventParameterNotFound;\r\n\tstatic AddCompanyGroupParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.AddCompanyGroupParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic RemoveDefaultTaskPriority: string = Translations_fi.RemoveDefaultTaskPriority;\r\n\tstatic WholeHistory: string = Translations_fi.WholeHistory;\r\n\tstatic PrintParameterNotFound: string = Translations_fi.PrintParameterNotFound;\r\n\tstatic NextOfKin: string = Translations_fi.NextOfKin;\r\n\tstatic DeletingCompanyParameterWasSuccessful: string = Translations_fi.DeletingCompanyParameterWasSuccessful;\r\n\tstatic FieldParameterConstainsIllegalCharactersForFileName: string = Translations_fi.FieldParameterConstainsIllegalCharactersForFileName;\r\n\tstatic FileNameMustBeDefined: string = Translations_fi.FileNameMustBeDefined;\r\n\tstatic Recurrence: string = Translations_fi.Recurrence;\r\n\tstatic ChangeSystemLanguageToFinnish: string = Translations_fi.ChangeSystemLanguageToFinnish;\r\n\tstatic DocumentApproved: string = Translations_fi.DocumentApproved;\r\n\tstatic Print: string = Translations_fi.Print;\r\n\tstatic ProcessedFolderParameterErrorCountParameter: string = Translations_fi.ProcessedFolderParameterErrorCountParameter;\r\n\tstatic LoggedInUserAccountIsNotActive: string = Translations_fi.LoggedInUserAccountIsNotActive;\r\n\tstatic CalendarTaskCategoryParameterNotFound: string = Translations_fi.CalendarTaskCategoryParameterNotFound;\r\n\tstatic Error: string = Translations_fi.Error;\r\n\tstatic AccessRightFull: string = Translations_fi.AccessRightFull;\r\n\tstatic RecordUserLogEntryTypeSave: string = Translations_fi.RecordUserLogEntryTypeSave;\r\n\tstatic DeletingUserGroupUsersOfCompanyParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingUserGroupUsersOfCompanyParameterWasNotSuccessfulErrorParameter;\r\n\tstatic AutoSaveVersionHistorySize: string = Translations_fi.AutoSaveVersionHistorySize;\r\n\tstatic FilterIsActive: string = Translations_fi.FilterIsActive;\r\n\tstatic WorkTimeType: string = Translations_fi.WorkTimeType;\r\n\tstatic InstantMessageChannel: string = Translations_fi.InstantMessageChannel;\r\n\tstatic WhistleBlowDateAndTimeCannotBeInFuture: string = Translations_fi.WhistleBlowDateAndTimeCannotBeInFuture;\r\n\tstatic PrintFileName: string = Translations_fi.PrintFileName;\r\n\tstatic LogCleaning: string = Translations_fi.LogCleaning;\r\n\tstatic OpenCalendarTasks: string = Translations_fi.OpenCalendarTasks;\r\n\tstatic Edit: string = Translations_fi.Edit;\r\n\tstatic KeywordCodeIsAlreadyInUse: string = Translations_fi.KeywordCodeIsAlreadyInUse;\r\n\tstatic ContentFiltering: string = Translations_fi.ContentFiltering;\r\n\tstatic Groups: string = Translations_fi.Groups;\r\n\tstatic FormRemoveFieldConfirmation: string = Translations_fi.FormRemoveFieldConfirmation;\r\n\tstatic TargetsOtherCompanies: string = Translations_fi.TargetsOtherCompanies;\r\n\tstatic CalendarTaskRepetitionRepeatIntervalWeeklySuffix: string = Translations_fi.CalendarTaskRepetitionRepeatIntervalWeeklySuffix;\r\n\tstatic DeletingTaskParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingTaskParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic CalendarTaskFilterByState: string = Translations_fi.CalendarTaskFilterByState;\r\n\tstatic PrintEvent: string = Translations_fi.PrintEvent;\r\n\tstatic MovedToTrashBin: string = Translations_fi.MovedToTrashBin;\r\n\tstatic UsedFileStorageQuota: string = Translations_fi.UsedFileStorageQuota;\r\n\tstatic ClassParameterHasNotBeenInitialized: string = Translations_fi.ClassParameterHasNotBeenInitialized;\r\n\tstatic CalendarTaskStateFinished: string = Translations_fi.CalendarTaskStateFinished;\r\n\tstatic Hours: string = Translations_fi.Hours;\r\n\tstatic OptionCodeIsAlreadyInUse: string = Translations_fi.OptionCodeIsAlreadyInUse;\r\n\tstatic CopyingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulErrorParameter: string = Translations_fi.CopyingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulErrorParameter;\r\n\tstatic UserFilterNoUserGroup: string = Translations_fi.UserFilterNoUserGroup;\r\n\tstatic DoYouReallyWantToRemoveEventTypeBParameter: string = Translations_fi.DoYouReallyWantToRemoveEventTypeBParameter;\r\n\tstatic Archive: string = Translations_fi.Archive;\r\n\tstatic SavingWhistleBlowWasSuccessful: string = Translations_fi.SavingWhistleBlowWasSuccessful;\r\n\tstatic Validity: string = Translations_fi.Validity;\r\n\tstatic DeletingFolderParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingFolderParameterWasNotSuccessfulErrorParameter;\r\n\tstatic AddUnit: string = Translations_fi.AddUnit;\r\n\tstatic FurtherEducations: string = Translations_fi.FurtherEducations;\r\n\tstatic SaveEventHandlerConfirmation: string = Translations_fi.SaveEventHandlerConfirmation;\r\n\tstatic RemoveParameterDocuments: string = Translations_fi.RemoveParameterDocuments;\r\n\tstatic ExternalIntraSystemCompanyTokenMustBeDefined: string = Translations_fi.ExternalIntraSystemCompanyTokenMustBeDefined;\r\n\tstatic DeletingPartnersParameterWasSuccessful: string = Translations_fi.DeletingPartnersParameterWasSuccessful;\r\n\tstatic Group: string = Translations_fi.Group;\r\n\tstatic EventTypeBTitle: string = Translations_fi.EventTypeBTitle;\r\n\tstatic RecordUser: string = Translations_fi.RecordUser;\r\n\tstatic DeletingTaskTypeParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingTaskTypeParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic RemoveUserAndRecordUser: string = Translations_fi.RemoveUserAndRecordUser;\r\n\tstatic FormWidthPrint: string = Translations_fi.FormWidthPrint;\r\n\tstatic UpdateUserGroupParameterExternalSystemsWasNotSuccessfulErrorParameter: string = Translations_fi.UpdateUserGroupParameterExternalSystemsWasNotSuccessfulErrorParameter;\r\n\tstatic AddDefaultFurtherEducation: string = Translations_fi.AddDefaultFurtherEducation;\r\n\tstatic UserParameterCodeIsAlreadyInUse: string = Translations_fi.UserParameterCodeIsAlreadyInUse;\r\n\tstatic PasswordHasBeenSetSuccessfully: string = Translations_fi.PasswordHasBeenSetSuccessfully;\r\n\tstatic AddUserGroupsParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.AddUserGroupsParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic RemoveReport: string = Translations_fi.RemoveReport;\r\n\tstatic AddCompany: string = Translations_fi.AddCompany;\r\n\tstatic DoYouReallyWantToRemovePartnersParameter: string = Translations_fi.DoYouReallyWantToRemovePartnersParameter;\r\n\tstatic State: string = Translations_fi.State;\r\n\tstatic CompanyCodeMustBeDefined: string = Translations_fi.CompanyCodeMustBeDefined;\r\n\tstatic SavingApplicationPermissionsWasNotSuccessfulErrorParameter: string = Translations_fi.SavingApplicationPermissionsWasNotSuccessfulErrorParameter;\r\n\tstatic LastWeek: string = Translations_fi.LastWeek;\r\n\tstatic TheUserNameOrPasswordIsIncorrect: string = Translations_fi.TheUserNameOrPasswordIsIncorrect;\r\n\tstatic SelectUnit: string = Translations_fi.SelectUnit;\r\n\tstatic AddDefaultEventHandler: string = Translations_fi.AddDefaultEventHandler;\r\n\tstatic SelectedDocumentTypes: string = Translations_fi.SelectedDocumentTypes;\r\n\tstatic FormulaDivision: string = Translations_fi.FormulaDivision;\r\n\tstatic RemoveCompanyTaskType: string = Translations_fi.RemoveCompanyTaskType;\r\n\tstatic DeletingRecordQualificationsParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingRecordQualificationsParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic RecordEmailNotificationShowExpired: string = Translations_fi.RecordEmailNotificationShowExpired;\r\n\tstatic AllSelected: string = Translations_fi.AllSelected;\r\n\tstatic RemoveDocument: string = Translations_fi.RemoveDocument;\r\n\tstatic SavingCompanyParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingCompanyParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic UserPublicPasswordChangeMessage: string = Translations_fi.UserPublicPasswordChangeMessage;\r\n\tstatic JobTitle: string = Translations_fi.JobTitle;\r\n\tstatic EditMessage: string = Translations_fi.EditMessage;\r\n\tstatic SeasonalWorker: string = Translations_fi.SeasonalWorker;\r\n\tstatic DeletingEventTypeCParameterWasSuccessful: string = Translations_fi.DeletingEventTypeCParameterWasSuccessful;\r\n\tstatic DoYouReallyWantToRemoveThisInstantMessage: string = Translations_fi.DoYouReallyWantToRemoveThisInstantMessage;\r\n\tstatic AllWhistleBlowHandlersHaveReadMessage: string = Translations_fi.AllWhistleBlowHandlersHaveReadMessage;\r\n\tstatic PermissionToIdentificateEvents: string = Translations_fi.PermissionToIdentificateEvents;\r\n\tstatic SavingDirectoryItemPermissionsNotSuccessfulErrorParameter: string = Translations_fi.SavingDirectoryItemPermissionsNotSuccessfulErrorParameter;\r\n\tstatic Removed: string = Translations_fi.Removed;\r\n\tstatic WhistleBlowWasNotFoundExplanation: string = Translations_fi.WhistleBlowWasNotFoundExplanation;\r\n\tstatic WhistleBlowStateInProgress: string = Translations_fi.WhistleBlowStateInProgress;\r\n\tstatic ActiveUserRights: string = Translations_fi.ActiveUserRights;\r\n\tstatic MyFiltersAndReports: string = Translations_fi.MyFiltersAndReports;\r\n\tstatic SavingReportWasSuccessful: string = Translations_fi.SavingReportWasSuccessful;\r\n\tstatic ArchivingWhistleBlowsParameterWasSuccessful: string = Translations_fi.ArchivingWhistleBlowsParameterWasSuccessful;\r\n\tstatic EmptyingTaskTrashBinWasSuccessfulErrorParameter: string = Translations_fi.EmptyingTaskTrashBinWasSuccessfulErrorParameter;\r\n\tstatic FormIntegerNumber: string = Translations_fi.FormIntegerNumber;\r\n\tstatic DeletingEventTypeBParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingEventTypeBParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic FiscalNumber: string = Translations_fi.FiscalNumber;\r\n\tstatic CompanyGroupAll: string = Translations_fi.CompanyGroupAll;\r\n\tstatic SavingUserParameterParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingUserParameterParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic SavingEventPartnerParameterWasSuccessful: string = Translations_fi.SavingEventPartnerParameterWasSuccessful;\r\n\tstatic OneTimeForm: string = Translations_fi.OneTimeForm;\r\n\tstatic CalendarTaskCategoryCodeIsAlreadyInUse: string = Translations_fi.CalendarTaskCategoryCodeIsAlreadyInUse;\r\n\tstatic CompanyThatIsInUseCannotBeDeleted: string = Translations_fi.CompanyThatIsInUseCannotBeDeleted;\r\n\tstatic ClosedPlural: string = Translations_fi.ClosedPlural;\r\n\tstatic Line: string = Translations_fi.Line;\r\n\tstatic Company: string = Translations_fi.Company;\r\n\tstatic NotifiedPersonsShort: string = Translations_fi.NotifiedPersonsShort;\r\n\tstatic WhistleBlowMustBeReceivedLatestAtParameter: string = Translations_fi.WhistleBlowMustBeReceivedLatestAtParameter;\r\n\tstatic MessageMustBeDefined: string = Translations_fi.MessageMustBeDefined;\r\n\tstatic InheritedUserRight: string = Translations_fi.InheritedUserRight;\r\n\tstatic WhistleBlowArchivingTypeChangeStateAndRemoveInformantData: string = Translations_fi.WhistleBlowArchivingTypeChangeStateAndRemoveInformantData;\r\n\tstatic AddPrint: string = Translations_fi.AddPrint;\r\n\tstatic FileParameterIsNotImage: string = Translations_fi.FileParameterIsNotImage;\r\n\tstatic SaveInstantMessageChannel: string = Translations_fi.SaveInstantMessageChannel;\r\n\tstatic FilterCondition: string = Translations_fi.FilterCondition;\r\n\tstatic UpdateCompanyExternalSystemsWasSuccessful: string = Translations_fi.UpdateCompanyExternalSystemsWasSuccessful;\r\n\tstatic NoEmailsToSend: string = Translations_fi.NoEmailsToSend;\r\n\tstatic Approve: string = Translations_fi.Approve;\r\n\tstatic NoAddedEventTypeCs: string = Translations_fi.NoAddedEventTypeCs;\r\n\tstatic NoAddedEventTypeBs: string = Translations_fi.NoAddedEventTypeBs;\r\n\tstatic SavingCompanyParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingCompanyParameterWasNotSuccessfulErrorParameter;\r\n\tstatic FormColumnWidthMobile: string = Translations_fi.FormColumnWidthMobile;\r\n\tstatic DeletingTaskPriorityParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingTaskPriorityParameterWasNotSuccessfulErrorParameter;\r\n\tstatic Missing: string = Translations_fi.Missing;\r\n\tstatic WhistleBlowFrontPage: string = Translations_fi.WhistleBlowFrontPage;\r\n\tstatic WhistleBlowDateAndTime: string = Translations_fi.WhistleBlowDateAndTime;\r\n\tstatic AddChildEventTypeB: string = Translations_fi.AddChildEventTypeB;\r\n\tstatic NewMessage: string = Translations_fi.NewMessage;\r\n\tstatic SavingEventSettingsWasNotSuccessfulErrorParameter: string = Translations_fi.SavingEventSettingsWasNotSuccessfulErrorParameter;\r\n\tstatic Last7Days: string = Translations_fi.Last7Days;\r\n\tstatic ReadingFolderParameter: string = Translations_fi.ReadingFolderParameter;\r\n\tstatic RemoveUserGroupExternalSystemsWasNotSuccessfulErrorParameter: string = Translations_fi.RemoveUserGroupExternalSystemsWasNotSuccessfulErrorParameter;\r\n\tstatic NewEmploymentMustBeSavedBeforeAttachmentsCanBeAdded: string = Translations_fi.NewEmploymentMustBeSavedBeforeAttachmentsCanBeAdded;\r\n\tstatic DocumentParameterDownloaded: string = Translations_fi.DocumentParameterDownloaded;\r\n\tstatic EditTransferredProperty: string = Translations_fi.EditTransferredProperty;\r\n\tstatic SavingChartWasNotSuccessfulErrorParameter: string = Translations_fi.SavingChartWasNotSuccessfulErrorParameter;\r\n\tstatic Severity: string = Translations_fi.Severity;\r\n\tstatic Reminders: string = Translations_fi.Reminders;\r\n\tstatic SelectEventInListToSeeThePreview: string = Translations_fi.SelectEventInListToSeeThePreview;\r\n\tstatic RemoveFromFavorites: string = Translations_fi.RemoveFromFavorites;\r\n\tstatic UserPasswordMustBeDefined: string = Translations_fi.UserPasswordMustBeDefined;\r\n\tstatic CalendarTaskRepetitionEndDatePrefix: string = Translations_fi.CalendarTaskRepetitionEndDatePrefix;\r\n\tstatic SavingUnitsWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingUnitsWasNotSuccessfulConcurrencyError;\r\n\tstatic DefaultFurtherEducationGroup: string = Translations_fi.DefaultFurtherEducationGroup;\r\n\tstatic SelectEventType: string = Translations_fi.SelectEventType;\r\n\tstatic WhistleBlowReportHasBeenSaved: string = Translations_fi.WhistleBlowReportHasBeenSaved;\r\n\tstatic SelectEventHandler: string = Translations_fi.SelectEventHandler;\r\n\tstatic CompanyTaskTypeTemplates: string = Translations_fi.CompanyTaskTypeTemplates;\r\n\tstatic EmailHasBeenAlreadySentForThisMessage: string = Translations_fi.EmailHasBeenAlreadySentForThisMessage;\r\n\tstatic WhistleBlowUrl: string = Translations_fi.WhistleBlowUrl;\r\n\tstatic CopyingFolderParameterWasNotSuccessfulErrorParameter: string = Translations_fi.CopyingFolderParameterWasNotSuccessfulErrorParameter;\r\n\tstatic ValueAddedTaxPercent: string = Translations_fi.ValueAddedTaxPercent;\r\n\tstatic Success: string = Translations_fi.Success;\r\n\tstatic SaveEvent: string = Translations_fi.SaveEvent;\r\n\tstatic UserGroupNameIsAlreadyInUse: string = Translations_fi.UserGroupNameIsAlreadyInUse;\r\n\tstatic Time: string = Translations_fi.Time;\r\n\tstatic SelectableWhenCreatingAnEvent: string = Translations_fi.SelectableWhenCreatingAnEvent;\r\n\tstatic LogIn: string = Translations_fi.LogIn;\r\n\tstatic Form: string = Translations_fi.Form;\r\n\tstatic UpdateUserParameterExternalSystemsWasNotSuccessfulErrorParameter: string = Translations_fi.UpdateUserParameterExternalSystemsWasNotSuccessfulErrorParameter;\r\n\tstatic RemoveLogisticVoucherCompanyPaymentSetting: string = Translations_fi.RemoveLogisticVoucherCompanyPaymentSetting;\r\n\tstatic EventApprovalWasNotSuccessfulErrorParameter: string = Translations_fi.EventApprovalWasNotSuccessfulErrorParameter;\r\n\tstatic PageFooterText: string = Translations_fi.PageFooterText;\r\n\tstatic ExternalSystemCode: string = Translations_fi.ExternalSystemCode;\r\n\tstatic SavingMessageTypeParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingMessageTypeParameterWasNotSuccessfulErrorParameter;\r\n\tstatic CurrentWorkPlaceNotAdded: string = Translations_fi.CurrentWorkPlaceNotAdded;\r\n\tstatic BasicEducations: string = Translations_fi.BasicEducations;\r\n\tstatic DeletingWhistleBlowChannelAdminsParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingWhistleBlowChannelAdminsParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic SuccessAudit: string = Translations_fi.SuccessAudit;\r\n\tstatic FormTextInputs: string = Translations_fi.FormTextInputs;\r\n\tstatic RemovePayer: string = Translations_fi.RemovePayer;\r\n\tstatic NoName: string = Translations_fi.NoName;\r\n\tstatic DeletingRecordUserEmploymentsParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingRecordUserEmploymentsParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic ImageChangeInterval: string = Translations_fi.ImageChangeInterval;\r\n\tstatic EditableDocumentPublishUnapprovedConfirmation: string = Translations_fi.EditableDocumentPublishUnapprovedConfirmation;\r\n\tstatic UnitProperties: string = Translations_fi.UnitProperties;\r\n\tstatic AddingAddRecordUserFurtherEducationsWasSuccessful: string = Translations_fi.AddingAddRecordUserFurtherEducationsWasSuccessful;\r\n\tstatic SavingMessageParameterWasSuccessful: string = Translations_fi.SavingMessageParameterWasSuccessful;\r\n\tstatic AddCompanyParameterWasSuccessful: string = Translations_fi.AddCompanyParameterWasSuccessful;\r\n\tstatic RequestPasswordChangeMessage3: string = Translations_fi.RequestPasswordChangeMessage3;\r\n\tstatic InvitationParameterNotFound: string = Translations_fi.InvitationParameterNotFound;\r\n\tstatic FormExpressionFormat: string = Translations_fi.FormExpressionFormat;\r\n\tstatic DeletingEventTypeParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingEventTypeParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic FormulaHypot: string = Translations_fi.FormulaHypot;\r\n\tstatic EventTypeCParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted: string = Translations_fi.EventTypeCParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted;\r\n\tstatic DoYouReallyWantToRemoveUserParameter: string = Translations_fi.DoYouReallyWantToRemoveUserParameter;\r\n\tstatic OtherInformation: string = Translations_fi.OtherInformation;\r\n\tstatic FormAddDropdownOption: string = Translations_fi.FormAddDropdownOption;\r\n\tstatic InstantMessageChannelUser: string = Translations_fi.InstantMessageChannelUser;\r\n\tstatic File: string = Translations_fi.File;\r\n\tstatic RemoveRowConfirmation: string = Translations_fi.RemoveRowConfirmation;\r\n\tstatic CkickToChangeTheIcon: string = Translations_fi.CkickToChangeTheIcon;\r\n\tstatic CurrentCalendarWeek: string = Translations_fi.CurrentCalendarWeek;\r\n\tstatic ExternalSystemCompanyCodeMustBeDefined: string = Translations_fi.ExternalSystemCompanyCodeMustBeDefined;\r\n\tstatic SelectEventTypeB: string = Translations_fi.SelectEventTypeB;\r\n\tstatic AddImageFromClipboard: string = Translations_fi.AddImageFromClipboard;\r\n\tstatic ErrorUserGroupChangeWouldLeadToInvalidDefaultEventHandlers: string = Translations_fi.ErrorUserGroupChangeWouldLeadToInvalidDefaultEventHandlers;\r\n\tstatic CopyGroupPermissions: string = Translations_fi.CopyGroupPermissions;\r\n\tstatic SavingEventTypesWasSuccessful: string = Translations_fi.SavingEventTypesWasSuccessful;\r\n\tstatic EditTaskState: string = Translations_fi.EditTaskState;\r\n\tstatic Value: string = Translations_fi.Value;\r\n\tstatic Images: string = Translations_fi.Images;\r\n\tstatic FieldParameterContainsInvalidCompanyCodeCharacters: string = Translations_fi.FieldParameterContainsInvalidCompanyCodeCharacters;\r\n\tstatic ReadingFileParameterWasNotSuccessfulFileNotFound: string = Translations_fi.ReadingFileParameterWasNotSuccessfulFileNotFound;\r\n\tstatic MaximumSizeOfInstantMessageAttachmentIsParameterMB: string = Translations_fi.MaximumSizeOfInstantMessageAttachmentIsParameterMB;\r\n\tstatic UserRecordStatisticsActiveCards: string = Translations_fi.UserRecordStatisticsActiveCards;\r\n\tstatic UserFirstNameMustBeDefined: string = Translations_fi.UserFirstNameMustBeDefined;\r\n\tstatic PaymentVoucherCounter: string = Translations_fi.PaymentVoucherCounter;\r\n\tstatic Visibility: string = Translations_fi.Visibility;\r\n\tstatic EmployeeTypeIsNotSupported: string = Translations_fi.EmployeeTypeIsNotSupported;\r\n\tstatic DoYouReallyWantToRemoveKeywordParameter: string = Translations_fi.DoYouReallyWantToRemoveKeywordParameter;\r\n\tstatic RequestPasswordChangeLinkHasBeenSent: string = Translations_fi.RequestPasswordChangeLinkHasBeenSent;\r\n\tstatic AddInstantMessageUserParameterWasNotSuccessfulErrorParameter: string = Translations_fi.AddInstantMessageUserParameterWasNotSuccessfulErrorParameter;\r\n\tstatic RemoveDefaultEventType: string = Translations_fi.RemoveDefaultEventType;\r\n\tstatic Valid: string = Translations_fi.Valid;\r\n\tstatic UserCodeIsAlreadyInUse: string = Translations_fi.UserCodeIsAlreadyInUse;\r\n\tstatic DeletingCompanyGroupParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingCompanyGroupParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic DeletingEventUrgencyClassParameterWasSuccessful: string = Translations_fi.DeletingEventUrgencyClassParameterWasSuccessful;\r\n\tstatic Files: string = Translations_fi.Files;\r\n\tstatic Drafts: string = Translations_fi.Drafts;\r\n\tstatic MessageVisibilityPeriodNotActive: string = Translations_fi.MessageVisibilityPeriodNotActive;\r\n\tstatic DeletingRecordQualificationsParameterWasSuccessful: string = Translations_fi.DeletingRecordQualificationsParameterWasSuccessful;\r\n\tstatic Observer: string = Translations_fi.Observer;\r\n\tstatic EventTypeParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted: string = Translations_fi.EventTypeParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted;\r\n\tstatic Usage: string = Translations_fi.Usage;\r\n\tstatic RowForm: string = Translations_fi.RowForm;\r\n\tstatic FormComponents: string = Translations_fi.FormComponents;\r\n\tstatic CompanyParameterNotFound: string = Translations_fi.CompanyParameterNotFound;\r\n\tstatic DoYouReallyWantToReplaceDocumentTemplateParameter: string = Translations_fi.DoYouReallyWantToReplaceDocumentTemplateParameter;\r\n\tstatic AddUserToUserGroup: string = Translations_fi.AddUserToUserGroup;\r\n\tstatic Aprint: string = Translations_fi.Aprint;\r\n\tstatic InstantMessageChannelOnlyAdministratorCannotExitInstantMessageChannel: string = Translations_fi.InstantMessageChannelOnlyAdministratorCannotExitInstantMessageChannel;\r\n\tstatic ReminderDaysBefore: string = Translations_fi.ReminderDaysBefore;\r\n\tstatic TitleIsAlreadyInUse: string = Translations_fi.TitleIsAlreadyInUse;\r\n\tstatic DoYouWantToAddThisApplicationToHomeScreen: string = Translations_fi.DoYouWantToAddThisApplicationToHomeScreen;\r\n\tstatic DocumentCreated: string = Translations_fi.DocumentCreated;\r\n\tstatic TasksExcelByTaskRows: string = Translations_fi.TasksExcelByTaskRows;\r\n\tstatic AddingAttachmentsParameterWasNotSuccessfulErrorParameter: string = Translations_fi.AddingAttachmentsParameterWasNotSuccessfulErrorParameter;\r\n\tstatic FrontPage: string = Translations_fi.FrontPage;\r\n\tstatic Cancel: string = Translations_fi.Cancel;\r\n\tstatic FileFilter: string = Translations_fi.FileFilter;\r\n\tstatic DoYouReallyWantToRemovePrintParameter: string = Translations_fi.DoYouReallyWantToRemovePrintParameter;\r\n\tstatic AddingAddRecordUserQualificationsWasSuccessful: string = Translations_fi.AddingAddRecordUserQualificationsWasSuccessful;\r\n\tstatic MessagePreservationTime: string = Translations_fi.MessagePreservationTime;\r\n\tstatic ClearSubUnitDefaultHandlers: string = Translations_fi.ClearSubUnitDefaultHandlers;\r\n\tstatic NotificationsSentSuccessfully: string = Translations_fi.NotificationsSentSuccessfully;\r\n\tstatic InstantMessageSettings: string = Translations_fi.InstantMessageSettings;\r\n\tstatic SavingReadReceiptWasNotSuccessfulErrorParameter: string = Translations_fi.SavingReadReceiptWasNotSuccessfulErrorParameter;\r\n\tstatic TaskDataRowParameterNotFound: string = Translations_fi.TaskDataRowParameterNotFound;\r\n\tstatic Path: string = Translations_fi.Path;\r\n\tstatic Competency: string = Translations_fi.Competency;\r\n\tstatic MovingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulErrorParameter: string = Translations_fi.MovingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulErrorParameter;\r\n\tstatic CalendarTaskRemoveSeries: string = Translations_fi.CalendarTaskRemoveSeries;\r\n\tstatic DeletingRecordBasicEducationsParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingRecordBasicEducationsParameterWasNotSuccessfulErrorParameter;\r\n\tstatic AddWhistleBlowChannelAdminParameterWasNotSuccessfulErrorParameter: string = Translations_fi.AddWhistleBlowChannelAdminParameterWasNotSuccessfulErrorParameter;\r\n\tstatic DownloadPdf: string = Translations_fi.DownloadPdf;\r\n\tstatic Import: string = Translations_fi.Import;\r\n\tstatic WhistleBlowNonAnonymousReport: string = Translations_fi.WhistleBlowNonAnonymousReport;\r\n\tstatic EmploymentType: string = Translations_fi.EmploymentType;\r\n\tstatic FileSynchronizationToDatabaseFinishedInParameterSeconds: string = Translations_fi.FileSynchronizationToDatabaseFinishedInParameterSeconds;\r\n\tstatic RemoveEventType: string = Translations_fi.RemoveEventType;\r\n\tstatic DeletingRecordUserTransferredPropertyParameterWasSuccessful: string = Translations_fi.DeletingRecordUserTransferredPropertyParameterWasSuccessful;\r\n\tstatic AllDay: string = Translations_fi.AllDay;\r\n\tstatic Resources: string = Translations_fi.Resources;\r\n\tstatic AddTransferredProperty: string = Translations_fi.AddTransferredProperty;\r\n\tstatic DocumentTemplates: string = Translations_fi.DocumentTemplates;\r\n\tstatic UserSessionHasBeenExpired: string = Translations_fi.UserSessionHasBeenExpired;\r\n\tstatic SavingRecordFurtherEducationGroupParameterWasSuccessful: string = Translations_fi.SavingRecordFurtherEducationGroupParameterWasSuccessful;\r\n\tstatic AddDefaultTaskState: string = Translations_fi.AddDefaultTaskState;\r\n\tstatic JobTypeMessageNotification: string = Translations_fi.JobTypeMessageNotification;\r\n\tstatic SavingKeywordParameterWasSuccessful: string = Translations_fi.SavingKeywordParameterWasSuccessful;\r\n\tstatic AccessRightReadCalendarTask: string = Translations_fi.AccessRightReadCalendarTask;\r\n\tstatic DoYouReallyWantToRemoveFileFilterParameter: string = Translations_fi.DoYouReallyWantToRemoveFileFilterParameter;\r\n\tstatic AddEventMessageConfirmation: string = Translations_fi.AddEventMessageConfirmation;\r\n\tstatic LockedDocumentsParameterCannotBeMoved: string = Translations_fi.LockedDocumentsParameterCannotBeMoved;\r\n\tstatic RemoveTaskState: string = Translations_fi.RemoveTaskState;\r\n\tstatic Conversions: string = Translations_fi.Conversions;\r\n\tstatic Created: string = Translations_fi.Created;\r\n\tstatic CalendarTaskRepetitionEnd: string = Translations_fi.CalendarTaskRepetitionEnd;\r\n\tstatic DeletingRecordFamiliarizationParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingRecordFamiliarizationParameterWasNotSuccessfulErrorParameter;\r\n\tstatic UserHasUsedMobile: string = Translations_fi.UserHasUsedMobile;\r\n\tstatic RemoveBasicEducation: string = Translations_fi.RemoveBasicEducation;\r\n\tstatic VersionInformation: string = Translations_fi.VersionInformation;\r\n\tstatic Days: string = Translations_fi.Days;\r\n\tstatic CkickToChangeThePicture: string = Translations_fi.CkickToChangeThePicture;\r\n\tstatic PostalCode: string = Translations_fi.PostalCode;\r\n\tstatic RecordUserLogEntryTypePrint: string = Translations_fi.RecordUserLogEntryTypePrint;\r\n\tstatic NameMustBeDefined: string = Translations_fi.NameMustBeDefined;\r\n\tstatic ExternalSystemUserTokenParameterIsAlreadyInUse: string = Translations_fi.ExternalSystemUserTokenParameterIsAlreadyInUse;\r\n\tstatic WhistleBlowResolutionCanceled: string = Translations_fi.WhistleBlowResolutionCanceled;\r\n\tstatic Theme: string = Translations_fi.Theme;\r\n\tstatic SaveFilterAs: string = Translations_fi.SaveFilterAs;\r\n\tstatic AttachmentIsEmpty: string = Translations_fi.AttachmentIsEmpty;\r\n\tstatic SaveTask: string = Translations_fi.SaveTask;\r\n\tstatic FormModifyUser: string = Translations_fi.FormModifyUser;\r\n\tstatic FormHeight: string = Translations_fi.FormHeight;\r\n\tstatic RemovePermission: string = Translations_fi.RemovePermission;\r\n\tstatic DeletingInstantMessageChannelWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingInstantMessageChannelWasNotSuccessfulErrorParameter;\r\n\tstatic UserGroupsMustBeDefined: string = Translations_fi.UserGroupsMustBeDefined;\r\n\tstatic PrintGenerationFailed: string = Translations_fi.PrintGenerationFailed;\r\n\tstatic LogDocumentPreview: string = Translations_fi.LogDocumentPreview;\r\n\tstatic DeletingOneTimePasswordWasSuccessful: string = Translations_fi.DeletingOneTimePasswordWasSuccessful;\r\n\tstatic FormulaTrunc: string = Translations_fi.FormulaTrunc;\r\n\tstatic SendPasswordChangeEmailConfirmation: string = Translations_fi.SendPasswordChangeEmailConfirmation;\r\n\tstatic DeletingTaskStateParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingTaskStateParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic Years: string = Translations_fi.Years;\r\n\tstatic SavingEventTypeCsWasNotSuccessfulErrorParameter: string = Translations_fi.SavingEventTypeCsWasNotSuccessfulErrorParameter;\r\n\tstatic DeletingDefaultEventHandlerParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingDefaultEventHandlerParameterWasNotSuccessfulErrorParameter;\r\n\tstatic SavingMessageParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingMessageParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic RecordUserTrangerredPropertyParameterNotFound: string = Translations_fi.RecordUserTrangerredPropertyParameterNotFound;\r\n\tstatic PreviewWeb: string = Translations_fi.PreviewWeb;\r\n\tstatic RemoveComment: string = Translations_fi.RemoveComment;\r\n\tstatic TimeSpanYear: string = Translations_fi.TimeSpanYear;\r\n\tstatic OpenCalendarTask: string = Translations_fi.OpenCalendarTask;\r\n\tstatic FormulaExponent: string = Translations_fi.FormulaExponent;\r\n\tstatic Voluntary: string = Translations_fi.Voluntary;\r\n\tstatic SavingRecordFurtherEducationParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingRecordFurtherEducationParameterWasNotSuccessfulErrorParameter;\r\n\tstatic WhistleBlowChannelParameterNotFound: string = Translations_fi.WhistleBlowChannelParameterNotFound;\r\n\tstatic SelectMonth: string = Translations_fi.SelectMonth;\r\n\tstatic CalendarTaskStateStarted: string = Translations_fi.CalendarTaskStateStarted;\r\n\tstatic DeletingRecordBasicEducationsParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingRecordBasicEducationsParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic TaskStateParameterIsInUseInParameterTasksAndCannotBeDeleted: string = Translations_fi.TaskStateParameterIsInUseInParameterTasksAndCannotBeDeleted;\r\n\tstatic WhistleBlowAnonymousReport: string = Translations_fi.WhistleBlowAnonymousReport;\r\n\tstatic DeletingEventTypeCParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingEventTypeCParameterWasNotSuccessfulErrorParameter;\r\n\tstatic Operators: string = Translations_fi.Operators;\r\n\tstatic CreatingFileParameterWasNotSuccessfulErrorParameter: string = Translations_fi.CreatingFileParameterWasNotSuccessfulErrorParameter;\r\n\tstatic SourceFolderAndTargetFolderAreSame: string = Translations_fi.SourceFolderAndTargetFolderAreSame;\r\n\tstatic DeletingRecordFurtherEducationParameterWasSuccessful: string = Translations_fi.DeletingRecordFurtherEducationParameterWasSuccessful;\r\n\tstatic SavingDocumentTemplateParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingDocumentTemplateParameterWasNotSuccessfulErrorParameter;\r\n\tstatic AddDocumentTemplate: string = Translations_fi.AddDocumentTemplate;\r\n\tstatic AddTask: string = Translations_fi.AddTask;\r\n\tstatic PublicationOfEditableDocumentCannotBeRemoved: string = Translations_fi.PublicationOfEditableDocumentCannotBeRemoved;\r\n\tstatic AddQualifications: string = Translations_fi.AddQualifications;\r\n\tstatic SavingUnitPermissionsWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingUnitPermissionsWasNotSuccessfulConcurrencyError;\r\n\tstatic RemoveDefaultHandler: string = Translations_fi.RemoveDefaultHandler;\r\n\tstatic ChartGenerationAborted: string = Translations_fi.ChartGenerationAborted;\r\n\tstatic SystemAdminMessage: string = Translations_fi.SystemAdminMessage;\r\n\tstatic AddTarget: string = Translations_fi.AddTarget;\r\n\tstatic TargetDoesNotHaveFoldersWithWritePermissions: string = Translations_fi.TargetDoesNotHaveFoldersWithWritePermissions;\r\n\tstatic UpdateCompanyExternalSystemsWasNotSuccessfulErrorParameter: string = Translations_fi.UpdateCompanyExternalSystemsWasNotSuccessfulErrorParameter;\r\n\tstatic DeletingMessageTypeParameterWasSuccessful: string = Translations_fi.DeletingMessageTypeParameterWasSuccessful;\r\n\tstatic LockedTaskDataRowCannotBeSaved: string = Translations_fi.LockedTaskDataRowCannotBeSaved;\r\n\tstatic RemoveLogisticVoucherPaymentSetting: string = Translations_fi.RemoveLogisticVoucherPaymentSetting;\r\n\tstatic WhistleBlowSourceEmail: string = Translations_fi.WhistleBlowSourceEmail;\r\n\tstatic DeletingKeywordsParameterWasSuccessful: string = Translations_fi.DeletingKeywordsParameterWasSuccessful;\r\n\tstatic SavingRecordFamiliarizationParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingRecordFamiliarizationParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic SavingPrintWasNotSuccessfulErrorParameter: string = Translations_fi.SavingPrintWasNotSuccessfulErrorParameter;\r\n\tstatic DeletingCalendarTaskParameterWasSuccessful: string = Translations_fi.DeletingCalendarTaskParameterWasSuccessful;\r\n\tstatic SavingRecordBasicEducationParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingRecordBasicEducationParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic DeletingMessageTypeParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingMessageTypeParameterWasNotSuccessfulErrorParameter;\r\n\tstatic EventClosed: string = Translations_fi.EventClosed;\r\n\tstatic DeletingAttachmentsParameterWasSuccessful: string = Translations_fi.DeletingAttachmentsParameterWasSuccessful;\r\n\tstatic SendReadReceipt: string = Translations_fi.SendReadReceipt;\r\n\tstatic SaveTaskConfirmation: string = Translations_fi.SaveTaskConfirmation;\r\n\tstatic TaskStates: string = Translations_fi.TaskStates;\r\n\tstatic ActionIsNotAuthorized: string = Translations_fi.ActionIsNotAuthorized;\r\n\tstatic SavingInstantMessageChannelUserWasNotSuccessfulErrorParameter: string = Translations_fi.SavingInstantMessageChannelUserWasNotSuccessfulErrorParameter;\r\n\tstatic Communication: string = Translations_fi.Communication;\r\n\tstatic WhistleBlowSourceSystem: string = Translations_fi.WhistleBlowSourceSystem;\r\n\tstatic NotValid: string = Translations_fi.NotValid;\r\n\tstatic DocumentModuleProperties: string = Translations_fi.DocumentModuleProperties;\r\n\tstatic LoginTitle: string = Translations_fi.LoginTitle;\r\n\tstatic Unit: string = Translations_fi.Unit;\r\n\tstatic FormEmptyArea: string = Translations_fi.FormEmptyArea;\r\n\tstatic DoYouReallyWantToUnlockMessage: string = Translations_fi.DoYouReallyWantToUnlockMessage;\r\n\tstatic PublishEvent: string = Translations_fi.PublishEvent;\r\n\tstatic AddKeyword: string = Translations_fi.AddKeyword;\r\n\tstatic RemoveEventUrgencyClass: string = Translations_fi.RemoveEventUrgencyClass;\r\n\tstatic Competencies: string = Translations_fi.Competencies;\r\n\tstatic DeletingInstantMessageChannelWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingInstantMessageChannelWasNotSuccessfulConcurrencyError;\r\n\tstatic Saved: string = Translations_fi.Saved;\r\n\tstatic UserCodeUpdateWasNotSuccessfulErrorParameter: string = Translations_fi.UserCodeUpdateWasNotSuccessfulErrorParameter;\r\n\tstatic AddCompanyGroupsParameterWasSuccessful: string = Translations_fi.AddCompanyGroupsParameterWasSuccessful;\r\n\tstatic OK: string = Translations_fi.OK;\r\n\tstatic ReferenceNumberPrefix: string = Translations_fi.ReferenceNumberPrefix;\r\n\tstatic DocumentProperties: string = Translations_fi.DocumentProperties;\r\n\tstatic TaskCreated: string = Translations_fi.TaskCreated;\r\n\tstatic Close: string = Translations_fi.Close;\r\n\tstatic Messages: string = Translations_fi.Messages;\r\n\tstatic FieldsToBePrinted: string = Translations_fi.FieldsToBePrinted;\r\n\tstatic WhistleBlowSourceOther: string = Translations_fi.WhistleBlowSourceOther;\r\n\tstatic AddRecordUser: string = Translations_fi.AddRecordUser;\r\n\tstatic EditPermission: string = Translations_fi.EditPermission;\r\n\tstatic UserGroupNameMustBeDefined: string = Translations_fi.UserGroupNameMustBeDefined;\r\n\tstatic WhistleBlowStatisticsRecordCount: string = Translations_fi.WhistleBlowStatisticsRecordCount;\r\n\tstatic WelcomeToUseEsalkkuSystem: string = Translations_fi.WelcomeToUseEsalkkuSystem;\r\n\tstatic DoYouReallyWantToRemoveSelectedMessageTypes: string = Translations_fi.DoYouReallyWantToRemoveSelectedMessageTypes;\r\n\tstatic TaskPriorityCodeIsAlreadyInUse: string = Translations_fi.TaskPriorityCodeIsAlreadyInUse;\r\n\tstatic IdentificationDetails: string = Translations_fi.IdentificationDetails;\r\n\tstatic CurrentTopicsAbbr: string = Translations_fi.CurrentTopicsAbbr;\r\n\tstatic SavingRecordEmploymentParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingRecordEmploymentParameterWasNotSuccessfulErrorParameter;\r\n\tstatic LockedDocumentParameterCannotBeDeleted: string = Translations_fi.LockedDocumentParameterCannotBeDeleted;\r\n\tstatic Empty: string = Translations_fi.Empty;\r\n\tstatic UserRecordStatisticsSavedCards: string = Translations_fi.UserRecordStatisticsSavedCards;\r\n\tstatic DependencyResolvingFailedForInterfaceParameter: string = Translations_fi.DependencyResolvingFailedForInterfaceParameter;\r\n\tstatic AddingWhistleBlowHandlersWasSuccessful: string = Translations_fi.AddingWhistleBlowHandlersWasSuccessful;\r\n\tstatic ProcessingTime: string = Translations_fi.ProcessingTime;\r\n\tstatic SavingMessageParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingMessageParameterWasNotSuccessfulErrorParameter;\r\n\tstatic CompanyGroups: string = Translations_fi.CompanyGroups;\r\n\tstatic EmptyForm: string = Translations_fi.EmptyForm;\r\n\tstatic SpecifedTimeFrame: string = Translations_fi.SpecifedTimeFrame;\r\n\tstatic AddDefaultTaskType: string = Translations_fi.AddDefaultTaskType;\r\n\tstatic AddCalendarTask: string = Translations_fi.AddCalendarTask;\r\n\tstatic AddPartnersByClickingPlusButton: string = Translations_fi.AddPartnersByClickingPlusButton;\r\n\tstatic DeletingEventTypeBParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingEventTypeBParameterWasNotSuccessfulErrorParameter;\r\n\tstatic RemovingCalendarTaskHandlersWasSuccessful: string = Translations_fi.RemovingCalendarTaskHandlersWasSuccessful;\r\n\tstatic SavingRecordUserQualificationParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingRecordUserQualificationParameterWasNotSuccessfulErrorParameter;\r\n\tstatic StartDate: string = Translations_fi.StartDate;\r\n\tstatic NewWhistleBlowMustBeSavedBeforeHandlersCanBeAdded: string = Translations_fi.NewWhistleBlowMustBeSavedBeforeHandlersCanBeAdded;\r\n\tstatic EditEventTypeB: string = Translations_fi.EditEventTypeB;\r\n\tstatic Closed: string = Translations_fi.Closed;\r\n\tstatic CustomerNumber: string = Translations_fi.CustomerNumber;\r\n\tstatic Reports: string = Translations_fi.Reports;\r\n\tstatic DaysAgo60: string = Translations_fi.DaysAgo60;\r\n\tstatic UnkownErrorHasBeenOccured: string = Translations_fi.UnkownErrorHasBeenOccured;\r\n\tstatic InstantMessageUserInvitationAcceptTypeCanInvite: string = Translations_fi.InstantMessageUserInvitationAcceptTypeCanInvite;\r\n\tstatic Schema: string = Translations_fi.Schema;\r\n\tstatic UserGroupAll: string = Translations_fi.UserGroupAll;\r\n\tstatic Admins: string = Translations_fi.Admins;\r\n\tstatic CompanyGroupModuleProperties: string = Translations_fi.CompanyGroupModuleProperties;\r\n\tstatic RecordUserLogEntryTypeCreate: string = Translations_fi.RecordUserLogEntryTypeCreate;\r\n\tstatic SendEmailInvitation: string = Translations_fi.SendEmailInvitation;\r\n\tstatic SendReadReceiptInfo: string = Translations_fi.SendReadReceiptInfo;\r\n\tstatic SavingRecordUserTransferredPropertyParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingRecordUserTransferredPropertyParameterWasNotSuccessfulErrorParameter;\r\n\tstatic EmailAddressMustBeValid: string = Translations_fi.EmailAddressMustBeValid;\r\n\tstatic AddEventTypeCsToEvent: string = Translations_fi.AddEventTypeCsToEvent;\r\n\tstatic DoYouReallyWantToRemoveSelectedCalendarTaskHandlers: string = Translations_fi.DoYouReallyWantToRemoveSelectedCalendarTaskHandlers;\r\n\tstatic Uploaded: string = Translations_fi.Uploaded;\r\n\tstatic UnreadInstantMessages: string = Translations_fi.UnreadInstantMessages;\r\n\tstatic SendingEmail: string = Translations_fi.SendingEmail;\r\n\tstatic TaskTypeNameMustBeDefined: string = Translations_fi.TaskTypeNameMustBeDefined;\r\n\tstatic ExpiringIn180Days: string = Translations_fi.ExpiringIn180Days;\r\n\tstatic CompanyGroupCodeMustBeDefined: string = Translations_fi.CompanyGroupCodeMustBeDefined;\r\n\tstatic Modified: string = Translations_fi.Modified;\r\n\tstatic EmailNotificationInUse: string = Translations_fi.EmailNotificationInUse;\r\n\tstatic FormColumnWidthPrint: string = Translations_fi.FormColumnWidthPrint;\r\n\tstatic Unlimited: string = Translations_fi.Unlimited;\r\n\tstatic FolderParameterAlreadyExists: string = Translations_fi.FolderParameterAlreadyExists;\r\n\tstatic EditRecordUser: string = Translations_fi.EditRecordUser;\r\n\tstatic EventReport: string = Translations_fi.EventReport;\r\n\tstatic DocumentContentsSearch: string = Translations_fi.DocumentContentsSearch;\r\n\tstatic ZipFileParameterNotFound: string = Translations_fi.ZipFileParameterNotFound;\r\n\tstatic MyLastModifications: string = Translations_fi.MyLastModifications;\r\n\tstatic ExternalSystemUserCodeClaimNotFound: string = Translations_fi.ExternalSystemUserCodeClaimNotFound;\r\n\tstatic AllUserGroups: string = Translations_fi.AllUserGroups;\r\n\tstatic DocumentApproval: string = Translations_fi.DocumentApproval;\r\n\tstatic IgnoreFolderPatterns: string = Translations_fi.IgnoreFolderPatterns;\r\n\tstatic DeletingCompanyGroupsParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingCompanyGroupsParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic LoginAddress: string = Translations_fi.LoginAddress;\r\n\tstatic AddCompanyGroupsParameterWasNotSuccessfulErrorParameter: string = Translations_fi.AddCompanyGroupsParameterWasNotSuccessfulErrorParameter;\r\n\tstatic StateOpen: string = Translations_fi.StateOpen;\r\n\tstatic SavingUserParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingUserParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic InvalidValueParameter: string = Translations_fi.InvalidValueParameter;\r\n\tstatic SavingInstantMessageChannelParameterWasSuccessful: string = Translations_fi.SavingInstantMessageChannelParameterWasSuccessful;\r\n\tstatic FormSizeMedium: string = Translations_fi.FormSizeMedium;\r\n\tstatic WhistleBlowStatisticsUnreadMessages: string = Translations_fi.WhistleBlowStatisticsUnreadMessages;\r\n\tstatic MessageTypeCodeMustBeDefined: string = Translations_fi.MessageTypeCodeMustBeDefined;\r\n\tstatic DocumentParameterOverwriteConfirmation: string = Translations_fi.DocumentParameterOverwriteConfirmation;\r\n\tstatic DeletingRecordFamiliarizationsParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingRecordFamiliarizationsParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic CheckingExistanceOfFolderParameterWasNotSuccessfulErrorParameter: string = Translations_fi.CheckingExistanceOfFolderParameterWasNotSuccessfulErrorParameter;\r\n\tstatic DeletingAttachmentParameterWasSuccessful: string = Translations_fi.DeletingAttachmentParameterWasSuccessful;\r\n\tstatic UserIdClaimNotFound: string = Translations_fi.UserIdClaimNotFound;\r\n\tstatic SaveUserFurtherEducation: string = Translations_fi.SaveUserFurtherEducation;\r\n\tstatic ProjectNumber: string = Translations_fi.ProjectNumber;\r\n\tstatic DefaultDeductionWithoutTax: string = Translations_fi.DefaultDeductionWithoutTax;\r\n\tstatic FormTextInput: string = Translations_fi.FormTextInput;\r\n\tstatic EditDefaultHandlers: string = Translations_fi.EditDefaultHandlers;\r\n\tstatic Last120Days: string = Translations_fi.Last120Days;\r\n\tstatic DeletingWhistleBlowCategoriesParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingWhistleBlowCategoriesParameterWasNotSuccessfulErrorParameter;\r\n\tstatic FormDropdownOptionsDialog: string = Translations_fi.FormDropdownOptionsDialog;\r\n\tstatic MarkMessageAsRead: string = Translations_fi.MarkMessageAsRead;\r\n\tstatic FileStorageQuotaGB: string = Translations_fi.FileStorageQuotaGB;\r\n\tstatic EmptyingTaskTrashBinWasNotSuccessfulConcurrencyError: string = Translations_fi.EmptyingTaskTrashBinWasNotSuccessfulConcurrencyError;\r\n\tstatic SendMessage: string = Translations_fi.SendMessage;\r\n\tstatic RestoringTaskParameterFromTrashBinWasNotSuccessfulConcurrencyError: string = Translations_fi.RestoringTaskParameterFromTrashBinWasNotSuccessfulConcurrencyError;\r\n\tstatic SavingChartWasSuccessful: string = Translations_fi.SavingChartWasSuccessful;\r\n\tstatic CalendarTaskCategories: string = Translations_fi.CalendarTaskCategories;\r\n\tstatic PasswordHasBeenCopiedToClipboard: string = Translations_fi.PasswordHasBeenCopiedToClipboard;\r\n\tstatic DeletingInstantMessageChannelWasSuccessful: string = Translations_fi.DeletingInstantMessageChannelWasSuccessful;\r\n\tstatic TimeMustBeDefined: string = Translations_fi.TimeMustBeDefined;\r\n\tstatic DoYouReallyWantToRemoveFileParameter: string = Translations_fi.DoYouReallyWantToRemoveFileParameter;\r\n\tstatic UserNotAllowedToViewNotifier: string = Translations_fi.UserNotAllowedToViewNotifier;\r\n\tstatic SaveComment: string = Translations_fi.SaveComment;\r\n\tstatic AdditionalSettings: string = Translations_fi.AdditionalSettings;\r\n\tstatic ImageProperties: string = Translations_fi.ImageProperties;\r\n\tstatic UploadDocument: string = Translations_fi.UploadDocument;\r\n\tstatic Contents: string = Translations_fi.Contents;\r\n\tstatic PermissionsOtherCompanies: string = Translations_fi.PermissionsOtherCompanies;\r\n\tstatic FormTextPreWrap: string = Translations_fi.FormTextPreWrap;\r\n\tstatic SavingReportWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingReportWasNotSuccessfulConcurrencyError;\r\n\tstatic Employee: string = Translations_fi.Employee;\r\n\tstatic LanguageNonLocalEnglish: string = Translations_fi.LanguageNonLocalEnglish;\r\n\tstatic RecordUserModuleProperties: string = Translations_fi.RecordUserModuleProperties;\r\n\tstatic EditEventType: string = Translations_fi.EditEventType;\r\n\tstatic UserGroups: string = Translations_fi.UserGroups;\r\n\tstatic WhistleBlowStatisticsResolvedRecords: string = Translations_fi.WhistleBlowStatisticsResolvedRecords;\r\n\tstatic DeletingWhistleBlowParameterWasSuccessful: string = Translations_fi.DeletingWhistleBlowParameterWasSuccessful;\r\n\tstatic SelectImageFile: string = Translations_fi.SelectImageFile;\r\n\tstatic DeletingFileFilterParameterWasNotSuccessfulUsedInParameterFolders: string = Translations_fi.DeletingFileFilterParameterWasNotSuccessfulUsedInParameterFolders;\r\n\tstatic TogglePreviewPanel: string = Translations_fi.TogglePreviewPanel;\r\n\tstatic MovingTaskParameterToTrashBinWasNotSuccessfulErrorParameter: string = Translations_fi.MovingTaskParameterToTrashBinWasNotSuccessfulErrorParameter;\r\n\tstatic FolderProperties: string = Translations_fi.FolderProperties;\r\n\tstatic DeletingDirectoryItemFolderParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingDirectoryItemFolderParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic NewCompanyInformation: string = Translations_fi.NewCompanyInformation;\r\n\tstatic ShowOnMap: string = Translations_fi.ShowOnMap;\r\n\tstatic DeletingTaskPrioritiesParameterWasSuccessful: string = Translations_fi.DeletingTaskPrioritiesParameterWasSuccessful;\r\n\tstatic TaskMustBeSavedBeforeNewDataRowsCanBeAdded: string = Translations_fi.TaskMustBeSavedBeforeNewDataRowsCanBeAdded;\r\n\tstatic DeletingCompanyParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingCompanyParameterWasNotSuccessfulErrorParameter;\r\n\tstatic CommentMustNotBeEmpty: string = Translations_fi.CommentMustNotBeEmpty;\r\n\tstatic EventsToApprove: string = Translations_fi.EventsToApprove;\r\n\tstatic DeletingTaskTypesParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingTaskTypesParameterWasNotSuccessfulErrorParameter;\r\n\tstatic FileFilterCodeIsAlreadyInUse: string = Translations_fi.FileFilterCodeIsAlreadyInUse;\r\n\tstatic RemoveFurtherEducation: string = Translations_fi.RemoveFurtherEducation;\r\n\tstatic MessageStartDateMustBeDefined: string = Translations_fi.MessageStartDateMustBeDefined;\r\n\tstatic DefaultEventHandlersAndNotifiedPersons: string = Translations_fi.DefaultEventHandlersAndNotifiedPersons;\r\n\tstatic DeletingPartnersParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingPartnersParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic EventTypeMustBeDefined: string = Translations_fi.EventTypeMustBeDefined;\r\n\tstatic WhistleBlowCategory: string = Translations_fi.WhistleBlowCategory;\r\n\tstatic FileParameterAlreadyExistsInFileSystem: string = Translations_fi.FileParameterAlreadyExistsInFileSystem;\r\n\tstatic DeletingTaskStatesParameterWasSuccessful: string = Translations_fi.DeletingTaskStatesParameterWasSuccessful;\r\n\tstatic ModifyExistingDocumentTemplate: string = Translations_fi.ModifyExistingDocumentTemplate;\r\n\tstatic CalendarTaskSeries: string = Translations_fi.CalendarTaskSeries;\r\n\tstatic TitleMustBeDefined: string = Translations_fi.TitleMustBeDefined;\r\n\tstatic AddUserParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.AddUserParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic WhistleBlowChannelWasNotFoundExplanation: string = Translations_fi.WhistleBlowChannelWasNotFoundExplanation;\r\n\tstatic FormInitializeFromSavedRowDialog: string = Translations_fi.FormInitializeFromSavedRowDialog;\r\n\tstatic RemoveUserAndKeepRecordUser: string = Translations_fi.RemoveUserAndKeepRecordUser;\r\n\tstatic Keywords: string = Translations_fi.Keywords;\r\n\tstatic SelectRecordUsers: string = Translations_fi.SelectRecordUsers;\r\n\tstatic AddCompanyParameterWasNotSuccessfulErrorParameter: string = Translations_fi.AddCompanyParameterWasNotSuccessfulErrorParameter;\r\n\tstatic UserRecordStatisticsExpiredQualifications: string = Translations_fi.UserRecordStatisticsExpiredQualifications;\r\n\tstatic DaysAgo120: string = Translations_fi.DaysAgo120;\r\n\tstatic WhistleBlowResolutionOther: string = Translations_fi.WhistleBlowResolutionOther;\r\n\tstatic AddCompanyGroupParameterWasSuccessful: string = Translations_fi.AddCompanyGroupParameterWasSuccessful;\r\n\tstatic ZipFileCreationFailed: string = Translations_fi.ZipFileCreationFailed;\r\n\tstatic EmailsSentSuccessfully: string = Translations_fi.EmailsSentSuccessfully;\r\n\tstatic AccessRightReadTasks: string = Translations_fi.AccessRightReadTasks;\r\n\tstatic DeletingCompaniesParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingCompaniesParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic AddMessageType: string = Translations_fi.AddMessageType;\r\n\tstatic AddBasicEducation: string = Translations_fi.AddBasicEducation;\r\n\tstatic SaveAndSend: string = Translations_fi.SaveAndSend;\r\n\tstatic RemoveTaskPermanently: string = Translations_fi.RemoveTaskPermanently;\r\n\tstatic NotAssigned: string = Translations_fi.NotAssigned;\r\n\tstatic EditUnit: string = Translations_fi.EditUnit;\r\n\tstatic FormColumnWidth: string = Translations_fi.FormColumnWidth;\r\n\tstatic PasswordMustContainLowercaseChar: string = Translations_fi.PasswordMustContainLowercaseChar;\r\n\tstatic ServiceFeePercent: string = Translations_fi.ServiceFeePercent;\r\n\tstatic ImportingUsersParameterWasNotSuccessfulErrorParameter: string = Translations_fi.ImportingUsersParameterWasNotSuccessfulErrorParameter;\r\n\tstatic ApprovedEvent: string = Translations_fi.ApprovedEvent;\r\n\tstatic RecordFurtherEducationParameterNotFound: string = Translations_fi.RecordFurtherEducationParameterNotFound;\r\n\tstatic PasswordChangeRequestHasBeenExpired: string = Translations_fi.PasswordChangeRequestHasBeenExpired;\r\n\tstatic RecordUserFamiliarizationParameterNotFound: string = Translations_fi.RecordUserFamiliarizationParameterNotFound;\r\n\tstatic MessageDateMustBeDefined: string = Translations_fi.MessageDateMustBeDefined;\r\n\tstatic InUse: string = Translations_fi.InUse;\r\n\tstatic CurrentWorkPlace: string = Translations_fi.CurrentWorkPlace;\r\n\tstatic AllUnits: string = Translations_fi.AllUnits;\r\n\tstatic Remainders: string = Translations_fi.Remainders;\r\n\tstatic InstantMessageChannelParameterNotFound: string = Translations_fi.InstantMessageChannelParameterNotFound;\r\n\tstatic Orientation: string = Translations_fi.Orientation;\r\n\tstatic YouHaveUnapprovedChangesDoYouWantApproveChanges: string = Translations_fi.YouHaveUnapprovedChangesDoYouWantApproveChanges;\r\n\tstatic SavingUserParameterParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingUserParameterParameterWasNotSuccessfulErrorParameter;\r\n\tstatic UseInheritedContentFiltering: string = Translations_fi.UseInheritedContentFiltering;\r\n\tstatic PreviousCalendarYear: string = Translations_fi.PreviousCalendarYear;\r\n\tstatic ToggleArchivedFurtherEducations: string = Translations_fi.ToggleArchivedFurtherEducations;\r\n\tstatic Intern: string = Translations_fi.Intern;\r\n\tstatic DecreasingVersionHistorySizeRemovesCurrentlySavedVersionHistoryRecords: string = Translations_fi.DecreasingVersionHistorySizeRemovesCurrentlySavedVersionHistoryRecords;\r\n\tstatic PublishVersionHistorySize: string = Translations_fi.PublishVersionHistorySize;\r\n\tstatic Keyword: string = Translations_fi.Keyword;\r\n\tstatic DeletingRecordUserEmploymentParameterWasSuccessful: string = Translations_fi.DeletingRecordUserEmploymentParameterWasSuccessful;\r\n\tstatic RecordFamiliarizationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted: string = Translations_fi.RecordFamiliarizationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted;\r\n\tstatic InstantMessageUserInvitationAcceptTypeCannotInvite: string = Translations_fi.InstantMessageUserInvitationAcceptTypeCannotInvite;\r\n\tstatic SelectUrgencyClass: string = Translations_fi.SelectUrgencyClass;\r\n\tstatic Restore: string = Translations_fi.Restore;\r\n\tstatic MaximumTotalSizeOfAttachmentsIsParameterMB: string = Translations_fi.MaximumTotalSizeOfAttachmentsIsParameterMB;\r\n\tstatic ResolutionDescription: string = Translations_fi.ResolutionDescription;\r\n\tstatic EmptyTaskTrashBinConfirmation: string = Translations_fi.EmptyTaskTrashBinConfirmation;\r\n\tstatic DeletingDocumentTemplatesParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingDocumentTemplatesParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic LanguageNonLocalFinnish: string = Translations_fi.LanguageNonLocalFinnish;\r\n\tstatic VersionHistory: string = Translations_fi.VersionHistory;\r\n\tstatic Min: string = Translations_fi.Min;\r\n\tstatic EditEventTypeC: string = Translations_fi.EditEventTypeC;\r\n\tstatic Choose: string = Translations_fi.Choose;\r\n\tstatic QualificationIsValid: string = Translations_fi.QualificationIsValid;\r\n\tstatic ChangingPasswordWasNotSuccessfulConcurrencyError: string = Translations_fi.ChangingPasswordWasNotSuccessfulConcurrencyError;\r\n\tstatic DeletingEventUrgencyClassesParameterWasSuccessful: string = Translations_fi.DeletingEventUrgencyClassesParameterWasSuccessful;\r\n\tstatic RecordUserExcelSalary: string = Translations_fi.RecordUserExcelSalary;\r\n\tstatic Event: string = Translations_fi.Event;\r\n\tstatic RestoreTaskFromTrashBin: string = Translations_fi.RestoreTaskFromTrashBin;\r\n\tstatic RemovingEventHandlersWasSuccessful: string = Translations_fi.RemovingEventHandlersWasSuccessful;\r\n\tstatic Anonymity: string = Translations_fi.Anonymity;\r\n\tstatic FormFalse: string = Translations_fi.FormFalse;\r\n\tstatic SearchCondition: string = Translations_fi.SearchCondition;\r\n\tstatic Category: string = Translations_fi.Category;\r\n\tstatic DeletingEventParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingEventParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic SharedFilter: string = Translations_fi.SharedFilter;\r\n\tstatic AddRemainder: string = Translations_fi.AddRemainder;\r\n\tstatic TrashBin: string = Translations_fi.TrashBin;\r\n\tstatic SelectCategory: string = Translations_fi.SelectCategory;\r\n\tstatic UsedInParameterTasks: string = Translations_fi.UsedInParameterTasks;\r\n\tstatic WhistleBlowSeverityNormal: string = Translations_fi.WhistleBlowSeverityNormal;\r\n\tstatic SearchEvents: string = Translations_fi.SearchEvents;\r\n\tstatic ClosedEvent: string = Translations_fi.ClosedEvent;\r\n\tstatic NoCalendarTasksToShow: string = Translations_fi.NoCalendarTasksToShow;\r\n\tstatic PreviewPrint: string = Translations_fi.PreviewPrint;\r\n\tstatic SavingEventTypesWasNotSuccessfulErrorParameter: string = Translations_fi.SavingEventTypesWasNotSuccessfulErrorParameter;\r\n\tstatic WhistleBlowArchivingTypeChangeState: string = Translations_fi.WhistleBlowArchivingTypeChangeState;\r\n\tstatic AddCompanyGroups: string = Translations_fi.AddCompanyGroups;\r\n\tstatic FolderName: string = Translations_fi.FolderName;\r\n\tstatic DeletingCalendarTaskCategoryParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingCalendarTaskCategoryParameterWasNotSuccessfulErrorParameter;\r\n\tstatic DeletingTaskTypeParameterWasSuccessful: string = Translations_fi.DeletingTaskTypeParameterWasSuccessful;\r\n\tstatic InstantMessageChannelInternal: string = Translations_fi.InstantMessageChannelInternal;\r\n\tstatic AdministratorUserCodeMustBeDefined: string = Translations_fi.AdministratorUserCodeMustBeDefined;\r\n\tstatic CreatingCompressedFileWasNotSuccessfulErrorParameter: string = Translations_fi.CreatingCompressedFileWasNotSuccessfulErrorParameter;\r\n\tstatic DoYouReallyWantToRemoveSharedDocumentTemplateParameter: string = Translations_fi.DoYouReallyWantToRemoveSharedDocumentTemplateParameter;\r\n\tstatic DeletingUserParametersWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingUserParametersWasNotSuccessfulConcurrencyError;\r\n\tstatic DeletingAttachmentParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingAttachmentParameterWasNotSuccessfulErrorParameter;\r\n\tstatic DeletingDocumentTemplatesParameterWasSuccessful: string = Translations_fi.DeletingDocumentTemplatesParameterWasSuccessful;\r\n\tstatic PanelName: string = Translations_fi.PanelName;\r\n\tstatic UserCodeParameterMustBeValid: string = Translations_fi.UserCodeParameterMustBeValid;\r\n\tstatic RemovePartner: string = Translations_fi.RemovePartner;\r\n\tstatic SourceDescription: string = Translations_fi.SourceDescription;\r\n\tstatic CopyingFileParameterWasNotSuccessfulErrorParameter: string = Translations_fi.CopyingFileParameterWasNotSuccessfulErrorParameter;\r\n\tstatic Other: string = Translations_fi.Other;\r\n\tstatic DeletingPartnerParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingPartnerParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic FormulaDateAndTimeDiffInTimeSpan: string = Translations_fi.FormulaDateAndTimeDiffInTimeSpan;\r\n\tstatic AccessRightWriteRecords: string = Translations_fi.AccessRightWriteRecords;\r\n\tstatic AdditionalPermissionARecords: string = Translations_fi.AdditionalPermissionARecords;\r\n\tstatic SavingTaskDataRowWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingTaskDataRowWasNotSuccessfulConcurrencyError;\r\n\tstatic UserName: string = Translations_fi.UserName;\r\n\tstatic ReadingFileParameterWasNotSuccessfulErrorParameter: string = Translations_fi.ReadingFileParameterWasNotSuccessfulErrorParameter;\r\n\tstatic DeletingCalendarTaskParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingCalendarTaskParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic Approval: string = Translations_fi.Approval;\r\n\tstatic ExternalIntraSystemUserTokenMustBeDefined: string = Translations_fi.ExternalIntraSystemUserTokenMustBeDefined;\r\n\tstatic Repeated: string = Translations_fi.Repeated;\r\n\tstatic WhistleBlowChannelMustHaveAtLeastOneAdministrator: string = Translations_fi.WhistleBlowChannelMustHaveAtLeastOneAdministrator;\r\n\tstatic Internet: string = Translations_fi.Internet;\r\n\tstatic AgencyWorker: string = Translations_fi.AgencyWorker;\r\n\tstatic Remove: string = Translations_fi.Remove;\r\n\tstatic EmailSendDate: string = Translations_fi.EmailSendDate;\r\n\tstatic IpAddress: string = Translations_fi.IpAddress;\r\n\tstatic DeletingCompanyGroupsParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingCompanyGroupsParameterWasNotSuccessfulErrorParameter;\r\n\tstatic Text: string = Translations_fi.Text;\r\n\tstatic RecordBasicEducationCodeIsAlreadyInUse: string = Translations_fi.RecordBasicEducationCodeIsAlreadyInUse;\r\n\tstatic InstantMessageChannelGroupExternal: string = Translations_fi.InstantMessageChannelGroupExternal;\r\n\tstatic Yearly: string = Translations_fi.Yearly;\r\n\tstatic AddForm: string = Translations_fi.AddForm;\r\n\tstatic Test: string = Translations_fi.Test;\r\n\tstatic DeletingEventPartnerParameterWasSuccessful: string = Translations_fi.DeletingEventPartnerParameterWasSuccessful;\r\n\tstatic CompanyNumber: string = Translations_fi.CompanyNumber;\r\n\tstatic CalendarTaskParameterNotFound: string = Translations_fi.CalendarTaskParameterNotFound;\r\n\tstatic FormSizeExtraLarge: string = Translations_fi.FormSizeExtraLarge;\r\n\tstatic PublishVersion: string = Translations_fi.PublishVersion;\r\n\tstatic UserCanBeSelectedAsEventHandler: string = Translations_fi.UserCanBeSelectedAsEventHandler;\r\n\tstatic RemoveTaskHandler: string = Translations_fi.RemoveTaskHandler;\r\n\tstatic ClearSubUnitDefaultHandlersAndNotifiedPersons: string = Translations_fi.ClearSubUnitDefaultHandlersAndNotifiedPersons;\r\n\tstatic DoYouReallyWantToRemoveSelectedForms: string = Translations_fi.DoYouReallyWantToRemoveSelectedForms;\r\n\tstatic SavingWhistleBlowCategoryParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingWhistleBlowCategoryParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic SavingTaskStateParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingTaskStateParameterWasNotSuccessfulErrorParameter;\r\n\tstatic FileParameterNotFound: string = Translations_fi.FileParameterNotFound;\r\n\tstatic ByName: string = Translations_fi.ByName;\r\n\tstatic PrintTask: string = Translations_fi.PrintTask;\r\n\tstatic AddPartnerCompanies: string = Translations_fi.AddPartnerCompanies;\r\n\tstatic AddUser: string = Translations_fi.AddUser;\r\n\tstatic DeletingUsersParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingUsersParameterWasNotSuccessfulErrorParameter;\r\n\tstatic GeneralInfo: string = Translations_fi.GeneralInfo;\r\n\tstatic Published: string = Translations_fi.Published;\r\n\tstatic CurrentTopics: string = Translations_fi.CurrentTopics;\r\n\tstatic SaveFilter: string = Translations_fi.SaveFilter;\r\n\tstatic AddPayer: string = Translations_fi.AddPayer;\r\n\tstatic SavePasswordAndMoveToLoginPage: string = Translations_fi.SavePasswordAndMoveToLoginPage;\r\n\tstatic SaveAsFavorite: string = Translations_fi.SaveAsFavorite;\r\n\tstatic DraftCannotBeApproved: string = Translations_fi.DraftCannotBeApproved;\r\n\tstatic WhistleBlowSeverityVeryLow: string = Translations_fi.WhistleBlowSeverityVeryLow;\r\n\tstatic DownloadAttachment: string = Translations_fi.DownloadAttachment;\r\n\tstatic InstantMessageChannelGroupInternal: string = Translations_fi.InstantMessageChannelGroupInternal;\r\n\tstatic Publisher: string = Translations_fi.Publisher;\r\n\tstatic Courses: string = Translations_fi.Courses;\r\n\tstatic AuthorizationLevelSuperUser: string = Translations_fi.AuthorizationLevelSuperUser;\r\n\tstatic WageGroup: string = Translations_fi.WageGroup;\r\n\tstatic RemoveCompany: string = Translations_fi.RemoveCompany;\r\n\tstatic OnlyImageAndPdfAttachmentsAreAllowedInvalidAttachmentParamater: string = Translations_fi.OnlyImageAndPdfAttachmentsAreAllowedInvalidAttachmentParamater;\r\n\tstatic SavingInstantMessageChannelUserWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingInstantMessageChannelUserWasNotSuccessfulConcurrencyError;\r\n\tstatic AddEventTypesToEvent: string = Translations_fi.AddEventTypesToEvent;\r\n\tstatic UserRecordStatisticsExpiringInSixMonthsFamiliarizations: string = Translations_fi.UserRecordStatisticsExpiringInSixMonthsFamiliarizations;\r\n\tstatic FileChangesCheckingAndEmailingStarted: string = Translations_fi.FileChangesCheckingAndEmailingStarted;\r\n\tstatic DeletingWhistleBlowChannelAdminParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingWhistleBlowChannelAdminParameterWasNotSuccessfulErrorParameter;\r\n\tstatic DocumentPublished: string = Translations_fi.DocumentPublished;\r\n\tstatic Unread: string = Translations_fi.Unread;\r\n\tstatic ImportUserDialogInstruction: string = Translations_fi.ImportUserDialogInstruction;\r\n\tstatic AddingEventHandlerWasNotSuccessfulErrorParameter: string = Translations_fi.AddingEventHandlerWasNotSuccessfulErrorParameter;\r\n\tstatic DoYouReallyWantToCreateRemainderInPast: string = Translations_fi.DoYouReallyWantToCreateRemainderInPast;\r\n\tstatic PasswordMustContainDigitOrSpecialCharacter: string = Translations_fi.PasswordMustContainDigitOrSpecialCharacter;\r\n\tstatic Today: string = Translations_fi.Today;\r\n\tstatic SavingWhistleBlowChannelParameterWasSuccessful: string = Translations_fi.SavingWhistleBlowChannelParameterWasSuccessful;\r\n\tstatic DocumentModulePropertiesSaveWasSuccessful: string = Translations_fi.DocumentModulePropertiesSaveWasSuccessful;\r\n\tstatic TasksFound: string = Translations_fi.TasksFound;\r\n\tstatic UserReports: string = Translations_fi.UserReports;\r\n\tstatic EditableDocumentApproveConfirmation: string = Translations_fi.EditableDocumentApproveConfirmation;\r\n\tstatic ChartProperties: string = Translations_fi.ChartProperties;\r\n\tstatic DeletingUserGroupsParameterWasSuccessful: string = Translations_fi.DeletingUserGroupsParameterWasSuccessful;\r\n\tstatic CalendarTaskEditSeries: string = Translations_fi.CalendarTaskEditSeries;\r\n\tstatic ExpiresInYear: string = Translations_fi.ExpiresInYear;\r\n\tstatic Week: string = Translations_fi.Week;\r\n\tstatic MaximumSizeOfFilesThatCanBeAddedInBatchIsParameterMB: string = Translations_fi.MaximumSizeOfFilesThatCanBeAddedInBatchIsParameterMB;\r\n\tstatic Instructions: string = Translations_fi.Instructions;\r\n\tstatic ArchivingRecordUserFamiliarizationsWasNotSuccessfulErrorParameter: string = Translations_fi.ArchivingRecordUserFamiliarizationsWasNotSuccessfulErrorParameter;\r\n\tstatic SavingEventPartnerParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingEventPartnerParameterWasNotSuccessfulErrorParameter;\r\n\tstatic EInvoiceAddress: string = Translations_fi.EInvoiceAddress;\r\n\tstatic SavingApplicationPermissionsWasSuccessful: string = Translations_fi.SavingApplicationPermissionsWasSuccessful;\r\n\tstatic ExitingInstantMessageChannelWasNotSuccessfulConcurrencyError: string = Translations_fi.ExitingInstantMessageChannelWasNotSuccessfulConcurrencyError;\r\n\tstatic Search: string = Translations_fi.Search;\r\n\tstatic SavingOneTimePasswordParameterWasSuccessful: string = Translations_fi.SavingOneTimePasswordParameterWasSuccessful;\r\n\tstatic DeletingRecordFurtherEducationsParameterWasSuccessful: string = Translations_fi.DeletingRecordFurtherEducationsParameterWasSuccessful;\r\n\tstatic FormDropdownOption: string = Translations_fi.FormDropdownOption;\r\n\tstatic DoYouReallyWantToRemoveTaskStateParameter: string = Translations_fi.DoYouReallyWantToRemoveTaskStateParameter;\r\n\tstatic CalendarTaskHandlerFilter: string = Translations_fi.CalendarTaskHandlerFilter;\r\n\tstatic EventApprovalWasNotSuccessfulConcurrencyError: string = Translations_fi.EventApprovalWasNotSuccessfulConcurrencyError;\r\n\tstatic AddWhistleBlowChannelAdminsParameterWasNotSuccessfulErrorParameter: string = Translations_fi.AddWhistleBlowChannelAdminsParameterWasNotSuccessfulErrorParameter;\r\n\tstatic AddCompaniesParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.AddCompaniesParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic UserIsSystemAdminClaimNotFound: string = Translations_fi.UserIsSystemAdminClaimNotFound;\r\n\tstatic WhistleBlowAnonymousReportInfo: string = Translations_fi.WhistleBlowAnonymousReportInfo;\r\n\tstatic DeletingWhistleBlowCategoriesParameterWasSuccessful: string = Translations_fi.DeletingWhistleBlowCategoriesParameterWasSuccessful;\r\n\tstatic MaximumSizeOfAttachmentThatCanBeAddedInBatchIsParameterMB: string = Translations_fi.MaximumSizeOfAttachmentThatCanBeAddedInBatchIsParameterMB;\r\n\tstatic SavingUserGroupParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingUserGroupParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic EmployeeType: string = Translations_fi.EmployeeType;\r\n\tstatic EventTypeC: string = Translations_fi.EventTypeC;\r\n\tstatic EventTypeBCodeIsAlreadyInUse: string = Translations_fi.EventTypeBCodeIsAlreadyInUse;\r\n\tstatic TimeSpanQuarter: string = Translations_fi.TimeSpanQuarter;\r\n\tstatic OpenWhistleBlow: string = Translations_fi.OpenWhistleBlow;\r\n\tstatic DeletingDirectoryItemDocumentParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingDirectoryItemDocumentParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic UseObserverAction: string = Translations_fi.UseObserverAction;\r\n\tstatic LogisticVoucherCustomers: string = Translations_fi.LogisticVoucherCustomers;\r\n\tstatic PermissionToCreateEventsToPartners: string = Translations_fi.PermissionToCreateEventsToPartners;\r\n\tstatic AmountOfComments: string = Translations_fi.AmountOfComments;\r\n\tstatic DeletingOptionParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingOptionParameterWasNotSuccessfulErrorParameter;\r\n\tstatic NewCompanyMustBeSavedBeforeCompanyGroupsCanBeAdded: string = Translations_fi.NewCompanyMustBeSavedBeforeCompanyGroupsCanBeAdded;\r\n\tstatic UnitMustBeSelected: string = Translations_fi.UnitMustBeSelected;\r\n\tstatic AddEventHandlersToEvent: string = Translations_fi.AddEventHandlersToEvent;\r\n\tstatic ObserverActionMustBeDefined: string = Translations_fi.ObserverActionMustBeDefined;\r\n\tstatic AddLogisticVoucherCustomerPaymentSetting: string = Translations_fi.AddLogisticVoucherCustomerPaymentSetting;\r\n\tstatic DescriptionMustBeDefined: string = Translations_fi.DescriptionMustBeDefined;\r\n\tstatic AddUsersParameterWasNotSuccessfulErrorParameter: string = Translations_fi.AddUsersParameterWasNotSuccessfulErrorParameter;\r\n\tstatic DocumentIsEmpty: string = Translations_fi.DocumentIsEmpty;\r\n\tstatic CompanyGroup: string = Translations_fi.CompanyGroup;\r\n\tstatic SavingEventTypeBParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingEventTypeBParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic AddCompanyParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.AddCompanyParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic WhistleBlowResolutionUnspecified: string = Translations_fi.WhistleBlowResolutionUnspecified;\r\n\tstatic RequestValidationErrorOnFieldParameterWithValueParameter: string = Translations_fi.RequestValidationErrorOnFieldParameterWithValueParameter;\r\n\tstatic FormCalculatedIntegerNumber: string = Translations_fi.FormCalculatedIntegerNumber;\r\n\tstatic EventUrgencyClassParameterIsInUseInParameterEventsAndCannotBeDeleted: string = Translations_fi.EventUrgencyClassParameterIsInUseInParameterEventsAndCannotBeDeleted;\r\n\tstatic PrintTextPublished: string = Translations_fi.PrintTextPublished;\r\n\tstatic SavingRecordBasicEducationParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingRecordBasicEducationParameterWasNotSuccessfulErrorParameter;\r\n\tstatic AddUsers: string = Translations_fi.AddUsers;\r\n\tstatic DefaultEventTypes: string = Translations_fi.DefaultEventTypes;\r\n\tstatic DeletingMetadataFromFileParameterFailed: string = Translations_fi.DeletingMetadataFromFileParameterFailed;\r\n\tstatic UnitHandlingIncomingEvents: string = Translations_fi.UnitHandlingIncomingEvents;\r\n\tstatic CalendarTaskOpenSeries: string = Translations_fi.CalendarTaskOpenSeries;\r\n\tstatic RemoveFilter: string = Translations_fi.RemoveFilter;\r\n\tstatic Select: string = Translations_fi.Select;\r\n\tstatic ReminderMinutesBefore: string = Translations_fi.ReminderMinutesBefore;\r\n\tstatic RecordParameterLockingFailedRecordIsWriteLockedToUserParameter: string = Translations_fi.RecordParameterLockingFailedRecordIsWriteLockedToUserParameter;\r\n\tstatic Units: string = Translations_fi.Units;\r\n\tstatic ReportsModified: string = Translations_fi.ReportsModified;\r\n\tstatic SavingTaskParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingTaskParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic DoYouReallyWantToUnlockTaskDataRow: string = Translations_fi.DoYouReallyWantToUnlockTaskDataRow;\r\n\tstatic Year: string = Translations_fi.Year;\r\n\tstatic EventHandlers: string = Translations_fi.EventHandlers;\r\n\tstatic DataTransferError: string = Translations_fi.DataTransferError;\r\n\tstatic SendPasswordChangeEmail: string = Translations_fi.SendPasswordChangeEmail;\r\n\tstatic AddLogisticVoucherPaymentSetting: string = Translations_fi.AddLogisticVoucherPaymentSetting;\r\n\tstatic WhistleBlowCategoryParameterIsInUseInParameterWhistleBlowsAndCannotBeDeleted: string = Translations_fi.WhistleBlowCategoryParameterIsInUseInParameterWhistleBlowsAndCannotBeDeleted;\r\n\tstatic ModifyExistingSharedDocumentTemplate: string = Translations_fi.ModifyExistingSharedDocumentTemplate;\r\n\tstatic WhistleBlowFollowReport: string = Translations_fi.WhistleBlowFollowReport;\r\n\tstatic DeletingCompanyParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingCompanyParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic SavingTaskStateParameterWasSuccessful: string = Translations_fi.SavingTaskStateParameterWasSuccessful;\r\n\tstatic MovingFilesAndDocumentsToFolderParameterWasNotSuccessfulErrorParameter: string = Translations_fi.MovingFilesAndDocumentsToFolderParameterWasNotSuccessfulErrorParameter;\r\n\tstatic CopyPermissionToAllSameLevelUnits: string = Translations_fi.CopyPermissionToAllSameLevelUnits;\r\n\tstatic Default: string = Translations_fi.Default;\r\n\tstatic Relation: string = Translations_fi.Relation;\r\n\tstatic FormCompactStyle: string = Translations_fi.FormCompactStyle;\r\n\tstatic ArchivingRecordUserFurtherEducationsWasNotSuccessfulConcurrencyError: string = Translations_fi.ArchivingRecordUserFurtherEducationsWasNotSuccessfulConcurrencyError;\r\n\tstatic SavingKeywordParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingKeywordParameterWasNotSuccessfulErrorParameter;\r\n\tstatic Open: string = Translations_fi.Open;\r\n\tstatic DeletingFileFilterParameterWasSuccessful: string = Translations_fi.DeletingFileFilterParameterWasSuccessful;\r\n\tstatic CompanyGroupNameMustBeDefined: string = Translations_fi.CompanyGroupNameMustBeDefined;\r\n\tstatic RecordUserExcelQualification: string = Translations_fi.RecordUserExcelQualification;\r\n\tstatic SavingEventParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingEventParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic AddingAddRecordUserTransferredPropertiesWasNotSuccessfulErrorParameter: string = Translations_fi.AddingAddRecordUserTransferredPropertiesWasNotSuccessfulErrorParameter;\r\n\tstatic Save: string = Translations_fi.Save;\r\n\tstatic UserAccountMustBeSelected: string = Translations_fi.UserAccountMustBeSelected;\r\n\tstatic SavingRecordUserParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingRecordUserParameterWasNotSuccessfulErrorParameter;\r\n\tstatic NoReports: string = Translations_fi.NoReports;\r\n\tstatic IncludeArchivedFurtherEducations: string = Translations_fi.IncludeArchivedFurtherEducations;\r\n\tstatic DoYouReallyWantToRemoveWhistleBlowCategoryParameter: string = Translations_fi.DoYouReallyWantToRemoveWhistleBlowCategoryParameter;\r\n\tstatic SavingOptionParameterWasSuccessful: string = Translations_fi.SavingOptionParameterWasSuccessful;\r\n\tstatic MessageParameterNotFound: string = Translations_fi.MessageParameterNotFound;\r\n\tstatic UserIsInstantMessageChannelOnlyAdministratorInParameterInstantMessageChannels: string = Translations_fi.UserIsInstantMessageChannelOnlyAdministratorInParameterInstantMessageChannels;\r\n\tstatic AddWhistleBlow: string = Translations_fi.AddWhistleBlow;\r\n\tstatic Location: string = Translations_fi.Location;\r\n\tstatic DoYouWantToPublishEvent: string = Translations_fi.DoYouWantToPublishEvent;\r\n\tstatic EditableDocumentParameterNotFound: string = Translations_fi.EditableDocumentParameterNotFound;\r\n\tstatic MessageTypesMustBeDefinedBeforeAddingMessages: string = Translations_fi.MessageTypesMustBeDefinedBeforeAddingMessages;\r\n\tstatic RemoveCalendarTaskCategory: string = Translations_fi.RemoveCalendarTaskCategory;\r\n\tstatic DeletingInstantMessageChannelParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingInstantMessageChannelParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic AdminMustBeDefined: string = Translations_fi.AdminMustBeDefined;\r\n\tstatic FormBuilder: string = Translations_fi.FormBuilder;\r\n\tstatic AddCompanyGroupParameterWasNotSuccessfulErrorParameter: string = Translations_fi.AddCompanyGroupParameterWasNotSuccessfulErrorParameter;\r\n\tstatic EventIsApprovedByUser: string = Translations_fi.EventIsApprovedByUser;\r\n\tstatic ThisWeek: string = Translations_fi.ThisWeek;\r\n\tstatic AccessRightReadWhistleBlow: string = Translations_fi.AccessRightReadWhistleBlow;\r\n\tstatic ExpiresInParameterMonths: string = Translations_fi.ExpiresInParameterMonths;\r\n\tstatic KeywordsAndCondition: string = Translations_fi.KeywordsAndCondition;\r\n\tstatic AddingAddRecordUserTransferredPropertiesWasSuccessful: string = Translations_fi.AddingAddRecordUserTransferredPropertiesWasSuccessful;\r\n\tstatic Permissions: string = Translations_fi.Permissions;\r\n\tstatic InheritedContentFilter: string = Translations_fi.InheritedContentFilter;\r\n\tstatic UserFilterInActive: string = Translations_fi.UserFilterInActive;\r\n\tstatic UserRecordStatisticsMissingQualifications: string = Translations_fi.UserRecordStatisticsMissingQualifications;\r\n\tstatic FormulaAbs: string = Translations_fi.FormulaAbs;\r\n\tstatic DirectoryItemDocumentsNotFound: string = Translations_fi.DirectoryItemDocumentsNotFound;\r\n\tstatic Attachments: string = Translations_fi.Attachments;\r\n\tstatic DeletingInstantMessageUserParameterWasSuccessful: string = Translations_fi.DeletingInstantMessageUserParameterWasSuccessful;\r\n\tstatic ReminderNone: string = Translations_fi.ReminderNone;\r\n\tstatic RemoveMessage: string = Translations_fi.RemoveMessage;\r\n\tstatic ContentVersion: string = Translations_fi.ContentVersion;\r\n\tstatic PayeeUsersCanLogInToTheSystem: string = Translations_fi.PayeeUsersCanLogInToTheSystem;\r\n\tstatic FormExpressionMustBeDefined: string = Translations_fi.FormExpressionMustBeDefined;\r\n\tstatic AddingEventHandlersWasSuccessful: string = Translations_fi.AddingEventHandlersWasSuccessful;\r\n\tstatic AccountIBANNumber: string = Translations_fi.AccountIBANNumber;\r\n\tstatic PersonalIdentityCode: string = Translations_fi.PersonalIdentityCode;\r\n\tstatic DoYouReallyWantToRemoveSelectedRecordFamiliarizations: string = Translations_fi.DoYouReallyWantToRemoveSelectedRecordFamiliarizations;\r\n\tstatic DoYouReallyWantToRemoveEventTypeCParameter: string = Translations_fi.DoYouReallyWantToRemoveEventTypeCParameter;\r\n\tstatic SavingCompanyGroupParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingCompanyGroupParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic DeletingRecordFamiliarizationParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingRecordFamiliarizationParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic FormSizeDefault: string = Translations_fi.FormSizeDefault;\r\n\tstatic UserRecordStatisticsExpiredFamiliarizations: string = Translations_fi.UserRecordStatisticsExpiredFamiliarizations;\r\n\tstatic Expand: string = Translations_fi.Expand;\r\n\tstatic UserRecordStatisticsExpiringInSixMonthsFurtherEducations: string = Translations_fi.UserRecordStatisticsExpiringInSixMonthsFurtherEducations;\r\n\tstatic ChangedEventUnit: string = Translations_fi.ChangedEventUnit;\r\n\tstatic ReadReceiptGivenPlur: string = Translations_fi.ReadReceiptGivenPlur;\r\n\tstatic DateMustBeDefined: string = Translations_fi.DateMustBeDefined;\r\n\tstatic EventTypeParameterNotFound: string = Translations_fi.EventTypeParameterNotFound;\r\n\tstatic DeletingRecordFurtherEducationGroupParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingRecordFurtherEducationGroupParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic SavingMessageSendPushParameterWasSuccessful: string = Translations_fi.SavingMessageSendPushParameterWasSuccessful;\r\n\tstatic DoYouReallyWantToRemoveSelectedCalendarTaskCategories: string = Translations_fi.DoYouReallyWantToRemoveSelectedCalendarTaskCategories;\r\n\tstatic LoadMore: string = Translations_fi.LoadMore;\r\n\tstatic DeletingDefaultEventHandlerParameterWasSuccessful: string = Translations_fi.DeletingDefaultEventHandlerParameterWasSuccessful;\r\n\tstatic AccessRightReadEvents: string = Translations_fi.AccessRightReadEvents;\r\n\tstatic RecordUserWithSameFirstNameMiddleNameAndLastNameAlreadyExists: string = Translations_fi.RecordUserWithSameFirstNameMiddleNameAndLastNameAlreadyExists;\r\n\tstatic PrivacyPolicyUrlMustBeDefined: string = Translations_fi.PrivacyPolicyUrlMustBeDefined;\r\n\tstatic ForwardMessage: string = Translations_fi.ForwardMessage;\r\n\tstatic EventTypeBParameterNotFound: string = Translations_fi.EventTypeBParameterNotFound;\r\n\tstatic GroupByEducation: string = Translations_fi.GroupByEducation;\r\n\tstatic DeletingUserGroupParameterWasSuccessful: string = Translations_fi.DeletingUserGroupParameterWasSuccessful;\r\n\tstatic SelectEventTypeC: string = Translations_fi.SelectEventTypeC;\r\n\tstatic RefreshList: string = Translations_fi.RefreshList;\r\n\tstatic NewPrint: string = Translations_fi.NewPrint;\r\n\tstatic DeletingTaskPriorityParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingTaskPriorityParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic NewInstantMessageChannelGroup: string = Translations_fi.NewInstantMessageChannelGroup;\r\n\tstatic ChangedUrgencyClass: string = Translations_fi.ChangedUrgencyClass;\r\n\tstatic SavingOptionParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingOptionParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic Next: string = Translations_fi.Next;\r\n\tstatic DeletingUserGroupUsersOfCompanyParameterWasSuccessful: string = Translations_fi.DeletingUserGroupUsersOfCompanyParameterWasSuccessful;\r\n\tstatic AllUsersOfTheUnit: string = Translations_fi.AllUsersOfTheUnit;\r\n\tstatic ClickToChangeTheLogo: string = Translations_fi.ClickToChangeTheLogo;\r\n\tstatic DeletingTaskStatesParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingTaskStatesParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic TargetCompany: string = Translations_fi.TargetCompany;\r\n\tstatic SavingRecordUserParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingRecordUserParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic FamiliarizationTime: string = Translations_fi.FamiliarizationTime;\r\n\tstatic AddPartner: string = Translations_fi.AddPartner;\r\n\tstatic CopyingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.CopyingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic EditWhistleBlowChannel: string = Translations_fi.EditWhistleBlowChannel;\r\n\tstatic DocumentNameIsIllegal: string = Translations_fi.DocumentNameIsIllegal;\r\n\tstatic ByDate: string = Translations_fi.ByDate;\r\n\tstatic FolderMustBeEmptyBeforeItCanBeRemoved: string = Translations_fi.FolderMustBeEmptyBeforeItCanBeRemoved;\r\n\tstatic UserLastNameMustBeDefined: string = Translations_fi.UserLastNameMustBeDefined;\r\n\tstatic SavingOneTimePasswordWasNotSuccessfulErrorParameter: string = Translations_fi.SavingOneTimePasswordWasNotSuccessfulErrorParameter;\r\n\tstatic FullNameClaimNotFound: string = Translations_fi.FullNameClaimNotFound;\r\n\tstatic RenewPersonalizationWithUser: string = Translations_fi.RenewPersonalizationWithUser;\r\n\tstatic SavingUserParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingUserParameterWasNotSuccessfulErrorParameter;\r\n\tstatic AddSalaryRowToMultipleUserRecords: string = Translations_fi.AddSalaryRowToMultipleUserRecords;\r\n\tstatic AddingTaskHandlerWasNotSuccessfulErrorParameter: string = Translations_fi.AddingTaskHandlerWasNotSuccessfulErrorParameter;\r\n\tstatic RestoringTaskParameterFromTrashBinWasNotSuccessfulErrorParameter: string = Translations_fi.RestoringTaskParameterFromTrashBinWasNotSuccessfulErrorParameter;\r\n\tstatic MovingFolderDirectoryItemParameterToFolderParameterWasSuccessful: string = Translations_fi.MovingFolderDirectoryItemParameterToFolderParameterWasSuccessful;\r\n\tstatic VersionProperties: string = Translations_fi.VersionProperties;\r\n\tstatic LastName: string = Translations_fi.LastName;\r\n\tstatic DoYouReallyWantToRemoveRecordFurtherEducationGroupParameter: string = Translations_fi.DoYouReallyWantToRemoveRecordFurtherEducationGroupParameter;\r\n\tstatic FormLineBreak: string = Translations_fi.FormLineBreak;\r\n\tstatic FormTrue: string = Translations_fi.FormTrue;\r\n\tstatic AttachmentParameterNotFound: string = Translations_fi.AttachmentParameterNotFound;\r\n\tstatic UnlockingEventParameterWasNotSuccessful: string = Translations_fi.UnlockingEventParameterWasNotSuccessful;\r\n\tstatic AddUserGroupsParameterWasSuccessful: string = Translations_fi.AddUserGroupsParameterWasSuccessful;\r\n\tstatic EditInstantMessageChannel: string = Translations_fi.EditInstantMessageChannel;\r\n\tstatic UserCodeClaimNotFound: string = Translations_fi.UserCodeClaimNotFound;\r\n\tstatic WhistleBlowSeverityHigh: string = Translations_fi.WhistleBlowSeverityHigh;\r\n\tstatic MessageMustBeSavedBeforeAttachmentsCanBeAdded: string = Translations_fi.MessageMustBeSavedBeforeAttachmentsCanBeAdded;\r\n\tstatic ApproveEventHandlerConfirmation2: string = Translations_fi.ApproveEventHandlerConfirmation2;\r\n\tstatic SavingDirectoryItemPermissionsWasSuccessful: string = Translations_fi.SavingDirectoryItemPermissionsWasSuccessful;\r\n\tstatic WhistleBlowStatisticsInProgressRecords: string = Translations_fi.WhistleBlowStatisticsInProgressRecords;\r\n\tstatic SearchFurtherEducations: string = Translations_fi.SearchFurtherEducations;\r\n\tstatic MiddleName: string = Translations_fi.MiddleName;\r\n\tstatic DeletingPartnerParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingPartnerParameterWasNotSuccessfulErrorParameter;\r\n\tstatic SavingRecordFurtherEducationParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingRecordFurtherEducationParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic DoYouReallyWantToUnlockCalendarTask: string = Translations_fi.DoYouReallyWantToUnlockCalendarTask;\r\n\tstatic MoneyOut: string = Translations_fi.MoneyOut;\r\n\tstatic SavingUnitPermissionsWasNotSuccessfulErrorParameter: string = Translations_fi.SavingUnitPermissionsWasNotSuccessfulErrorParameter;\r\n\tstatic MovingTaskParameterToTrashBinWasSuccessful: string = Translations_fi.MovingTaskParameterToTrashBinWasSuccessful;\r\n\tstatic Paste: string = Translations_fi.Paste;\r\n\tstatic SavingTaskDataRowWasSuccessful: string = Translations_fi.SavingTaskDataRowWasSuccessful;\r\n\tstatic WhistleBlowSourceUnspecified: string = Translations_fi.WhistleBlowSourceUnspecified;\r\n\tstatic GetPhoto: string = Translations_fi.GetPhoto;\r\n\tstatic CreatingNotifications: string = Translations_fi.CreatingNotifications;\r\n\tstatic SavingUserGroupParameterWasSuccessful: string = Translations_fi.SavingUserGroupParameterWasSuccessful;\r\n\tstatic WhistleBlowDashboard: string = Translations_fi.WhistleBlowDashboard;\r\n\tstatic FormDropdowns: string = Translations_fi.FormDropdowns;\r\n\tstatic ChangePassword: string = Translations_fi.ChangePassword;\r\n\tstatic EventPartnerParameterNotFound: string = Translations_fi.EventPartnerParameterNotFound;\r\n\tstatic SelectDocumentTemplate: string = Translations_fi.SelectDocumentTemplate;\r\n\tstatic DoYouReallyWantToRemoveSelectedKeywords: string = Translations_fi.DoYouReallyWantToRemoveSelectedKeywords;\r\n\tstatic PrintOrientation: string = Translations_fi.PrintOrientation;\r\n\tstatic AddRecordUserAndUserAccount: string = Translations_fi.AddRecordUserAndUserAccount;\r\n\tstatic Source: string = Translations_fi.Source;\r\n\tstatic LoggedInUserCannotBeDeleted: string = Translations_fi.LoggedInUserCannotBeDeleted;\r\n\tstatic DeletingPartnersParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingPartnersParameterWasNotSuccessfulErrorParameter;\r\n\tstatic RemoveSharedDocumentTemplate: string = Translations_fi.RemoveSharedDocumentTemplate;\r\n\tstatic AddHandlers: string = Translations_fi.AddHandlers;\r\n\tstatic WhistleBlowInformantButtonHint: string = Translations_fi.WhistleBlowInformantButtonHint;\r\n\tstatic UnpublishingEditableDocumentParameterWasSuccessful: string = Translations_fi.UnpublishingEditableDocumentParameterWasSuccessful;\r\n\tstatic DoYouReallyWantToRemovePartnerParameter: string = Translations_fi.DoYouReallyWantToRemovePartnerParameter;\r\n\tstatic DeletingFileFiltersParameterWasSuccessful: string = Translations_fi.DeletingFileFiltersParameterWasSuccessful;\r\n\tstatic DeletingUsersParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingUsersParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic AddAttachementsToEvent: string = Translations_fi.AddAttachementsToEvent;\r\n\tstatic UserGroupCodeMustBeDefined: string = Translations_fi.UserGroupCodeMustBeDefined;\r\n\tstatic AddDefaultEventType: string = Translations_fi.AddDefaultEventType;\r\n\tstatic Last30Days: string = Translations_fi.Last30Days;\r\n\tstatic DoYouReallyWantToRemoveSelectedTaskStates: string = Translations_fi.DoYouReallyWantToRemoveSelectedTaskStates;\r\n\tstatic ArchivingRecordUserFamiliarizationsWasSuccessful: string = Translations_fi.ArchivingRecordUserFamiliarizationsWasSuccessful;\r\n\tstatic UnitParameterNotFound: string = Translations_fi.UnitParameterNotFound;\r\n\tstatic AdvancePaymentReportPath: string = Translations_fi.AdvancePaymentReportPath;\r\n\tstatic CalendarTaskRepetitionRepeatIntervalMonthlySuffix: string = Translations_fi.CalendarTaskRepetitionRepeatIntervalMonthlySuffix;\r\n\tstatic AddTransferredProperties: string = Translations_fi.AddTransferredProperties;\r\n\tstatic DeletingEventUrgencyClassesParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingEventUrgencyClassesParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic ChangingPasswordWasNotSuccessfulErrorParameter: string = Translations_fi.ChangingPasswordWasNotSuccessfulErrorParameter;\r\n\tstatic WhistleBlowChannelPageNameCodeIsAlreadyInUse: string = Translations_fi.WhistleBlowChannelPageNameCodeIsAlreadyInUse;\r\n\tstatic PasswordConfirmationDoesNotMatchPassword: string = Translations_fi.PasswordConfirmationDoesNotMatchPassword;\r\n\tstatic DeletingUserParametersWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingUserParametersWasNotSuccessfulErrorParameter;\r\n\tstatic DeletingInstantMessageWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingInstantMessageWasNotSuccessfulConcurrencyError;\r\n\tstatic AddedComment: string = Translations_fi.AddedComment;\r\n\tstatic ParameterResults: string = Translations_fi.ParameterResults;\r\n\tstatic UpdatingApplication: string = Translations_fi.UpdatingApplication;\r\n\tstatic EventPartners: string = Translations_fi.EventPartners;\r\n\tstatic Ends: string = Translations_fi.Ends;\r\n\tstatic CopyOrMoveFilesDocuments: string = Translations_fi.CopyOrMoveFilesDocuments;\r\n\tstatic PortalInUse: string = Translations_fi.PortalInUse;\r\n\tstatic PaymentTermInDays: string = Translations_fi.PaymentTermInDays;\r\n\tstatic CopyOrMoveFolder: string = Translations_fi.CopyOrMoveFolder;\r\n\tstatic BasicEducation: string = Translations_fi.BasicEducation;\r\n\tstatic SelectDocumentInListToSeeThePreview: string = Translations_fi.SelectDocumentInListToSeeThePreview;\r\n\tstatic DefaultLanguage: string = Translations_fi.DefaultLanguage;\r\n\tstatic EditDefaultTaskType: string = Translations_fi.EditDefaultTaskType;\r\n\tstatic DeletingCompanyGroupsParameterWasSuccessful: string = Translations_fi.DeletingCompanyGroupsParameterWasSuccessful;\r\n\tstatic SavingTaskParameterWasSuccessful: string = Translations_fi.SavingTaskParameterWasSuccessful;\r\n\tstatic SelectCustomer: string = Translations_fi.SelectCustomer;\r\n\tstatic SavingWhistleBlowChannelParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingWhistleBlowChannelParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic NotRepeated: string = Translations_fi.NotRepeated;\r\n\tstatic DeletingUserParametersWasSuccessful: string = Translations_fi.DeletingUserParametersWasSuccessful;\r\n\tstatic EditDefaultEventHandlersAndNotifiedPersons: string = Translations_fi.EditDefaultEventHandlersAndNotifiedPersons;\r\n\tstatic TaskHandlerParameterNotFound: string = Translations_fi.TaskHandlerParameterNotFound;\r\n\tstatic SavingUserParameterParameterWasSuccessful: string = Translations_fi.SavingUserParameterParameterWasSuccessful;\r\n\tstatic FilesParameterAreEmpty: string = Translations_fi.FilesParameterAreEmpty;\r\n\tstatic FolderNameIsTooLong: string = Translations_fi.FolderNameIsTooLong;\r\n\tstatic FileUploadWasSuccessful: string = Translations_fi.FileUploadWasSuccessful;\r\n\tstatic WaitingToBeApproved: string = Translations_fi.WaitingToBeApproved;\r\n\tstatic EditDefaultTaskState: string = Translations_fi.EditDefaultTaskState;\r\n\tstatic WhistleBlowState: string = Translations_fi.WhistleBlowState;\r\n\tstatic AddChildEventTypeC: string = Translations_fi.AddChildEventTypeC;\r\n\tstatic SelectReminder: string = Translations_fi.SelectReminder;\r\n\tstatic CanShareContentToCompanies: string = Translations_fi.CanShareContentToCompanies;\r\n\tstatic VersionParameterPublishedAsPdfFile: string = Translations_fi.VersionParameterPublishedAsPdfFile;\r\n\tstatic UserGroupModuleProperties: string = Translations_fi.UserGroupModuleProperties;\r\n\tstatic DeletingMessageParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingMessageParameterWasNotSuccessfulErrorParameter;\r\n\tstatic RemoveRecordUserAndUser: string = Translations_fi.RemoveRecordUserAndUser;\r\n\tstatic CloseSystem: string = Translations_fi.CloseSystem;\r\n\tstatic OldestMessage: string = Translations_fi.OldestMessage;\r\n\tstatic PositionErrorUnavailable: string = Translations_fi.PositionErrorUnavailable;\r\n\tstatic AddNotifiedPerson: string = Translations_fi.AddNotifiedPerson;\r\n\tstatic DeletingUserGroupsParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingUserGroupsParameterWasNotSuccessfulErrorParameter;\r\n\tstatic ExportToExcel: string = Translations_fi.ExportToExcel;\r\n\tstatic EmailSent: string = Translations_fi.EmailSent;\r\n\tstatic MaximumSizeOfDocumentThatCanBeAddedInBatchIsParameterMB: string = Translations_fi.MaximumSizeOfDocumentThatCanBeAddedInBatchIsParameterMB;\r\n\tstatic SavingReadReceiptWasSuccessful: string = Translations_fi.SavingReadReceiptWasSuccessful;\r\n\tstatic DeletingRecordFurtherEducationParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingRecordFurtherEducationParameterWasNotSuccessfulErrorParameter;\r\n\tstatic InstantMessageChannelArchivingTypeKeepMessages: string = Translations_fi.InstantMessageChannelArchivingTypeKeepMessages;\r\n\tstatic WhistleBlowStatisticsNewRecords: string = Translations_fi.WhistleBlowStatisticsNewRecords;\r\n\tstatic FurtherEducationParameterNotFound: string = Translations_fi.FurtherEducationParameterNotFound;\r\n\tstatic FileRemovalWasSuccessful: string = Translations_fi.FileRemovalWasSuccessful;\r\n\tstatic ApprovalComment: string = Translations_fi.ApprovalComment;\r\n\tstatic ChangeSystemLanguageToSwedish: string = Translations_fi.ChangeSystemLanguageToSwedish;\r\n\tstatic MinimumPasswordLengthMustBeAtLeastParameterCharacters: string = Translations_fi.MinimumPasswordLengthMustBeAtLeastParameterCharacters;\r\n\tstatic EventTypeCodeIsAlreadyInUse: string = Translations_fi.EventTypeCodeIsAlreadyInUse;\r\n\tstatic SavingWhistleBlowWasNotSuccessfulErrorParameter: string = Translations_fi.SavingWhistleBlowWasNotSuccessfulErrorParameter;\r\n\tstatic WhistleBlowReportHasBeenSavedBottomText: string = Translations_fi.WhistleBlowReportHasBeenSavedBottomText;\r\n\tstatic AdministratorPasswordMustBeDefined: string = Translations_fi.AdministratorPasswordMustBeDefined;\r\n\tstatic MessageTypeClass: string = Translations_fi.MessageTypeClass;\r\n\tstatic Returned: string = Translations_fi.Returned;\r\n\tstatic AccessRightWriteWhistleBlow: string = Translations_fi.AccessRightWriteWhistleBlow;\r\n\tstatic PublishDate: string = Translations_fi.PublishDate;\r\n\tstatic FormRowColumn: string = Translations_fi.FormRowColumn;\r\n\tstatic Functions: string = Translations_fi.Functions;\r\n\tstatic WhistleBlowInformantMessageConfirmation: string = Translations_fi.WhistleBlowInformantMessageConfirmation;\r\n\tstatic WhistleBlowUrlInfo: string = Translations_fi.WhistleBlowUrlInfo;\r\n\tstatic DocumentNameConstainsIllegalCharacters: string = Translations_fi.DocumentNameConstainsIllegalCharacters;\r\n\tstatic RemoveDefaultBasicEducation: string = Translations_fi.RemoveDefaultBasicEducation;\r\n\tstatic EventTypeParameterIsInUseInParameterEventsAndCannotBeDeleted: string = Translations_fi.EventTypeParameterIsInUseInParameterEventsAndCannotBeDeleted;\r\n\tstatic FormMinimumValue: string = Translations_fi.FormMinimumValue;\r\n\tstatic IdCard: string = Translations_fi.IdCard;\r\n\tstatic SavingEventUrgencyClassParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingEventUrgencyClassParameterWasNotSuccessfulErrorParameter;\r\n\tstatic SavingDefaultHandlersWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingDefaultHandlersWasNotSuccessfulConcurrencyError;\r\n\tstatic AdditionalPermissionAInstantMessages: string = Translations_fi.AdditionalPermissionAInstantMessages;\r\n\tstatic AddEmployments: string = Translations_fi.AddEmployments;\r\n\tstatic DeletingRecordUserParameterWasSuccessful: string = Translations_fi.DeletingRecordUserParameterWasSuccessful;\r\n\tstatic AddRecordUserWithoutUserAccount: string = Translations_fi.AddRecordUserWithoutUserAccount;\r\n\tstatic AddInstantMessageUserParameterWasSuccessful: string = Translations_fi.AddInstantMessageUserParameterWasSuccessful;\r\n\tstatic AddTaskPriority: string = Translations_fi.AddTaskPriority;\r\n\tstatic RemovingCalendarTaskHandlerWasNotSuccessfulErrorParameter: string = Translations_fi.RemovingCalendarTaskHandlerWasNotSuccessfulErrorParameter;\r\n\tstatic Total: string = Translations_fi.Total;\r\n\tstatic DefaultEventHandlerParameterNotFound: string = Translations_fi.DefaultEventHandlerParameterNotFound;\r\n\tstatic AddEventType: string = Translations_fi.AddEventType;\r\n\tstatic DeletingFileParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingFileParameterWasNotSuccessfulErrorParameter;\r\n\tstatic CompanyCodeContainsIllegalCharacters: string = Translations_fi.CompanyCodeContainsIllegalCharacters;\r\n\tstatic SavingWhistleBlowChannelParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingWhistleBlowChannelParameterWasNotSuccessfulErrorParameter;\r\n\tstatic ScopeUnit: string = Translations_fi.ScopeUnit;\r\n\tstatic EditEvent: string = Translations_fi.EditEvent;\r\n\tstatic DoYouReallyWantToRemoveUnitParameter: string = Translations_fi.DoYouReallyWantToRemoveUnitParameter;\r\n\tstatic UserRecordStatisticsExpiringInSixMonthsQualifications: string = Translations_fi.UserRecordStatisticsExpiringInSixMonthsQualifications;\r\n\tstatic CalendarTaskChangeSelectedDateToSeeTheTasks: string = Translations_fi.CalendarTaskChangeSelectedDateToSeeTheTasks;\r\n\tstatic Addition: string = Translations_fi.Addition;\r\n\tstatic AccessRightReadRecords: string = Translations_fi.AccessRightReadRecords;\r\n\tstatic AddingAttachmentsParameterWasSuccessful: string = Translations_fi.AddingAttachmentsParameterWasSuccessful;\r\n\tstatic Sending: string = Translations_fi.Sending;\r\n\tstatic EventTypeBs: string = Translations_fi.EventTypeBs;\r\n\tstatic AttachmentImageSize: string = Translations_fi.AttachmentImageSize;\r\n\tstatic UserEventsNotApproved: string = Translations_fi.UserEventsNotApproved;\r\n\tstatic DeletingRecordUserEmploymentParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingRecordUserEmploymentParameterWasNotSuccessfulErrorParameter;\r\n\tstatic DoYouReallyWantToUnlockTask: string = Translations_fi.DoYouReallyWantToUnlockTask;\r\n\tstatic FormFontSize: string = Translations_fi.FormFontSize;\r\n\tstatic NewTransferredPropertyMustBeSavedBeforeAttachmentsCanBeAdded: string = Translations_fi.NewTransferredPropertyMustBeSavedBeforeAttachmentsCanBeAdded;\r\n\tstatic Name: string = Translations_fi.Name;\r\n\tstatic WhistleBlowSeverityCritical: string = Translations_fi.WhistleBlowSeverityCritical;\r\n\tstatic CreateReport: string = Translations_fi.CreateReport;\r\n\tstatic FormWidth: string = Translations_fi.FormWidth;\r\n\tstatic WhistleBlowMessageHasNotBeenSentCloseConfirmation: string = Translations_fi.WhistleBlowMessageHasNotBeenSentCloseConfirmation;\r\n\tstatic CopyUnitDefaultHandlersAndNotifiedPersonsToAllSameLevelUnits: string = Translations_fi.CopyUnitDefaultHandlersAndNotifiedPersonsToAllSameLevelUnits;\r\n\tstatic TaskStateParameterNotFound: string = Translations_fi.TaskStateParameterNotFound;\r\n\tstatic DirectCosts: string = Translations_fi.DirectCosts;\r\n\tstatic DeletingRecordFurtherEducationGroupParameterWasSuccessful: string = Translations_fi.DeletingRecordFurtherEducationGroupParameterWasSuccessful;\r\n\tstatic Calendar: string = Translations_fi.Calendar;\r\n\tstatic ANew: string = Translations_fi.ANew;\r\n\tstatic DeletingKeywordsParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingKeywordsParameterWasNotSuccessfulErrorParameter;\r\n\tstatic EmailAddressDoesNotExist: string = Translations_fi.EmailAddressDoesNotExist;\r\n\tstatic CurrentCalendarYear: string = Translations_fi.CurrentCalendarYear;\r\n\tstatic EditLogisticVoucherTransportCompany: string = Translations_fi.EditLogisticVoucherTransportCompany;\r\n\tstatic Approved: string = Translations_fi.Approved;\r\n\tstatic SSRSRefreshFinishedInParameterSeconds: string = Translations_fi.SSRSRefreshFinishedInParameterSeconds;\r\n\tstatic RecordFurtherEducationGroupParameterNotFound: string = Translations_fi.RecordFurtherEducationGroupParameterNotFound;\r\n\tstatic ActiveTasks: string = Translations_fi.ActiveTasks;\r\n\tstatic DraftVersion: string = Translations_fi.DraftVersion;\r\n\tstatic FormTextArea: string = Translations_fi.FormTextArea;\r\n\tstatic RequireReadReceipt: string = Translations_fi.RequireReadReceipt;\r\n\tstatic WhistleBlow: string = Translations_fi.WhistleBlow;\r\n\tstatic PreviewIsNotSupportedForThisFileType: string = Translations_fi.PreviewIsNotSupportedForThisFileType;\r\n\tstatic TransferToChannel: string = Translations_fi.TransferToChannel;\r\n\tstatic DoYouReallyWantToRemoveRecordUserTransferredPropertyParameter: string = Translations_fi.DoYouReallyWantToRemoveRecordUserTransferredPropertyParameter;\r\n\tstatic GroupByQuarter: string = Translations_fi.GroupByQuarter;\r\n\tstatic CompanyLogo: string = Translations_fi.CompanyLogo;\r\n\tstatic WhistleBlowCategoryCodeIsAlreadyInUse: string = Translations_fi.WhistleBlowCategoryCodeIsAlreadyInUse;\r\n\tstatic InvalidInvitationParameter: string = Translations_fi.InvalidInvitationParameter;\r\n\tstatic FileFilterParameterNotFound: string = Translations_fi.FileFilterParameterNotFound;\r\n\tstatic PanelSize4: string = Translations_fi.PanelSize4;\r\n\tstatic DoYouReallyWantToRemoveDefaultEventHandlerParameter: string = Translations_fi.DoYouReallyWantToRemoveDefaultEventHandlerParameter;\r\n\tstatic RestoringInstantMessageWasNotSuccessfulErrorParameter: string = Translations_fi.RestoringInstantMessageWasNotSuccessfulErrorParameter;\r\n\tstatic LogOut: string = Translations_fi.LogOut;\r\n\tstatic WorkShiftType: string = Translations_fi.WorkShiftType;\r\n\tstatic SavingUserParametersWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingUserParametersWasNotSuccessfulConcurrencyError;\r\n\tstatic ChangesMaxAmount: string = Translations_fi.ChangesMaxAmount;\r\n\tstatic ValidPasswordMustBeDefined: string = Translations_fi.ValidPasswordMustBeDefined;\r\n\tstatic AllPartners: string = Translations_fi.AllPartners;\r\n\tstatic EditEventTypes: string = Translations_fi.EditEventTypes;\r\n\tstatic ValidityEndDateExpirationTime: string = Translations_fi.ValidityEndDateExpirationTime;\r\n\tstatic DeletingTaskStatesParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingTaskStatesParameterWasNotSuccessfulErrorParameter;\r\n\tstatic Settings: string = Translations_fi.Settings;\r\n\tstatic TaskTypesMustBeDefinedBeforeAddingTasks: string = Translations_fi.TaskTypesMustBeDefinedBeforeAddingTasks;\r\n\tstatic DeletingCalendarTaskCategoryParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingCalendarTaskCategoryParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic SavingInstantMessageChannelParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingInstantMessageChannelParameterWasNotSuccessfulErrorParameter;\r\n\tstatic ValidityStartDate: string = Translations_fi.ValidityStartDate;\r\n\tstatic AllCompanies: string = Translations_fi.AllCompanies;\r\n\tstatic Scope: string = Translations_fi.Scope;\r\n\tstatic RenamingFolderParameterWasNotSuccessfulErrorParameter: string = Translations_fi.RenamingFolderParameterWasNotSuccessfulErrorParameter;\r\n\tstatic DoYouReallyWantToRemoveEditableDocumentParameter: string = Translations_fi.DoYouReallyWantToRemoveEditableDocumentParameter;\r\n\tstatic DeletingWhistleBlowParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingWhistleBlowParameterWasNotSuccessfulErrorParameter;\r\n\tstatic DoYouReallyWantToRemoveReportParameter: string = Translations_fi.DoYouReallyWantToRemoveReportParameter;\r\n\tstatic SaveReport: string = Translations_fi.SaveReport;\r\n\tstatic RecordBasicEducationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted: string = Translations_fi.RecordBasicEducationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted;\r\n\tstatic Rejected: string = Translations_fi.Rejected;\r\n\tstatic AddFurtherEducationToMultipleUserRecords: string = Translations_fi.AddFurtherEducationToMultipleUserRecords;\r\n\tstatic PrintTextPrinted: string = Translations_fi.PrintTextPrinted;\r\n\tstatic FurtherEducationGroup: string = Translations_fi.FurtherEducationGroup;\r\n\tstatic WhistleBlowPasswordConfirmed: string = Translations_fi.WhistleBlowPasswordConfirmed;\r\n\tstatic NewPassword: string = Translations_fi.NewPassword;\r\n\tstatic DocumentTemplate: string = Translations_fi.DocumentTemplate;\r\n\tstatic ToDo: string = Translations_fi.ToDo;\r\n\tstatic DoYouReallyWantToRemoveSelectedDocumentTemplates: string = Translations_fi.DoYouReallyWantToRemoveSelectedDocumentTemplates;\r\n\tstatic FormSortField: string = Translations_fi.FormSortField;\r\n\tstatic DeletingInstantMessageUserParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingInstantMessageUserParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic EditLogisticVoucherCustomerPaymentSetting: string = Translations_fi.EditLogisticVoucherCustomerPaymentSetting;\r\n\tstatic FormMobile: string = Translations_fi.FormMobile;\r\n\tstatic PermissionDeniedForOperation: string = Translations_fi.PermissionDeniedForOperation;\r\n\tstatic NotApproved: string = Translations_fi.NotApproved;\r\n\tstatic RequestPasswordChangeMessage2: string = Translations_fi.RequestPasswordChangeMessage2;\r\n\tstatic NoPublishedMessages: string = Translations_fi.NoPublishedMessages;\r\n\tstatic FormulaMax: string = Translations_fi.FormulaMax;\r\n\tstatic SavingEventSettingsWasSuccessful: string = Translations_fi.SavingEventSettingsWasSuccessful;\r\n\tstatic DeletingDirectoryItemDocumentParameterWasSuccessful: string = Translations_fi.DeletingDirectoryItemDocumentParameterWasSuccessful;\r\n\tstatic DisableExternalIntraSystemConfirmation: string = Translations_fi.DisableExternalIntraSystemConfirmation;\r\n\tstatic GroupByYear: string = Translations_fi.GroupByYear;\r\n\tstatic ChangingPasswordWasSuccessful: string = Translations_fi.ChangingPasswordWasSuccessful;\r\n\tstatic OldestModification: string = Translations_fi.OldestModification;\r\n\tstatic DeletingRecordFurtherEducationsParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingRecordFurtherEducationsParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic FormulaSubtraction: string = Translations_fi.FormulaSubtraction;\r\n\tstatic MinimumPasswordLength: string = Translations_fi.MinimumPasswordLength;\r\n\tstatic DeletingCalendarTaskCategoriesParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingCalendarTaskCategoriesParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic AddQualificationToMultipleUserRecords: string = Translations_fi.AddQualificationToMultipleUserRecords;\r\n\tstatic FormRemoveColumnFromRowConfirmation: string = Translations_fi.FormRemoveColumnFromRowConfirmation;\r\n\tstatic AddFurtherEducationGroup: string = Translations_fi.AddFurtherEducationGroup;\r\n\tstatic ContactPerson: string = Translations_fi.ContactPerson;\r\n\tstatic FormDropdown: string = Translations_fi.FormDropdown;\r\n\tstatic SelectForm: string = Translations_fi.SelectForm;\r\n\tstatic ExpiringIn90Days: string = Translations_fi.ExpiringIn90Days;\r\n\tstatic WhistleBlowParameterNotFound: string = Translations_fi.WhistleBlowParameterNotFound;\r\n\tstatic DeletingAttachmentsParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingAttachmentsParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic CheckingExistanceOfFileParameterWasNotSuccessfulErrorParameter: string = Translations_fi.CheckingExistanceOfFileParameterWasNotSuccessfulErrorParameter;\r\n\tstatic UnitCodeIsAlreadyInUse: string = Translations_fi.UnitCodeIsAlreadyInUse;\r\n\tstatic DeletingInstantMessageWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingInstantMessageWasNotSuccessfulErrorParameter;\r\n\tstatic FormSizeSmall: string = Translations_fi.FormSizeSmall;\r\n\tstatic WhistleBlowChannel: string = Translations_fi.WhistleBlowChannel;\r\n\tstatic UpdateUserGroupParameterExternalSystemsWasSuccessful: string = Translations_fi.UpdateUserGroupParameterExternalSystemsWasSuccessful;\r\n\tstatic WhistleBlowEventTypeMessageAdded: string = Translations_fi.WhistleBlowEventTypeMessageAdded;\r\n\tstatic Modification: string = Translations_fi.Modification;\r\n\tstatic CreatingUserTokenWasNotSuccessfulErrorParameter: string = Translations_fi.CreatingUserTokenWasNotSuccessfulErrorParameter;\r\n\tstatic AddWhistleBlowCategory: string = Translations_fi.AddWhistleBlowCategory;\r\n\tstatic LanguageEnglish: string = Translations_fi.LanguageEnglish;\r\n\tstatic SavingFileFilterParameterWasSuccessful: string = Translations_fi.SavingFileFilterParameterWasSuccessful;\r\n\tstatic Invited: string = Translations_fi.Invited;\r\n\tstatic NoneSelected: string = Translations_fi.NoneSelected;\r\n\tstatic GroupByUnit: string = Translations_fi.GroupByUnit;\r\n\tstatic RemoveTaskType: string = Translations_fi.RemoveTaskType;\r\n\tstatic DownloadFileTemplate: string = Translations_fi.DownloadFileTemplate;\r\n\tstatic AddPartnerParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.AddPartnerParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic EditCompanyTaskType: string = Translations_fi.EditCompanyTaskType;\r\n\tstatic ReportGenerationFailed: string = Translations_fi.ReportGenerationFailed;\r\n\tstatic RemoveFileFilter: string = Translations_fi.RemoveFileFilter;\r\n\tstatic BrowserInfo: string = Translations_fi.BrowserInfo;\r\n\tstatic DeletingMessageTypeParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingMessageTypeParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic DoYouReallyWantToRemoveEventHandlerParameter: string = Translations_fi.DoYouReallyWantToRemoveEventHandlerParameter;\r\n\tstatic BusinessIdentityCode: string = Translations_fi.BusinessIdentityCode;\r\n\tstatic FormRelativeDefinition: string = Translations_fi.FormRelativeDefinition;\r\n\tstatic Education: string = Translations_fi.Education;\r\n\tstatic EditLogisticVoucherCustomer: string = Translations_fi.EditLogisticVoucherCustomer;\r\n\tstatic Date: string = Translations_fi.Date;\r\n\tstatic DriversLicenseType: string = Translations_fi.DriversLicenseType;\r\n\tstatic CalendarTaskRepetitionRepeatIntervalMonthPrefix: string = Translations_fi.CalendarTaskRepetitionRepeatIntervalMonthPrefix;\r\n\tstatic ModifyDate: string = Translations_fi.ModifyDate;\r\n\tstatic LastYear: string = Translations_fi.LastYear;\r\n\tstatic EditableDocumentPublishConfirmation: string = Translations_fi.EditableDocumentPublishConfirmation;\r\n\tstatic BirthDate: string = Translations_fi.BirthDate;\r\n\tstatic EditUser: string = Translations_fi.EditUser;\r\n\tstatic EventMessageConfirmation: string = Translations_fi.EventMessageConfirmation;\r\n\tstatic CompanyInstantMessageChannels: string = Translations_fi.CompanyInstantMessageChannels;\r\n\tstatic OthersLastModifications: string = Translations_fi.OthersLastModifications;\r\n\tstatic SavingTaskTypeParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingTaskTypeParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic ChangeToReadMode: string = Translations_fi.ChangeToReadMode;\r\n\tstatic AddToFavorites: string = Translations_fi.AddToFavorites;\r\n\tstatic EventTypeTitle: string = Translations_fi.EventTypeTitle;\r\n\tstatic AddUserGroup: string = Translations_fi.AddUserGroup;\r\n\tstatic Ascending: string = Translations_fi.Ascending;\r\n\tstatic AddEventMessage: string = Translations_fi.AddEventMessage;\r\n\tstatic DeletingRecordUserParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingRecordUserParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic DeletingMessageTypesParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingMessageTypesParameterWasNotSuccessfulErrorParameter;\r\n\tstatic JobLineParameterNotFound: string = Translations_fi.JobLineParameterNotFound;\r\n\tstatic SavingUserParameterWasSuccessful: string = Translations_fi.SavingUserParameterWasSuccessful;\r\n\tstatic SelectUserGroupOrUser: string = Translations_fi.SelectUserGroupOrUser;\r\n\tstatic MessageTitleMustBeDefined: string = Translations_fi.MessageTitleMustBeDefined;\r\n\tstatic Collapse: string = Translations_fi.Collapse;\r\n\tstatic NewRecordUserMustBeSavedBeforeRowsCanBeAdded: string = Translations_fi.NewRecordUserMustBeSavedBeforeRowsCanBeAdded;\r\n\tstatic RecordUserFurtherEducationParameterNotFound: string = Translations_fi.RecordUserFurtherEducationParameterNotFound;\r\n\tstatic AnyTime: string = Translations_fi.AnyTime;\r\n\tstatic DeletingTaskStateParameterWasSuccessful: string = Translations_fi.DeletingTaskStateParameterWasSuccessful;\r\n\tstatic MoveUp: string = Translations_fi.MoveUp;\r\n\tstatic InvalidValueInArgumentParameter: string = Translations_fi.InvalidValueInArgumentParameter;\r\n\tstatic UpdateCompanyExternalSystemsWasNotSuccessfulConcurrencyError: string = Translations_fi.UpdateCompanyExternalSystemsWasNotSuccessfulConcurrencyError;\r\n\tstatic Filters: string = Translations_fi.Filters;\r\n\tstatic CopyingFilesAndDocumentsToFolderParameterWasSuccessful: string = Translations_fi.CopyingFilesAndDocumentsToFolderParameterWasSuccessful;\r\n\tstatic SavingEventUrgencyClassParameterWasSuccessful: string = Translations_fi.SavingEventUrgencyClassParameterWasSuccessful;\r\n\tstatic AccessRightRead: string = Translations_fi.AccessRightRead;\r\n\tstatic PostalAddress: string = Translations_fi.PostalAddress;\r\n\tstatic OtherCompanies: string = Translations_fi.OtherCompanies;\r\n\tstatic TrainingEndDateCannotPrecedeTrainingStartDate: string = Translations_fi.TrainingEndDateCannotPrecedeTrainingStartDate;\r\n\tstatic WhistleBlowEventTypeCreated: string = Translations_fi.WhistleBlowEventTypeCreated;\r\n\tstatic RemoveDefaultEventHandler: string = Translations_fi.RemoveDefaultEventHandler;\r\n\tstatic EventTypeCs: string = Translations_fi.EventTypeCs;\r\n\tstatic NewPasswordMustBeDefined: string = Translations_fi.NewPasswordMustBeDefined;\r\n\tstatic LockedTaskParameterCannotBeDeleted: string = Translations_fi.LockedTaskParameterCannotBeDeleted;\r\n\tstatic ApplicationName: string = Translations_fi.ApplicationName;\r\n\tstatic SavingEditableDocumentParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingEditableDocumentParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic ImportUsers: string = Translations_fi.ImportUsers;\r\n\tstatic LockedEventParameterCannotBeSaved: string = Translations_fi.LockedEventParameterCannotBeSaved;\r\n\tstatic DoYouReallyWantToRemoveRecordFurtherEducationParameter: string = Translations_fi.DoYouReallyWantToRemoveRecordFurtherEducationParameter;\r\n\tstatic DeletingWhistleBlowChannelAdminParameterWasSuccessful: string = Translations_fi.DeletingWhistleBlowChannelAdminParameterWasSuccessful;\r\n\tstatic DeletingFileFilterParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingFileFilterParameterWasNotSuccessfulErrorParameter;\r\n\tstatic Previous: string = Translations_fi.Previous;\r\n\tstatic DeletingInstantMessageUsersParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingInstantMessageUsersParameterWasNotSuccessfulErrorParameter;\r\n\tstatic ModifyDateStartDate: string = Translations_fi.ModifyDateStartDate;\r\n\tstatic SavingCalendarTaskCategoryParameterWasSuccessful: string = Translations_fi.SavingCalendarTaskCategoryParameterWasSuccessful;\r\n\tstatic EmailAddressParameterIsInvalid: string = Translations_fi.EmailAddressParameterIsInvalid;\r\n\tstatic EditKeyword: string = Translations_fi.EditKeyword;\r\n\tstatic DeletingEventTypeCParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingEventTypeCParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic SavingWhistleBlowCategoryParameterWasSuccessful: string = Translations_fi.SavingWhistleBlowCategoryParameterWasSuccessful;\r\n\tstatic Required: string = Translations_fi.Required;\r\n\tstatic SavingMessageSendPushParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingMessageSendPushParameterWasNotSuccessfulErrorParameter;\r\n\tstatic CourseCredit: string = Translations_fi.CourseCredit;\r\n\tstatic RemoveUserGroup: string = Translations_fi.RemoveUserGroup;\r\n\tstatic DeletingWhistleBlowCategoriesParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingWhistleBlowCategoriesParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic CalendarTaskRepetitionEndDateSuffix: string = Translations_fi.CalendarTaskRepetitionEndDateSuffix;\r\n\tstatic JobLineDataIsEmpty: string = Translations_fi.JobLineDataIsEmpty;\r\n\tstatic MessageUnit: string = Translations_fi.MessageUnit;\r\n\tstatic SharedReportCompany: string = Translations_fi.SharedReportCompany;\r\n\tstatic Document: string = Translations_fi.Document;\r\n\tstatic FurtherEducation: string = Translations_fi.FurtherEducation;\r\n\tstatic SendingPusNotificationsWasNotSuccessfulErrorParameter: string = Translations_fi.SendingPusNotificationsWasNotSuccessfulErrorParameter;\r\n\tstatic CreatingPrint: string = Translations_fi.CreatingPrint;\r\n\tstatic MessageVisibilityPeriodNotStarted: string = Translations_fi.MessageVisibilityPeriodNotStarted;\r\n\tstatic InstantMessageUserInvitationAcceptTypeAutoAcceptInvitation: string = Translations_fi.InstantMessageUserInvitationAcceptTypeAutoAcceptInvitation;\r\n\tstatic WhistleBlowReport: string = Translations_fi.WhistleBlowReport;\r\n\tstatic CopyingFilesAndDocumentsToFolderParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.CopyingFilesAndDocumentsToFolderParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic Administrator: string = Translations_fi.Administrator;\r\n\tstatic RemoveUserAndRecordUserArchive: string = Translations_fi.RemoveUserAndRecordUserArchive;\r\n\tstatic InstantMessagePartners: string = Translations_fi.InstantMessagePartners;\r\n\tstatic TaskPriority: string = Translations_fi.TaskPriority;\r\n\tstatic AddingRecordUserSalaryRowsWasSuccessful: string = Translations_fi.AddingRecordUserSalaryRowsWasSuccessful;\r\n\tstatic ChangeSystemLanguageToEnglish: string = Translations_fi.ChangeSystemLanguageToEnglish;\r\n\tstatic RemovingEventHandlerWasNotSuccessfulErrorParameter: string = Translations_fi.RemovingEventHandlerWasNotSuccessfulErrorParameter;\r\n\tstatic Partner: string = Translations_fi.Partner;\r\n\tstatic DoYouReallyWantToRemoveMessageParameter: string = Translations_fi.DoYouReallyWantToRemoveMessageParameter;\r\n\tstatic RemoveTarget: string = Translations_fi.RemoveTarget;\r\n\tstatic AddCommentsToEvent: string = Translations_fi.AddCommentsToEvent;\r\n\tstatic Companies: string = Translations_fi.Companies;\r\n\tstatic FormTextAlignmentRight: string = Translations_fi.FormTextAlignmentRight;\r\n\tstatic PanelSize3: string = Translations_fi.PanelSize3;\r\n\tstatic SaveAndPublish: string = Translations_fi.SaveAndPublish;\r\n\tstatic CalendarTasks: string = Translations_fi.CalendarTasks;\r\n\tstatic DeletingRecordFamiliarizationsParameterWasSuccessful: string = Translations_fi.DeletingRecordFamiliarizationsParameterWasSuccessful;\r\n\tstatic HoursPerTrainingDay: string = Translations_fi.HoursPerTrainingDay;\r\n\tstatic PasswordMustBeDefined: string = Translations_fi.PasswordMustBeDefined;\r\n\tstatic RemoveEventTypeC: string = Translations_fi.RemoveEventTypeC;\r\n\tstatic ExitingInstantMessageChannelWasNotSuccessfulErrorParameter: string = Translations_fi.ExitingInstantMessageChannelWasNotSuccessfulErrorParameter;\r\n\tstatic ExitInstantMessageChannel: string = Translations_fi.ExitInstantMessageChannel;\r\n\tstatic SavePrint: string = Translations_fi.SavePrint;\r\n\tstatic AddLogisticVoucherTransportCompany: string = Translations_fi.AddLogisticVoucherTransportCompany;\r\n\tstatic DefineRecordUserFurtherEducation: string = Translations_fi.DefineRecordUserFurtherEducation;\r\n\tstatic EventPartnerIsAlreadyInDefined: string = Translations_fi.EventPartnerIsAlreadyInDefined;\r\n\tstatic BasicEducationsMustBeDefinedBeforeAddingRecordUsers: string = Translations_fi.BasicEducationsMustBeDefinedBeforeAddingRecordUsers;\r\n\tstatic FormulaRemainder: string = Translations_fi.FormulaRemainder;\r\n\tstatic SavingEventTypeBParameterWasSuccessful: string = Translations_fi.SavingEventTypeBParameterWasSuccessful;\r\n\tstatic EventsDashboard: string = Translations_fi.EventsDashboard;\r\n\tstatic UserAccountConnected: string = Translations_fi.UserAccountConnected;\r\n\tstatic DeletingDirectoryItemFolderParameterWasSuccessful: string = Translations_fi.DeletingDirectoryItemFolderParameterWasSuccessful;\r\n\tstatic Card: string = Translations_fi.Card;\r\n\tstatic SavingRecordFamiliarizationParameterWasSuccessful: string = Translations_fi.SavingRecordFamiliarizationParameterWasSuccessful;\r\n\tstatic SelectState: string = Translations_fi.SelectState;\r\n\tstatic Qualification: string = Translations_fi.Qualification;\r\n\tstatic GroupByPerson: string = Translations_fi.GroupByPerson;\r\n\tstatic DeletingWhistleBlowCategoryParameterWasSuccessful: string = Translations_fi.DeletingWhistleBlowCategoryParameterWasSuccessful;\r\n\tstatic AddFurtherEducation: string = Translations_fi.AddFurtherEducation;\r\n\tstatic UnitNameMustBeDefined: string = Translations_fi.UnitNameMustBeDefined;\r\n\tstatic NewFurtherEducationMustBeSavedBeforeAttachmentsCanBeAdded: string = Translations_fi.NewFurtherEducationMustBeSavedBeforeAttachmentsCanBeAdded;\r\n\tstatic EventHandlersExcelTitle: string = Translations_fi.EventHandlersExcelTitle;\r\n\tstatic ActiveState: string = Translations_fi.ActiveState;\r\n\tstatic UpdateUserParameterExternalSystemsWasNotSuccessfulConcurrencyError: string = Translations_fi.UpdateUserParameterExternalSystemsWasNotSuccessfulConcurrencyError;\r\n\tstatic AddEditableDocument: string = Translations_fi.AddEditableDocument;\r\n\tstatic SharedReport: string = Translations_fi.SharedReport;\r\n\tstatic NewRecordUserMustBeSavedBeforeTransferredPropertiesCanBeAdded: string = Translations_fi.NewRecordUserMustBeSavedBeforeTransferredPropertiesCanBeAdded;\r\n\tstatic SavingDirectoryItemFolderParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingDirectoryItemFolderParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic AccessRightWriteEvents: string = Translations_fi.AccessRightWriteEvents;\r\n\tstatic PageBreakBetweenGroups: string = Translations_fi.PageBreakBetweenGroups;\r\n\tstatic SavingRecordFurtherEducationParameterWasSuccessful: string = Translations_fi.SavingRecordFurtherEducationParameterWasSuccessful;\r\n\tstatic DeletingMessageTypesParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingMessageTypesParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic DocumentModified: string = Translations_fi.DocumentModified;\r\n\tstatic FamiliarizationTrainer: string = Translations_fi.FamiliarizationTrainer;\r\n\tstatic CompanyCodeClaimNotFound: string = Translations_fi.CompanyCodeClaimNotFound;\r\n\tstatic RecordFamiliarizationCodeIsAlreadyInUse: string = Translations_fi.RecordFamiliarizationCodeIsAlreadyInUse;\r\n\tstatic AddLogisticVoucherCustomer: string = Translations_fi.AddLogisticVoucherCustomer;\r\n\tstatic RecordBasicEducationParameterNotFound: string = Translations_fi.RecordBasicEducationParameterNotFound;\r\n\tstatic DefaultSettings: string = Translations_fi.DefaultSettings;\r\n\tstatic InvalidRequest: string = Translations_fi.InvalidRequest;\r\n\tstatic CompanyToken: string = Translations_fi.CompanyToken;\r\n\tstatic InstantMessageParameterNotFound: string = Translations_fi.InstantMessageParameterNotFound;\r\n\tstatic SomeInstantMessageUsersHaveReadMessage: string = Translations_fi.SomeInstantMessageUsersHaveReadMessage;\r\n\tstatic CompanyCodeIsAlreadyInUse: string = Translations_fi.CompanyCodeIsAlreadyInUse;\r\n\tstatic DeletingEventPartnerParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingEventPartnerParameterWasNotSuccessfulErrorParameter;\r\n\tstatic ShowSchema: string = Translations_fi.ShowSchema;\r\n\tstatic SharedDocumentTemplate: string = Translations_fi.SharedDocumentTemplate;\r\n\tstatic CalendarTaskOpenOccurrence: string = Translations_fi.CalendarTaskOpenOccurrence;\r\n\tstatic NameIsAlreadyInUse: string = Translations_fi.NameIsAlreadyInUse;\r\n\tstatic SavingEditableDocumentParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingEditableDocumentParameterWasNotSuccessfulErrorParameter;\r\n\tstatic PreviousCalendarWeek: string = Translations_fi.PreviousCalendarWeek;\r\n\tstatic DocumentEndDate: string = Translations_fi.DocumentEndDate;\r\n\tstatic EnableExternalIntraSystemConfirmation: string = Translations_fi.EnableExternalIntraSystemConfirmation;\r\n\tstatic DocumentNameParameterConstainsIllegalCharacters: string = Translations_fi.DocumentNameParameterConstainsIllegalCharacters;\r\n\tstatic Unlock: string = Translations_fi.Unlock;\r\n\tstatic ActiveUserTasks: string = Translations_fi.ActiveUserTasks;\r\n\tstatic CalendarTaskRepetitionRepeatIntervalMonthSuffix: string = Translations_fi.CalendarTaskRepetitionRepeatIntervalMonthSuffix;\r\n\tstatic WhistleBlowStatisticsNonAnonymousRecords: string = Translations_fi.WhistleBlowStatisticsNonAnonymousRecords;\r\n\tstatic DefaultFamiliarizations: string = Translations_fi.DefaultFamiliarizations;\r\n\tstatic FolderNameMustBeDefined: string = Translations_fi.FolderNameMustBeDefined;\r\n\tstatic WhistleBlowEventTypeAttachmentsRemoved: string = Translations_fi.WhistleBlowEventTypeAttachmentsRemoved;\r\n\tstatic RemovingWhistleBlowHandlerWasNotSuccessfulErrorParameter: string = Translations_fi.RemovingWhistleBlowHandlerWasNotSuccessfulErrorParameter;\r\n\tstatic PermissionsForSection: string = Translations_fi.PermissionsForSection;\r\n\tstatic AdditionalPermissionAEvents: string = Translations_fi.AdditionalPermissionAEvents;\r\n\tstatic FormProperties: string = Translations_fi.FormProperties;\r\n\tstatic AuthorizationLevelAdmin: string = Translations_fi.AuthorizationLevelAdmin;\r\n\tstatic SavingEventTypeBsWasNotSuccessfulErrorParameter: string = Translations_fi.SavingEventTypeBsWasNotSuccessfulErrorParameter;\r\n\tstatic NewComment: string = Translations_fi.NewComment;\r\n\tstatic ExternalIntraSystems: string = Translations_fi.ExternalIntraSystems;\r\n\tstatic SelectUserGroup: string = Translations_fi.SelectUserGroup;\r\n\tstatic TaskDataRows: string = Translations_fi.TaskDataRows;\r\n\tstatic PathMustBeDefined: string = Translations_fi.PathMustBeDefined;\r\n\tstatic RenewPersonalization: string = Translations_fi.RenewPersonalization;\r\n\tstatic AttachmentParameterDownloaded: string = Translations_fi.AttachmentParameterDownloaded;\r\n\tstatic AddDefaultHandler: string = Translations_fi.AddDefaultHandler;\r\n\tstatic VerifyUserName: string = Translations_fi.VerifyUserName;\r\n\tstatic CalendarTaskCategory: string = Translations_fi.CalendarTaskCategory;\r\n\tstatic FormulaCbrt: string = Translations_fi.FormulaCbrt;\r\n\tstatic EditBasicEducation: string = Translations_fi.EditBasicEducation;\r\n\tstatic EmploymentStartDate: string = Translations_fi.EmploymentStartDate;\r\n\tstatic SavingEventDefaultHandlerParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingEventDefaultHandlerParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic EventTypeB: string = Translations_fi.EventTypeB;\r\n\tstatic EditCalendarTask: string = Translations_fi.EditCalendarTask;\r\n\tstatic TaskPrioritiesMustBeDefinedBeforeAddingTasks: string = Translations_fi.TaskPrioritiesMustBeDefinedBeforeAddingTasks;\r\n\tstatic FailureAudit: string = Translations_fi.FailureAudit;\r\n\tstatic DeletingTaskTypesParameterWasSuccessful: string = Translations_fi.DeletingTaskTypesParameterWasSuccessful;\r\n\tstatic Expired: string = Translations_fi.Expired;\r\n\tstatic ParameterIsNotValidBankBICCode: string = Translations_fi.ParameterIsNotValidBankBICCode;\r\n\tstatic DefaultTaskTypes: string = Translations_fi.DefaultTaskTypes;\r\n\tstatic AddCalendarTaskCategory: string = Translations_fi.AddCalendarTaskCategory;\r\n\tstatic DefaultFurtherEducation: string = Translations_fi.DefaultFurtherEducation;\r\n\tstatic NoMessagesToShow: string = Translations_fi.NoMessagesToShow;\r\n\tstatic AddEventTypeBsToEvent: string = Translations_fi.AddEventTypeBsToEvent;\r\n\tstatic Selected: string = Translations_fi.Selected;\r\n\tstatic SavingCalendarTaskCategoryParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingCalendarTaskCategoryParameterWasNotSuccessfulErrorParameter;\r\n\tstatic AddingAttachmentParameterWasSuccessful: string = Translations_fi.AddingAttachmentParameterWasSuccessful;\r\n\tstatic EditAll: string = Translations_fi.EditAll;\r\n\tstatic RequestParameterNotFound: string = Translations_fi.RequestParameterNotFound;\r\n\tstatic EventTypeCParameterIsInUseInParameterEventsAndCannotBeDeleted: string = Translations_fi.EventTypeCParameterIsInUseInParameterEventsAndCannotBeDeleted;\r\n\tstatic LastParameterYears: string = Translations_fi.LastParameterYears;\r\n\tstatic FileParameterIsEmpty: string = Translations_fi.FileParameterIsEmpty;\r\n\tstatic SelectTaskRepetitionType: string = Translations_fi.SelectTaskRepetitionType;\r\n\tstatic SavingEventTypeCsWasSuccessful: string = Translations_fi.SavingEventTypeCsWasSuccessful;\r\n\tstatic TrainingStartDate: string = Translations_fi.TrainingStartDate;\r\n\tstatic MovingFilesAndDocumentsToFolderParameterWasSuccessful: string = Translations_fi.MovingFilesAndDocumentsToFolderParameterWasSuccessful;\r\n\tstatic ImageOrPdfUpToParameterMb: string = Translations_fi.ImageOrPdfUpToParameterMb;\r\n\tstatic StandardFiltersAndReports: string = Translations_fi.StandardFiltersAndReports;\r\n\tstatic CopyPermissionToAllSameLevelFolders: string = Translations_fi.CopyPermissionToAllSameLevelFolders;\r\n\tstatic PanelSize: string = Translations_fi.PanelSize;\r\n\tstatic ExpiredPlural: string = Translations_fi.ExpiredPlural;\r\n\tstatic DocumentRootPathMustBeDefined: string = Translations_fi.DocumentRootPathMustBeDefined;\r\n\tstatic DefaultFurtherEducations: string = Translations_fi.DefaultFurtherEducations;\r\n\tstatic TaskState: string = Translations_fi.TaskState;\r\n\tstatic AddCompanyTaskType: string = Translations_fi.AddCompanyTaskType;\r\n\tstatic DeletingMessageTypesParameterWasSuccessful: string = Translations_fi.DeletingMessageTypesParameterWasSuccessful;\r\n\tstatic User: string = Translations_fi.User;\r\n\tstatic CalendarTaskRepetitionRepeatIntervalYearlySuffix: string = Translations_fi.CalendarTaskRepetitionRepeatIntervalYearlySuffix;\r\n\tstatic FieldParameterValueMustBeDefined: string = Translations_fi.FieldParameterValueMustBeDefined;\r\n\tstatic SavingChartWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingChartWasNotSuccessfulConcurrencyError;\r\n\tstatic FormField: string = Translations_fi.FormField;\r\n\tstatic AddInstantMessageUsersParameterWasSuccessful: string = Translations_fi.AddInstantMessageUsersParameterWasSuccessful;\r\n\tstatic SavingTaskPriorityParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingTaskPriorityParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic DoYouReallyWantToRemoveDocumentsParameter: string = Translations_fi.DoYouReallyWantToRemoveDocumentsParameter;\r\n\tstatic CopyingFilesAndDocumentsToFolderParameterWasNotSuccessfulErrorParameter: string = Translations_fi.CopyingFilesAndDocumentsToFolderParameterWasNotSuccessfulErrorParameter;\r\n\tstatic MoneyIn: string = Translations_fi.MoneyIn;\r\n\tstatic Info: string = Translations_fi.Info;\r\n\tstatic RemoveCompanyFromCompanyGroup: string = Translations_fi.RemoveCompanyFromCompanyGroup;\r\n\tstatic SharedFilters: string = Translations_fi.SharedFilters;\r\n\tstatic Monthly: string = Translations_fi.Monthly;\r\n\tstatic RecordParameterLockingFailed: string = Translations_fi.RecordParameterLockingFailed;\r\n\tstatic FormDecimalNumber: string = Translations_fi.FormDecimalNumber;\r\n\tstatic SavingRecordFurtherEducationGroupParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingRecordFurtherEducationGroupParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic UserRecordCards: string = Translations_fi.UserRecordCards;\r\n\tstatic RemoveDefaultFurtherEducation: string = Translations_fi.RemoveDefaultFurtherEducation;\r\n\tstatic DeletingCompanyGroupParameterWasSuccessful: string = Translations_fi.DeletingCompanyGroupParameterWasSuccessful;\r\n\tstatic ModifiedBy: string = Translations_fi.ModifiedBy;\r\n\tstatic DeletingRecordUserTransferredPropertiesParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingRecordUserTransferredPropertiesParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic SendReadReceiptConfirmation: string = Translations_fi.SendReadReceiptConfirmation;\r\n\tstatic AccountNumberTkbInDebit: string = Translations_fi.AccountNumberTkbInDebit;\r\n\tstatic EventsFound: string = Translations_fi.EventsFound;\r\n\tstatic DefaultLanguageHasBeenChanged: string = Translations_fi.DefaultLanguageHasBeenChanged;\r\n\tstatic UserEndDate: string = Translations_fi.UserEndDate;\r\n\tstatic SaveMessage: string = Translations_fi.SaveMessage;\r\n\tstatic KeywordCodeMustBeDefined: string = Translations_fi.KeywordCodeMustBeDefined;\r\n\tstatic CurrentCalendarMonth: string = Translations_fi.CurrentCalendarMonth;\r\n\tstatic OldPasswordIsIncorrect: string = Translations_fi.OldPasswordIsIncorrect;\r\n\tstatic SendingPushNotificationsToParameter: string = Translations_fi.SendingPushNotificationsToParameter;\r\n\tstatic SavingEventTypeParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingEventTypeParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic ClickToCancelAutomaticLogout: string = Translations_fi.ClickToCancelAutomaticLogout;\r\n\tstatic FormTitles: string = Translations_fi.FormTitles;\r\n\tstatic TransportCompanies: string = Translations_fi.TransportCompanies;\r\n\tstatic RecurringCalendarTaskMustHaveAtLeastOneOccurence: string = Translations_fi.RecurringCalendarTaskMustHaveAtLeastOneOccurence;\r\n\tstatic DoYouReallyWantToRemoveFormParameter: string = Translations_fi.DoYouReallyWantToRemoveFormParameter;\r\n\tstatic WriteBelowFieldWordParameterToConfirmTheOperation: string = Translations_fi.WriteBelowFieldWordParameterToConfirmTheOperation;\r\n\tstatic AddPartnersParameterWasNotSuccessfulErrorParameter: string = Translations_fi.AddPartnersParameterWasNotSuccessfulErrorParameter;\r\n\tstatic SortOrder: string = Translations_fi.SortOrder;\r\n\tstatic NewFamiliarizationMustBeSavedBeforeAttachmentsCanBeAdded: string = Translations_fi.NewFamiliarizationMustBeSavedBeforeAttachmentsCanBeAdded;\r\n\tstatic LockedDocumentParameterCannotBeMoved: string = Translations_fi.LockedDocumentParameterCannotBeMoved;\r\n\tstatic AccountNumberTkbOutDebit: string = Translations_fi.AccountNumberTkbOutDebit;\r\n\tstatic ForLastParameterDays: string = Translations_fi.ForLastParameterDays;\r\n\tstatic DeletingMessageParameterWasSuccessful: string = Translations_fi.DeletingMessageParameterWasSuccessful;\r\n\tstatic DeletingRecordBasicEducationParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingRecordBasicEducationParameterWasNotSuccessfulErrorParameter;\r\n\tstatic RemoveLogisticTransportCompany: string = Translations_fi.RemoveLogisticTransportCompany;\r\n\tstatic WhistleBlowInformantDateAndTime: string = Translations_fi.WhistleBlowInformantDateAndTime;\r\n\tstatic RemoveRecordUser: string = Translations_fi.RemoveRecordUser;\r\n\tstatic RemoveEventTypeB: string = Translations_fi.RemoveEventTypeB;\r\n\tstatic PanelVisible: string = Translations_fi.PanelVisible;\r\n\tstatic KeywordsOrCondition: string = Translations_fi.KeywordsOrCondition;\r\n\tstatic FormulaDateAndTimeDiffInMinutes: string = Translations_fi.FormulaDateAndTimeDiffInMinutes;\r\n\tstatic TaskStateLocked: string = Translations_fi.TaskStateLocked;\r\n\tstatic LockingEditableDocumentParameterWasNotSuccessful: string = Translations_fi.LockingEditableDocumentParameterWasNotSuccessful;\r\n\tstatic AdditionalPermissionBEvents: string = Translations_fi.AdditionalPermissionBEvents;\r\n\tstatic ArgumentParameterIsNULL: string = Translations_fi.ArgumentParameterIsNULL;\r\n\tstatic QualificationIsInvalid: string = Translations_fi.QualificationIsInvalid;\r\n\tstatic WhistleBlowInformantMessages: string = Translations_fi.WhistleBlowInformantMessages;\r\n\tstatic FolderParameterNotFound: string = Translations_fi.FolderParameterNotFound;\r\n\tstatic SavingDirectoryItemFolderParameterWasSuccessful: string = Translations_fi.SavingDirectoryItemFolderParameterWasSuccessful;\r\n\tstatic MoveToTrashBin: string = Translations_fi.MoveToTrashBin;\r\n\tstatic ArchivingRecordUserFurtherEducationsWasNotSuccessfulErrorParameter: string = Translations_fi.ArchivingRecordUserFurtherEducationsWasNotSuccessfulErrorParameter;\r\n\tstatic IHaveForgotMyPassword: string = Translations_fi.IHaveForgotMyPassword;\r\n\tstatic SavingWhistleBlowMessageWasSuccessful: string = Translations_fi.SavingWhistleBlowMessageWasSuccessful;\r\n\tstatic UserGroupParameterNotFound: string = Translations_fi.UserGroupParameterNotFound;\r\n\tstatic Actions: string = Translations_fi.Actions;\r\n\tstatic UserGroupCodeIsAlreadyInUse: string = Translations_fi.UserGroupCodeIsAlreadyInUse;\r\n\tstatic NoFilesToAdd: string = Translations_fi.NoFilesToAdd;\r\n\tstatic EventTypeCTitle: string = Translations_fi.EventTypeCTitle;\r\n\tstatic Title: string = Translations_fi.Title;\r\n\tstatic Send: string = Translations_fi.Send;\r\n\tstatic TransferredPropertyType: string = Translations_fi.TransferredPropertyType;\r\n\tstatic PasswordMustContainUppercaseChar: string = Translations_fi.PasswordMustContainUppercaseChar;\r\n\tstatic OperationAborted: string = Translations_fi.OperationAborted;\r\n\tstatic InvalidPasswordChangeRequestParameter: string = Translations_fi.InvalidPasswordChangeRequestParameter;\r\n\tstatic DeletingRecordBasicEducationParameterWasSuccessful: string = Translations_fi.DeletingRecordBasicEducationParameterWasSuccessful;\r\n\tstatic AddRecordUserToUserAccount: string = Translations_fi.AddRecordUserToUserAccount;\r\n\tstatic Landscape: string = Translations_fi.Landscape;\r\n\tstatic StateOpenPlural: string = Translations_fi.StateOpenPlural;\r\n\tstatic Comment: string = Translations_fi.Comment;\r\n\tstatic UsersToBeImported: string = Translations_fi.UsersToBeImported;\r\n\tstatic UserInformation: string = Translations_fi.UserInformation;\r\n\tstatic AdditionalPermissionBWhistleBlow: string = Translations_fi.AdditionalPermissionBWhistleBlow;\r\n\tstatic TakePicture: string = Translations_fi.TakePicture;\r\n\tstatic AddCompanies: string = Translations_fi.AddCompanies;\r\n\tstatic Language: string = Translations_fi.Language;\r\n\tstatic LogModuleProperties: string = Translations_fi.LogModuleProperties;\r\n\tstatic RemoveCalendarTask: string = Translations_fi.RemoveCalendarTask;\r\n\tstatic SavingEventPartnerParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingEventPartnerParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic PasteGroupPermissions: string = Translations_fi.PasteGroupPermissions;\r\n\tstatic WhistleBlowSourceMail: string = Translations_fi.WhistleBlowSourceMail;\r\n\tstatic DoYouReallyWantToRemoveCompanyGroupParameter: string = Translations_fi.DoYouReallyWantToRemoveCompanyGroupParameter;\r\n\tstatic SelectDate: string = Translations_fi.SelectDate;\r\n\tstatic DeletingEventTypeBParameterWasSuccessful: string = Translations_fi.DeletingEventTypeBParameterWasSuccessful;\r\n\tstatic WhistleBlowWasNotFound: string = Translations_fi.WhistleBlowWasNotFound;\r\n\tstatic DeletingRecordFurtherEducationsParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingRecordFurtherEducationsParameterWasNotSuccessfulErrorParameter;\r\n\tstatic EventTypeCParameterNotFound: string = Translations_fi.EventTypeCParameterNotFound;\r\n\tstatic IndefinitelyNoLocalization: string = Translations_fi.IndefinitelyNoLocalization;\r\n\tstatic TaskHandler: string = Translations_fi.TaskHandler;\r\n\tstatic Reject: string = Translations_fi.Reject;\r\n\tstatic EventModuleProperties: string = Translations_fi.EventModuleProperties;\r\n\tstatic DefaultEventUrgencyClasses: string = Translations_fi.DefaultEventUrgencyClasses;\r\n\tstatic ACopy: string = Translations_fi.ACopy;\r\n\tstatic EditDefaultFurtherEducation: string = Translations_fi.EditDefaultFurtherEducation;\r\n\tstatic EditEventTypeCs: string = Translations_fi.EditEventTypeCs;\r\n\tstatic BasicInformation: string = Translations_fi.BasicInformation;\r\n\tstatic SavingFileFilterParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingFileFilterParameterWasNotSuccessfulErrorParameter;\r\n\tstatic Clear: string = Translations_fi.Clear;\r\n\tstatic FormPlaceholder: string = Translations_fi.FormPlaceholder;\r\n\tstatic AuthorizationLevelSystemAdmin: string = Translations_fi.AuthorizationLevelSystemAdmin;\r\n\tstatic FollowUp: string = Translations_fi.FollowUp;\r\n\tstatic RequestPasswordChangeMessage1: string = Translations_fi.RequestPasswordChangeMessage1;\r\n\tstatic ResetDocumentVersion: string = Translations_fi.ResetDocumentVersion;\r\n\tstatic EventTypeBParameterIsInUseInParameterEventsAndCannotBeDeleted: string = Translations_fi.EventTypeBParameterIsInUseInParameterEventsAndCannotBeDeleted;\r\n\tstatic UserRecordStatisticsArchivedCards: string = Translations_fi.UserRecordStatisticsArchivedCards;\r\n\tstatic ReadReceipts: string = Translations_fi.ReadReceipts;\r\n\tstatic FormulaTan: string = Translations_fi.FormulaTan;\r\n\tstatic DeletingKeywordParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingKeywordParameterWasNotSuccessfulErrorParameter;\r\n\tstatic AdminMustBeDefinedForSectionParameter: string = Translations_fi.AdminMustBeDefinedForSectionParameter;\r\n\tstatic SavingFileFilterParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingFileFilterParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic Amount: string = Translations_fi.Amount;\r\n\tstatic FamiliarizationStartDateDateEnd: string = Translations_fi.FamiliarizationStartDateDateEnd;\r\n\tstatic Order: string = Translations_fi.Order;\r\n\tstatic LargeSize: string = Translations_fi.LargeSize;\r\n\tstatic AuthorizationLevelNone: string = Translations_fi.AuthorizationLevelNone;\r\n\tstatic ActionsAndRootCause: string = Translations_fi.ActionsAndRootCause;\r\n\tstatic Browse: string = Translations_fi.Browse;\r\n\tstatic EInvoiceOperator: string = Translations_fi.EInvoiceOperator;\r\n\tstatic AddInstantMessageUsersParameterWasNotSuccessfulErrorParameter: string = Translations_fi.AddInstantMessageUsersParameterWasNotSuccessfulErrorParameter;\r\n\tstatic CopyingFolderDirectoryItemParameterToFolderParameterWasSuccessful: string = Translations_fi.CopyingFolderDirectoryItemParameterToFolderParameterWasSuccessful;\r\n\tstatic TransferredProperties: string = Translations_fi.TransferredProperties;\r\n\tstatic TaskDataRowMustBeSavedBeforeAttachmentsCanBeAdded: string = Translations_fi.TaskDataRowMustBeSavedBeforeAttachmentsCanBeAdded;\r\n\tstatic WhistleBlowCreateTime: string = Translations_fi.WhistleBlowCreateTime;\r\n\tstatic Last180Days: string = Translations_fi.Last180Days;\r\n\tstatic AddDefaultTaskPriority: string = Translations_fi.AddDefaultTaskPriority;\r\n\tstatic DocumentNameParameterIsIllegal: string = Translations_fi.DocumentNameParameterIsIllegal;\r\n\tstatic InstantMessageChannelArchivingType: string = Translations_fi.InstantMessageChannelArchivingType;\r\n\tstatic PrintIsEmpty: string = Translations_fi.PrintIsEmpty;\r\n\tstatic Custom: string = Translations_fi.Custom;\r\n\tstatic AddEventTypeC: string = Translations_fi.AddEventTypeC;\r\n\tstatic AddEventTypeB: string = Translations_fi.AddEventTypeB;\r\n\tstatic SavingDirectoryItemDocumentParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingDirectoryItemDocumentParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic DoYouReallyWantToRemoveRecordUserEmploymentParameter: string = Translations_fi.DoYouReallyWantToRemoveRecordUserEmploymentParameter;\r\n\tstatic AddEvent: string = Translations_fi.AddEvent;\r\n\tstatic HasAttachments: string = Translations_fi.HasAttachments;\r\n\tstatic ArchiveWhistleBlows: string = Translations_fi.ArchiveWhistleBlows;\r\n\tstatic LanguageParameterIsNotSupported: string = Translations_fi.LanguageParameterIsNotSupported;\r\n\tstatic Hour: string = Translations_fi.Hour;\r\n\tstatic AuthorizationLevel: string = Translations_fi.AuthorizationLevel;\r\n\tstatic DoYouReallyWantToRemoveSelectedRecordBasicEducations: string = Translations_fi.DoYouReallyWantToRemoveSelectedRecordBasicEducations;\r\n\tstatic DeletingFileFilterParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingFileFilterParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic WhistleBlowNonAnonymousReportInfo: string = Translations_fi.WhistleBlowNonAnonymousReportInfo;\r\n\tstatic Minutes: string = Translations_fi.Minutes;\r\n\tstatic LockingTaskParameterWasNotSuccessful: string = Translations_fi.LockingTaskParameterWasNotSuccessful;\r\n\tstatic DeletingDefaultEventHandlerParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingDefaultEventHandlerParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic HandlersAndAttachments: string = Translations_fi.HandlersAndAttachments;\r\n\tstatic TaskTypeSchemaMustBeDefined: string = Translations_fi.TaskTypeSchemaMustBeDefined;\r\n\tstatic DeletingAttachmentParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingAttachmentParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic GetMore: string = Translations_fi.GetMore;\r\n\tstatic CompanyIdClaimNotFound: string = Translations_fi.CompanyIdClaimNotFound;\r\n\tstatic TaskRepetitionType: string = Translations_fi.TaskRepetitionType;\r\n\tstatic PositionErrorTimeout: string = Translations_fi.PositionErrorTimeout;\r\n\tstatic RestoringInstantMessageWasSuccessful: string = Translations_fi.RestoringInstantMessageWasSuccessful;\r\n\tstatic EditCompanyGroup: string = Translations_fi.EditCompanyGroup;\r\n\tstatic FormulaCeil: string = Translations_fi.FormulaCeil;\r\n\tstatic CompanyWithSysAdminAuthorizationLevelNotFound: string = Translations_fi.CompanyWithSysAdminAuthorizationLevelNotFound;\r\n\tstatic RemovingWhistleBlowHandlersWasSuccessful: string = Translations_fi.RemovingWhistleBlowHandlersWasSuccessful;\r\n\tstatic MovingTaskParameterToTrashBinWasNotSuccessfulConcurrencyError: string = Translations_fi.MovingTaskParameterToTrashBinWasNotSuccessfulConcurrencyError;\r\n\tstatic FormulaCos: string = Translations_fi.FormulaCos;\r\n\tstatic AccountNumberTkbOutCredit: string = Translations_fi.AccountNumberTkbOutCredit;\r\n\tstatic Receiver: string = Translations_fi.Receiver;\r\n\tstatic PreviewMobile: string = Translations_fi.PreviewMobile;\r\n\tstatic ArchivingRecordUserFurtherEducationsWasSuccessful: string = Translations_fi.ArchivingRecordUserFurtherEducationsWasSuccessful;\r\n\tstatic RemoveKeyword: string = Translations_fi.RemoveKeyword;\r\n\tstatic RemoveFolder: string = Translations_fi.RemoveFolder;\r\n\tstatic WhistleBlowActiveReports: string = Translations_fi.WhistleBlowActiveReports;\r\n\tstatic DoYouReallyWantToEmailMessageParameter: string = Translations_fi.DoYouReallyWantToEmailMessageParameter;\r\n\tstatic RemoveWhistleBlowCategory: string = Translations_fi.RemoveWhistleBlowCategory;\r\n\tstatic Update: string = Translations_fi.Update;\r\n\tstatic CopyActiveUserRightsToAllSameLevelFolders: string = Translations_fi.CopyActiveUserRightsToAllSameLevelFolders;\r\n\tstatic FormShowModifyUser: string = Translations_fi.FormShowModifyUser;\r\n\tstatic EditEmployment: string = Translations_fi.EditEmployment;\r\n\tstatic UpdatingGroupCodeWasNotSuccessfulErrorParameter: string = Translations_fi.UpdatingGroupCodeWasNotSuccessfulErrorParameter;\r\n\tstatic FileFilterNameMustBeDefined: string = Translations_fi.FileFilterNameMustBeDefined;\r\n\tstatic SenderOrReceiver: string = Translations_fi.SenderOrReceiver;\r\n\tstatic DeletingRecordFamiliarizationParameterWasSuccessful: string = Translations_fi.DeletingRecordFamiliarizationParameterWasSuccessful;\r\n\tstatic SavingKeywordParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingKeywordParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic Action: string = Translations_fi.Action;\r\n\tstatic DoYouReallyWantToRemoveDocumentParameter: string = Translations_fi.DoYouReallyWantToRemoveDocumentParameter;\r\n\tstatic SavingFilterWasSuccessful: string = Translations_fi.SavingFilterWasSuccessful;\r\n\tstatic SavingTaskParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingTaskParameterWasNotSuccessfulErrorParameter;\r\n\tstatic DoYouReallyWantToRemoveWhistleBlowParameter: string = Translations_fi.DoYouReallyWantToRemoveWhistleBlowParameter;\r\n\tstatic InstantMessageAttachmentFolderIsNotSpecified: string = Translations_fi.InstantMessageAttachmentFolderIsNotSpecified;\r\n\tstatic YouHaveNotSavedChangesSaveChangesBeforePublishingTaskType: string = Translations_fi.YouHaveNotSavedChangesSaveChangesBeforePublishingTaskType;\r\n\tstatic NoFurtherEducationsToShow: string = Translations_fi.NoFurtherEducationsToShow;\r\n\tstatic SavingMessageTypeParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingMessageTypeParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic UserToken: string = Translations_fi.UserToken;\r\n\tstatic CalendarTaskOccurrence: string = Translations_fi.CalendarTaskOccurrence;\r\n\tstatic CopyOrMoveFolderParameter: string = Translations_fi.CopyOrMoveFolderParameter;\r\n\tstatic AddEmployment: string = Translations_fi.AddEmployment;\r\n\tstatic MissingPlural: string = Translations_fi.MissingPlural;\r\n\tstatic SomeWhistleBlowHandlersHaveReadMessage: string = Translations_fi.SomeWhistleBlowHandlersHaveReadMessage;\r\n\tstatic TaskRemainderCheckingAndNotificationFinishedInParameterSeconds: string = Translations_fi.TaskRemainderCheckingAndNotificationFinishedInParameterSeconds;\r\n\tstatic RecordUserExcelUserList: string = Translations_fi.RecordUserExcelUserList;\r\n\tstatic DeletingUserParameterWasSuccessful: string = Translations_fi.DeletingUserParameterWasSuccessful;\r\n\tstatic TemplateForms: string = Translations_fi.TemplateForms;\r\n\tstatic InstantMessageAttachmentFolderParameterNotFound: string = Translations_fi.InstantMessageAttachmentFolderParameterNotFound;\r\n\tstatic DeletingTaskPrioritiesParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingTaskPrioritiesParameterWasNotSuccessfulErrorParameter;\r\n\tstatic ChangeCompany: string = Translations_fi.ChangeCompany;\r\n\tstatic SearchCurrentTopics: string = Translations_fi.SearchCurrentTopics;\r\n\tstatic DoYouReallyWantToMoveTaskParameterToTrashBin: string = Translations_fi.DoYouReallyWantToMoveTaskParameterToTrashBin;\r\n\tstatic WhistleBlowResolutionJunk: string = Translations_fi.WhistleBlowResolutionJunk;\r\n\tstatic EditMode: string = Translations_fi.EditMode;\r\n\tstatic EmploymentEndDateCannotPrecedeEmploymentStartDate: string = Translations_fi.EmploymentEndDateCannotPrecedeEmploymentStartDate;\r\n\tstatic EventApprovalWasSuccessful: string = Translations_fi.EventApprovalWasSuccessful;\r\n\tstatic UserClaimsNotFound: string = Translations_fi.UserClaimsNotFound;\r\n\tstatic UserRecordsDashboard: string = Translations_fi.UserRecordsDashboard;\r\n\tstatic PublishTaskType: string = Translations_fi.PublishTaskType;\r\n\tstatic RemoveEditableDocument: string = Translations_fi.RemoveEditableDocument;\r\n\tstatic PanelSize1: string = Translations_fi.PanelSize1;\r\n\tstatic Yes: string = Translations_fi.Yes;\r\n\tstatic SearchStartDate: string = Translations_fi.SearchStartDate;\r\n\tstatic DeletingTaskPriorityParameterWasSuccessful: string = Translations_fi.DeletingTaskPriorityParameterWasSuccessful;\r\n\tstatic TasksExcelByTasks: string = Translations_fi.TasksExcelByTasks;\r\n\tstatic InheritedUserRights: string = Translations_fi.InheritedUserRights;\r\n\tstatic SomeEventHandlersHaveReadMessage: string = Translations_fi.SomeEventHandlersHaveReadMessage;\r\n\tstatic EventTypeCCodeMustBeDefined: string = Translations_fi.EventTypeCCodeMustBeDefined;\r\n\tstatic EventSettings: string = Translations_fi.EventSettings;\r\n\tstatic MovingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.MovingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic DocumentZipFileName: string = Translations_fi.DocumentZipFileName;\r\n\tstatic SavingWhistleBlowWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingWhistleBlowWasNotSuccessfulConcurrencyError;\r\n\tstatic Permission: string = Translations_fi.Permission;\r\n\tstatic NotifiedPersons: string = Translations_fi.NotifiedPersons;\r\n\tstatic RemoveCompanyGroup: string = Translations_fi.RemoveCompanyGroup;\r\n\tstatic NoEventsToShow: string = Translations_fi.NoEventsToShow;\r\n\tstatic SavingInstantMessageWasNotSuccessfulErrorParameter: string = Translations_fi.SavingInstantMessageWasNotSuccessfulErrorParameter;\r\n\tstatic UserGroup: string = Translations_fi.UserGroup;\r\n\tstatic RemoveMessageType: string = Translations_fi.RemoveMessageType;\r\n\tstatic WhistleBlowDoesNotContainAnyMessage: string = Translations_fi.WhistleBlowDoesNotContainAnyMessage;\r\n\tstatic ShowReportRowAmountInFrontPage: string = Translations_fi.ShowReportRowAmountInFrontPage;\r\n\tstatic SavingDocumentTemplateParameterWasSuccessful: string = Translations_fi.SavingDocumentTemplateParameterWasSuccessful;\r\n\tstatic DeletingKeywordParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingKeywordParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic SelectCompanyGroup: string = Translations_fi.SelectCompanyGroup;\r\n\tstatic DeletingDirectoryItemFolderParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingDirectoryItemFolderParameterWasNotSuccessfulErrorParameter;\r\n\tstatic WhistleBlowAnonymityNonAnonymous: string = Translations_fi.WhistleBlowAnonymityNonAnonymous;\r\n\tstatic DoYouReallyWantToRemoveCompanyParameter: string = Translations_fi.DoYouReallyWantToRemoveCompanyParameter;\r\n\tstatic WhistleBlowStateArchived: string = Translations_fi.WhistleBlowStateArchived;\r\n\tstatic SavingTaskTypeParameterWasSuccessful: string = Translations_fi.SavingTaskTypeParameterWasSuccessful;\r\n\tstatic Identification: string = Translations_fi.Identification;\r\n\tstatic AddFormFromTemplate: string = Translations_fi.AddFormFromTemplate;\r\n\tstatic FormBooleans: string = Translations_fi.FormBooleans;\r\n\tstatic AddCompanyGroupsParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.AddCompanyGroupsParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic ShowDraftVersion: string = Translations_fi.ShowDraftVersion;\r\n\tstatic SavingWhistleBlowMessageWasNotSuccessfulErrorParameter: string = Translations_fi.SavingWhistleBlowMessageWasNotSuccessfulErrorParameter;\r\n\tstatic Draft: string = Translations_fi.Draft;\r\n\tstatic Operation: string = Translations_fi.Operation;\r\n\tstatic WhistleBlowDescription: string = Translations_fi.WhistleBlowDescription;\r\n\tstatic AddPanel: string = Translations_fi.AddPanel;\r\n\tstatic TaskPriorityParameterIsInUseInParameterTasksAndCannotBeDeleted: string = Translations_fi.TaskPriorityParameterIsInUseInParameterTasksAndCannotBeDeleted;\r\n\tstatic NoTasksToShow: string = Translations_fi.NoTasksToShow;\r\n\tstatic EventUrgencyClass: string = Translations_fi.EventUrgencyClass;\r\n\tstatic PreviousCalendarMonth: string = Translations_fi.PreviousCalendarMonth;\r\n\tstatic EventIsNotApprovedByUser: string = Translations_fi.EventIsNotApprovedByUser;\r\n\tstatic FormTime: string = Translations_fi.FormTime;\r\n\tstatic SavingEventTypeParameterWasSuccessful: string = Translations_fi.SavingEventTypeParameterWasSuccessful;\r\n\tstatic DeletingWhistleBlowParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingWhistleBlowParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic DeletingRecordUserEmploymentsParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingRecordUserEmploymentsParameterWasNotSuccessfulErrorParameter;\r\n\tstatic Message: string = Translations_fi.Message;\r\n\tstatic WhistleBlowSourcePhone: string = Translations_fi.WhistleBlowSourcePhone;\r\n\tstatic DeletingInstantMessageUsersParameterWasNotSuccessfulConcurrencyError: string = Translations_fi.DeletingInstantMessageUsersParameterWasNotSuccessfulConcurrencyError;\r\n\tstatic RestoringInstantMessageWasNotSuccessfulConcurrencyError: string = Translations_fi.RestoringInstantMessageWasNotSuccessfulConcurrencyError;\r\n\tstatic InstantMessagesMenuTitle: string = Translations_fi.InstantMessagesMenuTitle;\r\n\tstatic DoYouReallyWantToRemoveEventPartnerParameter: string = Translations_fi.DoYouReallyWantToRemoveEventPartnerParameter;\r\n\tstatic DoYouReallyWantToRemoveDocumentTemplateParameter: string = Translations_fi.DoYouReallyWantToRemoveDocumentTemplateParameter;\r\n\tstatic UserParameterHasInvitedYouToJoinInstantMessageChannelParameter: string = Translations_fi.UserParameterHasInvitedYouToJoinInstantMessageChannelParameter;\r\n\tstatic Entry: string = Translations_fi.Entry;\r\n\tstatic UserReport: string = Translations_fi.UserReport;\r\n\tstatic Events: string = Translations_fi.Events;\r\n\tstatic PicturesAreVisibleForAllCompanyUsers: string = Translations_fi.PicturesAreVisibleForAllCompanyUsers;\r\n\tstatic ArchivingRecordUserFamiliarizationsWasNotSuccessfulConcurrencyError: string = Translations_fi.ArchivingRecordUserFamiliarizationsWasNotSuccessfulConcurrencyError;\r\n\tstatic Number: string = Translations_fi.Number;\r\n\tstatic SelectArchivingMethod: string = Translations_fi.SelectArchivingMethod;\r\n\tstatic DeletingWhistleBlowChannelAdminsParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingWhistleBlowChannelAdminsParameterWasNotSuccessfulErrorParameter;\r\n\tstatic SavingEditableDocumentParameterPublishWasSuccessful: string = Translations_fi.SavingEditableDocumentParameterPublishWasSuccessful;\r\n\tstatic SaveAndEmail: string = Translations_fi.SaveAndEmail;\r\n\tstatic EmptyTaskTrashBin: string = Translations_fi.EmptyTaskTrashBin;\r\n\tstatic MovingFolderParameterWasNotSuccessfulErrorParameter: string = Translations_fi.MovingFolderParameterWasNotSuccessfulErrorParameter;\r\n\tstatic Channels: string = Translations_fi.Channels;\r\n\tstatic SelectInstantMessageChannelUsers: string = Translations_fi.SelectInstantMessageChannelUsers;\r\n\tstatic ApproveEvent: string = Translations_fi.ApproveEvent;\r\n\tstatic JobTypeEmail: string = Translations_fi.JobTypeEmail;\r\n\tstatic Effectiveness: string = Translations_fi.Effectiveness;\r\n\tstatic ReminderWeekBefore: string = Translations_fi.ReminderWeekBefore;\r\n\tstatic Private: string = Translations_fi.Private;\r\n\tstatic RemoveEmployment: string = Translations_fi.RemoveEmployment;\r\n\tstatic AddAttachment: string = Translations_fi.AddAttachment;\r\n\tstatic SavingEventTypeParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingEventTypeParameterWasNotSuccessfulErrorParameter;\r\n\tstatic SavingDirectoryItemPermissionsWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingDirectoryItemPermissionsWasNotSuccessfulConcurrencyError;\r\n\tstatic AddPhotosAndAttachementsToEvent: string = Translations_fi.AddPhotosAndAttachementsToEvent;\r\n\tstatic WhistleBlowReportHasBeenSavedTopText: string = Translations_fi.WhistleBlowReportHasBeenSavedTopText;\r\n\tstatic SavingUserParametersWasNotSuccessfulErrorParameter: string = Translations_fi.SavingUserParametersWasNotSuccessfulErrorParameter;\r\n\tstatic WhistleBlowStatisticsAnonymousRecords: string = Translations_fi.WhistleBlowStatisticsAnonymousRecords;\r\n\tstatic FormWeb: string = Translations_fi.FormWeb;\r\n\tstatic WhistleBlowEventTypeModified: string = Translations_fi.WhistleBlowEventTypeModified;\r\n\tstatic RecentlyUpdated: string = Translations_fi.RecentlyUpdated;\r\n\tstatic ExternalSystems: string = Translations_fi.ExternalSystems;\r\n\tstatic DoYouReallyWantToRemoveCalendarTaskCategoryParameter: string = Translations_fi.DoYouReallyWantToRemoveCalendarTaskCategoryParameter;\r\n\tstatic Comments: string = Translations_fi.Comments;\r\n\tstatic OptionParameterNotFound: string = Translations_fi.OptionParameterNotFound;\r\n\tstatic NoPermission: string = Translations_fi.NoPermission;\r\n\tstatic SelectCalendarTaskHandlers: string = Translations_fi.SelectCalendarTaskHandlers;\r\n\tstatic AllCompanyGroups: string = Translations_fi.AllCompanyGroups;\r\n\tstatic SavingPrintWasNotSuccessfulConcurrencyError: string = Translations_fi.SavingPrintWasNotSuccessfulConcurrencyError;\r\n\tstatic FormCodeMustBeDefined: string = Translations_fi.FormCodeMustBeDefined;\r\n\tstatic ApproveEventResolution: string = Translations_fi.ApproveEventResolution;\r\n\tstatic TaskPriorityParameterNotFound: string = Translations_fi.TaskPriorityParameterNotFound;\r\n\tstatic SelectInstantMessageChannelType: string = Translations_fi.SelectInstantMessageChannelType;\r\n\tstatic Rows: string = Translations_fi.Rows;\r\n\tstatic FormulaRound: string = Translations_fi.FormulaRound;\r\n\tstatic DeletingInstantMessageUsersParameterWasSuccessful: string = Translations_fi.DeletingInstantMessageUsersParameterWasSuccessful;\r\n\tstatic RestoringTaskParameterFromTrashBinWasSuccessful: string = Translations_fi.RestoringTaskParameterFromTrashBinWasSuccessful;\r\n\tstatic WriteMessage: string = Translations_fi.WriteMessage;\r\n\tstatic UnlockingTaskDataRowWasNotSuccessful: string = Translations_fi.UnlockingTaskDataRowWasNotSuccessful;\r\n\tstatic CreatingFolderParameterWasNotSuccessfulErrorParameter: string = Translations_fi.CreatingFolderParameterWasNotSuccessfulErrorParameter;\r\n\tstatic AdminMessage: string = Translations_fi.AdminMessage;\r\n\tstatic SendTime: string = Translations_fi.SendTime;\r\n\tstatic EventSettingsParameterNotFound: string = Translations_fi.EventSettingsParameterNotFound;\r\n\tstatic RemoveUserGroupExternalSystemsWasSuccessful: string = Translations_fi.RemoveUserGroupExternalSystemsWasSuccessful;\r\n\tstatic WhistleBlowCategories: string = Translations_fi.WhistleBlowCategories;\r\n\tstatic AddingWhistleBlowHandlerWasNotSuccessfulErrorParameter: string = Translations_fi.AddingWhistleBlowHandlerWasNotSuccessfulErrorParameter;\r\n\tstatic AdditionalPermissions: string = Translations_fi.AdditionalPermissions;\r\n\tstatic SavingDirectoryItemFolderParameterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingDirectoryItemFolderParameterWasNotSuccessfulErrorParameter;\r\n\tstatic SavingEditableDocumentParameterApprovalWasNotSuccessfulErrorParameter: string = Translations_fi.SavingEditableDocumentParameterApprovalWasNotSuccessfulErrorParameter;\r\n\tstatic AccessRightWrite: string = Translations_fi.AccessRightWrite;\r\n\tstatic CalendarTaskCategoryParameterIsInUseInParameterCalendarTasksAndCannotBeDeleted: string = Translations_fi.CalendarTaskCategoryParameterIsInUseInParameterCalendarTasksAndCannotBeDeleted;\r\n\tstatic SavingUnitsWasSuccessful: string = Translations_fi.SavingUnitsWasSuccessful;\r\n\tstatic UnitChangedFromParameterToParameter: string = Translations_fi.UnitChangedFromParameterToParameter;\r\n\tstatic FileParameterIsNotOpenXmlWorkbook: string = Translations_fi.FileParameterIsNotOpenXmlWorkbook;\r\n\tstatic NewVersionAvailable: string = Translations_fi.NewVersionAvailable;\r\n\tstatic ViewLogLine: string = Translations_fi.ViewLogLine;\r\n\tstatic WhistleBlowInformantTitle: string = Translations_fi.WhistleBlowInformantTitle;\r\n\tstatic IgnoreFilePatterns: string = Translations_fi.IgnoreFilePatterns;\r\n\tstatic TaskReport: string = Translations_fi.TaskReport;\r\n\tstatic EventUrgencyClasses: string = Translations_fi.EventUrgencyClasses;\r\n\tstatic EditUserGroup: string = Translations_fi.EditUserGroup;\r\n\tstatic Documents: string = Translations_fi.Documents;\r\n\tstatic MyReports: string = Translations_fi.MyReports;\r\n\tstatic NewPanel: string = Translations_fi.NewPanel;\r\n\tstatic SavingPrintWasSuccessful: string = Translations_fi.SavingPrintWasSuccessful;\r\n\tstatic DefaultHandlers: string = Translations_fi.DefaultHandlers;\r\n\tstatic EditCompany: string = Translations_fi.EditCompany;\r\n\tstatic UserPasswordMustBeValid: string = Translations_fi.UserPasswordMustBeValid;\r\n\tstatic CompetencyGroup: string = Translations_fi.CompetencyGroup;\r\n\tstatic LockedTaskDataRowCannotBeDeleted: string = Translations_fi.LockedTaskDataRowCannotBeDeleted;\r\n\tstatic PanelSize2: string = Translations_fi.PanelSize2;\r\n\tstatic DeletingTaskTypeParameterWasNotSuccessfulErrorParameter: string = Translations_fi.DeletingTaskTypeParameterWasNotSuccessfulErrorParameter;\r\n\tstatic DocumentTemplateParameterNotFound: string = Translations_fi.DocumentTemplateParameterNotFound;\r\n\tstatic NoNotificationsToSend: string = Translations_fi.NoNotificationsToSend;\r\n\tstatic CompanyName: string = Translations_fi.CompanyName;\r\n\tstatic EditRow: string = Translations_fi.EditRow;\r\n\tstatic InviteInstantMessageChannelUser: string = Translations_fi.InviteInstantMessageChannelUser;\r\n\tstatic FormOptions: string = Translations_fi.FormOptions;\r\n\tstatic PrivacyPolicyUrl: string = Translations_fi.PrivacyPolicyUrl;\r\n\tstatic FileSynchronizationToDatabaseStarted: string = Translations_fi.FileSynchronizationToDatabaseStarted;\r\n\tstatic FormulaPI: string = Translations_fi.FormulaPI;\r\n\tstatic ShowOnlyUnitsThatAreInUse: string = Translations_fi.ShowOnlyUnitsThatAreInUse;\r\n\tstatic EditableDocumentUnpublishConfirmation: string = Translations_fi.EditableDocumentUnpublishConfirmation;\r\n\tstatic SavingFilterWasNotSuccessfulErrorParameter: string = Translations_fi.SavingFilterWasNotSuccessfulErrorParameter;\r\n\tstatic UnlockingTaskParameterWasNotSuccessful: string = Translations_fi.UnlockingTaskParameterWasNotSuccessful;\r\n\tstatic ExternalSystemCodeClaimNotFound: string = Translations_fi.ExternalSystemCodeClaimNotFound;\r\n\tstatic SearchTasks: string = Translations_fi.SearchTasks;\r\n\tstatic FormDate: string = Translations_fi.FormDate;\r\n\tstatic TaskDashboard: string = Translations_fi.TaskDashboard;\r\n\tstatic SaveReportAs: string = Translations_fi.SaveReportAs;\r\n\tstatic EditFamiliarization: string = Translations_fi.EditFamiliarization;\r\n\tstatic AddUserGroups: string = Translations_fi.AddUserGroups;\r\n\tstatic AddUserGroupParameterWasSuccessful: string = Translations_fi.AddUserGroupParameterWasSuccessful;\r\n\tstatic WhistleBlowInformation: string = Translations_fi.WhistleBlowInformation;\r\n\tstatic UserIsCompanyAdminClaimNotFound: string = Translations_fi.UserIsCompanyAdminClaimNotFound;\r\n\tstatic EditEventTypeBs: string = Translations_fi.EditEventTypeBs;\r\n\tstatic AddTaskType: string = Translations_fi.AddTaskType;\r\n\tstatic DefaultTaskStates: string = Translations_fi.DefaultTaskStates;\r\n\tstatic TaskPriorityCodeMustBeDefined: string = Translations_fi.TaskPriorityCodeMustBeDefined;\r\n\tstatic TaskRemainderCheckingAndNotificationStarted: string = Translations_fi.TaskRemainderCheckingAndNotificationStarted;\r\n\tstatic Reminder: string = Translations_fi.Reminder;\r\n\tstatic InstantMessageChannelUsers: string = Translations_fi.InstantMessageChannelUsers;\r\n\tstatic EditSharedDocumentTemplate: string = Translations_fi.EditSharedDocumentTemplate;\r\n\tstatic SharedFiltersAndReports: string = Translations_fi.SharedFiltersAndReports;\r\n\tstatic DeletingEventParameterWasSuccessful: string = Translations_fi.DeletingEventParameterWasSuccessful;\r\n\tstatic NoFavoritesToShow: string = Translations_fi.NoFavoritesToShow;\r\n\tstatic RelatedToDatabaseRecordType: string = Translations_fi.RelatedToDatabaseRecordType;\r\n\tstatic RemovePrint: string = Translations_fi.RemovePrint;\r\n\r\n\t\r\nstatic setCulture1(culture: string) {\r\n\t\tTranslations.DoYouReallyWantToRemoveTaskPriorityParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveTaskPriorityParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveTaskPriorityParameter : Translations_en_US.DoYouReallyWantToRemoveTaskPriorityParameter);\r\n\t\tTranslations.RemoveTransferredProperty = culture === \"fi\" ? Translations_fi.RemoveTransferredProperty : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveTransferredProperty : Translations_en_US.RemoveTransferredProperty);\r\n\t\tTranslations.JobResultParameterNotFound = culture === \"fi\" ? Translations_fi.JobResultParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.JobResultParameterNotFound : Translations_en_US.JobResultParameterNotFound);\r\n\t\tTranslations.Identifier = culture === \"fi\" ? Translations_fi.Identifier : (culture === \"sv-FI\" ? Translations_sv_FI.Identifier : Translations_en_US.Identifier);\r\n\t\tTranslations.PrintParameterDownloaded = culture === \"fi\" ? Translations_fi.PrintParameterDownloaded : (culture === \"sv-FI\" ? Translations_sv_FI.PrintParameterDownloaded : Translations_en_US.PrintParameterDownloaded);\r\n\t\tTranslations.FormSizeLarge = culture === \"fi\" ? Translations_fi.FormSizeLarge : (culture === \"sv-FI\" ? Translations_sv_FI.FormSizeLarge : Translations_en_US.FormSizeLarge);\r\n\t\tTranslations.NotificationsQueuedSuccessfully = culture === \"fi\" ? Translations_fi.NotificationsQueuedSuccessfully : (culture === \"sv-FI\" ? Translations_sv_FI.NotificationsQueuedSuccessfully : Translations_en_US.NotificationsQueuedSuccessfully);\r\n\t\tTranslations.TrainingStartDateStart = culture === \"fi\" ? Translations_fi.TrainingStartDateStart : (culture === \"sv-FI\" ? Translations_sv_FI.TrainingStartDateStart : Translations_en_US.TrainingStartDateStart);\r\n\t\tTranslations.Unpublish = culture === \"fi\" ? Translations_fi.Unpublish : (culture === \"sv-FI\" ? Translations_sv_FI.Unpublish : Translations_en_US.Unpublish);\r\n\t\tTranslations.EmptyingTaskTrashBinWasSuccessful = culture === \"fi\" ? Translations_fi.EmptyingTaskTrashBinWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.EmptyingTaskTrashBinWasSuccessful : Translations_en_US.EmptyingTaskTrashBinWasSuccessful);\r\n\t\tTranslations.Font = culture === \"fi\" ? Translations_fi.Font : (culture === \"sv-FI\" ? Translations_sv_FI.Font : Translations_en_US.Font);\r\n\t\tTranslations.DoYouReallyWantToRemoveEventParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveEventParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveEventParameter : Translations_en_US.DoYouReallyWantToRemoveEventParameter);\r\n\t\tTranslations.DeletingAttachmentsWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingAttachmentsWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingAttachmentsWasNotSuccessfulErrorParameter : Translations_en_US.DeletingAttachmentsWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.ObserverAction = culture === \"fi\" ? Translations_fi.ObserverAction : (culture === \"sv-FI\" ? Translations_sv_FI.ObserverAction : Translations_en_US.ObserverAction);\r\n\t\tTranslations.DatabaseCheckingStarted = culture === \"fi\" ? Translations_fi.DatabaseCheckingStarted : (culture === \"sv-FI\" ? Translations_sv_FI.DatabaseCheckingStarted : Translations_en_US.DatabaseCheckingStarted);\r\n\t\tTranslations.SavingEventDefaultHandlerParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingEventDefaultHandlerParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventDefaultHandlerParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingEventDefaultHandlerParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.DoYouReallyWantToRemoveRemainderParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveRemainderParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveRemainderParameter : Translations_en_US.DoYouReallyWantToRemoveRemainderParameter);\r\n\t\tTranslations.View = culture === \"fi\" ? Translations_fi.View : (culture === \"sv-FI\" ? Translations_sv_FI.View : Translations_en_US.View);\r\n\t\tTranslations.ArchivingWhistleBlowsParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.ArchivingWhistleBlowsParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.ArchivingWhistleBlowsParameterWasNotSuccessfulErrorParameter : Translations_en_US.ArchivingWhistleBlowsParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.SavingMessageSendEmailParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingMessageSendEmailParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingMessageSendEmailParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingMessageSendEmailParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.AddCompanyToCompanyGroup = culture === \"fi\" ? Translations_fi.AddCompanyToCompanyGroup : (culture === \"sv-FI\" ? Translations_sv_FI.AddCompanyToCompanyGroup : Translations_en_US.AddCompanyToCompanyGroup);\r\n\t\tTranslations.WhistleBlowResolutionRejected = culture === \"fi\" ? Translations_fi.WhistleBlowResolutionRejected : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowResolutionRejected : Translations_en_US.WhistleBlowResolutionRejected);\r\n\t\tTranslations.DeletingRecordUserTransferredPropertyParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingRecordUserTransferredPropertyParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordUserTransferredPropertyParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingRecordUserTransferredPropertyParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.VoucherPrefix = culture === \"fi\" ? Translations_fi.VoucherPrefix : (culture === \"sv-FI\" ? Translations_sv_FI.VoucherPrefix : Translations_en_US.VoucherPrefix);\r\n\t\tTranslations.SavingRecordUserParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingRecordUserParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingRecordUserParameterWasSuccessful : Translations_en_US.SavingRecordUserParameterWasSuccessful);\r\n\t\tTranslations.InternalAttachments = culture === \"fi\" ? Translations_fi.InternalAttachments : (culture === \"sv-FI\" ? Translations_sv_FI.InternalAttachments : Translations_en_US.InternalAttachments);\r\n\t\tTranslations.CalendarTask = culture === \"fi\" ? Translations_fi.CalendarTask : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTask : Translations_en_US.CalendarTask);\r\n\t\tTranslations.AllCalendarTaskUsers = culture === \"fi\" ? Translations_fi.AllCalendarTaskUsers : (culture === \"sv-FI\" ? Translations_sv_FI.AllCalendarTaskUsers : Translations_en_US.AllCalendarTaskUsers);\r\n\t\tTranslations.MaximumSizeOfSingleAttachment = culture === \"fi\" ? Translations_fi.MaximumSizeOfSingleAttachment : (culture === \"sv-FI\" ? Translations_sv_FI.MaximumSizeOfSingleAttachment : Translations_en_US.MaximumSizeOfSingleAttachment);\r\n\t\tTranslations.ShortName = culture === \"fi\" ? Translations_fi.ShortName : (culture === \"sv-FI\" ? Translations_sv_FI.ShortName : Translations_en_US.ShortName);\r\n\t\tTranslations.DeletingRecordUserParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingRecordUserParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordUserParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingRecordUserParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.Sorting = culture === \"fi\" ? Translations_fi.Sorting : (culture === \"sv-FI\" ? Translations_sv_FI.Sorting : Translations_en_US.Sorting);\r\n\t\tTranslations.AddingCalendarTaskHandlerWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.AddingCalendarTaskHandlerWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.AddingCalendarTaskHandlerWasNotSuccessfulErrorParameter : Translations_en_US.AddingCalendarTaskHandlerWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.GroupByFamiliarization = culture === \"fi\" ? Translations_fi.GroupByFamiliarization : (culture === \"sv-FI\" ? Translations_sv_FI.GroupByFamiliarization : Translations_en_US.GroupByFamiliarization);\r\n\t\tTranslations.DoYouReallyWantToRestoreThisInstantMessage = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRestoreThisInstantMessage : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRestoreThisInstantMessage : Translations_en_US.DoYouReallyWantToRestoreThisInstantMessage);\r\n\t\tTranslations.DeletingKeywordsParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingKeywordsParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingKeywordsParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingKeywordsParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.RecordUserLogEntryTypeReport = culture === \"fi\" ? Translations_fi.RecordUserLogEntryTypeReport : (culture === \"sv-FI\" ? Translations_sv_FI.RecordUserLogEntryTypeReport : Translations_en_US.RecordUserLogEntryTypeReport);\r\n\t\tTranslations.AddFurtherEducations = culture === \"fi\" ? Translations_fi.AddFurtherEducations : (culture === \"sv-FI\" ? Translations_sv_FI.AddFurtherEducations : Translations_en_US.AddFurtherEducations);\r\n\t\tTranslations.AddNew = culture === \"fi\" ? Translations_fi.AddNew : (culture === \"sv-FI\" ? Translations_sv_FI.AddNew : Translations_en_US.AddNew);\r\n\t\tTranslations.SelectSubject = culture === \"fi\" ? Translations_fi.SelectSubject : (culture === \"sv-FI\" ? Translations_sv_FI.SelectSubject : Translations_en_US.SelectSubject);\r\n\t\tTranslations.AccessRightNone = culture === \"fi\" ? Translations_fi.AccessRightNone : (culture === \"sv-FI\" ? Translations_sv_FI.AccessRightNone : Translations_en_US.AccessRightNone);\r\n\t\tTranslations.Course = culture === \"fi\" ? Translations_fi.Course : (culture === \"sv-FI\" ? Translations_sv_FI.Course : Translations_en_US.Course);\r\n\t\tTranslations.AddChildEventType = culture === \"fi\" ? Translations_fi.AddChildEventType : (culture === \"sv-FI\" ? Translations_sv_FI.AddChildEventType : Translations_en_US.AddChildEventType);\r\n\t\tTranslations.FormColumnTitle = culture === \"fi\" ? Translations_fi.FormColumnTitle : (culture === \"sv-FI\" ? Translations_sv_FI.FormColumnTitle : Translations_en_US.FormColumnTitle);\r\n\t\tTranslations.ExternalSystemUserCodeMustBeDefined = culture === \"fi\" ? Translations_fi.ExternalSystemUserCodeMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.ExternalSystemUserCodeMustBeDefined : Translations_en_US.ExternalSystemUserCodeMustBeDefined);\r\n\t\tTranslations.SavingRecordUserTransferredPropertyParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingRecordUserTransferredPropertyParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingRecordUserTransferredPropertyParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingRecordUserTransferredPropertyParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.AddChildDefaultEventType = culture === \"fi\" ? Translations_fi.AddChildDefaultEventType : (culture === \"sv-FI\" ? Translations_sv_FI.AddChildDefaultEventType : Translations_en_US.AddChildDefaultEventType);\r\n\t\tTranslations.DeletingCompaniesParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingCompaniesParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingCompaniesParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingCompaniesParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.PropertyTransferred = culture === \"fi\" ? Translations_fi.PropertyTransferred : (culture === \"sv-FI\" ? Translations_sv_FI.PropertyTransferred : Translations_en_US.PropertyTransferred);\r\n\t\tTranslations.DeletingCalendarTaskParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingCalendarTaskParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingCalendarTaskParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingCalendarTaskParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.NewRecordUserMustBeSavedBeforeEmploymentsCanBeAdded = culture === \"fi\" ? Translations_fi.NewRecordUserMustBeSavedBeforeEmploymentsCanBeAdded : (culture === \"sv-FI\" ? Translations_sv_FI.NewRecordUserMustBeSavedBeforeEmploymentsCanBeAdded : Translations_en_US.NewRecordUserMustBeSavedBeforeEmploymentsCanBeAdded);\r\n\t\tTranslations.DoYouReallyWantToRemoveInstantMessageChannelParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveInstantMessageChannelParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveInstantMessageChannelParameter : Translations_en_US.DoYouReallyWantToRemoveInstantMessageChannelParameter);\r\n\t\tTranslations.Familiarizations = culture === \"fi\" ? Translations_fi.Familiarizations : (culture === \"sv-FI\" ? Translations_sv_FI.Familiarizations : Translations_en_US.Familiarizations);\r\n\t\tTranslations.Row = culture === \"fi\" ? Translations_fi.Row : (culture === \"sv-FI\" ? Translations_sv_FI.Row : Translations_en_US.Row);\r\n\t\tTranslations.RemovePicture = culture === \"fi\" ? Translations_fi.RemovePicture : (culture === \"sv-FI\" ? Translations_sv_FI.RemovePicture : Translations_en_US.RemovePicture);\r\n\t\tTranslations.DeletingRecordFurtherEducationGroupParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingRecordFurtherEducationGroupParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordFurtherEducationGroupParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingRecordFurtherEducationGroupParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.FormCheckbox = culture === \"fi\" ? Translations_fi.FormCheckbox : (culture === \"sv-FI\" ? Translations_sv_FI.FormCheckbox : Translations_en_US.FormCheckbox);\r\n\t\tTranslations.NewCompanyMustBeSavedBeforePartnersCanBeAdded = culture === \"fi\" ? Translations_fi.NewCompanyMustBeSavedBeforePartnersCanBeAdded : (culture === \"sv-FI\" ? Translations_sv_FI.NewCompanyMustBeSavedBeforePartnersCanBeAdded : Translations_en_US.NewCompanyMustBeSavedBeforePartnersCanBeAdded);\r\n\t\tTranslations.RemoveRecordUserAndUserSetExpired = culture === \"fi\" ? Translations_fi.RemoveRecordUserAndUserSetExpired : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveRecordUserAndUserSetExpired : Translations_en_US.RemoveRecordUserAndUserSetExpired);\r\n\t\tTranslations.InstantMessageChannelAdministrator = culture === \"fi\" ? Translations_fi.InstantMessageChannelAdministrator : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageChannelAdministrator : Translations_en_US.InstantMessageChannelAdministrator);\r\n\t\tTranslations.AddEventPartner = culture === \"fi\" ? Translations_fi.AddEventPartner : (culture === \"sv-FI\" ? Translations_sv_FI.AddEventPartner : Translations_en_US.AddEventPartner);\r\n\t\tTranslations.Employment = culture === \"fi\" ? Translations_fi.Employment : (culture === \"sv-FI\" ? Translations_sv_FI.Employment : Translations_en_US.Employment);\r\n\t\tTranslations.SavingUserGroupParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingUserGroupParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingUserGroupParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingUserGroupParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.DeletingRecordQualificationsParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingRecordQualificationsParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordQualificationsParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingRecordQualificationsParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.SavingEventTypeCParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingEventTypeCParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventTypeCParameterWasSuccessful : Translations_en_US.SavingEventTypeCParameterWasSuccessful);\r\n\t\tTranslations.IncludeArchivedRecordUsers = culture === \"fi\" ? Translations_fi.IncludeArchivedRecordUsers : (culture === \"sv-FI\" ? Translations_sv_FI.IncludeArchivedRecordUsers : Translations_en_US.IncludeArchivedRecordUsers);\r\n\t\tTranslations.CopyDefaultHandlersToAllSameLevelUnits = culture === \"fi\" ? Translations_fi.CopyDefaultHandlersToAllSameLevelUnits : (culture === \"sv-FI\" ? Translations_sv_FI.CopyDefaultHandlersToAllSameLevelUnits : Translations_en_US.CopyDefaultHandlersToAllSameLevelUnits);\r\n\t\tTranslations.WhistleBlowInformantHint = culture === \"fi\" ? Translations_fi.WhistleBlowInformantHint : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowInformantHint : Translations_en_US.WhistleBlowInformantHint);\r\n\t\tTranslations.DeletingEventTypeParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingEventTypeParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingEventTypeParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingEventTypeParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.DeletingRecordUserTransferredPropertiesParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingRecordUserTransferredPropertiesParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordUserTransferredPropertiesParameterWasSuccessful : Translations_en_US.DeletingRecordUserTransferredPropertiesParameterWasSuccessful);\r\n\t\tTranslations.InvitationPasswordReset = culture === \"fi\" ? Translations_fi.InvitationPasswordReset : (culture === \"sv-FI\" ? Translations_sv_FI.InvitationPasswordReset : Translations_en_US.InvitationPasswordReset);\r\n\t\tTranslations.Handlers = culture === \"fi\" ? Translations_fi.Handlers : (culture === \"sv-FI\" ? Translations_sv_FI.Handlers : Translations_en_US.Handlers);\r\n\t\tTranslations.DeletingRecordUserTransferredPropertyParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingRecordUserTransferredPropertyParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordUserTransferredPropertyParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingRecordUserTransferredPropertyParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.MobileAppInUse = culture === \"fi\" ? Translations_fi.MobileAppInUse : (culture === \"sv-FI\" ? Translations_sv_FI.MobileAppInUse : Translations_en_US.MobileAppInUse);\r\n\t\tTranslations.CompanyThatIsRelatedToEventsCannotBeDeleted = culture === \"fi\" ? Translations_fi.CompanyThatIsRelatedToEventsCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyThatIsRelatedToEventsCannotBeDeleted : Translations_en_US.CompanyThatIsRelatedToEventsCannotBeDeleted);\r\n\t\tTranslations.AddEventHandler = culture === \"fi\" ? Translations_fi.AddEventHandler : (culture === \"sv-FI\" ? Translations_sv_FI.AddEventHandler : Translations_en_US.AddEventHandler);\r\n\t\tTranslations.RecordUserExcelFurtherEducation = culture === \"fi\" ? Translations_fi.RecordUserExcelFurtherEducation : (culture === \"sv-FI\" ? Translations_sv_FI.RecordUserExcelFurtherEducation : Translations_en_US.RecordUserExcelFurtherEducation);\r\n\t\tTranslations.EditAttachment = culture === \"fi\" ? Translations_fi.EditAttachment : (culture === \"sv-FI\" ? Translations_sv_FI.EditAttachment : Translations_en_US.EditAttachment);\r\n\t\tTranslations.Tasks = culture === \"fi\" ? Translations_fi.Tasks : (culture === \"sv-FI\" ? Translations_sv_FI.Tasks : Translations_en_US.Tasks);\r\n\t\tTranslations.SavingCompanyParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingCompanyParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingCompanyParameterWasSuccessful : Translations_en_US.SavingCompanyParameterWasSuccessful);\r\n\t\tTranslations.AddingRecordUserSalaryRowsWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.AddingRecordUserSalaryRowsWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.AddingRecordUserSalaryRowsWasNotSuccessfulErrorParameter : Translations_en_US.AddingRecordUserSalaryRowsWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.EmailNotificationOfChangedPublishStatus = culture === \"fi\" ? Translations_fi.EmailNotificationOfChangedPublishStatus : (culture === \"sv-FI\" ? Translations_sv_FI.EmailNotificationOfChangedPublishStatus : Translations_en_US.EmailNotificationOfChangedPublishStatus);\r\n\t\tTranslations.SavingCompanyGroupParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingCompanyGroupParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingCompanyGroupParameterWasSuccessful : Translations_en_US.SavingCompanyGroupParameterWasSuccessful);\r\n\t\tTranslations.ParameterIsNotValidAccountIBANNumber = culture === \"fi\" ? Translations_fi.ParameterIsNotValidAccountIBANNumber : (culture === \"sv-FI\" ? Translations_sv_FI.ParameterIsNotValidAccountIBANNumber : Translations_en_US.ParameterIsNotValidAccountIBANNumber);\r\n\t\tTranslations.YouDeletedThisMessage = culture === \"fi\" ? Translations_fi.YouDeletedThisMessage : (culture === \"sv-FI\" ? Translations_sv_FI.YouDeletedThisMessage : Translations_en_US.YouDeletedThisMessage);\r\n\t\tTranslations.WhistleBlowChannelSettings = culture === \"fi\" ? Translations_fi.WhistleBlowChannelSettings : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowChannelSettings : Translations_en_US.WhistleBlowChannelSettings);\r\n\t\tTranslations.DefaultTaskPriorities = culture === \"fi\" ? Translations_fi.DefaultTaskPriorities : (culture === \"sv-FI\" ? Translations_sv_FI.DefaultTaskPriorities : Translations_en_US.DefaultTaskPriorities);\r\n\t\tTranslations.DeletingKeywordParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingKeywordParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingKeywordParameterWasSuccessful : Translations_en_US.DeletingKeywordParameterWasSuccessful);\r\n\t\tTranslations.InstantMessageChannelRemoveFromYourselfFromAdministratorsConfirmation = culture === \"fi\" ? Translations_fi.InstantMessageChannelRemoveFromYourselfFromAdministratorsConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageChannelRemoveFromYourselfFromAdministratorsConfirmation : Translations_en_US.InstantMessageChannelRemoveFromYourselfFromAdministratorsConfirmation);\r\n\t\tTranslations.Unkown = culture === \"fi\" ? Translations_fi.Unkown : (culture === \"sv-FI\" ? Translations_sv_FI.Unkown : Translations_en_US.Unkown);\r\n\t\tTranslations.SavingEventSettingsWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingEventSettingsWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventSettingsWasNotSuccessfulConcurrencyError : Translations_en_US.SavingEventSettingsWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.SavingRecordUserTransferredPropertyParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingRecordUserTransferredPropertyParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingRecordUserTransferredPropertyParameterWasSuccessful : Translations_en_US.SavingRecordUserTransferredPropertyParameterWasSuccessful);\r\n\t\tTranslations.WhistleBlowInformantDescription = culture === \"fi\" ? Translations_fi.WhistleBlowInformantDescription : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowInformantDescription : Translations_en_US.WhistleBlowInformantDescription);\r\n\t\tTranslations.DoYouReallyWantToRemoveCalendarTaskParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveCalendarTaskParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveCalendarTaskParameter : Translations_en_US.DoYouReallyWantToRemoveCalendarTaskParameter);\r\n\t\tTranslations.SavingRecordUserQualificationParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingRecordUserQualificationParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingRecordUserQualificationParameterWasSuccessful : Translations_en_US.SavingRecordUserQualificationParameterWasSuccessful);\r\n\t\tTranslations.SendInvitationEmailToImportedUsers = culture === \"fi\" ? Translations_fi.SendInvitationEmailToImportedUsers : (culture === \"sv-FI\" ? Translations_sv_FI.SendInvitationEmailToImportedUsers : Translations_en_US.SendInvitationEmailToImportedUsers);\r\n\t\tTranslations.ActiveUserRightsCannotBeCopiedToDirectoryItemFolderParameter = culture === \"fi\" ? Translations_fi.ActiveUserRightsCannotBeCopiedToDirectoryItemFolderParameter : (culture === \"sv-FI\" ? Translations_sv_FI.ActiveUserRightsCannotBeCopiedToDirectoryItemFolderParameter : Translations_en_US.ActiveUserRightsCannotBeCopiedToDirectoryItemFolderParameter);\r\n\t\tTranslations.SavingJobParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingJobParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingJobParameterWasSuccessful : Translations_en_US.SavingJobParameterWasSuccessful);\r\n\t\tTranslations.Favorites = culture === \"fi\" ? Translations_fi.Favorites : (culture === \"sv-FI\" ? Translations_sv_FI.Favorites : Translations_en_US.Favorites);\r\n\t\tTranslations.SentEmails = culture === \"fi\" ? Translations_fi.SentEmails : (culture === \"sv-FI\" ? Translations_sv_FI.SentEmails : Translations_en_US.SentEmails);\r\n\t\tTranslations.WhistleBlowReportIHaveSavedThePassword = culture === \"fi\" ? Translations_fi.WhistleBlowReportIHaveSavedThePassword : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowReportIHaveSavedThePassword : Translations_en_US.WhistleBlowReportIHaveSavedThePassword);\r\n\t\tTranslations.SearchDocuments = culture === \"fi\" ? Translations_fi.SearchDocuments : (culture === \"sv-FI\" ? Translations_sv_FI.SearchDocuments : Translations_en_US.SearchDocuments);\r\n\t\tTranslations.DoYouReallyWantToUnlockEvent = culture === \"fi\" ? Translations_fi.DoYouReallyWantToUnlockEvent : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToUnlockEvent : Translations_en_US.DoYouReallyWantToUnlockEvent);\r\n\t\tTranslations.Invoicing = culture === \"fi\" ? Translations_fi.Invoicing : (culture === \"sv-FI\" ? Translations_sv_FI.Invoicing : Translations_en_US.Invoicing);\r\n\t\tTranslations.ChartType = culture === \"fi\" ? Translations_fi.ChartType : (culture === \"sv-FI\" ? Translations_sv_FI.ChartType : Translations_en_US.ChartType);\r\n\t\tTranslations.Sender = culture === \"fi\" ? Translations_fi.Sender : (culture === \"sv-FI\" ? Translations_sv_FI.Sender : Translations_en_US.Sender);\r\n\t\tTranslations.DefaultStyle = culture === \"fi\" ? Translations_fi.DefaultStyle : (culture === \"sv-FI\" ? Translations_sv_FI.DefaultStyle : Translations_en_US.DefaultStyle);\r\n\t\tTranslations.ReadImp = culture === \"fi\" ? Translations_fi.ReadImp : (culture === \"sv-FI\" ? Translations_sv_FI.ReadImp : Translations_en_US.ReadImp);\r\n\t\tTranslations.AddUserParameterWasSuccessful = culture === \"fi\" ? Translations_fi.AddUserParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.AddUserParameterWasSuccessful : Translations_en_US.AddUserParameterWasSuccessful);\r\n\t\tTranslations.RecordUserLogEntryTypeOpen = culture === \"fi\" ? Translations_fi.RecordUserLogEntryTypeOpen : (culture === \"sv-FI\" ? Translations_sv_FI.RecordUserLogEntryTypeOpen : Translations_en_US.RecordUserLogEntryTypeOpen);\r\n\t\tTranslations.ExternalSystemCompanyTokenParameterIsAlreadyInUse = culture === \"fi\" ? Translations_fi.ExternalSystemCompanyTokenParameterIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.ExternalSystemCompanyTokenParameterIsAlreadyInUse : Translations_en_US.ExternalSystemCompanyTokenParameterIsAlreadyInUse);\r\n\t\tTranslations.RecurringCalendarTaskCannotHaveMoreThanParameterOccurences = culture === \"fi\" ? Translations_fi.RecurringCalendarTaskCannotHaveMoreThanParameterOccurences : (culture === \"sv-FI\" ? Translations_sv_FI.RecurringCalendarTaskCannotHaveMoreThanParameterOccurences : Translations_en_US.RecurringCalendarTaskCannotHaveMoreThanParameterOccurences);\r\n\t\tTranslations.UsersOfThisCompany = culture === \"fi\" ? Translations_fi.UsersOfThisCompany : (culture === \"sv-FI\" ? Translations_sv_FI.UsersOfThisCompany : Translations_en_US.UsersOfThisCompany);\r\n\t\tTranslations.EmploymentEndDate = culture === \"fi\" ? Translations_fi.EmploymentEndDate : (culture === \"sv-FI\" ? Translations_sv_FI.EmploymentEndDate : Translations_en_US.EmploymentEndDate);\r\n\t\tTranslations.JobDataIsEmpty = culture === \"fi\" ? Translations_fi.JobDataIsEmpty : (culture === \"sv-FI\" ? Translations_sv_FI.JobDataIsEmpty : Translations_en_US.JobDataIsEmpty);\r\n\t\tTranslations.SavingCalendarTaskParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingCalendarTaskParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingCalendarTaskParameterWasSuccessful : Translations_en_US.SavingCalendarTaskParameterWasSuccessful);\r\n\t\tTranslations.UpdateUserGroupParameterExternalSystemsWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.UpdateUserGroupParameterExternalSystemsWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.UpdateUserGroupParameterExternalSystemsWasNotSuccessfulConcurrencyError : Translations_en_US.UpdateUserGroupParameterExternalSystemsWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.ExpiredFurtherEducations = culture === \"fi\" ? Translations_fi.ExpiredFurtherEducations : (culture === \"sv-FI\" ? Translations_sv_FI.ExpiredFurtherEducations : Translations_en_US.ExpiredFurtherEducations);\r\n\t\tTranslations.SavingUnitsWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingUnitsWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingUnitsWasNotSuccessfulErrorParameter : Translations_en_US.SavingUnitsWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.WhistleBlowAnonymityAnonymous = culture === \"fi\" ? Translations_fi.WhistleBlowAnonymityAnonymous : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowAnonymityAnonymous : Translations_en_US.WhistleBlowAnonymityAnonymous);\r\n\t\tTranslations.TaskDataRowFieldParameterNotFoundInDataSchema = culture === \"fi\" ? Translations_fi.TaskDataRowFieldParameterNotFoundInDataSchema : (culture === \"sv-FI\" ? Translations_sv_FI.TaskDataRowFieldParameterNotFoundInDataSchema : Translations_en_US.TaskDataRowFieldParameterNotFoundInDataSchema);\r\n\t\tTranslations.CalendarTaskEditOccurrence = culture === \"fi\" ? Translations_fi.CalendarTaskEditOccurrence : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskEditOccurrence : Translations_en_US.CalendarTaskEditOccurrence);\r\n\t\tTranslations.DoYouReallyWantToRemoveEventUrgencyClassParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveEventUrgencyClassParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveEventUrgencyClassParameter : Translations_en_US.DoYouReallyWantToRemoveEventUrgencyClassParameter);\r\n\t\tTranslations.UserFilterActive = culture === \"fi\" ? Translations_fi.UserFilterActive : (culture === \"sv-FI\" ? Translations_sv_FI.UserFilterActive : Translations_en_US.UserFilterActive);\r\n\t\tTranslations.CompanyNameMustBeDefined = culture === \"fi\" ? Translations_fi.CompanyNameMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyNameMustBeDefined : Translations_en_US.CompanyNameMustBeDefined);\r\n\t\tTranslations.SavingEventParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingEventParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventParameterWasSuccessful : Translations_en_US.SavingEventParameterWasSuccessful);\r\n\t\tTranslations.LockingEventParameterWasNotSuccessful = culture === \"fi\" ? Translations_fi.LockingEventParameterWasNotSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.LockingEventParameterWasNotSuccessful : Translations_en_US.LockingEventParameterWasNotSuccessful);\r\n\t\tTranslations.AdditionalInformation = culture === \"fi\" ? Translations_fi.AdditionalInformation : (culture === \"sv-FI\" ? Translations_sv_FI.AdditionalInformation : Translations_en_US.AdditionalInformation);\r\n\t\tTranslations.SetUnitPermissions = culture === \"fi\" ? Translations_fi.SetUnitPermissions : (culture === \"sv-FI\" ? Translations_sv_FI.SetUnitPermissions : Translations_en_US.SetUnitPermissions);\r\n\t\tTranslations.PrintRow = culture === \"fi\" ? Translations_fi.PrintRow : (culture === \"sv-FI\" ? Translations_sv_FI.PrintRow : Translations_en_US.PrintRow);\r\n\t\tTranslations.TimeSpanHalfYear = culture === \"fi\" ? Translations_fi.TimeSpanHalfYear : (culture === \"sv-FI\" ? Translations_sv_FI.TimeSpanHalfYear : Translations_en_US.TimeSpanHalfYear);\r\n\t\tTranslations.ExpiresInParameterDays = culture === \"fi\" ? Translations_fi.ExpiresInParameterDays : (culture === \"sv-FI\" ? Translations_sv_FI.ExpiresInParameterDays : Translations_en_US.ExpiresInParameterDays);\r\n\t\tTranslations.SavingEventTypeCParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingEventTypeCParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventTypeCParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingEventTypeCParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.EditableDocumentCodeMustBeDefined = culture === \"fi\" ? Translations_fi.EditableDocumentCodeMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.EditableDocumentCodeMustBeDefined : Translations_en_US.EditableDocumentCodeMustBeDefined);\r\n\t\tTranslations.EditFurtherEducation = culture === \"fi\" ? Translations_fi.EditFurtherEducation : (culture === \"sv-FI\" ? Translations_sv_FI.EditFurtherEducation : Translations_en_US.EditFurtherEducation);\r\n\t\tTranslations.EventTypeCodeMustBeDefined = culture === \"fi\" ? Translations_fi.EventTypeCodeMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.EventTypeCodeMustBeDefined : Translations_en_US.EventTypeCodeMustBeDefined);\r\n\t\tTranslations.No = culture === \"fi\" ? Translations_fi.No : (culture === \"sv-FI\" ? Translations_sv_FI.No : Translations_en_US.No);\r\n\t\tTranslations.RemoveEvent = culture === \"fi\" ? Translations_fi.RemoveEvent : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveEvent : Translations_en_US.RemoveEvent);\r\n\t\tTranslations.ChooseHowYouWantToReport = culture === \"fi\" ? Translations_fi.ChooseHowYouWantToReport : (culture === \"sv-FI\" ? Translations_sv_FI.ChooseHowYouWantToReport : Translations_en_US.ChooseHowYouWantToReport);\r\n\t\tTranslations.ChangedObserverAction = culture === \"fi\" ? Translations_fi.ChangedObserverAction : (culture === \"sv-FI\" ? Translations_sv_FI.ChangedObserverAction : Translations_en_US.ChangedObserverAction);\r\n\t\tTranslations.FormCodeIsAlreadyInUse = culture === \"fi\" ? Translations_fi.FormCodeIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.FormCodeIsAlreadyInUse : Translations_en_US.FormCodeIsAlreadyInUse);\r\n\t\tTranslations.RecordUserReport = culture === \"fi\" ? Translations_fi.RecordUserReport : (culture === \"sv-FI\" ? Translations_sv_FI.RecordUserReport : Translations_en_US.RecordUserReport);\r\n\t\tTranslations.RecordUserActiveStateChangePermissionDeniedInUnitParameter = culture === \"fi\" ? Translations_fi.RecordUserActiveStateChangePermissionDeniedInUnitParameter : (culture === \"sv-FI\" ? Translations_sv_FI.RecordUserActiveStateChangePermissionDeniedInUnitParameter : Translations_en_US.RecordUserActiveStateChangePermissionDeniedInUnitParameter);\r\n\t\tTranslations.DoYouReallyWantToRemoveRecordUserParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveRecordUserParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveRecordUserParameter : Translations_en_US.DoYouReallyWantToRemoveRecordUserParameter);\r\n\t\tTranslations.Go = culture === \"fi\" ? Translations_fi.Go : (culture === \"sv-FI\" ? Translations_sv_FI.Go : Translations_en_US.Go);\r\n\t\tTranslations.FormRowPrint = culture === \"fi\" ? Translations_fi.FormRowPrint : (culture === \"sv-FI\" ? Translations_sv_FI.FormRowPrint : Translations_en_US.FormRowPrint);\r\n\t\tTranslations.TimeSpanMonth = culture === \"fi\" ? Translations_fi.TimeSpanMonth : (culture === \"sv-FI\" ? Translations_sv_FI.TimeSpanMonth : Translations_en_US.TimeSpanMonth);\r\n\t\tTranslations.RemoveDefaultTaskType = culture === \"fi\" ? Translations_fi.RemoveDefaultTaskType : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveDefaultTaskType : Translations_en_US.RemoveDefaultTaskType);\r\n\t\tTranslations.SavingRecordFurtherEducationGroupParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingRecordFurtherEducationGroupParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingRecordFurtherEducationGroupParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingRecordFurtherEducationGroupParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.ReadReceiptMessage = culture === \"fi\" ? Translations_fi.ReadReceiptMessage : (culture === \"sv-FI\" ? Translations_sv_FI.ReadReceiptMessage : Translations_en_US.ReadReceiptMessage);\r\n\t\tTranslations.DeletingDocumentTemplateParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingDocumentTemplateParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingDocumentTemplateParameterWasSuccessful : Translations_en_US.DeletingDocumentTemplateParameterWasSuccessful);\r\n\t\tTranslations.DeletingUserGroupUsersOfCompanyParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingUserGroupUsersOfCompanyParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingUserGroupUsersOfCompanyParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingUserGroupUsersOfCompanyParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.DeletingEventTypeParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingEventTypeParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingEventTypeParameterWasSuccessful : Translations_en_US.DeletingEventTypeParameterWasSuccessful);\r\n\t\tTranslations.FamiliarizationsMustBeDefinedBeforeAddingRecordUserFamiliarizations = culture === \"fi\" ? Translations_fi.FamiliarizationsMustBeDefinedBeforeAddingRecordUserFamiliarizations : (culture === \"sv-FI\" ? Translations_sv_FI.FamiliarizationsMustBeDefinedBeforeAddingRecordUserFamiliarizations : Translations_en_US.FamiliarizationsMustBeDefinedBeforeAddingRecordUserFamiliarizations);\r\n\t\tTranslations.AddFolder = culture === \"fi\" ? Translations_fi.AddFolder : (culture === \"sv-FI\" ? Translations_sv_FI.AddFolder : Translations_en_US.AddFolder);\r\n\t\tTranslations.Locked = culture === \"fi\" ? Translations_fi.Locked : (culture === \"sv-FI\" ? Translations_sv_FI.Locked : Translations_en_US.Locked);\r\n\t\tTranslations.UserProfile = culture === \"fi\" ? Translations_fi.UserProfile : (culture === \"sv-FI\" ? Translations_sv_FI.UserProfile : Translations_en_US.UserProfile);\r\n\t\tTranslations.InstantMessageChannelArchivingTypeRemoveChannelAtDateParameter = culture === \"fi\" ? Translations_fi.InstantMessageChannelArchivingTypeRemoveChannelAtDateParameter : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageChannelArchivingTypeRemoveChannelAtDateParameter : Translations_en_US.InstantMessageChannelArchivingTypeRemoveChannelAtDateParameter);\r\n\t\tTranslations.Users = culture === \"fi\" ? Translations_fi.Users : (culture === \"sv-FI\" ? Translations_sv_FI.Users : Translations_en_US.Users);\r\n\t\tTranslations.SelectOperatorOrFunction = culture === \"fi\" ? Translations_fi.SelectOperatorOrFunction : (culture === \"sv-FI\" ? Translations_sv_FI.SelectOperatorOrFunction : Translations_en_US.SelectOperatorOrFunction);\r\n\t\tTranslations.ExternalSystemDatabaseInterfaceError = culture === \"fi\" ? Translations_fi.ExternalSystemDatabaseInterfaceError : (culture === \"sv-FI\" ? Translations_sv_FI.ExternalSystemDatabaseInterfaceError : Translations_en_US.ExternalSystemDatabaseInterfaceError);\r\n\t\tTranslations.PublishVoucherInOutReportToFileSystem = culture === \"fi\" ? Translations_fi.PublishVoucherInOutReportToFileSystem : (culture === \"sv-FI\" ? Translations_sv_FI.PublishVoucherInOutReportToFileSystem : Translations_en_US.PublishVoucherInOutReportToFileSystem);\r\n\t\tTranslations.DeletingMessageTypeParameterWasNotSuccessfulUsedInParameterMessages = culture === \"fi\" ? Translations_fi.DeletingMessageTypeParameterWasNotSuccessfulUsedInParameterMessages : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingMessageTypeParameterWasNotSuccessfulUsedInParameterMessages : Translations_en_US.DeletingMessageTypeParameterWasNotSuccessfulUsedInParameterMessages);\r\n\t\tTranslations.LockedEventParameterCannotBeDeleted = culture === \"fi\" ? Translations_fi.LockedEventParameterCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.LockedEventParameterCannotBeDeleted : Translations_en_US.LockedEventParameterCannotBeDeleted);\r\n\t\tTranslations.TaskStateCodeIsAlreadyInUse = culture === \"fi\" ? Translations_fi.TaskStateCodeIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.TaskStateCodeIsAlreadyInUse : Translations_en_US.TaskStateCodeIsAlreadyInUse);\r\n\t\tTranslations.ClearSubUnitPermissions = culture === \"fi\" ? Translations_fi.ClearSubUnitPermissions : (culture === \"sv-FI\" ? Translations_sv_FI.ClearSubUnitPermissions : Translations_en_US.ClearSubUnitPermissions);\r\n\t\tTranslations.DaysAgo30 = culture === \"fi\" ? Translations_fi.DaysAgo30 : (culture === \"sv-FI\" ? Translations_sv_FI.DaysAgo30 : Translations_en_US.DaysAgo30);\r\n\t\tTranslations.SavingImagesWasSuccessful = culture === \"fi\" ? Translations_fi.SavingImagesWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingImagesWasSuccessful : Translations_en_US.SavingImagesWasSuccessful);\r\n\t\tTranslations.SavingDocumentTemplateParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingDocumentTemplateParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingDocumentTemplateParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingDocumentTemplateParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.JobTypePushNotification = culture === \"fi\" ? Translations_fi.JobTypePushNotification : (culture === \"sv-FI\" ? Translations_sv_FI.JobTypePushNotification : Translations_en_US.JobTypePushNotification);\r\n\t\tTranslations.AddTaskState = culture === \"fi\" ? Translations_fi.AddTaskState : (culture === \"sv-FI\" ? Translations_sv_FI.AddTaskState : Translations_en_US.AddTaskState);\r\n\t\tTranslations.SavingTaskStateParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingTaskStateParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingTaskStateParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingTaskStateParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.DoYouReallyWantToRemoveFolderParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveFolderParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveFolderParameter : Translations_en_US.DoYouReallyWantToRemoveFolderParameter);\r\n\t\tTranslations.CopyContentToDocumentContent = culture === \"fi\" ? Translations_fi.CopyContentToDocumentContent : (culture === \"sv-FI\" ? Translations_sv_FI.CopyContentToDocumentContent : Translations_en_US.CopyContentToDocumentContent);\r\n\t\tTranslations.LanguageNonLocalSwedish = culture === \"fi\" ? Translations_fi.LanguageNonLocalSwedish : (culture === \"sv-FI\" ? Translations_sv_FI.LanguageNonLocalSwedish : Translations_en_US.LanguageNonLocalSwedish);\r\n\t\tTranslations.LanguageSwedish = culture === \"fi\" ? Translations_fi.LanguageSwedish : (culture === \"sv-FI\" ? Translations_sv_FI.LanguageSwedish : Translations_en_US.LanguageSwedish);\r\n\t\tTranslations.SavePrintAs = culture === \"fi\" ? Translations_fi.SavePrintAs : (culture === \"sv-FI\" ? Translations_sv_FI.SavePrintAs : Translations_en_US.SavePrintAs);\r\n\t\tTranslations.WhistleBlowStateNew = culture === \"fi\" ? Translations_fi.WhistleBlowStateNew : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowStateNew : Translations_en_US.WhistleBlowStateNew);\r\n\t\tTranslations.EventTypesMustBeDefinedBeforeAddingEvents = culture === \"fi\" ? Translations_fi.EventTypesMustBeDefinedBeforeAddingEvents : (culture === \"sv-FI\" ? Translations_sv_FI.EventTypesMustBeDefinedBeforeAddingEvents : Translations_en_US.EventTypesMustBeDefinedBeforeAddingEvents);\r\n\t\tTranslations.AType = culture === \"fi\" ? Translations_fi.AType : (culture === \"sv-FI\" ? Translations_sv_FI.AType : Translations_en_US.AType);\r\n\t\tTranslations.KeywordParameterNotFound = culture === \"fi\" ? Translations_fi.KeywordParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.KeywordParameterNotFound : Translations_en_US.KeywordParameterNotFound);\r\n\t\tTranslations.AdditionalPermissionAWhistleBlow = culture === \"fi\" ? Translations_fi.AdditionalPermissionAWhistleBlow : (culture === \"sv-FI\" ? Translations_sv_FI.AdditionalPermissionAWhistleBlow : Translations_en_US.AdditionalPermissionAWhistleBlow);\r\n\t\tTranslations.Characters = culture === \"fi\" ? Translations_fi.Characters : (culture === \"sv-FI\" ? Translations_sv_FI.Characters : Translations_en_US.Characters);\r\n\t\tTranslations.ReadReceiptGiven = culture === \"fi\" ? Translations_fi.ReadReceiptGiven : (culture === \"sv-FI\" ? Translations_sv_FI.ReadReceiptGiven : Translations_en_US.ReadReceiptGiven);\r\n\t\tTranslations.WhistleBlowGuide = culture === \"fi\" ? Translations_fi.WhistleBlowGuide : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowGuide : Translations_en_US.WhistleBlowGuide);\r\n\t\tTranslations.WhistleBlowResolutionResolved = culture === \"fi\" ? Translations_fi.WhistleBlowResolutionResolved : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowResolutionResolved : Translations_en_US.WhistleBlowResolutionResolved);\r\n\t\tTranslations.DeletingWhistleBlowCategoryParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingWhistleBlowCategoryParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingWhistleBlowCategoryParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingWhistleBlowCategoryParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.UserGroupParameterIsInUseInParameterUsersAndCannotBeDeleted = culture === \"fi\" ? Translations_fi.UserGroupParameterIsInUseInParameterUsersAndCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.UserGroupParameterIsInUseInParameterUsersAndCannotBeDeleted : Translations_en_US.UserGroupParameterIsInUseInParameterUsersAndCannotBeDeleted);\r\n\t\tTranslations.FormExpression = culture === \"fi\" ? Translations_fi.FormExpression : (culture === \"sv-FI\" ? Translations_sv_FI.FormExpression : Translations_en_US.FormExpression);\r\n\t\tTranslations.FieldParameterMaxLengthIsParameter = culture === \"fi\" ? Translations_fi.FieldParameterMaxLengthIsParameter : (culture === \"sv-FI\" ? Translations_sv_FI.FieldParameterMaxLengthIsParameter : Translations_en_US.FieldParameterMaxLengthIsParameter);\r\n\t\tTranslations.AddingCalendarTaskHandlersWasSuccessful = culture === \"fi\" ? Translations_fi.AddingCalendarTaskHandlersWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.AddingCalendarTaskHandlersWasSuccessful : Translations_en_US.AddingCalendarTaskHandlersWasSuccessful);\r\n\t\tTranslations.DeletingEditableDocumentParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingEditableDocumentParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingEditableDocumentParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingEditableDocumentParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.InstantMessageChannelInformation = culture === \"fi\" ? Translations_fi.InstantMessageChannelInformation : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageChannelInformation : Translations_en_US.InstantMessageChannelInformation);\r\n\t\tTranslations.RecordBasicEducationCodeMustBeDefined = culture === \"fi\" ? Translations_fi.RecordBasicEducationCodeMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.RecordBasicEducationCodeMustBeDefined : Translations_en_US.RecordBasicEducationCodeMustBeDefined);\r\n\t\tTranslations.MyFilters = culture === \"fi\" ? Translations_fi.MyFilters : (culture === \"sv-FI\" ? Translations_sv_FI.MyFilters : Translations_en_US.MyFilters);\r\n\t\tTranslations.Day = culture === \"fi\" ? Translations_fi.Day : (culture === \"sv-FI\" ? Translations_sv_FI.Day : Translations_en_US.Day);\r\n\t\tTranslations.SavingImagesNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingImagesNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingImagesNotSuccessfulErrorParameter : Translations_en_US.SavingImagesNotSuccessfulErrorParameter);\r\n\t\tTranslations.DeletingTaskDataRowWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingTaskDataRowWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingTaskDataRowWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingTaskDataRowWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.DeletingUserParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingUserParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingUserParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingUserParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.RemoveUnit = culture === \"fi\" ? Translations_fi.RemoveUnit : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveUnit : Translations_en_US.RemoveUnit);\r\n\t\tTranslations.TheUserDoesNotHavePermissionsForThisSystem = culture === \"fi\" ? Translations_fi.TheUserDoesNotHavePermissionsForThisSystem : (culture === \"sv-FI\" ? Translations_sv_FI.TheUserDoesNotHavePermissionsForThisSystem : Translations_en_US.TheUserDoesNotHavePermissionsForThisSystem);\r\n\t\tTranslations.EditableDocument = culture === \"fi\" ? Translations_fi.EditableDocument : (culture === \"sv-FI\" ? Translations_sv_FI.EditableDocument : Translations_en_US.EditableDocument);\r\n\t\tTranslations.NewCompanyGroupMustBeSavedBeforeUsersCanBeAdded = culture === \"fi\" ? Translations_fi.NewCompanyGroupMustBeSavedBeforeUsersCanBeAdded : (culture === \"sv-FI\" ? Translations_sv_FI.NewCompanyGroupMustBeSavedBeforeUsersCanBeAdded : Translations_en_US.NewCompanyGroupMustBeSavedBeforeUsersCanBeAdded);\r\n\t\tTranslations.DeletingCalendarTaskCategoriesParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingCalendarTaskCategoriesParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingCalendarTaskCategoriesParameterWasSuccessful : Translations_en_US.DeletingCalendarTaskCategoriesParameterWasSuccessful);\r\n\t\tTranslations.RemoveEventHandler = culture === \"fi\" ? Translations_fi.RemoveEventHandler : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveEventHandler : Translations_en_US.RemoveEventHandler);\r\n\t\tTranslations.SavingTaskTypeParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingTaskTypeParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingTaskTypeParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingTaskTypeParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.List = culture === \"fi\" ? Translations_fi.List : (culture === \"sv-FI\" ? Translations_sv_FI.List : Translations_en_US.List);\r\n\t\tTranslations.ErrorUserChangeWouldLeadToInvalidDefaultEventHandlers = culture === \"fi\" ? Translations_fi.ErrorUserChangeWouldLeadToInvalidDefaultEventHandlers : (culture === \"sv-FI\" ? Translations_sv_FI.ErrorUserChangeWouldLeadToInvalidDefaultEventHandlers : Translations_en_US.ErrorUserChangeWouldLeadToInvalidDefaultEventHandlers);\r\n\t\tTranslations.SavingInstantMessageChannelParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingInstantMessageChannelParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingInstantMessageChannelParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingInstantMessageChannelParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.ExpiredFamiliarizations = culture === \"fi\" ? Translations_fi.ExpiredFamiliarizations : (culture === \"sv-FI\" ? Translations_sv_FI.ExpiredFamiliarizations : Translations_en_US.ExpiredFamiliarizations);\r\n\t\tTranslations.AddPhoto = culture === \"fi\" ? Translations_fi.AddPhoto : (culture === \"sv-FI\" ? Translations_sv_FI.AddPhoto : Translations_en_US.AddPhoto);\r\n\t\tTranslations.AllDocumentTypes = culture === \"fi\" ? Translations_fi.AllDocumentTypes : (culture === \"sv-FI\" ? Translations_sv_FI.AllDocumentTypes : Translations_en_US.AllDocumentTypes);\r\n\t\tTranslations.DeletingDocumentTemplatesParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingDocumentTemplatesParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingDocumentTemplatesParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingDocumentTemplatesParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.FormTitle4 = culture === \"fi\" ? Translations_fi.FormTitle4 : (culture === \"sv-FI\" ? Translations_sv_FI.FormTitle4 : Translations_en_US.FormTitle4);\r\n\t\tTranslations.ValidityEndDate = culture === \"fi\" ? Translations_fi.ValidityEndDate : (culture === \"sv-FI\" ? Translations_sv_FI.ValidityEndDate : Translations_en_US.ValidityEndDate);\r\n\t\tTranslations.InstantMessages = culture === \"fi\" ? Translations_fi.InstantMessages : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessages : Translations_en_US.InstantMessages);\r\n\t\tTranslations.WhistleBlowRecords = culture === \"fi\" ? Translations_fi.WhistleBlowRecords : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowRecords : Translations_en_US.WhistleBlowRecords);\r\n\t\tTranslations.LockedTaskParameterCannotBeSaved = culture === \"fi\" ? Translations_fi.LockedTaskParameterCannotBeSaved : (culture === \"sv-FI\" ? Translations_sv_FI.LockedTaskParameterCannotBeSaved : Translations_en_US.LockedTaskParameterCannotBeSaved);\r\n\t\tTranslations.SelectTaskPriority = culture === \"fi\" ? Translations_fi.SelectTaskPriority : (culture === \"sv-FI\" ? Translations_sv_FI.SelectTaskPriority : Translations_en_US.SelectTaskPriority);\r\n\t\tTranslations.SavingCompanyGroupParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingCompanyGroupParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingCompanyGroupParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingCompanyGroupParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.FormTextAreaSize = culture === \"fi\" ? Translations_fi.FormTextAreaSize : (culture === \"sv-FI\" ? Translations_sv_FI.FormTextAreaSize : Translations_en_US.FormTextAreaSize);\r\n\t\tTranslations.AccessRightWriteInstantMessages = culture === \"fi\" ? Translations_fi.AccessRightWriteInstantMessages : (culture === \"sv-FI\" ? Translations_sv_FI.AccessRightWriteInstantMessages : Translations_en_US.AccessRightWriteInstantMessages);\r\n\t\tTranslations.SSRSParameterReportsFetched = culture === \"fi\" ? Translations_fi.SSRSParameterReportsFetched : (culture === \"sv-FI\" ? Translations_sv_FI.SSRSParameterReportsFetched : Translations_en_US.SSRSParameterReportsFetched);\r\n\t\tTranslations.Hidden = culture === \"fi\" ? Translations_fi.Hidden : (culture === \"sv-FI\" ? Translations_sv_FI.Hidden : Translations_en_US.Hidden);\r\n\t\tTranslations.ReadReceiptRequired = culture === \"fi\" ? Translations_fi.ReadReceiptRequired : (culture === \"sv-FI\" ? Translations_sv_FI.ReadReceiptRequired : Translations_en_US.ReadReceiptRequired);\r\n\t\tTranslations.DeletingUserGroupParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingUserGroupParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingUserGroupParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingUserGroupParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.CompanyTaskTypesInstruction = culture === \"fi\" ? Translations_fi.CompanyTaskTypesInstruction : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyTaskTypesInstruction : Translations_en_US.CompanyTaskTypesInstruction);\r\n\t\tTranslations.DeletingUserGroupParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingUserGroupParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingUserGroupParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingUserGroupParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.SavingMessageSendEmailParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingMessageSendEmailParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingMessageSendEmailParameterWasSuccessful : Translations_en_US.SavingMessageSendEmailParameterWasSuccessful);\r\n\t\tTranslations.SavingRecordFamiliarizationParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingRecordFamiliarizationParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingRecordFamiliarizationParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingRecordFamiliarizationParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.DeletingRecordQualificationParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingRecordQualificationParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordQualificationParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingRecordQualificationParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.LockedToUser = culture === \"fi\" ? Translations_fi.LockedToUser : (culture === \"sv-FI\" ? Translations_sv_FI.LockedToUser : Translations_en_US.LockedToUser);\r\n\t\tTranslations.OperationNotAllowedForRootFolderParameter = culture === \"fi\" ? Translations_fi.OperationNotAllowedForRootFolderParameter : (culture === \"sv-FI\" ? Translations_sv_FI.OperationNotAllowedForRootFolderParameter : Translations_en_US.OperationNotAllowedForRootFolderParameter);\r\n\t\tTranslations.FormExpressionFormatMinutesToHoursAndMinutes = culture === \"fi\" ? Translations_fi.FormExpressionFormatMinutesToHoursAndMinutes : (culture === \"sv-FI\" ? Translations_sv_FI.FormExpressionFormatMinutesToHoursAndMinutes : Translations_en_US.FormExpressionFormatMinutesToHoursAndMinutes);\r\n\t\tTranslations.MessageModuleProperties = culture === \"fi\" ? Translations_fi.MessageModuleProperties : (culture === \"sv-FI\" ? Translations_sv_FI.MessageModuleProperties : Translations_en_US.MessageModuleProperties);\r\n\t\tTranslations.FormWidthMobile = culture === \"fi\" ? Translations_fi.FormWidthMobile : (culture === \"sv-FI\" ? Translations_sv_FI.FormWidthMobile : Translations_en_US.FormWidthMobile);\r\n\t\tTranslations.AddFamiliarization = culture === \"fi\" ? Translations_fi.AddFamiliarization : (culture === \"sv-FI\" ? Translations_sv_FI.AddFamiliarization : Translations_en_US.AddFamiliarization);\r\n\t\tTranslations.EventType = culture === \"fi\" ? Translations_fi.EventType : (culture === \"sv-FI\" ? Translations_sv_FI.EventType : Translations_en_US.EventType);\r\n\t\tTranslations.Parameters = culture === \"fi\" ? Translations_fi.Parameters : (culture === \"sv-FI\" ? Translations_sv_FI.Parameters : Translations_en_US.Parameters);\r\n\t\tTranslations.FolderPath = culture === \"fi\" ? Translations_fi.FolderPath : (culture === \"sv-FI\" ? Translations_sv_FI.FolderPath : Translations_en_US.FolderPath);\r\n\t\tTranslations.TaskParameterNotFound = culture === \"fi\" ? Translations_fi.TaskParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.TaskParameterNotFound : Translations_en_US.TaskParameterNotFound);\r\n\t\tTranslations.ActivePlural = culture === \"fi\" ? Translations_fi.ActivePlural : (culture === \"sv-FI\" ? Translations_sv_FI.ActivePlural : Translations_en_US.ActivePlural);\r\n\t\tTranslations.ReadingDatabaseParameter = culture === \"fi\" ? Translations_fi.ReadingDatabaseParameter : (culture === \"sv-FI\" ? Translations_sv_FI.ReadingDatabaseParameter : Translations_en_US.ReadingDatabaseParameter);\r\n\t\tTranslations.SearchEndDate = culture === \"fi\" ? Translations_fi.SearchEndDate : (culture === \"sv-FI\" ? Translations_sv_FI.SearchEndDate : Translations_en_US.SearchEndDate);\r\n\t\tTranslations.BankBICCode = culture === \"fi\" ? Translations_fi.BankBICCode : (culture === \"sv-FI\" ? Translations_sv_FI.BankBICCode : Translations_en_US.BankBICCode);\r\n\t\tTranslations.JobTitleMustBeDefined = culture === \"fi\" ? Translations_fi.JobTitleMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.JobTitleMustBeDefined : Translations_en_US.JobTitleMustBeDefined);\r\n\t\tTranslations.RecordFurtherEducationGroupCodeIsAlreadyInUse = culture === \"fi\" ? Translations_fi.RecordFurtherEducationGroupCodeIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.RecordFurtherEducationGroupCodeIsAlreadyInUse : Translations_en_US.RecordFurtherEducationGroupCodeIsAlreadyInUse);\r\n\t\tTranslations.WebPageStyle = culture === \"fi\" ? Translations_fi.WebPageStyle : (culture === \"sv-FI\" ? Translations_sv_FI.WebPageStyle : Translations_en_US.WebPageStyle);\r\n\t\tTranslations.SavingMessageTypeParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingMessageTypeParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingMessageTypeParameterWasSuccessful : Translations_en_US.SavingMessageTypeParameterWasSuccessful);\r\n\t\tTranslations.DeletingWhistleBlowCategoryParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingWhistleBlowCategoryParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingWhistleBlowCategoryParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingWhistleBlowCategoryParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.SelectTaskInListToSeeThePreview = culture === \"fi\" ? Translations_fi.SelectTaskInListToSeeThePreview : (culture === \"sv-FI\" ? Translations_sv_FI.SelectTaskInListToSeeThePreview : Translations_en_US.SelectTaskInListToSeeThePreview);\r\n\t\tTranslations.DoYouReallyWantToRemoveUserGroupParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveUserGroupParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveUserGroupParameter : Translations_en_US.DoYouReallyWantToRemoveUserGroupParameter);\r\n\t\tTranslations.ReminderHoursBefore = culture === \"fi\" ? Translations_fi.ReminderHoursBefore : (culture === \"sv-FI\" ? Translations_sv_FI.ReminderHoursBefore : Translations_en_US.ReminderHoursBefore);\r\n\t\tTranslations.Handling = culture === \"fi\" ? Translations_fi.Handling : (culture === \"sv-FI\" ? Translations_sv_FI.Handling : Translations_en_US.Handling);\r\n\t\tTranslations.EventHandlerParameterNotFound = culture === \"fi\" ? Translations_fi.EventHandlerParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.EventHandlerParameterNotFound : Translations_en_US.EventHandlerParameterNotFound);\r\n\t\tTranslations.UnitIsRelatedToEventPartner = culture === \"fi\" ? Translations_fi.UnitIsRelatedToEventPartner : (culture === \"sv-FI\" ? Translations_sv_FI.UnitIsRelatedToEventPartner : Translations_en_US.UnitIsRelatedToEventPartner);\r\n\t\tTranslations.ValidPlural = culture === \"fi\" ? Translations_fi.ValidPlural : (culture === \"sv-FI\" ? Translations_sv_FI.ValidPlural : Translations_en_US.ValidPlural);\r\n\t\tTranslations.Camera = culture === \"fi\" ? Translations_fi.Camera : (culture === \"sv-FI\" ? Translations_sv_FI.Camera : Translations_en_US.Camera);\r\n\t\tTranslations.CalendarTaskRepetitionRepeatIntervalPrefix = culture === \"fi\" ? Translations_fi.CalendarTaskRepetitionRepeatIntervalPrefix : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskRepetitionRepeatIntervalPrefix : Translations_en_US.CalendarTaskRepetitionRepeatIntervalPrefix);\r\n\t\tTranslations.DefaultEventSettings = culture === \"fi\" ? Translations_fi.DefaultEventSettings : (culture === \"sv-FI\" ? Translations_sv_FI.DefaultEventSettings : Translations_en_US.DefaultEventSettings);\r\n\t\tTranslations.UserRecordStatisticsUserAccountConnectedCards = culture === \"fi\" ? Translations_fi.UserRecordStatisticsUserAccountConnectedCards : (culture === \"sv-FI\" ? Translations_sv_FI.UserRecordStatisticsUserAccountConnectedCards : Translations_en_US.UserRecordStatisticsUserAccountConnectedCards);\r\n\t\tTranslations.UserIsActiveInWeb = culture === \"fi\" ? Translations_fi.UserIsActiveInWeb : (culture === \"sv-FI\" ? Translations_sv_FI.UserIsActiveInWeb : Translations_en_US.UserIsActiveInWeb);\r\n\t\tTranslations.FormDatesAndTimes = culture === \"fi\" ? Translations_fi.FormDatesAndTimes : (culture === \"sv-FI\" ? Translations_sv_FI.FormDatesAndTimes : Translations_en_US.FormDatesAndTimes);\r\n\t\tTranslations.DeletingEventUrgencyClassesParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingEventUrgencyClassesParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingEventUrgencyClassesParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingEventUrgencyClassesParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.AdditionalPermissionAMessage = culture === \"fi\" ? Translations_fi.AdditionalPermissionAMessage : (culture === \"sv-FI\" ? Translations_sv_FI.AdditionalPermissionAMessage : Translations_en_US.AdditionalPermissionAMessage);\r\n\t\tTranslations.SavingEventMessageWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingEventMessageWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventMessageWasNotSuccessfulErrorParameter : Translations_en_US.SavingEventMessageWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.Log = culture === \"fi\" ? Translations_fi.Log : (culture === \"sv-FI\" ? Translations_sv_FI.Log : Translations_en_US.Log);\r\n\t\tTranslations.Change = culture === \"fi\" ? Translations_fi.Change : (culture === \"sv-FI\" ? Translations_sv_FI.Change : Translations_en_US.Change);\r\n\t\tTranslations.FormTitle1 = culture === \"fi\" ? Translations_fi.FormTitle1 : (culture === \"sv-FI\" ? Translations_sv_FI.FormTitle1 : Translations_en_US.FormTitle1);\r\n\t\tTranslations.NoFilters = culture === \"fi\" ? Translations_fi.NoFilters : (culture === \"sv-FI\" ? Translations_sv_FI.NoFilters : Translations_en_US.NoFilters);\r\n\t\tTranslations.TaskHandlers = culture === \"fi\" ? Translations_fi.TaskHandlers : (culture === \"sv-FI\" ? Translations_sv_FI.TaskHandlers : Translations_en_US.TaskHandlers);\r\n\t\tTranslations.SavingInstantMessageWasSuccessful = culture === \"fi\" ? Translations_fi.SavingInstantMessageWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingInstantMessageWasSuccessful : Translations_en_US.SavingInstantMessageWasSuccessful);\r\n\t\tTranslations.AllLogisticVoucherCustomers = culture === \"fi\" ? Translations_fi.AllLogisticVoucherCustomers : (culture === \"sv-FI\" ? Translations_sv_FI.AllLogisticVoucherCustomers : Translations_en_US.AllLogisticVoucherCustomers);\r\n\t\tTranslations.SavingTaskPriorityParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingTaskPriorityParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingTaskPriorityParameterWasSuccessful : Translations_en_US.SavingTaskPriorityParameterWasSuccessful);\r\n\t\tTranslations.GroupByHalfYear = culture === \"fi\" ? Translations_fi.GroupByHalfYear : (culture === \"sv-FI\" ? Translations_sv_FI.GroupByHalfYear : Translations_en_US.GroupByHalfYear);\r\n\t\tTranslations.PermissionToCreateEvents = culture === \"fi\" ? Translations_fi.PermissionToCreateEvents : (culture === \"sv-FI\" ? Translations_sv_FI.PermissionToCreateEvents : Translations_en_US.PermissionToCreateEvents);\r\n\t\tTranslations.ModifiedActions = culture === \"fi\" ? Translations_fi.ModifiedActions : (culture === \"sv-FI\" ? Translations_sv_FI.ModifiedActions : Translations_en_US.ModifiedActions);\r\n\t\tTranslations.CalendarTaskHandlers = culture === \"fi\" ? Translations_fi.CalendarTaskHandlers : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskHandlers : Translations_en_US.CalendarTaskHandlers);\r\n\t\tTranslations.DoYouReallyWantToSave = culture === \"fi\" ? Translations_fi.DoYouReallyWantToSave : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToSave : Translations_en_US.DoYouReallyWantToSave);\r\n\t\tTranslations.SavingRecordUserQualificationParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingRecordUserQualificationParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingRecordUserQualificationParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingRecordUserQualificationParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.Public = culture === \"fi\" ? Translations_fi.Public : (culture === \"sv-FI\" ? Translations_sv_FI.Public : Translations_en_US.Public);\r\n\t\tTranslations.DoYouReallyWantToRemoveRecordQualificationParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveRecordQualificationParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveRecordQualificationParameter : Translations_en_US.DoYouReallyWantToRemoveRecordQualificationParameter);\r\n\t\tTranslations.WorkShift = culture === \"fi\" ? Translations_fi.WorkShift : (culture === \"sv-FI\" ? Translations_sv_FI.WorkShift : Translations_en_US.WorkShift);\r\n\t\tTranslations.SelectUser = culture === \"fi\" ? Translations_fi.SelectUser : (culture === \"sv-FI\" ? Translations_sv_FI.SelectUser : Translations_en_US.SelectUser);\r\n\t\tTranslations.Trigonometry = culture === \"fi\" ? Translations_fi.Trigonometry : (culture === \"sv-FI\" ? Translations_sv_FI.Trigonometry : Translations_en_US.Trigonometry);\r\n\t\tTranslations.ThisMessageWasDeleted = culture === \"fi\" ? Translations_fi.ThisMessageWasDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.ThisMessageWasDeleted : Translations_en_US.ThisMessageWasDeleted);\r\n\t\tTranslations.UserRecords = culture === \"fi\" ? Translations_fi.UserRecords : (culture === \"sv-FI\" ? Translations_sv_FI.UserRecords : Translations_en_US.UserRecords);\r\n\t\tTranslations.SavingEventTypeCParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingEventTypeCParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventTypeCParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingEventTypeCParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.AddingRecordUserFamiliarizationsWasSuccessful = culture === \"fi\" ? Translations_fi.AddingRecordUserFamiliarizationsWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.AddingRecordUserFamiliarizationsWasSuccessful : Translations_en_US.AddingRecordUserFamiliarizationsWasSuccessful);\r\n\t\tTranslations.EditDefaultBasicEducation = culture === \"fi\" ? Translations_fi.EditDefaultBasicEducation : (culture === \"sv-FI\" ? Translations_sv_FI.EditDefaultBasicEducation : Translations_en_US.EditDefaultBasicEducation);\r\n\t\tTranslations.MessageType = culture === \"fi\" ? Translations_fi.MessageType : (culture === \"sv-FI\" ? Translations_sv_FI.MessageType : Translations_en_US.MessageType);\r\n\t\tTranslations.YouHaveNotSavedChangesDoYouWantToSaveChanges = culture === \"fi\" ? Translations_fi.YouHaveNotSavedChangesDoYouWantToSaveChanges : (culture === \"sv-FI\" ? Translations_sv_FI.YouHaveNotSavedChangesDoYouWantToSaveChanges : Translations_en_US.YouHaveNotSavedChangesDoYouWantToSaveChanges);\r\n\t\tTranslations.InstantMessageChannelUserParameterIsNotAllowedToUseChannelParameter = culture === \"fi\" ? Translations_fi.InstantMessageChannelUserParameterIsNotAllowedToUseChannelParameter : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageChannelUserParameterIsNotAllowedToUseChannelParameter : Translations_en_US.InstantMessageChannelUserParameterIsNotAllowedToUseChannelParameter);\r\n\t\tTranslations.FileChangesCheckingAndEmailingFinishedInParameterSeconds = culture === \"fi\" ? Translations_fi.FileChangesCheckingAndEmailingFinishedInParameterSeconds : (culture === \"sv-FI\" ? Translations_sv_FI.FileChangesCheckingAndEmailingFinishedInParameterSeconds : Translations_en_US.FileChangesCheckingAndEmailingFinishedInParameterSeconds);\r\n\t\tTranslations.AddUserGroupParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.AddUserGroupParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.AddUserGroupParameterWasNotSuccessfulErrorParameter : Translations_en_US.AddUserGroupParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.DefaultBasicEducations = culture === \"fi\" ? Translations_fi.DefaultBasicEducations : (culture === \"sv-FI\" ? Translations_sv_FI.DefaultBasicEducations : Translations_en_US.DefaultBasicEducations);\r\n\t\tTranslations.WhistleBlowArchivingTypeChangeStateAndRemoveAllData = culture === \"fi\" ? Translations_fi.WhistleBlowArchivingTypeChangeStateAndRemoveAllData : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowArchivingTypeChangeStateAndRemoveAllData : Translations_en_US.WhistleBlowArchivingTypeChangeStateAndRemoveAllData);\r\n\t\tTranslations.SelectCompanyGroupOrCompany = culture === \"fi\" ? Translations_fi.SelectCompanyGroupOrCompany : (culture === \"sv-FI\" ? Translations_sv_FI.SelectCompanyGroupOrCompany : Translations_en_US.SelectCompanyGroupOrCompany);\r\n\t\tTranslations.WhistleBlowInformant = culture === \"fi\" ? Translations_fi.WhistleBlowInformant : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowInformant : Translations_en_US.WhistleBlowInformant);\r\n\t\tTranslations.DesignArea = culture === \"fi\" ? Translations_fi.DesignArea : (culture === \"sv-FI\" ? Translations_sv_FI.DesignArea : Translations_en_US.DesignArea);\r\n\t\tTranslations.EditableDocumentSaveBeforeApproveConfirmation = culture === \"fi\" ? Translations_fi.EditableDocumentSaveBeforeApproveConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.EditableDocumentSaveBeforeApproveConfirmation : Translations_en_US.EditableDocumentSaveBeforeApproveConfirmation);\r\n\t\tTranslations.EmptyDocument = culture === \"fi\" ? Translations_fi.EmptyDocument : (culture === \"sv-FI\" ? Translations_sv_FI.EmptyDocument : Translations_en_US.EmptyDocument);\r\n\t\tTranslations.FormPrint = culture === \"fi\" ? Translations_fi.FormPrint : (culture === \"sv-FI\" ? Translations_sv_FI.FormPrint : Translations_en_US.FormPrint);\r\n\t\tTranslations.DeletingOneTimePasswordWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingOneTimePasswordWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingOneTimePasswordWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingOneTimePasswordWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.Color = culture === \"fi\" ? Translations_fi.Color : (culture === \"sv-FI\" ? Translations_sv_FI.Color : Translations_en_US.Color);\r\n\t\tTranslations.RecordUserExcelFamiliarization = culture === \"fi\" ? Translations_fi.RecordUserExcelFamiliarization : (culture === \"sv-FI\" ? Translations_sv_FI.RecordUserExcelFamiliarization : Translations_en_US.RecordUserExcelFamiliarization);\r\n\t\tTranslations.Wage = culture === \"fi\" ? Translations_fi.Wage : (culture === \"sv-FI\" ? Translations_sv_FI.Wage : Translations_en_US.Wage);\r\n\t\tTranslations.SavingDirectoryItemDocumentParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingDirectoryItemDocumentParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingDirectoryItemDocumentParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingDirectoryItemDocumentParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.Salary = culture === \"fi\" ? Translations_fi.Salary : (culture === \"sv-FI\" ? Translations_sv_FI.Salary : Translations_en_US.Salary);\r\n\t\tTranslations.RemoveNotifiedPerson = culture === \"fi\" ? Translations_fi.RemoveNotifiedPerson : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveNotifiedPerson : Translations_en_US.RemoveNotifiedPerson);\r\n\t\tTranslations.PrivateAndPublic = culture === \"fi\" ? Translations_fi.PrivateAndPublic : (culture === \"sv-FI\" ? Translations_sv_FI.PrivateAndPublic : Translations_en_US.PrivateAndPublic);\r\n\t\tTranslations.LockedCalendarTaskParameterCannotBeDeleted = culture === \"fi\" ? Translations_fi.LockedCalendarTaskParameterCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.LockedCalendarTaskParameterCannotBeDeleted : Translations_en_US.LockedCalendarTaskParameterCannotBeDeleted);\r\n\t\tTranslations.DeletingCalendarTaskCategoryParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingCalendarTaskCategoryParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingCalendarTaskCategoryParameterWasSuccessful : Translations_en_US.DeletingCalendarTaskCategoryParameterWasSuccessful);\r\n\t\tTranslations.InstantMessageChannelUsersNotUsable = culture === \"fi\" ? Translations_fi.InstantMessageChannelUsersNotUsable : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageChannelUsersNotUsable : Translations_en_US.InstantMessageChannelUsersNotUsable);\r\n\t\tTranslations.AddTaskHandler = culture === \"fi\" ? Translations_fi.AddTaskHandler : (culture === \"sv-FI\" ? Translations_sv_FI.AddTaskHandler : Translations_en_US.AddTaskHandler);\r\n\t\tTranslations.FormTitle2 = culture === \"fi\" ? Translations_fi.FormTitle2 : (culture === \"sv-FI\" ? Translations_sv_FI.FormTitle2 : Translations_en_US.FormTitle2);\r\n\t\tTranslations.EventTypeBParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted = culture === \"fi\" ? Translations_fi.EventTypeBParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.EventTypeBParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted : Translations_en_US.EventTypeBParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted);\r\n\t\tTranslations.Target = culture === \"fi\" ? Translations_fi.Target : (culture === \"sv-FI\" ? Translations_sv_FI.Target : Translations_en_US.Target);\r\n\t\tTranslations.WhistleBlowResolutionTypeMustBeDefined = culture === \"fi\" ? Translations_fi.WhistleBlowResolutionTypeMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowResolutionTypeMustBeDefined : Translations_en_US.WhistleBlowResolutionTypeMustBeDefined);\r\n\t\tTranslations.CopyDefaultHandlers = culture === \"fi\" ? Translations_fi.CopyDefaultHandlers : (culture === \"sv-FI\" ? Translations_sv_FI.CopyDefaultHandlers : Translations_en_US.CopyDefaultHandlers);\r\n\t\tTranslations.InvitationParameterHasBeenExpired = culture === \"fi\" ? Translations_fi.InvitationParameterHasBeenExpired : (culture === \"sv-FI\" ? Translations_sv_FI.InvitationParameterHasBeenExpired : Translations_en_US.InvitationParameterHasBeenExpired);\r\n\t\tTranslations.SavingCalendarTaskCategoryParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingCalendarTaskCategoryParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingCalendarTaskCategoryParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingCalendarTaskCategoryParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.CompanyGroupCodeIsAlreadyInUse = culture === \"fi\" ? Translations_fi.CompanyGroupCodeIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyGroupCodeIsAlreadyInUse : Translations_en_US.CompanyGroupCodeIsAlreadyInUse);\r\n\t\tTranslations.Interval = culture === \"fi\" ? Translations_fi.Interval : (culture === \"sv-FI\" ? Translations_sv_FI.Interval : Translations_en_US.Interval);\r\n\t\tTranslations.LogEventType = culture === \"fi\" ? Translations_fi.LogEventType : (culture === \"sv-FI\" ? Translations_sv_FI.LogEventType : Translations_en_US.LogEventType);\r\n\t\tTranslations.DeletingTaskPrioritiesParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingTaskPrioritiesParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingTaskPrioritiesParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingTaskPrioritiesParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.DeletingTaskDataRowWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingTaskDataRowWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingTaskDataRowWasSuccessful : Translations_en_US.DeletingTaskDataRowWasSuccessful);\r\n\t\tTranslations.DeletingRecordFamiliarizationsParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingRecordFamiliarizationsParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordFamiliarizationsParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingRecordFamiliarizationsParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.UpdatingDatabase = culture === \"fi\" ? Translations_fi.UpdatingDatabase : (culture === \"sv-FI\" ? Translations_sv_FI.UpdatingDatabase : Translations_en_US.UpdatingDatabase);\r\n\t\tTranslations.PreviewPanel = culture === \"fi\" ? Translations_fi.PreviewPanel : (culture === \"sv-FI\" ? Translations_sv_FI.PreviewPanel : Translations_en_US.PreviewPanel);\r\n\t\tTranslations.MessageTypes = culture === \"fi\" ? Translations_fi.MessageTypes : (culture === \"sv-FI\" ? Translations_sv_FI.MessageTypes : Translations_en_US.MessageTypes);\r\n\t\tTranslations.NewRow = culture === \"fi\" ? Translations_fi.NewRow : (culture === \"sv-FI\" ? Translations_sv_FI.NewRow : Translations_en_US.NewRow);\r\n\t\tTranslations.LanguageFinnish = culture === \"fi\" ? Translations_fi.LanguageFinnish : (culture === \"sv-FI\" ? Translations_sv_FI.LanguageFinnish : Translations_en_US.LanguageFinnish);\r\n\t\tTranslations.Copy = culture === \"fi\" ? Translations_fi.Copy : (culture === \"sv-FI\" ? Translations_sv_FI.Copy : Translations_en_US.Copy);\r\n\t\tTranslations.CopyDocumentsFromCompany = culture === \"fi\" ? Translations_fi.CopyDocumentsFromCompany : (culture === \"sv-FI\" ? Translations_sv_FI.CopyDocumentsFromCompany : Translations_en_US.CopyDocumentsFromCompany);\r\n\t\tTranslations.RemoveDefaultTaskState = culture === \"fi\" ? Translations_fi.RemoveDefaultTaskState : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveDefaultTaskState : Translations_en_US.RemoveDefaultTaskState);\r\n\t\tTranslations.PushNotificationInUse = culture === \"fi\" ? Translations_fi.PushNotificationInUse : (culture === \"sv-FI\" ? Translations_sv_FI.PushNotificationInUse : Translations_en_US.PushNotificationInUse);\r\n\t\tTranslations.FormulaMin = culture === \"fi\" ? Translations_fi.FormulaMin : (culture === \"sv-FI\" ? Translations_sv_FI.FormulaMin : Translations_en_US.FormulaMin);\r\n\t\tTranslations.FolderCannotBeMovedToItsSubFolder = culture === \"fi\" ? Translations_fi.FolderCannotBeMovedToItsSubFolder : (culture === \"sv-FI\" ? Translations_sv_FI.FolderCannotBeMovedToItsSubFolder : Translations_en_US.FolderCannotBeMovedToItsSubFolder);\r\n\t\tTranslations.StudyWeeks = culture === \"fi\" ? Translations_fi.StudyWeeks : (culture === \"sv-FI\" ? Translations_sv_FI.StudyWeeks : Translations_en_US.StudyWeeks);\r\n\t\tTranslations.And = culture === \"fi\" ? Translations_fi.And : (culture === \"sv-FI\" ? Translations_sv_FI.And : Translations_en_US.And);\r\n\t\tTranslations.AddPartners = culture === \"fi\" ? Translations_fi.AddPartners : (culture === \"sv-FI\" ? Translations_sv_FI.AddPartners : Translations_en_US.AddPartners);\r\n\t\tTranslations.FormDecimals = culture === \"fi\" ? Translations_fi.FormDecimals : (culture === \"sv-FI\" ? Translations_sv_FI.FormDecimals : Translations_en_US.FormDecimals);\r\n\t\tTranslations.SaveCalendarTaskConfirmation = culture === \"fi\" ? Translations_fi.SaveCalendarTaskConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.SaveCalendarTaskConfirmation : Translations_en_US.SaveCalendarTaskConfirmation);\r\n\t\tTranslations.FormNormalText = culture === \"fi\" ? Translations_fi.FormNormalText : (culture === \"sv-FI\" ? Translations_sv_FI.FormNormalText : Translations_en_US.FormNormalText);\r\n\t\tTranslations.EditFileFilter = culture === \"fi\" ? Translations_fi.EditFileFilter : (culture === \"sv-FI\" ? Translations_sv_FI.EditFileFilter : Translations_en_US.EditFileFilter);\r\n\t\tTranslations.SavingMessageSendEmailParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingMessageSendEmailParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingMessageSendEmailParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingMessageSendEmailParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.CalendarTaskRepetitionCountSuffix = culture === \"fi\" ? Translations_fi.CalendarTaskRepetitionCountSuffix : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskRepetitionCountSuffix : Translations_en_US.CalendarTaskRepetitionCountSuffix);\r\n\t\tTranslations.UserCodeMustBeDefined = culture === \"fi\" ? Translations_fi.UserCodeMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.UserCodeMustBeDefined : Translations_en_US.UserCodeMustBeDefined);\r\n\t\tTranslations.DefaultEventUrgencyClassParameterCannotBeDeleted = culture === \"fi\" ? Translations_fi.DefaultEventUrgencyClassParameterCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.DefaultEventUrgencyClassParameterCannotBeDeleted : Translations_en_US.DefaultEventUrgencyClassParameterCannotBeDeleted);\r\n\t\tTranslations.SavingSettingsWasSuccessful = culture === \"fi\" ? Translations_fi.SavingSettingsWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingSettingsWasSuccessful : Translations_en_US.SavingSettingsWasSuccessful);\r\n\t\tTranslations.WhistleBlowInternalMessageConfirmation = culture === \"fi\" ? Translations_fi.WhistleBlowInternalMessageConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowInternalMessageConfirmation : Translations_en_US.WhistleBlowInternalMessageConfirmation);\r\n\t\tTranslations.EventTypeBCodeMustBeDefined = culture === \"fi\" ? Translations_fi.EventTypeBCodeMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.EventTypeBCodeMustBeDefined : Translations_en_US.EventTypeBCodeMustBeDefined);\r\n\t\tTranslations.PreventiveAction = culture === \"fi\" ? Translations_fi.PreventiveAction : (culture === \"sv-FI\" ? Translations_sv_FI.PreventiveAction : Translations_en_US.PreventiveAction);\r\n\t\tTranslations.DownloadDocument = culture === \"fi\" ? Translations_fi.DownloadDocument : (culture === \"sv-FI\" ? Translations_sv_FI.DownloadDocument : Translations_en_US.DownloadDocument);\r\n\t\tTranslations.CalendarTaskRepetitionRepeatIntervalDayMonthSeparator = culture === \"fi\" ? Translations_fi.CalendarTaskRepetitionRepeatIntervalDayMonthSeparator : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskRepetitionRepeatIntervalDayMonthSeparator : Translations_en_US.CalendarTaskRepetitionRepeatIntervalDayMonthSeparator);\r\n\t\tTranslations.SelectRecordUserTypeToBeCreated = culture === \"fi\" ? Translations_fi.SelectRecordUserTypeToBeCreated : (culture === \"sv-FI\" ? Translations_sv_FI.SelectRecordUserTypeToBeCreated : Translations_en_US.SelectRecordUserTypeToBeCreated);\r\n\t\tTranslations.UserParameterNotFound = culture === \"fi\" ? Translations_fi.UserParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.UserParameterNotFound : Translations_en_US.UserParameterNotFound);\r\n\t\tTranslations.DeletingRecordUserTransferredPropertiesParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingRecordUserTransferredPropertiesParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordUserTransferredPropertiesParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingRecordUserTransferredPropertiesParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.ReminderHourBefore = culture === \"fi\" ? Translations_fi.ReminderHourBefore : (culture === \"sv-FI\" ? Translations_sv_FI.ReminderHourBefore : Translations_en_US.ReminderHourBefore);\r\n\t\tTranslations.PageName = culture === \"fi\" ? Translations_fi.PageName : (culture === \"sv-FI\" ? Translations_sv_FI.PageName : Translations_en_US.PageName);\r\n\t\tTranslations.TrainingTime = culture === \"fi\" ? Translations_fi.TrainingTime : (culture === \"sv-FI\" ? Translations_sv_FI.TrainingTime : Translations_en_US.TrainingTime);\r\n\t\tTranslations.InvalidReCAPTCHA = culture === \"fi\" ? Translations_fi.InvalidReCAPTCHA : (culture === \"sv-FI\" ? Translations_sv_FI.InvalidReCAPTCHA : Translations_en_US.InvalidReCAPTCHA);\r\n\t\tTranslations.WhistleBlowApplicationName = culture === \"fi\" ? Translations_fi.WhistleBlowApplicationName : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowApplicationName : Translations_en_US.WhistleBlowApplicationName);\r\n\t\tTranslations.RemoveLogisticVoucherCustomerPaymentSetting = culture === \"fi\" ? Translations_fi.RemoveLogisticVoucherCustomerPaymentSetting : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveLogisticVoucherCustomerPaymentSetting : Translations_en_US.RemoveLogisticVoucherCustomerPaymentSetting);\r\n\t\tTranslations.DeletingCompaniesParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingCompaniesParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingCompaniesParameterWasSuccessful : Translations_en_US.DeletingCompaniesParameterWasSuccessful);\r\n\t\tTranslations.City = culture === \"fi\" ? Translations_fi.City : (culture === \"sv-FI\" ? Translations_sv_FI.City : Translations_en_US.City);\r\n\t\tTranslations.SavingEventTypeBParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingEventTypeBParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventTypeBParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingEventTypeBParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.AddTransferredPropertyToMultipleUserRecords = culture === \"fi\" ? Translations_fi.AddTransferredPropertyToMultipleUserRecords : (culture === \"sv-FI\" ? Translations_sv_FI.AddTransferredPropertyToMultipleUserRecords : Translations_en_US.AddTransferredPropertyToMultipleUserRecords);\r\n\t\tTranslations.LogoSquare = culture === \"fi\" ? Translations_fi.LogoSquare : (culture === \"sv-FI\" ? Translations_sv_FI.LogoSquare : Translations_en_US.LogoSquare);\r\n\t\tTranslations.RemoveTaskPriority = culture === \"fi\" ? Translations_fi.RemoveTaskPriority : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveTaskPriority : Translations_en_US.RemoveTaskPriority);\r\n\t\tTranslations.TaskTypeParameterIsInUseInParameterTasksAndCannotBeDeleted = culture === \"fi\" ? Translations_fi.TaskTypeParameterIsInUseInParameterTasksAndCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.TaskTypeParameterIsInUseInParameterTasksAndCannotBeDeleted : Translations_en_US.TaskTypeParameterIsInUseInParameterTasksAndCannotBeDeleted);\r\n\t\tTranslations.NoToDos = culture === \"fi\" ? Translations_fi.NoToDos : (culture === \"sv-FI\" ? Translations_sv_FI.NoToDos : Translations_en_US.NoToDos);\r\n\t\tTranslations.AddFamiliarizations = culture === \"fi\" ? Translations_fi.AddFamiliarizations : (culture === \"sv-FI\" ? Translations_sv_FI.AddFamiliarizations : Translations_en_US.AddFamiliarizations);\r\n\t\tTranslations.Payer = culture === \"fi\" ? Translations_fi.Payer : (culture === \"sv-FI\" ? Translations_sv_FI.Payer : Translations_en_US.Payer);\r\n\t\tTranslations.ApproveEventHandlerConfirmation = culture === \"fi\" ? Translations_fi.ApproveEventHandlerConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.ApproveEventHandlerConfirmation : Translations_en_US.ApproveEventHandlerConfirmation);\r\n\t\tTranslations.RowAmountIncludedInPrint = culture === \"fi\" ? Translations_fi.RowAmountIncludedInPrint : (culture === \"sv-FI\" ? Translations_sv_FI.RowAmountIncludedInPrint : Translations_en_US.RowAmountIncludedInPrint);\r\n\t\tTranslations.DeletingRecordBasicEducationsParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingRecordBasicEducationsParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordBasicEducationsParameterWasSuccessful : Translations_en_US.DeletingRecordBasicEducationsParameterWasSuccessful);\r\n\t\tTranslations.NewRecordUserMustBeSavedBeforeFurtherEducationsCanBeAdded = culture === \"fi\" ? Translations_fi.NewRecordUserMustBeSavedBeforeFurtherEducationsCanBeAdded : (culture === \"sv-FI\" ? Translations_sv_FI.NewRecordUserMustBeSavedBeforeFurtherEducationsCanBeAdded : Translations_en_US.NewRecordUserMustBeSavedBeforeFurtherEducationsCanBeAdded);\r\n\t\tTranslations.SavingTaskDataRowWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingTaskDataRowWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingTaskDataRowWasNotSuccessfulErrorParameter : Translations_en_US.SavingTaskDataRowWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.UserIsWhistleBlowChannelAdminAndCannotBeDeleted = culture === \"fi\" ? Translations_fi.UserIsWhistleBlowChannelAdminAndCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.UserIsWhistleBlowChannelAdminAndCannotBeDeleted : Translations_en_US.UserIsWhistleBlowChannelAdminAndCannotBeDeleted);\r\n\t\tTranslations.SelectTaskState = culture === \"fi\" ? Translations_fi.SelectTaskState : (culture === \"sv-FI\" ? Translations_sv_FI.SelectTaskState : Translations_en_US.SelectTaskState);\r\n\t\tTranslations.DoYouReallyWantToRemoveTaskHandlerParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveTaskHandlerParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveTaskHandlerParameter : Translations_en_US.DoYouReallyWantToRemoveTaskHandlerParameter);\r\n\t\tTranslations.WhistleBlowSourceOral = culture === \"fi\" ? Translations_fi.WhistleBlowSourceOral : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowSourceOral : Translations_en_US.WhistleBlowSourceOral);\r\n\t\tTranslations.TransportCompany = culture === \"fi\" ? Translations_fi.TransportCompany : (culture === \"sv-FI\" ? Translations_sv_FI.TransportCompany : Translations_en_US.TransportCompany);\r\n\t\tTranslations.Header = culture === \"fi\" ? Translations_fi.Header : (culture === \"sv-FI\" ? Translations_sv_FI.Header : Translations_en_US.Header);\r\n\t\tTranslations.Payee = culture === \"fi\" ? Translations_fi.Payee : (culture === \"sv-FI\" ? Translations_sv_FI.Payee : Translations_en_US.Payee);\r\n\t\tTranslations.DeletingDocumentTemplateParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingDocumentTemplateParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingDocumentTemplateParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingDocumentTemplateParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.TaskModuleProperties = culture === \"fi\" ? Translations_fi.TaskModuleProperties : (culture === \"sv-FI\" ? Translations_sv_FI.TaskModuleProperties : Translations_en_US.TaskModuleProperties);\r\n\t\tTranslations.EventReceiverIsPartnerCompany = culture === \"fi\" ? Translations_fi.EventReceiverIsPartnerCompany : (culture === \"sv-FI\" ? Translations_sv_FI.EventReceiverIsPartnerCompany : Translations_en_US.EventReceiverIsPartnerCompany);\r\n\t\tTranslations.DeletingInstantMessageUserParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingInstantMessageUserParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingInstantMessageUserParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingInstantMessageUserParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.ChangeLanguage = culture === \"fi\" ? Translations_fi.ChangeLanguage : (culture === \"sv-FI\" ? Translations_sv_FI.ChangeLanguage : Translations_en_US.ChangeLanguage);\r\n\t\tTranslations.AddWhistleBlowChannelAdminsParameterWasSuccessful = culture === \"fi\" ? Translations_fi.AddWhistleBlowChannelAdminsParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.AddWhistleBlowChannelAdminsParameterWasSuccessful : Translations_en_US.AddWhistleBlowChannelAdminsParameterWasSuccessful);\r\n\t\tTranslations.AddWhistleBlowChannelAdminParameterWasSuccessful = culture === \"fi\" ? Translations_fi.AddWhistleBlowChannelAdminParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.AddWhistleBlowChannelAdminParameterWasSuccessful : Translations_en_US.AddWhistleBlowChannelAdminParameterWasSuccessful);\r\n\t\tTranslations.Familiarization = culture === \"fi\" ? Translations_fi.Familiarization : (culture === \"sv-FI\" ? Translations_sv_FI.Familiarization : Translations_en_US.Familiarization);\r\n\t\tTranslations.HandlersMustBeDefined = culture === \"fi\" ? Translations_fi.HandlersMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.HandlersMustBeDefined : Translations_en_US.HandlersMustBeDefined);\r\n\t\tTranslations.AccountNumberTkbInCredit = culture === \"fi\" ? Translations_fi.AccountNumberTkbInCredit : (culture === \"sv-FI\" ? Translations_sv_FI.AccountNumberTkbInCredit : Translations_en_US.AccountNumberTkbInCredit);\r\n\t\tTranslations.SavingDefaultHandlersWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingDefaultHandlersWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingDefaultHandlersWasNotSuccessfulErrorParameter : Translations_en_US.SavingDefaultHandlersWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.AddRow = culture === \"fi\" ? Translations_fi.AddRow : (culture === \"sv-FI\" ? Translations_sv_FI.AddRow : Translations_en_US.AddRow);\r\n\t\tTranslations.NoInstantMessageChannelsToShow = culture === \"fi\" ? Translations_fi.NoInstantMessageChannelsToShow : (culture === \"sv-FI\" ? Translations_sv_FI.NoInstantMessageChannelsToShow : Translations_en_US.NoInstantMessageChannelsToShow);\r\n\t\tTranslations.EditLogisticVoucherCompanyPaymentSetting = culture === \"fi\" ? Translations_fi.EditLogisticVoucherCompanyPaymentSetting : (culture === \"sv-FI\" ? Translations_sv_FI.EditLogisticVoucherCompanyPaymentSetting : Translations_en_US.EditLogisticVoucherCompanyPaymentSetting);\r\n\t\tTranslations.NoEvents = culture === \"fi\" ? Translations_fi.NoEvents : (culture === \"sv-FI\" ? Translations_sv_FI.NoEvents : Translations_en_US.NoEvents);\r\n\t\tTranslations.DeletingTaskDataRowWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingTaskDataRowWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingTaskDataRowWasNotSuccessfulErrorParameter : Translations_en_US.DeletingTaskDataRowWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.ExcelFile = culture === \"fi\" ? Translations_fi.ExcelFile : (culture === \"sv-FI\" ? Translations_sv_FI.ExcelFile : Translations_en_US.ExcelFile);\r\n\t\tTranslations.DeletingRecordUserEmploymentsParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingRecordUserEmploymentsParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordUserEmploymentsParameterWasSuccessful : Translations_en_US.DeletingRecordUserEmploymentsParameterWasSuccessful);\r\n\t\tTranslations.InstantMessageChannelMustHaveAtLeastOneAdministrator = culture === \"fi\" ? Translations_fi.InstantMessageChannelMustHaveAtLeastOneAdministrator : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageChannelMustHaveAtLeastOneAdministrator : Translations_en_US.InstantMessageChannelMustHaveAtLeastOneAdministrator);\r\n\t\tTranslations.EmailMessage = culture === \"fi\" ? Translations_fi.EmailMessage : (culture === \"sv-FI\" ? Translations_sv_FI.EmailMessage : Translations_en_US.EmailMessage);\r\n\t\tTranslations.GroupByMonth = culture === \"fi\" ? Translations_fi.GroupByMonth : (culture === \"sv-FI\" ? Translations_sv_FI.GroupByMonth : Translations_en_US.GroupByMonth);\r\n\t\tTranslations.SavingEditableDocumentParameterApprovalWasSuccessful = culture === \"fi\" ? Translations_fi.SavingEditableDocumentParameterApprovalWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEditableDocumentParameterApprovalWasSuccessful : Translations_en_US.SavingEditableDocumentParameterApprovalWasSuccessful);\r\n\t\tTranslations.OtherSettings = culture === \"fi\" ? Translations_fi.OtherSettings : (culture === \"sv-FI\" ? Translations_sv_FI.OtherSettings : Translations_en_US.OtherSettings);\r\n\t\tTranslations.DocumentRootPath = culture === \"fi\" ? Translations_fi.DocumentRootPath : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentRootPath : Translations_en_US.DocumentRootPath);\r\n\t\tTranslations.FormBoldFont = culture === \"fi\" ? Translations_fi.FormBoldFont : (culture === \"sv-FI\" ? Translations_sv_FI.FormBoldFont : Translations_en_US.FormBoldFont);\r\n\t\tTranslations.ChartGenerationFailed = culture === \"fi\" ? Translations_fi.ChartGenerationFailed : (culture === \"sv-FI\" ? Translations_sv_FI.ChartGenerationFailed : Translations_en_US.ChartGenerationFailed);\r\n\t\tTranslations.RemovingTaskHandlerWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.RemovingTaskHandlerWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.RemovingTaskHandlerWasNotSuccessfulErrorParameter : Translations_en_US.RemovingTaskHandlerWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.SetPermissions = culture === \"fi\" ? Translations_fi.SetPermissions : (culture === \"sv-FI\" ? Translations_sv_FI.SetPermissions : Translations_en_US.SetPermissions);\r\n\t\tTranslations.AddCompaniesParameterWasSuccessful = culture === \"fi\" ? Translations_fi.AddCompaniesParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.AddCompaniesParameterWasSuccessful : Translations_en_US.AddCompaniesParameterWasSuccessful);\r\n\t\tTranslations.FormCalculated = culture === \"fi\" ? Translations_fi.FormCalculated : (culture === \"sv-FI\" ? Translations_sv_FI.FormCalculated : Translations_en_US.FormCalculated);\r\n\t\tTranslations.RemoveRemainder = culture === \"fi\" ? Translations_fi.RemoveRemainder : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveRemainder : Translations_en_US.RemoveRemainder);\r\n\t\tTranslations.FormTimeSpan = culture === \"fi\" ? Translations_fi.FormTimeSpan : (culture === \"sv-FI\" ? Translations_sv_FI.FormTimeSpan : Translations_en_US.FormTimeSpan);\r\n\t\tTranslations.AddingAddRecordUserQualificationsWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.AddingAddRecordUserQualificationsWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.AddingAddRecordUserQualificationsWasNotSuccessfulErrorParameter : Translations_en_US.AddingAddRecordUserQualificationsWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.End = culture === \"fi\" ? Translations_fi.End : (culture === \"sv-FI\" ? Translations_sv_FI.End : Translations_en_US.End);\r\n\t\tTranslations.ThisMessageWasDeletedByInstantMessageChannelAdministrator = culture === \"fi\" ? Translations_fi.ThisMessageWasDeletedByInstantMessageChannelAdministrator : (culture === \"sv-FI\" ? Translations_sv_FI.ThisMessageWasDeletedByInstantMessageChannelAdministrator : Translations_en_US.ThisMessageWasDeletedByInstantMessageChannelAdministrator);\r\n\t\tTranslations.DeletingRecordBasicEducationParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingRecordBasicEducationParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordBasicEducationParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingRecordBasicEducationParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.ReadMode = culture === \"fi\" ? Translations_fi.ReadMode : (culture === \"sv-FI\" ? Translations_sv_FI.ReadMode : Translations_en_US.ReadMode);\r\n\t\tTranslations.DeletingEventPartnerParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingEventPartnerParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingEventPartnerParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingEventPartnerParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.EmailingMessageWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.EmailingMessageWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.EmailingMessageWasNotSuccessfulErrorParameter : Translations_en_US.EmailingMessageWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.RecordUserQualificationParameterNotFound = culture === \"fi\" ? Translations_fi.RecordUserQualificationParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.RecordUserQualificationParameterNotFound : Translations_en_US.RecordUserQualificationParameterNotFound);\r\n\t\tTranslations.AddFamiliarizationToMultipleUserRecords = culture === \"fi\" ? Translations_fi.AddFamiliarizationToMultipleUserRecords : (culture === \"sv-FI\" ? Translations_sv_FI.AddFamiliarizationToMultipleUserRecords : Translations_en_US.AddFamiliarizationToMultipleUserRecords);\r\n\t\tTranslations.Subject = culture === \"fi\" ? Translations_fi.Subject : (culture === \"sv-FI\" ? Translations_sv_FI.Subject : Translations_en_US.Subject);\r\n\t\tTranslations.SharedReportAllCompanies = culture === \"fi\" ? Translations_fi.SharedReportAllCompanies : (culture === \"sv-FI\" ? Translations_sv_FI.SharedReportAllCompanies : Translations_en_US.SharedReportAllCompanies);\r\n\t\tTranslations.DoYouReallyWantToRemoveSelectedFileFilters = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveSelectedFileFilters : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveSelectedFileFilters : Translations_en_US.DoYouReallyWantToRemoveSelectedFileFilters);\r\n\t\tTranslations.Loading = culture === \"fi\" ? Translations_fi.Loading : (culture === \"sv-FI\" ? Translations_sv_FI.Loading : Translations_en_US.Loading);\r\n\t\tTranslations.MessageTypeParameterNotFound = culture === \"fi\" ? Translations_fi.MessageTypeParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.MessageTypeParameterNotFound : Translations_en_US.MessageTypeParameterNotFound);\r\n\t\tTranslations.FileFilters = culture === \"fi\" ? Translations_fi.FileFilters : (culture === \"sv-FI\" ? Translations_sv_FI.FileFilters : Translations_en_US.FileFilters);\r\n\t\tTranslations.AddInstantMessageChannel = culture === \"fi\" ? Translations_fi.AddInstantMessageChannel : (culture === \"sv-FI\" ? Translations_sv_FI.AddInstantMessageChannel : Translations_en_US.AddInstantMessageChannel);\r\n\t\tTranslations.FileFilterCodeMustBeDefined = culture === \"fi\" ? Translations_fi.FileFilterCodeMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.FileFilterCodeMustBeDefined : Translations_en_US.FileFilterCodeMustBeDefined);\r\n\t\tTranslations.UpdateUserParameterExternalSystemsWasSuccessful = culture === \"fi\" ? Translations_fi.UpdateUserParameterExternalSystemsWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.UpdateUserParameterExternalSystemsWasSuccessful : Translations_en_US.UpdateUserParameterExternalSystemsWasSuccessful);\r\n\t\tTranslations.DocumentRootPathIsNotEmpty = culture === \"fi\" ? Translations_fi.DocumentRootPathIsNotEmpty : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentRootPathIsNotEmpty : Translations_en_US.DocumentRootPathIsNotEmpty);\r\n\t\tTranslations.TaskStateCodeMustBeDefined = culture === \"fi\" ? Translations_fi.TaskStateCodeMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.TaskStateCodeMustBeDefined : Translations_en_US.TaskStateCodeMustBeDefined);\r\n\t\tTranslations.DraftCannotBeApprovedDoYouWantToSaveDraftAnyway = culture === \"fi\" ? Translations_fi.DraftCannotBeApprovedDoYouWantToSaveDraftAnyway : (culture === \"sv-FI\" ? Translations_sv_FI.DraftCannotBeApprovedDoYouWantToSaveDraftAnyway : Translations_en_US.DraftCannotBeApprovedDoYouWantToSaveDraftAnyway);\r\n\t\tTranslations.RecordParameterUnlockingFailedRecordIsWriteLockedToUserParameter = culture === \"fi\" ? Translations_fi.RecordParameterUnlockingFailedRecordIsWriteLockedToUserParameter : (culture === \"sv-FI\" ? Translations_sv_FI.RecordParameterUnlockingFailedRecordIsWriteLockedToUserParameter : Translations_en_US.RecordParameterUnlockingFailedRecordIsWriteLockedToUserParameter);\r\n\t\tTranslations.ShowPublishVersion = culture === \"fi\" ? Translations_fi.ShowPublishVersion : (culture === \"sv-FI\" ? Translations_sv_FI.ShowPublishVersion : Translations_en_US.ShowPublishVersion);\r\n\t\tTranslations.FormUsableInSearchFilter = culture === \"fi\" ? Translations_fi.FormUsableInSearchFilter : (culture === \"sv-FI\" ? Translations_sv_FI.FormUsableInSearchFilter : Translations_en_US.FormUsableInSearchFilter);\r\n\t\tTranslations.TrainingEndDate = culture === \"fi\" ? Translations_fi.TrainingEndDate : (culture === \"sv-FI\" ? Translations_sv_FI.TrainingEndDate : Translations_en_US.TrainingEndDate);\r\n\t\tTranslations.RecordUserEmploymentParameterNotFound = culture === \"fi\" ? Translations_fi.RecordUserEmploymentParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.RecordUserEmploymentParameterNotFound : Translations_en_US.RecordUserEmploymentParameterNotFound);\r\n\t\tTranslations.ApplicationTempPathParameterNotFound = culture === \"fi\" ? Translations_fi.ApplicationTempPathParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.ApplicationTempPathParameterNotFound : Translations_en_US.ApplicationTempPathParameterNotFound);\r\n\t\tTranslations.LogisticVoucherCustomer = culture === \"fi\" ? Translations_fi.LogisticVoucherCustomer : (culture === \"sv-FI\" ? Translations_sv_FI.LogisticVoucherCustomer : Translations_en_US.LogisticVoucherCustomer);\r\n\t\tTranslations.Download = culture === \"fi\" ? Translations_fi.Download : (culture === \"sv-FI\" ? Translations_sv_FI.Download : Translations_en_US.Download);\r\n\t\tTranslations.MaxSearchResultCount = culture === \"fi\" ? Translations_fi.MaxSearchResultCount : (culture === \"sv-FI\" ? Translations_sv_FI.MaxSearchResultCount : Translations_en_US.MaxSearchResultCount);\r\n\t\tTranslations.NewUserMustBeSavedBeforeUserGroupsCanBeAdded = culture === \"fi\" ? Translations_fi.NewUserMustBeSavedBeforeUserGroupsCanBeAdded : (culture === \"sv-FI\" ? Translations_sv_FI.NewUserMustBeSavedBeforeUserGroupsCanBeAdded : Translations_en_US.NewUserMustBeSavedBeforeUserGroupsCanBeAdded);\r\n\t\tTranslations.CustomStyleClass = culture === \"fi\" ? Translations_fi.CustomStyleClass : (culture === \"sv-FI\" ? Translations_sv_FI.CustomStyleClass : Translations_en_US.CustomStyleClass);\r\n\t\tTranslations.RecordFurtherEducationCodeMustBeDefined = culture === \"fi\" ? Translations_fi.RecordFurtherEducationCodeMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.RecordFurtherEducationCodeMustBeDefined : Translations_en_US.RecordFurtherEducationCodeMustBeDefined);\r\n\t\tTranslations.RemoveUserFromUserGroup = culture === \"fi\" ? Translations_fi.RemoveUserFromUserGroup : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveUserFromUserGroup : Translations_en_US.RemoveUserFromUserGroup);\r\n\t\tTranslations.DoYouReallyWantToRemoveSelectedUsers = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveSelectedUsers : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveSelectedUsers : Translations_en_US.DoYouReallyWantToRemoveSelectedUsers);\r\n\t\tTranslations.InTesting = culture === \"fi\" ? Translations_fi.InTesting : (culture === \"sv-FI\" ? Translations_sv_FI.InTesting : Translations_en_US.InTesting);\r\n\t\tTranslations.DeletingEventParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingEventParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingEventParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingEventParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.VoucherInOutReportSavePath = culture === \"fi\" ? Translations_fi.VoucherInOutReportSavePath : (culture === \"sv-FI\" ? Translations_sv_FI.VoucherInOutReportSavePath : Translations_en_US.VoucherInOutReportSavePath);\r\n\t\tTranslations.SavingUnitPermissionsWasSuccessful = culture === \"fi\" ? Translations_fi.SavingUnitPermissionsWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingUnitPermissionsWasSuccessful : Translations_en_US.SavingUnitPermissionsWasSuccessful);\r\n\t\tTranslations.SelectEventReceiver = culture === \"fi\" ? Translations_fi.SelectEventReceiver : (culture === \"sv-FI\" ? Translations_sv_FI.SelectEventReceiver : Translations_en_US.SelectEventReceiver);\r\n\t\tTranslations.MovingFilesAndDocumentsToFolderParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.MovingFilesAndDocumentsToFolderParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.MovingFilesAndDocumentsToFolderParameterWasNotSuccessfulConcurrencyError : Translations_en_US.MovingFilesAndDocumentsToFolderParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.RemoveRow = culture === \"fi\" ? Translations_fi.RemoveRow : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveRow : Translations_en_US.RemoveRow);\r\n\t\tTranslations.RecordUserExcelTabName = culture === \"fi\" ? Translations_fi.RecordUserExcelTabName : (culture === \"sv-FI\" ? Translations_sv_FI.RecordUserExcelTabName : Translations_en_US.RecordUserExcelTabName);\r\n\t\tTranslations.SavingJobParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingJobParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingJobParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingJobParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.Banner = culture === \"fi\" ? Translations_fi.Banner : (culture === \"sv-FI\" ? Translations_sv_FI.Banner : Translations_en_US.Banner);\r\n\t\tTranslations.Portrait = culture === \"fi\" ? Translations_fi.Portrait : (culture === \"sv-FI\" ? Translations_sv_FI.Portrait : Translations_en_US.Portrait);\r\n\t\tTranslations.DoYouReallyWantToRemoveSelectedHandlers = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveSelectedHandlers : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveSelectedHandlers : Translations_en_US.DoYouReallyWantToRemoveSelectedHandlers);\r\n\t\tTranslations.TaskMustBeSavedBeforeAttachmentsCanBeAdded = culture === \"fi\" ? Translations_fi.TaskMustBeSavedBeforeAttachmentsCanBeAdded : (culture === \"sv-FI\" ? Translations_sv_FI.TaskMustBeSavedBeforeAttachmentsCanBeAdded : Translations_en_US.TaskMustBeSavedBeforeAttachmentsCanBeAdded);\r\n\t\tTranslations.RememberMe = culture === \"fi\" ? Translations_fi.RememberMe : (culture === \"sv-FI\" ? Translations_sv_FI.RememberMe : Translations_en_US.RememberMe);\r\n\t\tTranslations.SavingTaskPriorityParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingTaskPriorityParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingTaskPriorityParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingTaskPriorityParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.BannerPath = culture === \"fi\" ? Translations_fi.BannerPath : (culture === \"sv-FI\" ? Translations_sv_FI.BannerPath : Translations_en_US.BannerPath);\r\n\t\tTranslations.ShowArchived = culture === \"fi\" ? Translations_fi.ShowArchived : (culture === \"sv-FI\" ? Translations_sv_FI.ShowArchived : Translations_en_US.ShowArchived);\r\n\t\tTranslations.AddQualification = culture === \"fi\" ? Translations_fi.AddQualification : (culture === \"sv-FI\" ? Translations_sv_FI.AddQualification : Translations_en_US.AddQualification);\r\n\t\tTranslations.RemovingTaskHandlersWasSuccessful = culture === \"fi\" ? Translations_fi.RemovingTaskHandlersWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.RemovingTaskHandlersWasSuccessful : Translations_en_US.RemovingTaskHandlersWasSuccessful);\r\n\t\tTranslations.DoYouReallyWantToSaveData = culture === \"fi\" ? Translations_fi.DoYouReallyWantToSaveData : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToSaveData : Translations_en_US.DoYouReallyWantToSaveData);\r\n\t\tTranslations.Months = culture === \"fi\" ? Translations_fi.Months : (culture === \"sv-FI\" ? Translations_sv_FI.Months : Translations_en_US.Months);\r\n\t\tTranslations.WhistleBlowInformantHasReadMessage = culture === \"fi\" ? Translations_fi.WhistleBlowInformantHasReadMessage : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowInformantHasReadMessage : Translations_en_US.WhistleBlowInformantHasReadMessage);\r\n\t\tTranslations.DocumentTemplateCodeIsAlreadyInUse = culture === \"fi\" ? Translations_fi.DocumentTemplateCodeIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentTemplateCodeIsAlreadyInUse : Translations_en_US.DocumentTemplateCodeIsAlreadyInUse);\r\n\t\tTranslations.EventSenderIsPartnerCompany = culture === \"fi\" ? Translations_fi.EventSenderIsPartnerCompany : (culture === \"sv-FI\" ? Translations_sv_FI.EventSenderIsPartnerCompany : Translations_en_US.EventSenderIsPartnerCompany);\r\n\t\tTranslations.SelectInstantMessageChannelUser = culture === \"fi\" ? Translations_fi.SelectInstantMessageChannelUser : (culture === \"sv-FI\" ? Translations_sv_FI.SelectInstantMessageChannelUser : Translations_en_US.SelectInstantMessageChannelUser);\r\n\t\tTranslations.FamiliarizationStartDateStart = culture === \"fi\" ? Translations_fi.FamiliarizationStartDateStart : (culture === \"sv-FI\" ? Translations_sv_FI.FamiliarizationStartDateStart : Translations_en_US.FamiliarizationStartDateStart);\r\n\t\tTranslations.AddFile = culture === \"fi\" ? Translations_fi.AddFile : (culture === \"sv-FI\" ? Translations_sv_FI.AddFile : Translations_en_US.AddFile);\r\n\t\tTranslations.DeletingEventUrgencyClassParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingEventUrgencyClassParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingEventUrgencyClassParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingEventUrgencyClassParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.FormRequired = culture === \"fi\" ? Translations_fi.FormRequired : (culture === \"sv-FI\" ? Translations_sv_FI.FormRequired : Translations_en_US.FormRequired);\r\n\t\tTranslations.UserModuleProperties = culture === \"fi\" ? Translations_fi.UserModuleProperties : (culture === \"sv-FI\" ? Translations_sv_FI.UserModuleProperties : Translations_en_US.UserModuleProperties);\r\n\t\tTranslations.SearchProperties = culture === \"fi\" ? Translations_fi.SearchProperties : (culture === \"sv-FI\" ? Translations_sv_FI.SearchProperties : Translations_en_US.SearchProperties);\r\n\t\tTranslations.ReminderDayBefore = culture === \"fi\" ? Translations_fi.ReminderDayBefore : (culture === \"sv-FI\" ? Translations_sv_FI.ReminderDayBefore : Translations_en_US.ReminderDayBefore);\r\n\t\tTranslations.NoDataToShow = culture === \"fi\" ? Translations_fi.NoDataToShow : (culture === \"sv-FI\" ? Translations_sv_FI.NoDataToShow : Translations_en_US.NoDataToShow);\r\n\t\tTranslations.CalendarTaskStartDateMustBeDefined = culture === \"fi\" ? Translations_fi.CalendarTaskStartDateMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskStartDateMustBeDefined : Translations_en_US.CalendarTaskStartDateMustBeDefined);\r\n\t\tTranslations.EditDocumentTemplate = culture === \"fi\" ? Translations_fi.EditDocumentTemplate : (culture === \"sv-FI\" ? Translations_sv_FI.EditDocumentTemplate : Translations_en_US.EditDocumentTemplate);\r\n\t\tTranslations.InstantMessageChannelOneUser = culture === \"fi\" ? Translations_fi.InstantMessageChannelOneUser : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageChannelOneUser : Translations_en_US.InstantMessageChannelOneUser);\r\n\t\tTranslations.Errors = culture === \"fi\" ? Translations_fi.Errors : (culture === \"sv-FI\" ? Translations_sv_FI.Errors : Translations_en_US.Errors);\r\n\t\tTranslations.FormShowInRow = culture === \"fi\" ? Translations_fi.FormShowInRow : (culture === \"sv-FI\" ? Translations_sv_FI.FormShowInRow : Translations_en_US.FormShowInRow);\r\n\t\tTranslations.ExpireTime = culture === \"fi\" ? Translations_fi.ExpireTime : (culture === \"sv-FI\" ? Translations_sv_FI.ExpireTime : Translations_en_US.ExpireTime);\r\n\t\tTranslations.DeletingCompanyGroupParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingCompanyGroupParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingCompanyGroupParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingCompanyGroupParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.TaskStatesMustBeDefinedBeforeAddingTasks = culture === \"fi\" ? Translations_fi.TaskStatesMustBeDefinedBeforeAddingTasks : (culture === \"sv-FI\" ? Translations_sv_FI.TaskStatesMustBeDefinedBeforeAddingTasks : Translations_en_US.TaskStatesMustBeDefinedBeforeAddingTasks);\r\n\t\tTranslations.Folder = culture === \"fi\" ? Translations_fi.Folder : (culture === \"sv-FI\" ? Translations_sv_FI.Folder : Translations_en_US.Folder);\r\n\t\tTranslations.RemoveInstantMessageChannelUser = culture === \"fi\" ? Translations_fi.RemoveInstantMessageChannelUser : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveInstantMessageChannelUser : Translations_en_US.RemoveInstantMessageChannelUser);\r\n\t\tTranslations.DoYouReallyWantToRemoveRecordFamiliarizationParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveRecordFamiliarizationParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveRecordFamiliarizationParameter : Translations_en_US.DoYouReallyWantToRemoveRecordFamiliarizationParameter);\r\n\t\tTranslations.Resolution = culture === \"fi\" ? Translations_fi.Resolution : (culture === \"sv-FI\" ? Translations_sv_FI.Resolution : Translations_en_US.Resolution);\r\n\t\tTranslations.ReportDialogInfoText = culture === \"fi\" ? Translations_fi.ReportDialogInfoText : (culture === \"sv-FI\" ? Translations_sv_FI.ReportDialogInfoText : Translations_en_US.ReportDialogInfoText);\r\n\t\tTranslations.FirstNameMustBeDefined = culture === \"fi\" ? Translations_fi.FirstNameMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.FirstNameMustBeDefined : Translations_en_US.FirstNameMustBeDefined);\r\n\t\tTranslations.CalendarTaskRemoveOccurrence = culture === \"fi\" ? Translations_fi.CalendarTaskRemoveOccurrence : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskRemoveOccurrence : Translations_en_US.CalendarTaskRemoveOccurrence);\r\n\t\tTranslations.SaveToTemplate = culture === \"fi\" ? Translations_fi.SaveToTemplate : (culture === \"sv-FI\" ? Translations_sv_FI.SaveToTemplate : Translations_en_US.SaveToTemplate);\r\n\t\tTranslations.ImmediateAction = culture === \"fi\" ? Translations_fi.ImmediateAction : (culture === \"sv-FI\" ? Translations_sv_FI.ImmediateAction : Translations_en_US.ImmediateAction);\r\n\t\tTranslations.MoveDown = culture === \"fi\" ? Translations_fi.MoveDown : (culture === \"sv-FI\" ? Translations_sv_FI.MoveDown : Translations_en_US.MoveDown);\r\n\t\tTranslations.PaymentSettings = culture === \"fi\" ? Translations_fi.PaymentSettings : (culture === \"sv-FI\" ? Translations_sv_FI.PaymentSettings : Translations_en_US.PaymentSettings);\r\n\t\tTranslations.Folders = culture === \"fi\" ? Translations_fi.Folders : (culture === \"sv-FI\" ? Translations_sv_FI.Folders : Translations_en_US.Folders);\r\n\t\tTranslations.Max = culture === \"fi\" ? Translations_fi.Max : (culture === \"sv-FI\" ? Translations_sv_FI.Max : Translations_en_US.Max);\r\n\t\tTranslations.CostCentreNumber = culture === \"fi\" ? Translations_fi.CostCentreNumber : (culture === \"sv-FI\" ? Translations_sv_FI.CostCentreNumber : Translations_en_US.CostCentreNumber);\r\n\t\tTranslations.SendingNotificationsWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SendingNotificationsWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SendingNotificationsWasNotSuccessfulErrorParameter : Translations_en_US.SendingNotificationsWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.ShowUsers = culture === \"fi\" ? Translations_fi.ShowUsers : (culture === \"sv-FI\" ? Translations_sv_FI.ShowUsers : Translations_en_US.ShowUsers);\r\n\t\tTranslations.FormulaMultiplication = culture === \"fi\" ? Translations_fi.FormulaMultiplication : (culture === \"sv-FI\" ? Translations_sv_FI.FormulaMultiplication : Translations_en_US.FormulaMultiplication);\r\n\t\tTranslations.NewRecordUserMustBeSavedBeforeQualificationsCanBeAdded = culture === \"fi\" ? Translations_fi.NewRecordUserMustBeSavedBeforeQualificationsCanBeAdded : (culture === \"sv-FI\" ? Translations_sv_FI.NewRecordUserMustBeSavedBeforeQualificationsCanBeAdded : Translations_en_US.NewRecordUserMustBeSavedBeforeQualificationsCanBeAdded);\r\n\t\tTranslations.SavingEventUrgencyClassParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingEventUrgencyClassParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventUrgencyClassParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingEventUrgencyClassParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.ProcessingTimeDays = culture === \"fi\" ? Translations_fi.ProcessingTimeDays : (culture === \"sv-FI\" ? Translations_sv_FI.ProcessingTimeDays : Translations_en_US.ProcessingTimeDays);\r\n\t\tTranslations.AddRows = culture === \"fi\" ? Translations_fi.AddRows : (culture === \"sv-FI\" ? Translations_sv_FI.AddRows : Translations_en_US.AddRows);\r\n\t\tTranslations.NotInUse = culture === \"fi\" ? Translations_fi.NotInUse : (culture === \"sv-FI\" ? Translations_sv_FI.NotInUse : Translations_en_US.NotInUse);\r\n\t\tTranslations.AutomaticLogoutDone = culture === \"fi\" ? Translations_fi.AutomaticLogoutDone : (culture === \"sv-FI\" ? Translations_sv_FI.AutomaticLogoutDone : Translations_en_US.AutomaticLogoutDone);\r\n\t\tTranslations.UserRecordStatisticsExpiredFurtherEducations = culture === \"fi\" ? Translations_fi.UserRecordStatisticsExpiredFurtherEducations : (culture === \"sv-FI\" ? Translations_sv_FI.UserRecordStatisticsExpiredFurtherEducations : Translations_en_US.UserRecordStatisticsExpiredFurtherEducations);\r\n\t\tTranslations.DeletingUsersParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingUsersParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingUsersParameterWasSuccessful : Translations_en_US.DeletingUsersParameterWasSuccessful);\r\n\t\tTranslations.EmailAddress = culture === \"fi\" ? Translations_fi.EmailAddress : (culture === \"sv-FI\" ? Translations_sv_FI.EmailAddress : Translations_en_US.EmailAddress);\r\n\t\tTranslations.DoYouReallyWantToRemoveEventTypeParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveEventTypeParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveEventTypeParameter : Translations_en_US.DoYouReallyWantToRemoveEventTypeParameter);\r\n\t\tTranslations.AddPartnersParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.AddPartnersParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.AddPartnersParameterWasNotSuccessfulConcurrencyError : Translations_en_US.AddPartnersParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.Others = culture === \"fi\" ? Translations_fi.Others : (culture === \"sv-FI\" ? Translations_sv_FI.Others : Translations_en_US.Others);\r\n\t\tTranslations.LogSizeInDays = culture === \"fi\" ? Translations_fi.LogSizeInDays : (culture === \"sv-FI\" ? Translations_sv_FI.LogSizeInDays : Translations_en_US.LogSizeInDays);\r\n\t\tTranslations.EditTask = culture === \"fi\" ? Translations_fi.EditTask : (culture === \"sv-FI\" ? Translations_sv_FI.EditTask : Translations_en_US.EditTask);\r\n\t\tTranslations.AddUserParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.AddUserParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.AddUserParameterWasNotSuccessfulErrorParameter : Translations_en_US.AddUserParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.NormalMessage = culture === \"fi\" ? Translations_fi.NormalMessage : (culture === \"sv-FI\" ? Translations_sv_FI.NormalMessage : Translations_en_US.NormalMessage);\r\n\t\tTranslations.PositionErrorPermissionDenied = culture === \"fi\" ? Translations_fi.PositionErrorPermissionDenied : (culture === \"sv-FI\" ? Translations_sv_FI.PositionErrorPermissionDenied : Translations_en_US.PositionErrorPermissionDenied);\r\n\t\tTranslations.PermissionsToCreateEventsToEventPartner = culture === \"fi\" ? Translations_fi.PermissionsToCreateEventsToEventPartner : (culture === \"sv-FI\" ? Translations_sv_FI.PermissionsToCreateEventsToEventPartner : Translations_en_US.PermissionsToCreateEventsToEventPartner);\r\n\t\tTranslations.AddMessage = culture === \"fi\" ? Translations_fi.AddMessage : (culture === \"sv-FI\" ? Translations_sv_FI.AddMessage : Translations_en_US.AddMessage);\r\n\t\tTranslations.FormMaximumValue = culture === \"fi\" ? Translations_fi.FormMaximumValue : (culture === \"sv-FI\" ? Translations_sv_FI.FormMaximumValue : Translations_en_US.FormMaximumValue);\r\n\t\tTranslations.VoucherSavePath = culture === \"fi\" ? Translations_fi.VoucherSavePath : (culture === \"sv-FI\" ? Translations_sv_FI.VoucherSavePath : Translations_en_US.VoucherSavePath);\r\n\t\tTranslations.DoYouReallyWantToRemoveChartPanelParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveChartPanelParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveChartPanelParameter : Translations_en_US.DoYouReallyWantToRemoveChartPanelParameter);\r\n\t\tTranslations.DeletingFileFiltersParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingFileFiltersParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingFileFiltersParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingFileFiltersParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.SavingOptionParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingOptionParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingOptionParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingOptionParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.DirectoryItemFolderParameterNotFound = culture === \"fi\" ? Translations_fi.DirectoryItemFolderParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.DirectoryItemFolderParameterNotFound : Translations_en_US.DirectoryItemFolderParameterNotFound);\r\n\t\tTranslations.Picture = culture === \"fi\" ? Translations_fi.Picture : (culture === \"sv-FI\" ? Translations_sv_FI.Picture : Translations_en_US.Picture);\r\n\t\tTranslations.TrainingStartDateEnd = culture === \"fi\" ? Translations_fi.TrainingStartDateEnd : (culture === \"sv-FI\" ? Translations_sv_FI.TrainingStartDateEnd : Translations_en_US.TrainingStartDateEnd);\r\n\t\tTranslations.NoModifications = culture === \"fi\" ? Translations_fi.NoModifications : (culture === \"sv-FI\" ? Translations_sv_FI.NoModifications : Translations_en_US.NoModifications);\r\n\t\tTranslations.ReportGenerationAborted = culture === \"fi\" ? Translations_fi.ReportGenerationAborted : (culture === \"sv-FI\" ? Translations_sv_FI.ReportGenerationAborted : Translations_en_US.ReportGenerationAborted);\r\n\t\tTranslations.SelectComponentInFormToSeeComponentProperties = culture === \"fi\" ? Translations_fi.SelectComponentInFormToSeeComponentProperties : (culture === \"sv-FI\" ? Translations_sv_FI.SelectComponentInFormToSeeComponentProperties : Translations_en_US.SelectComponentInFormToSeeComponentProperties);\r\n\t\tTranslations.PaymentSetting = culture === \"fi\" ? Translations_fi.PaymentSetting : (culture === \"sv-FI\" ? Translations_sv_FI.PaymentSetting : Translations_en_US.PaymentSetting);\r\n\t\tTranslations.FormulaSqrt = culture === \"fi\" ? Translations_fi.FormulaSqrt : (culture === \"sv-FI\" ? Translations_sv_FI.FormulaSqrt : Translations_en_US.FormulaSqrt);\r\n\t\tTranslations.LogEventTime = culture === \"fi\" ? Translations_fi.LogEventTime : (culture === \"sv-FI\" ? Translations_sv_FI.LogEventTime : Translations_en_US.LogEventTime);\r\n\t\tTranslations.Remainder = culture === \"fi\" ? Translations_fi.Remainder : (culture === \"sv-FI\" ? Translations_sv_FI.Remainder : Translations_en_US.Remainder);\r\n\t\tTranslations.PrivacyPolicy = culture === \"fi\" ? Translations_fi.PrivacyPolicy : (culture === \"sv-FI\" ? Translations_sv_FI.PrivacyPolicy : Translations_en_US.PrivacyPolicy);\r\n\t\tTranslations.AddingTaskHandlersWasSuccessful = culture === \"fi\" ? Translations_fi.AddingTaskHandlersWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.AddingTaskHandlersWasSuccessful : Translations_en_US.AddingTaskHandlersWasSuccessful);\r\n\t\tTranslations.DoYouReallyWantToRemoveTaskDataRow = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveTaskDataRow : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveTaskDataRow : Translations_en_US.DoYouReallyWantToRemoveTaskDataRow);\r\n\t\tTranslations.LockingTaskDataRowWasNotSuccessful = culture === \"fi\" ? Translations_fi.LockingTaskDataRowWasNotSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.LockingTaskDataRowWasNotSuccessful : Translations_en_US.LockingTaskDataRowWasNotSuccessful);\r\n\t\tTranslations.EditEditableDocument = culture === \"fi\" ? Translations_fi.EditEditableDocument : (culture === \"sv-FI\" ? Translations_sv_FI.EditEditableDocument : Translations_en_US.EditEditableDocument);\r\n\t\tTranslations.FolderParameterAlreadyExistsInTargetFolder = culture === \"fi\" ? Translations_fi.FolderParameterAlreadyExistsInTargetFolder : (culture === \"sv-FI\" ? Translations_sv_FI.FolderParameterAlreadyExistsInTargetFolder : Translations_en_US.FolderParameterAlreadyExistsInTargetFolder);\r\n\t\tTranslations.ValidityEndDateEnd = culture === \"fi\" ? Translations_fi.ValidityEndDateEnd : (culture === \"sv-FI\" ? Translations_sv_FI.ValidityEndDateEnd : Translations_en_US.ValidityEndDateEnd);\r\n\t\tTranslations.NotSelected = culture === \"fi\" ? Translations_fi.NotSelected : (culture === \"sv-FI\" ? Translations_sv_FI.NotSelected : Translations_en_US.NotSelected);\r\n\t\tTranslations.Filter = culture === \"fi\" ? Translations_fi.Filter : (culture === \"sv-FI\" ? Translations_sv_FI.Filter : Translations_en_US.Filter);\r\n\t\tTranslations.Description = culture === \"fi\" ? Translations_fi.Description : (culture === \"sv-FI\" ? Translations_sv_FI.Description : Translations_en_US.Description);\r\n\t\tTranslations.DeletingMessageParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingMessageParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingMessageParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingMessageParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.Code = culture === \"fi\" ? Translations_fi.Code : (culture === \"sv-FI\" ? Translations_sv_FI.Code : Translations_en_US.Code);\r\n\t\tTranslations.DeletingTaskTypesParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingTaskTypesParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingTaskTypesParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingTaskTypesParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.MessageEndDate = culture === \"fi\" ? Translations_fi.MessageEndDate : (culture === \"sv-FI\" ? Translations_sv_FI.MessageEndDate : Translations_en_US.MessageEndDate);\r\n\t\tTranslations.ReadImpPlur = culture === \"fi\" ? Translations_fi.ReadImpPlur : (culture === \"sv-FI\" ? Translations_sv_FI.ReadImpPlur : Translations_en_US.ReadImpPlur);\r\n\t\tTranslations.SharedReports = culture === \"fi\" ? Translations_fi.SharedReports : (culture === \"sv-FI\" ? Translations_sv_FI.SharedReports : Translations_en_US.SharedReports);\r\n\t\tTranslations.SavingEventTypeBsWasSuccessful = culture === \"fi\" ? Translations_fi.SavingEventTypeBsWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventTypeBsWasSuccessful : Translations_en_US.SavingEventTypeBsWasSuccessful);\r\n\t\tTranslations.SavingAttachmentsWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingAttachmentsWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingAttachmentsWasNotSuccessfulErrorParameter : Translations_en_US.SavingAttachmentsWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.DeletingRecordQualificationParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingRecordQualificationParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordQualificationParameterWasSuccessful : Translations_en_US.DeletingRecordQualificationParameterWasSuccessful);\r\n\t\tTranslations.AddingAddRecordUserFurtherEducationsWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.AddingAddRecordUserFurtherEducationsWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.AddingAddRecordUserFurtherEducationsWasNotSuccessfulErrorParameter : Translations_en_US.AddingAddRecordUserFurtherEducationsWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.WhistleBlowStatisticsReceivedRecords = culture === \"fi\" ? Translations_fi.WhistleBlowStatisticsReceivedRecords : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowStatisticsReceivedRecords : Translations_en_US.WhistleBlowStatisticsReceivedRecords);\r\n\t\tTranslations.Summary = culture === \"fi\" ? Translations_fi.Summary : (culture === \"sv-FI\" ? Translations_sv_FI.Summary : Translations_en_US.Summary);\r\n\t\tTranslations.ThisPartOfApplicationIsNotInUse = culture === \"fi\" ? Translations_fi.ThisPartOfApplicationIsNotInUse : (culture === \"sv-FI\" ? Translations_sv_FI.ThisPartOfApplicationIsNotInUse : Translations_en_US.ThisPartOfApplicationIsNotInUse);\r\n\t\tTranslations.DeletingEditableDocumentParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingEditableDocumentParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingEditableDocumentParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingEditableDocumentParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.JobTypeEventNotification = culture === \"fi\" ? Translations_fi.JobTypeEventNotification : (culture === \"sv-FI\" ? Translations_sv_FI.JobTypeEventNotification : Translations_en_US.JobTypeEventNotification);\r\n\t\tTranslations.EditEventPartner = culture === \"fi\" ? Translations_fi.EditEventPartner : (culture === \"sv-FI\" ? Translations_sv_FI.EditEventPartner : Translations_en_US.EditEventPartner);\r\n\t\tTranslations.CalendarTaskEndDateMustBeAfterStartDate = culture === \"fi\" ? Translations_fi.CalendarTaskEndDateMustBeAfterStartDate : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskEndDateMustBeAfterStartDate : Translations_en_US.CalendarTaskEndDateMustBeAfterStartDate);\r\n\t\tTranslations.PasteDefaultHandlers = culture === \"fi\" ? Translations_fi.PasteDefaultHandlers : (culture === \"sv-FI\" ? Translations_sv_FI.PasteDefaultHandlers : Translations_en_US.PasteDefaultHandlers);\r\n\t\tTranslations.IndirectCosts = culture === \"fi\" ? Translations_fi.IndirectCosts : (culture === \"sv-FI\" ? Translations_sv_FI.IndirectCosts : Translations_en_US.IndirectCosts);\r\n\t\tTranslations.SavingDirectoryItemDocumentParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingDirectoryItemDocumentParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingDirectoryItemDocumentParameterWasSuccessful : Translations_en_US.SavingDirectoryItemDocumentParameterWasSuccessful);\r\n\t\tTranslations.DeletingWhistleBlowChannelAdminsParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingWhistleBlowChannelAdminsParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingWhistleBlowChannelAdminsParameterWasSuccessful : Translations_en_US.DeletingWhistleBlowChannelAdminsParameterWasSuccessful);\r\n\t\tTranslations.CourseCredits = culture === \"fi\" ? Translations_fi.CourseCredits : (culture === \"sv-FI\" ? Translations_sv_FI.CourseCredits : Translations_en_US.CourseCredits);\r\n\t\tTranslations.AllInstantMessageUsersHaveReadMessage = culture === \"fi\" ? Translations_fi.AllInstantMessageUsersHaveReadMessage : (culture === \"sv-FI\" ? Translations_sv_FI.AllInstantMessageUsersHaveReadMessage : Translations_en_US.AllInstantMessageUsersHaveReadMessage);\r\n\t\tTranslations.DeletingWhistleBlowChannelAdminParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingWhistleBlowChannelAdminParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingWhistleBlowChannelAdminParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingWhistleBlowChannelAdminParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.InstantMessageChannelUserParameterNotFound = culture === \"fi\" ? Translations_fi.InstantMessageChannelUserParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageChannelUserParameterNotFound : Translations_en_US.InstantMessageChannelUserParameterNotFound);\r\n\t\tTranslations.DoYouReallyWantToRemoveRecordBasicEducationParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveRecordBasicEducationParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveRecordBasicEducationParameter : Translations_en_US.DoYouReallyWantToRemoveRecordBasicEducationParameter);\r\n\t\tTranslations.SavingMessageSendPushParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingMessageSendPushParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingMessageSendPushParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingMessageSendPushParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.Move = culture === \"fi\" ? Translations_fi.Move : (culture === \"sv-FI\" ? Translations_sv_FI.Move : Translations_en_US.Move);\r\n\t\tTranslations.Employments = culture === \"fi\" ? Translations_fi.Employments : (culture === \"sv-FI\" ? Translations_sv_FI.Employments : Translations_en_US.Employments);\r\n\t\tTranslations.UserIsActiveInMobile = culture === \"fi\" ? Translations_fi.UserIsActiveInMobile : (culture === \"sv-FI\" ? Translations_sv_FI.UserIsActiveInMobile : Translations_en_US.UserIsActiveInMobile);\r\n\t\tTranslations.AddComment = culture === \"fi\" ? Translations_fi.AddComment : (culture === \"sv-FI\" ? Translations_sv_FI.AddComment : Translations_en_US.AddComment);\r\n\t\tTranslations.AddAtleastOneInstantMessageChannelUsersToInstantMessageChannel = culture === \"fi\" ? Translations_fi.AddAtleastOneInstantMessageChannelUsersToInstantMessageChannel : (culture === \"sv-FI\" ? Translations_sv_FI.AddAtleastOneInstantMessageChannelUsersToInstantMessageChannel : Translations_en_US.AddAtleastOneInstantMessageChannelUsersToInstantMessageChannel);\r\n\t\tTranslations.DoYouReallyWantToRemoveFilterParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveFilterParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveFilterParameter : Translations_en_US.DoYouReallyWantToRemoveFilterParameter);\r\n\t\tTranslations.ReportsStandard = culture === \"fi\" ? Translations_fi.ReportsStandard : (culture === \"sv-FI\" ? Translations_sv_FI.ReportsStandard : Translations_en_US.ReportsStandard);\r\n\t\tTranslations.Warning = culture === \"fi\" ? Translations_fi.Warning : (culture === \"sv-FI\" ? Translations_sv_FI.Warning : Translations_en_US.Warning);\r\n\t\tTranslations.GeneralAttachments = culture === \"fi\" ? Translations_fi.GeneralAttachments : (culture === \"sv-FI\" ? Translations_sv_FI.GeneralAttachments : Translations_en_US.GeneralAttachments);\r\n\t\tTranslations.FormTitle3 = culture === \"fi\" ? Translations_fi.FormTitle3 : (culture === \"sv-FI\" ? Translations_sv_FI.FormTitle3 : Translations_en_US.FormTitle3);\r\n\t\tTranslations.FormSortAscending = culture === \"fi\" ? Translations_fi.FormSortAscending : (culture === \"sv-FI\" ? Translations_sv_FI.FormSortAscending : Translations_en_US.FormSortAscending);\r\n\t\tTranslations.FirstListRow = culture === \"fi\" ? Translations_fi.FirstListRow : (culture === \"sv-FI\" ? Translations_sv_FI.FirstListRow : Translations_en_US.FirstListRow);\r\n\t\tTranslations.DeletingFileFiltersParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingFileFiltersParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingFileFiltersParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingFileFiltersParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.WhistleBlowChannelWasNotFound = culture === \"fi\" ? Translations_fi.WhistleBlowChannelWasNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowChannelWasNotFound : Translations_en_US.WhistleBlowChannelWasNotFound);\r\n\t\tTranslations.LoggedInCompanyCannotBeDeleted = culture === \"fi\" ? Translations_fi.LoggedInCompanyCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.LoggedInCompanyCannotBeDeleted : Translations_en_US.LoggedInCompanyCannotBeDeleted);\r\n\t\tTranslations.RemoveQualification = culture === \"fi\" ? Translations_fi.RemoveQualification : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveQualification : Translations_en_US.RemoveQualification);\r\n\t\tTranslations.FileParameterDownloaded = culture === \"fi\" ? Translations_fi.FileParameterDownloaded : (culture === \"sv-FI\" ? Translations_sv_FI.FileParameterDownloaded : Translations_en_US.FileParameterDownloaded);\r\n\t\tTranslations.PermissionsForSections = culture === \"fi\" ? Translations_fi.PermissionsForSections : (culture === \"sv-FI\" ? Translations_sv_FI.PermissionsForSections : Translations_en_US.PermissionsForSections);\r\n\t\tTranslations.AddingAttachmentParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.AddingAttachmentParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.AddingAttachmentParameterWasNotSuccessfulErrorParameter : Translations_en_US.AddingAttachmentParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.TiedostoturvaUseType = culture === \"fi\" ? Translations_fi.TiedostoturvaUseType : (culture === \"sv-FI\" ? Translations_sv_FI.TiedostoturvaUseType : Translations_en_US.TiedostoturvaUseType);\r\n\t\tTranslations.FormulaAddition = culture === \"fi\" ? Translations_fi.FormulaAddition : (culture === \"sv-FI\" ? Translations_sv_FI.FormulaAddition : Translations_en_US.FormulaAddition);\r\n\t\tTranslations.CompanyGroupParameterNotFound = culture === \"fi\" ? Translations_fi.CompanyGroupParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyGroupParameterNotFound : Translations_en_US.CompanyGroupParameterNotFound);\r\n\t\tTranslations.RowInformation = culture === \"fi\" ? Translations_fi.RowInformation : (culture === \"sv-FI\" ? Translations_sv_FI.RowInformation : Translations_en_US.RowInformation);\r\n\t\tTranslations.AddCompaniesParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.AddCompaniesParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.AddCompaniesParameterWasNotSuccessfulErrorParameter : Translations_en_US.AddCompaniesParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.StudyWeek = culture === \"fi\" ? Translations_fi.StudyWeek : (culture === \"sv-FI\" ? Translations_sv_FI.StudyWeek : Translations_en_US.StudyWeek);\r\n\t\tTranslations.UnlockingEditableDocumentParameterWasNotSuccessful = culture === \"fi\" ? Translations_fi.UnlockingEditableDocumentParameterWasNotSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.UnlockingEditableDocumentParameterWasNotSuccessful : Translations_en_US.UnlockingEditableDocumentParameterWasNotSuccessful);\r\n\t\tTranslations.TheSystemDoesNotSupportYourWebBrowserUpdateToLatestBrowserVersion = culture === \"fi\" ? Translations_fi.TheSystemDoesNotSupportYourWebBrowserUpdateToLatestBrowserVersion : (culture === \"sv-FI\" ? Translations_sv_FI.TheSystemDoesNotSupportYourWebBrowserUpdateToLatestBrowserVersion : Translations_en_US.TheSystemDoesNotSupportYourWebBrowserUpdateToLatestBrowserVersion);\r\n\t\tTranslations.DoYouReallyWantToRemoveAttachmentParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveAttachmentParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveAttachmentParameter : Translations_en_US.DoYouReallyWantToRemoveAttachmentParameter);\r\n\t\tTranslations.TimeSpanTwoYears = culture === \"fi\" ? Translations_fi.TimeSpanTwoYears : (culture === \"sv-FI\" ? Translations_sv_FI.TimeSpanTwoYears : Translations_en_US.TimeSpanTwoYears);\r\n\t\tTranslations.AdditionalFunctions = culture === \"fi\" ? Translations_fi.AdditionalFunctions : (culture === \"sv-FI\" ? Translations_sv_FI.AdditionalFunctions : Translations_en_US.AdditionalFunctions);\r\n\t\tTranslations.DirectoryItemDocumentParameterNotFound = culture === \"fi\" ? Translations_fi.DirectoryItemDocumentParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.DirectoryItemDocumentParameterNotFound : Translations_en_US.DirectoryItemDocumentParameterNotFound);\r\n\t\tTranslations.WhistleBlowSendReport = culture === \"fi\" ? Translations_fi.WhistleBlowSendReport : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowSendReport : Translations_en_US.WhistleBlowSendReport);\r\n\t\tTranslations.ValidityEndDateStart = culture === \"fi\" ? Translations_fi.ValidityEndDateStart : (culture === \"sv-FI\" ? Translations_sv_FI.ValidityEndDateStart : Translations_en_US.ValidityEndDateStart);\r\n\t\tTranslations.RemoveRecordUserAndKeepUser = culture === \"fi\" ? Translations_fi.RemoveRecordUserAndKeepUser : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveRecordUserAndKeepUser : Translations_en_US.RemoveRecordUserAndKeepUser);\r\n\t\tTranslations.InternalMessages = culture === \"fi\" ? Translations_fi.InternalMessages : (culture === \"sv-FI\" ? Translations_sv_FI.InternalMessages : Translations_en_US.InternalMessages);\r\n\t\tTranslations.WhistleBlowNewReport = culture === \"fi\" ? Translations_fi.WhistleBlowNewReport : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowNewReport : Translations_en_US.WhistleBlowNewReport);\r\n\t\tTranslations.ImportingUsersParameterWasSuccessful = culture === \"fi\" ? Translations_fi.ImportingUsersParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.ImportingUsersParameterWasSuccessful : Translations_en_US.ImportingUsersParameterWasSuccessful);\r\n\t\tTranslations.FamiliarizationStartDate = culture === \"fi\" ? Translations_fi.FamiliarizationStartDate : (culture === \"sv-FI\" ? Translations_sv_FI.FamiliarizationStartDate : Translations_en_US.FamiliarizationStartDate);\r\n\t\tTranslations.SavingEventMessageWasSuccessful = culture === \"fi\" ? Translations_fi.SavingEventMessageWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventMessageWasSuccessful : Translations_en_US.SavingEventMessageWasSuccessful);\r\n\t\tTranslations.AddUsersParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.AddUsersParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.AddUsersParameterWasNotSuccessfulConcurrencyError : Translations_en_US.AddUsersParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.UnreadMessagesParameter = culture === \"fi\" ? Translations_fi.UnreadMessagesParameter : (culture === \"sv-FI\" ? Translations_sv_FI.UnreadMessagesParameter : Translations_en_US.UnreadMessagesParameter);\r\n\t\tTranslations.AddPartnerParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.AddPartnerParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.AddPartnerParameterWasNotSuccessfulErrorParameter : Translations_en_US.AddPartnerParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.DeletingCalendarTaskCategoriesParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingCalendarTaskCategoriesParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingCalendarTaskCategoriesParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingCalendarTaskCategoriesParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.ValidityDate = culture === \"fi\" ? Translations_fi.ValidityDate : (culture === \"sv-FI\" ? Translations_sv_FI.ValidityDate : Translations_en_US.ValidityDate);\r\n\t\tTranslations.CalendarTaskRepetitionCountPrefix = culture === \"fi\" ? Translations_fi.CalendarTaskRepetitionCountPrefix : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskRepetitionCountPrefix : Translations_en_US.CalendarTaskRepetitionCountPrefix);\r\n\t\tTranslations.WhistleBlowEventTypeHandlersAdded = culture === \"fi\" ? Translations_fi.WhistleBlowEventTypeHandlersAdded : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowEventTypeHandlersAdded : Translations_en_US.WhistleBlowEventTypeHandlersAdded);\r\n\t\tTranslations.AllJobTitles = culture === \"fi\" ? Translations_fi.AllJobTitles : (culture === \"sv-FI\" ? Translations_sv_FI.AllJobTitles : Translations_en_US.AllJobTitles);\r\n\t\tTranslations.AddSharedDocumentTemplate = culture === \"fi\" ? Translations_fi.AddSharedDocumentTemplate : (culture === \"sv-FI\" ? Translations_sv_FI.AddSharedDocumentTemplate : Translations_en_US.AddSharedDocumentTemplate);\r\n\t\tTranslations.DocumentTypes = culture === \"fi\" ? Translations_fi.DocumentTypes : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentTypes : Translations_en_US.DocumentTypes);\r\n\t\tTranslations.AddUserGroupParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.AddUserGroupParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.AddUserGroupParameterWasNotSuccessfulConcurrencyError : Translations_en_US.AddUserGroupParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.RemoveTask = culture === \"fi\" ? Translations_fi.RemoveTask : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveTask : Translations_en_US.RemoveTask);\r\n\t\tTranslations.DeletingPartnerParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingPartnerParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingPartnerParameterWasSuccessful : Translations_en_US.DeletingPartnerParameterWasSuccessful);\r\n\t\tTranslations.ApplicationTempPathIsNotSpecified = culture === \"fi\" ? Translations_fi.ApplicationTempPathIsNotSpecified : (culture === \"sv-FI\" ? Translations_sv_FI.ApplicationTempPathIsNotSpecified : Translations_en_US.ApplicationTempPathIsNotSpecified);\r\n\t\tTranslations.RemoveUserGroupExternalSystemsWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.RemoveUserGroupExternalSystemsWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveUserGroupExternalSystemsWasNotSuccessfulConcurrencyError : Translations_en_US.RemoveUserGroupExternalSystemsWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.SavingDefaultHandlersWasSuccessful = culture === \"fi\" ? Translations_fi.SavingDefaultHandlersWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingDefaultHandlersWasSuccessful : Translations_en_US.SavingDefaultHandlersWasSuccessful);\r\n\t\tTranslations.EventUrgencyClassParameterNotFound = culture === \"fi\" ? Translations_fi.EventUrgencyClassParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.EventUrgencyClassParameterNotFound : Translations_en_US.EventUrgencyClassParameterNotFound);\r\n\t\tTranslations.FormDisabled = culture === \"fi\" ? Translations_fi.FormDisabled : (culture === \"sv-FI\" ? Translations_sv_FI.FormDisabled : Translations_en_US.FormDisabled);\r\n\t\tTranslations.AddPartnersParameterWasSuccessful = culture === \"fi\" ? Translations_fi.AddPartnersParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.AddPartnersParameterWasSuccessful : Translations_en_US.AddPartnersParameterWasSuccessful);\r\n\t\tTranslations.UserFilterExpired = culture === \"fi\" ? Translations_fi.UserFilterExpired : (culture === \"sv-FI\" ? Translations_sv_FI.UserFilterExpired : Translations_en_US.UserFilterExpired);\r\n\t\tTranslations.DeletingUserGroupsParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingUserGroupsParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingUserGroupsParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingUserGroupsParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.PublishVoucherToFileSystem = culture === \"fi\" ? Translations_fi.PublishVoucherToFileSystem : (culture === \"sv-FI\" ? Translations_sv_FI.PublishVoucherToFileSystem : Translations_en_US.PublishVoucherToFileSystem);\r\n\t\tTranslations.ReplyToInstantMessage = culture === \"fi\" ? Translations_fi.ReplyToInstantMessage : (culture === \"sv-FI\" ? Translations_sv_FI.ReplyToInstantMessage : Translations_en_US.ReplyToInstantMessage);\r\n\t\tTranslations.FolderNameConstainsIllegalCharacters = culture === \"fi\" ? Translations_fi.FolderNameConstainsIllegalCharacters : (culture === \"sv-FI\" ? Translations_sv_FI.FolderNameConstainsIllegalCharacters : Translations_en_US.FolderNameConstainsIllegalCharacters);\r\n\t\tTranslations.RemoveFile = culture === \"fi\" ? Translations_fi.RemoveFile : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveFile : Translations_en_US.RemoveFile);\r\n\t\tTranslations.NewMenu = culture === \"fi\" ? Translations_fi.NewMenu : (culture === \"sv-FI\" ? Translations_sv_FI.NewMenu : Translations_en_US.NewMenu);\r\n\t\tTranslations.Task = culture === \"fi\" ? Translations_fi.Task : (culture === \"sv-FI\" ? Translations_sv_FI.Task : Translations_en_US.Task);\r\n\t\tTranslations.PushEndpoint = culture === \"fi\" ? Translations_fi.PushEndpoint : (culture === \"sv-FI\" ? Translations_sv_FI.PushEndpoint : Translations_en_US.PushEndpoint);\r\n\t\tTranslations.SavingApplicationPermissionsWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingApplicationPermissionsWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingApplicationPermissionsWasNotSuccessfulConcurrencyError : Translations_en_US.SavingApplicationPermissionsWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.Add = culture === \"fi\" ? Translations_fi.Add : (culture === \"sv-FI\" ? Translations_sv_FI.Add : Translations_en_US.Add);\r\n\t\tTranslations.DeletingRecordUserEmploymentParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingRecordUserEmploymentParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordUserEmploymentParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingRecordUserEmploymentParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.AccessRightReadInstantMessages = culture === \"fi\" ? Translations_fi.AccessRightReadInstantMessages : (culture === \"sv-FI\" ? Translations_sv_FI.AccessRightReadInstantMessages : Translations_en_US.AccessRightReadInstantMessages);\r\n\t\tTranslations.ExitingInstantMessageChannelWasSuccessful = culture === \"fi\" ? Translations_fi.ExitingInstantMessageChannelWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.ExitingInstantMessageChannelWasSuccessful : Translations_en_US.ExitingInstantMessageChannelWasSuccessful);\r\n\t\tTranslations.EventParameterUnitChangedFromParameterToParameter = culture === \"fi\" ? Translations_fi.EventParameterUnitChangedFromParameterToParameter : (culture === \"sv-FI\" ? Translations_sv_FI.EventParameterUnitChangedFromParameterToParameter : Translations_en_US.EventParameterUnitChangedFromParameterToParameter);\r\n\t\tTranslations.DoYouReallyWantToUnlockEditableDocument = culture === \"fi\" ? Translations_fi.DoYouReallyWantToUnlockEditableDocument : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToUnlockEditableDocument : Translations_en_US.DoYouReallyWantToUnlockEditableDocument);\r\n\t\tTranslations.UserAccountNotConnected = culture === \"fi\" ? Translations_fi.UserAccountNotConnected : (culture === \"sv-FI\" ? Translations_sv_FI.UserAccountNotConnected : Translations_en_US.UserAccountNotConnected);\r\n\t\tTranslations.All = culture === \"fi\" ? Translations_fi.All : (culture === \"sv-FI\" ? Translations_sv_FI.All : Translations_en_US.All);\r\n\t\tTranslations.FieldParameterValueCanOnlyContainNumbers = culture === \"fi\" ? Translations_fi.FieldParameterValueCanOnlyContainNumbers : (culture === \"sv-FI\" ? Translations_sv_FI.FieldParameterValueCanOnlyContainNumbers : Translations_en_US.FieldParameterValueCanOnlyContainNumbers);\r\n\t\tTranslations.PrintRecordUser = culture === \"fi\" ? Translations_fi.PrintRecordUser : (culture === \"sv-FI\" ? Translations_sv_FI.PrintRecordUser : Translations_en_US.PrintRecordUser);\r\n\t\tTranslations.RemoveDocumentTemplate = culture === \"fi\" ? Translations_fi.RemoveDocumentTemplate : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveDocumentTemplate : Translations_en_US.RemoveDocumentTemplate);\r\n\t\tTranslations.IncludeOnlyActiveUsers = culture === \"fi\" ? Translations_fi.IncludeOnlyActiveUsers : (culture === \"sv-FI\" ? Translations_sv_FI.IncludeOnlyActiveUsers : Translations_en_US.IncludeOnlyActiveUsers);\r\n\t\tTranslations.AddFileOrTakePicture = culture === \"fi\" ? Translations_fi.AddFileOrTakePicture : (culture === \"sv-FI\" ? Translations_sv_FI.AddFileOrTakePicture : Translations_en_US.AddFileOrTakePicture);\r\n\t\tTranslations.DaysAgo90 = culture === \"fi\" ? Translations_fi.DaysAgo90 : (culture === \"sv-FI\" ? Translations_sv_FI.DaysAgo90 : Translations_en_US.DaysAgo90);\r\n\t\tTranslations.SavingRecordEmploymentParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingRecordEmploymentParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingRecordEmploymentParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingRecordEmploymentParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.DoYouReallyWantToClearLog = culture === \"fi\" ? Translations_fi.DoYouReallyWantToClearLog : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToClearLog : Translations_en_US.DoYouReallyWantToClearLog);\r\n\t\tTranslations.OldPassword = culture === \"fi\" ? Translations_fi.OldPassword : (culture === \"sv-FI\" ? Translations_sv_FI.OldPassword : Translations_en_US.OldPassword);\r\n\t\tTranslations.RemoveForm = culture === \"fi\" ? Translations_fi.RemoveForm : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveForm : Translations_en_US.RemoveForm);\r\n\t\tTranslations.ProcessingFolderParameter = culture === \"fi\" ? Translations_fi.ProcessingFolderParameter : (culture === \"sv-FI\" ? Translations_sv_FI.ProcessingFolderParameter : Translations_en_US.ProcessingFolderParameter);\r\n\t\tTranslations.WhistleBlowCategoryParameterNotFound = culture === \"fi\" ? Translations_fi.WhistleBlowCategoryParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowCategoryParameterNotFound : Translations_en_US.WhistleBlowCategoryParameterNotFound);\r\n\t\tTranslations.ShowUserGroups = culture === \"fi\" ? Translations_fi.ShowUserGroups : (culture === \"sv-FI\" ? Translations_sv_FI.ShowUserGroups : Translations_en_US.ShowUserGroups);\r\n\t\tTranslations.TaskTypeParameterNotFound = culture === \"fi\" ? Translations_fi.TaskTypeParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.TaskTypeParameterNotFound : Translations_en_US.TaskTypeParameterNotFound);\r\n\t\tTranslations.ClearSubFolderPermissions = culture === \"fi\" ? Translations_fi.ClearSubFolderPermissions : (culture === \"sv-FI\" ? Translations_sv_FI.ClearSubFolderPermissions : Translations_en_US.ClearSubFolderPermissions);\r\n\t\tTranslations.AddDefaultFurtherEducationGroup = culture === \"fi\" ? Translations_fi.AddDefaultFurtherEducationGroup : (culture === \"sv-FI\" ? Translations_sv_FI.AddDefaultFurtherEducationGroup : Translations_en_US.AddDefaultFurtherEducationGroup);\r\n\t\tTranslations.NewInstantMessageChannel = culture === \"fi\" ? Translations_fi.NewInstantMessageChannel : (culture === \"sv-FI\" ? Translations_sv_FI.NewInstantMessageChannel : Translations_en_US.NewInstantMessageChannel);\r\n\t\tTranslations.FamiliarizationEndDate = culture === \"fi\" ? Translations_fi.FamiliarizationEndDate : (culture === \"sv-FI\" ? Translations_sv_FI.FamiliarizationEndDate : Translations_en_US.FamiliarizationEndDate);\r\n\t\tTranslations.ReminderWeeksBefore = culture === \"fi\" ? Translations_fi.ReminderWeeksBefore : (culture === \"sv-FI\" ? Translations_sv_FI.ReminderWeeksBefore : Translations_en_US.ReminderWeeksBefore);\r\n\t\tTranslations.RecordFamiliarizationParameterNotFound = culture === \"fi\" ? Translations_fi.RecordFamiliarizationParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.RecordFamiliarizationParameterNotFound : Translations_en_US.RecordFamiliarizationParameterNotFound);\r\n\t\tTranslations.WebPushError = culture === \"fi\" ? Translations_fi.WebPushError : (culture === \"sv-FI\" ? Translations_sv_FI.WebPushError : Translations_en_US.WebPushError);\r\n\t\tTranslations.DocumentTemplateCodeMustBeDefined = culture === \"fi\" ? Translations_fi.DocumentTemplateCodeMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentTemplateCodeMustBeDefined : Translations_en_US.DocumentTemplateCodeMustBeDefined);\r\n\t\tTranslations.SaveUserFurtherEducationConfirmation = culture === \"fi\" ? Translations_fi.SaveUserFurtherEducationConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.SaveUserFurtherEducationConfirmation : Translations_en_US.SaveUserFurtherEducationConfirmation);\r\n\t\tTranslations.OpenWhistleBlowInstruction = culture === \"fi\" ? Translations_fi.OpenWhistleBlowInstruction : (culture === \"sv-FI\" ? Translations_sv_FI.OpenWhistleBlowInstruction : Translations_en_US.OpenWhistleBlowInstruction);\r\n\t\tTranslations.WhistleBlowSeverityUnspecified = culture === \"fi\" ? Translations_fi.WhistleBlowSeverityUnspecified : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowSeverityUnspecified : Translations_en_US.WhistleBlowSeverityUnspecified);\r\n\t\tTranslations.FurtherEductionGroupParameterContainsFurtherEducationsAndCannotBeDeleted = culture === \"fi\" ? Translations_fi.FurtherEductionGroupParameterContainsFurtherEducationsAndCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.FurtherEductionGroupParameterContainsFurtherEducationsAndCannotBeDeleted : Translations_en_US.FurtherEductionGroupParameterContainsFurtherEducationsAndCannotBeDeleted);\r\n\t\tTranslations.NoAddedEventTypes = culture === \"fi\" ? Translations_fi.NoAddedEventTypes : (culture === \"sv-FI\" ? Translations_sv_FI.NoAddedEventTypes : Translations_en_US.NoAddedEventTypes);\r\n\t\tTranslations.SavingEventParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingEventParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingEventParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.DoYouReallyWantToExitInstantMessageChannel = culture === \"fi\" ? Translations_fi.DoYouReallyWantToExitInstantMessageChannel : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToExitInstantMessageChannel : Translations_en_US.DoYouReallyWantToExitInstantMessageChannel);\r\n\t\tTranslations.DoCleanLog = culture === \"fi\" ? Translations_fi.DoCleanLog : (culture === \"sv-FI\" ? Translations_sv_FI.DoCleanLog : Translations_en_US.DoCleanLog);\r\n\t\tTranslations.RecordFurtherEducationCodeIsAlreadyInUse = culture === \"fi\" ? Translations_fi.RecordFurtherEducationCodeIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.RecordFurtherEducationCodeIsAlreadyInUse : Translations_en_US.RecordFurtherEducationCodeIsAlreadyInUse);\r\n\t\tTranslations.EventCreator = culture === \"fi\" ? Translations_fi.EventCreator : (culture === \"sv-FI\" ? Translations_sv_FI.EventCreator : Translations_en_US.EventCreator);\r\n\t\tTranslations.PermissionsForSystems = culture === \"fi\" ? Translations_fi.PermissionsForSystems : (culture === \"sv-FI\" ? Translations_sv_FI.PermissionsForSystems : Translations_en_US.PermissionsForSystems);\r\n\t\tTranslations.ReadError = culture === \"fi\" ? Translations_fi.ReadError : (culture === \"sv-FI\" ? Translations_sv_FI.ReadError : Translations_en_US.ReadError);\r\n\t\tTranslations.FolderParameterAlreadyExistsInFileSystem = culture === \"fi\" ? Translations_fi.FolderParameterAlreadyExistsInFileSystem : (culture === \"sv-FI\" ? Translations_sv_FI.FolderParameterAlreadyExistsInFileSystem : Translations_en_US.FolderParameterAlreadyExistsInFileSystem);\r\n\t\tTranslations.SaveDraft = culture === \"fi\" ? Translations_fi.SaveDraft : (culture === \"sv-FI\" ? Translations_sv_FI.SaveDraft : Translations_en_US.SaveDraft);\r\n\t\tTranslations.FormNumbers = culture === \"fi\" ? Translations_fi.FormNumbers : (culture === \"sv-FI\" ? Translations_sv_FI.FormNumbers : Translations_en_US.FormNumbers);\r\n\t\tTranslations.DeletingInstantMessageWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingInstantMessageWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingInstantMessageWasSuccessful : Translations_en_US.DeletingInstantMessageWasSuccessful);\r\n\t\tTranslations.FormulaFloor = culture === \"fi\" ? Translations_fi.FormulaFloor : (culture === \"sv-FI\" ? Translations_sv_FI.FormulaFloor : Translations_en_US.FormulaFloor);\r\n\t\tTranslations.EditMessageType = culture === \"fi\" ? Translations_fi.EditMessageType : (culture === \"sv-FI\" ? Translations_sv_FI.EditMessageType : Translations_en_US.EditMessageType);\r\n\t\tTranslations.EditTaskPriority = culture === \"fi\" ? Translations_fi.EditTaskPriority : (culture === \"sv-FI\" ? Translations_sv_FI.EditTaskPriority : Translations_en_US.EditTaskPriority);\r\n\t\tTranslations.UsedQuota = culture === \"fi\" ? Translations_fi.UsedQuota : (culture === \"sv-FI\" ? Translations_sv_FI.UsedQuota : Translations_en_US.UsedQuota);\r\n\t\tTranslations.Panels = culture === \"fi\" ? Translations_fi.Panels : (culture === \"sv-FI\" ? Translations_sv_FI.Panels : Translations_en_US.Panels);\r\n\t\tTranslations.LockedTaskParameterCannotBeMovedToTrashBin = culture === \"fi\" ? Translations_fi.LockedTaskParameterCannotBeMovedToTrashBin : (culture === \"sv-FI\" ? Translations_sv_FI.LockedTaskParameterCannotBeMovedToTrashBin : Translations_en_US.LockedTaskParameterCannotBeMovedToTrashBin);\r\n\t\tTranslations.FolderTreePermissions = culture === \"fi\" ? Translations_fi.FolderTreePermissions : (culture === \"sv-FI\" ? Translations_sv_FI.FolderTreePermissions : Translations_en_US.FolderTreePermissions);\r\n\t\tTranslations.FormShowModifyDate = culture === \"fi\" ? Translations_fi.FormShowModifyDate : (culture === \"sv-FI\" ? Translations_sv_FI.FormShowModifyDate : Translations_en_US.FormShowModifyDate);\r\n\t\tTranslations.WhistleBlowNotFound = culture === \"fi\" ? Translations_fi.WhistleBlowNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowNotFound : Translations_en_US.WhistleBlowNotFound);\r\n\t\tTranslations.ShowInheritedPermissions = culture === \"fi\" ? Translations_fi.ShowInheritedPermissions : (culture === \"sv-FI\" ? Translations_sv_FI.ShowInheritedPermissions : Translations_en_US.ShowInheritedPermissions);\r\n\t\tTranslations.SaveInstantMessageChannelConfirmation = culture === \"fi\" ? Translations_fi.SaveInstantMessageChannelConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.SaveInstantMessageChannelConfirmation : Translations_en_US.SaveInstantMessageChannelConfirmation);\r\n\t\tTranslations.AllEventHandlersHaveReadMessage = culture === \"fi\" ? Translations_fi.AllEventHandlersHaveReadMessage : (culture === \"sv-FI\" ? Translations_sv_FI.AllEventHandlersHaveReadMessage : Translations_en_US.AllEventHandlersHaveReadMessage);\r\n\t\tTranslations.AdditionalPermissionBEventsDialog = culture === \"fi\" ? Translations_fi.AdditionalPermissionBEventsDialog : (culture === \"sv-FI\" ? Translations_sv_FI.AdditionalPermissionBEventsDialog : Translations_en_US.AdditionalPermissionBEventsDialog);\r\n\t\tTranslations.DefaultEventHandlers = culture === \"fi\" ? Translations_fi.DefaultEventHandlers : (culture === \"sv-FI\" ? Translations_sv_FI.DefaultEventHandlers : Translations_en_US.DefaultEventHandlers);\r\n\t\tTranslations.SavingWhistleBlowCategoryParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingWhistleBlowCategoryParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingWhistleBlowCategoryParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingWhistleBlowCategoryParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.AddFileFilter = culture === \"fi\" ? Translations_fi.AddFileFilter : (culture === \"sv-FI\" ? Translations_sv_FI.AddFileFilter : Translations_en_US.AddFileFilter);\r\n\t\tTranslations.IncludeArchivedFamiliarizations = culture === \"fi\" ? Translations_fi.IncludeArchivedFamiliarizations : (culture === \"sv-FI\" ? Translations_sv_FI.IncludeArchivedFamiliarizations : Translations_en_US.IncludeArchivedFamiliarizations);\r\n\t\tTranslations.TaskDataRow = culture === \"fi\" ? Translations_fi.TaskDataRow : (culture === \"sv-FI\" ? Translations_sv_FI.TaskDataRow : Translations_en_US.TaskDataRow);\r\n\t\tTranslations.LockedTaskParameterCannotBeRestored = culture === \"fi\" ? Translations_fi.LockedTaskParameterCannotBeRestored : (culture === \"sv-FI\" ? Translations_sv_FI.LockedTaskParameterCannotBeRestored : Translations_en_US.LockedTaskParameterCannotBeRestored);\r\n\t\tTranslations.Preview = culture === \"fi\" ? Translations_fi.Preview : (culture === \"sv-FI\" ? Translations_sv_FI.Preview : Translations_en_US.Preview);\r\n\t\tTranslations.ExternalSystemCompanyCodeClaimNotFound = culture === \"fi\" ? Translations_fi.ExternalSystemCompanyCodeClaimNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.ExternalSystemCompanyCodeClaimNotFound : Translations_en_US.ExternalSystemCompanyCodeClaimNotFound);\r\n\t\tTranslations.WhistleBlowStateResolved = culture === \"fi\" ? Translations_fi.WhistleBlowStateResolved : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowStateResolved : Translations_en_US.WhistleBlowStateResolved);\r\n\t\tTranslations.SavingCalendarTaskParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingCalendarTaskParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingCalendarTaskParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingCalendarTaskParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.DocumentsNotFound = culture === \"fi\" ? Translations_fi.DocumentsNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentsNotFound : Translations_en_US.DocumentsNotFound);\r\n\t\tTranslations.ComparingFileSystemToDatabase = culture === \"fi\" ? Translations_fi.ComparingFileSystemToDatabase : (culture === \"sv-FI\" ? Translations_sv_FI.ComparingFileSystemToDatabase : Translations_en_US.ComparingFileSystemToDatabase);\r\n\t\tTranslations.RequestPasswordChangeTitle = culture === \"fi\" ? Translations_fi.RequestPasswordChangeTitle : (culture === \"sv-FI\" ? Translations_sv_FI.RequestPasswordChangeTitle : Translations_en_US.RequestPasswordChangeTitle);\r\n\t\tTranslations.DeletingDocumentTemplateParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingDocumentTemplateParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingDocumentTemplateParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingDocumentTemplateParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.TaxNumber = culture === \"fi\" ? Translations_fi.TaxNumber : (culture === \"sv-FI\" ? Translations_sv_FI.TaxNumber : Translations_en_US.TaxNumber);\r\n\t\tTranslations.AddingRecordUserFamiliarizationsWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.AddingRecordUserFamiliarizationsWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.AddingRecordUserFamiliarizationsWasNotSuccessfulErrorParameter : Translations_en_US.AddingRecordUserFamiliarizationsWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.Archived = culture === \"fi\" ? Translations_fi.Archived : (culture === \"sv-FI\" ? Translations_sv_FI.Archived : Translations_en_US.Archived);\r\n\t\tTranslations.RemoveInvalidDefaultEventHandlersConfirmation = culture === \"fi\" ? Translations_fi.RemoveInvalidDefaultEventHandlersConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveInvalidDefaultEventHandlersConfirmation : Translations_en_US.RemoveInvalidDefaultEventHandlersConfirmation);\r\n\t\tTranslations.FormModifyDate = culture === \"fi\" ? Translations_fi.FormModifyDate : (culture === \"sv-FI\" ? Translations_sv_FI.FormModifyDate : Translations_en_US.FormModifyDate);\r\n\t\tTranslations.InstantMessageChannelContainsParameterInstantMessageUsersAndCannotBeDeleted = culture === \"fi\" ? Translations_fi.InstantMessageChannelContainsParameterInstantMessageUsersAndCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageChannelContainsParameterInstantMessageUsersAndCannotBeDeleted : Translations_en_US.InstantMessageChannelContainsParameterInstantMessageUsersAndCannotBeDeleted);\r\n\t\tTranslations.NewRecordUserMustBeSavedBeforeFamiliarizationsCanBeAdded = culture === \"fi\" ? Translations_fi.NewRecordUserMustBeSavedBeforeFamiliarizationsCanBeAdded : (culture === \"sv-FI\" ? Translations_sv_FI.NewRecordUserMustBeSavedBeforeFamiliarizationsCanBeAdded : Translations_en_US.NewRecordUserMustBeSavedBeforeFamiliarizationsCanBeAdded);\r\n\t\tTranslations.DocumentsSelected = culture === \"fi\" ? Translations_fi.DocumentsSelected : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentsSelected : Translations_en_US.DocumentsSelected);\r\n\t\tTranslations.AuthorizationLevelUser = culture === \"fi\" ? Translations_fi.AuthorizationLevelUser : (culture === \"sv-FI\" ? Translations_sv_FI.AuthorizationLevelUser : Translations_en_US.AuthorizationLevelUser);\r\n\t\tTranslations.ScopeCanBeChanged = culture === \"fi\" ? Translations_fi.ScopeCanBeChanged : (culture === \"sv-FI\" ? Translations_sv_FI.ScopeCanBeChanged : Translations_en_US.ScopeCanBeChanged);\r\n\t\tTranslations.WhistleBlowReceiver = culture === \"fi\" ? Translations_fi.WhistleBlowReceiver : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowReceiver : Translations_en_US.WhistleBlowReceiver);\r\n\t\tTranslations.DefaultEventUrgencyClassMustBeDefinedBeforeAddingEvents = culture === \"fi\" ? Translations_fi.DefaultEventUrgencyClassMustBeDefinedBeforeAddingEvents : (culture === \"sv-FI\" ? Translations_sv_FI.DefaultEventUrgencyClassMustBeDefinedBeforeAddingEvents : Translations_en_US.DefaultEventUrgencyClassMustBeDefinedBeforeAddingEvents);\r\n\t\tTranslations.WhistleBlowInformantMustBeNotifiedLatestAtParameter = culture === \"fi\" ? Translations_fi.WhistleBlowInformantMustBeNotifiedLatestAtParameter : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowInformantMustBeNotifiedLatestAtParameter : Translations_en_US.WhistleBlowInformantMustBeNotifiedLatestAtParameter);\r\n\t\tTranslations.SearchCalendarTasks = culture === \"fi\" ? Translations_fi.SearchCalendarTasks : (culture === \"sv-FI\" ? Translations_sv_FI.SearchCalendarTasks : Translations_en_US.SearchCalendarTasks);\r\n\t\tTranslations.EventTypesGeneric = culture === \"fi\" ? Translations_fi.EventTypesGeneric : (culture === \"sv-FI\" ? Translations_sv_FI.EventTypesGeneric : Translations_en_US.EventTypesGeneric);\r\n\t\tTranslations.DeletingEditableDocumentParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingEditableDocumentParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingEditableDocumentParameterWasSuccessful : Translations_en_US.DeletingEditableDocumentParameterWasSuccessful);\r\n\t\tTranslations.FormInitializeFromSavedRow = culture === \"fi\" ? Translations_fi.FormInitializeFromSavedRow : (culture === \"sv-FI\" ? Translations_sv_FI.FormInitializeFromSavedRow : Translations_en_US.FormInitializeFromSavedRow);\r\n\t\tTranslations.RootCause = culture === \"fi\" ? Translations_fi.RootCause : (culture === \"sv-FI\" ? Translations_sv_FI.RootCause : Translations_en_US.RootCause);\r\n\t\tTranslations.CostCentreName = culture === \"fi\" ? Translations_fi.CostCentreName : (culture === \"sv-FI\" ? Translations_sv_FI.CostCentreName : Translations_en_US.CostCentreName);\r\n\t\tTranslations.ReadReceiptNotGiven = culture === \"fi\" ? Translations_fi.ReadReceiptNotGiven : (culture === \"sv-FI\" ? Translations_sv_FI.ReadReceiptNotGiven : Translations_en_US.ReadReceiptNotGiven);\r\n\t\tTranslations.SavingOneTimePasswordWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingOneTimePasswordWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingOneTimePasswordWasNotSuccessfulConcurrencyError : Translations_en_US.SavingOneTimePasswordWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.AddLogisticVoucherCompanyPaymentSetting = culture === \"fi\" ? Translations_fi.AddLogisticVoucherCompanyPaymentSetting : (culture === \"sv-FI\" ? Translations_sv_FI.AddLogisticVoucherCompanyPaymentSetting : Translations_en_US.AddLogisticVoucherCompanyPaymentSetting);\r\n\t\tTranslations.LoggedInUser = culture === \"fi\" ? Translations_fi.LoggedInUser : (culture === \"sv-FI\" ? Translations_sv_FI.LoggedInUser : Translations_en_US.LoggedInUser);\r\n\t\tTranslations.UserCodeMustBeValid = culture === \"fi\" ? Translations_fi.UserCodeMustBeValid : (culture === \"sv-FI\" ? Translations_sv_FI.UserCodeMustBeValid : Translations_en_US.UserCodeMustBeValid);\r\n\t\tTranslations.PreviewRowPrint = culture === \"fi\" ? Translations_fi.PreviewRowPrint : (culture === \"sv-FI\" ? Translations_sv_FI.PreviewRowPrint : Translations_en_US.PreviewRowPrint);\r\n\t\tTranslations.SavingCalendarTaskParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingCalendarTaskParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingCalendarTaskParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingCalendarTaskParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.TargetsMyCompany = culture === \"fi\" ? Translations_fi.TargetsMyCompany : (culture === \"sv-FI\" ? Translations_sv_FI.TargetsMyCompany : Translations_en_US.TargetsMyCompany);\r\n\t\tTranslations.FieldParameterContainsInvalidCodeCharacters = culture === \"fi\" ? Translations_fi.FieldParameterContainsInvalidCodeCharacters : (culture === \"sv-FI\" ? Translations_sv_FI.FieldParameterContainsInvalidCodeCharacters : Translations_en_US.FieldParameterContainsInvalidCodeCharacters);\r\n\t\tTranslations.LogisticVoucher = culture === \"fi\" ? Translations_fi.LogisticVoucher : (culture === \"sv-FI\" ? Translations_sv_FI.LogisticVoucher : Translations_en_US.LogisticVoucher);\r\n\t\tTranslations.AccessRightWriteTasks = culture === \"fi\" ? Translations_fi.AccessRightWriteTasks : (culture === \"sv-FI\" ? Translations_sv_FI.AccessRightWriteTasks : Translations_en_US.AccessRightWriteTasks);\r\n\t\tTranslations.NewInstantMessageChannelMustBeSavedBeforeUsersCanBeAdded = culture === \"fi\" ? Translations_fi.NewInstantMessageChannelMustBeSavedBeforeUsersCanBeAdded : (culture === \"sv-FI\" ? Translations_sv_FI.NewInstantMessageChannelMustBeSavedBeforeUsersCanBeAdded : Translations_en_US.NewInstantMessageChannelMustBeSavedBeforeUsersCanBeAdded);\r\n\t\tTranslations.RecordUserParameterNotFound = culture === \"fi\" ? Translations_fi.RecordUserParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.RecordUserParameterNotFound : Translations_en_US.RecordUserParameterNotFound);\r\n\t\tTranslations.EventTypes = culture === \"fi\" ? Translations_fi.EventTypes : (culture === \"sv-FI\" ? Translations_sv_FI.EventTypes : Translations_en_US.EventTypes);\r\n\t\tTranslations.NormalSize = culture === \"fi\" ? Translations_fi.NormalSize : (culture === \"sv-FI\" ? Translations_sv_FI.NormalSize : Translations_en_US.NormalSize);\r\n\t\tTranslations.WhistleBlowSeverityLow = culture === \"fi\" ? Translations_fi.WhistleBlowSeverityLow : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowSeverityLow : Translations_en_US.WhistleBlowSeverityLow);\r\n\t\tTranslations.TypeMustBeDefined = culture === \"fi\" ? Translations_fi.TypeMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.TypeMustBeDefined : Translations_en_US.TypeMustBeDefined);\r\n\t\tTranslations.ConfirmPassword = culture === \"fi\" ? Translations_fi.ConfirmPassword : (culture === \"sv-FI\" ? Translations_sv_FI.ConfirmPassword : Translations_en_US.ConfirmPassword);\r\n\t\tTranslations.Logo = culture === \"fi\" ? Translations_fi.Logo : (culture === \"sv-FI\" ? Translations_sv_FI.Logo : Translations_en_US.Logo);\r\n\t\tTranslations.DoYouReallyWantToRemoveKeywordParameterItIsUsedByParameterDocuments = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveKeywordParameterItIsUsedByParameterDocuments : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveKeywordParameterItIsUsedByParameterDocuments : Translations_en_US.DoYouReallyWantToRemoveKeywordParameterItIsUsedByParameterDocuments);\r\n\t\tTranslations.ChangeToEditMode = culture === \"fi\" ? Translations_fi.ChangeToEditMode : (culture === \"sv-FI\" ? Translations_sv_FI.ChangeToEditMode : Translations_en_US.ChangeToEditMode);\r\n\t\tTranslations.FormCalculatedDecimalNumber = culture === \"fi\" ? Translations_fi.FormCalculatedDecimalNumber : (culture === \"sv-FI\" ? Translations_sv_FI.FormCalculatedDecimalNumber : Translations_en_US.FormCalculatedDecimalNumber);\r\n\t\tTranslations.SharedDocumentTemplates = culture === \"fi\" ? Translations_fi.SharedDocumentTemplates : (culture === \"sv-FI\" ? Translations_sv_FI.SharedDocumentTemplates : Translations_en_US.SharedDocumentTemplates);\r\n\t\tTranslations.SavingEventMessageWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingEventMessageWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventMessageWasNotSuccessfulConcurrencyError : Translations_en_US.SavingEventMessageWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.DeletingAttachmentsParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingAttachmentsParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingAttachmentsParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingAttachmentsParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.ProjectName = culture === \"fi\" ? Translations_fi.ProjectName : (culture === \"sv-FI\" ? Translations_sv_FI.ProjectName : Translations_en_US.ProjectName);\r\n\t\tTranslations.DoYouReallyWantToRemoveSelectedRecordFurtherEducations = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveSelectedRecordFurtherEducations : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveSelectedRecordFurtherEducations : Translations_en_US.DoYouReallyWantToRemoveSelectedRecordFurtherEducations);\r\n\t\tTranslations.DocumentVersionParameterNotFound = culture === \"fi\" ? Translations_fi.DocumentVersionParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentVersionParameterNotFound : Translations_en_US.DocumentVersionParameterNotFound);\r\n\t\tTranslations.SelectRemovingMethod = culture === \"fi\" ? Translations_fi.SelectRemovingMethod : (culture === \"sv-FI\" ? Translations_sv_FI.SelectRemovingMethod : Translations_en_US.SelectRemovingMethod);\r\n\t\tTranslations.Partners = culture === \"fi\" ? Translations_fi.Partners : (culture === \"sv-FI\" ? Translations_sv_FI.Partners : Translations_en_US.Partners);\r\n\t\tTranslations.ExpiringIn120Days = culture === \"fi\" ? Translations_fi.ExpiringIn120Days : (culture === \"sv-FI\" ? Translations_sv_FI.ExpiringIn120Days : Translations_en_US.ExpiringIn120Days);\r\n\t\tTranslations.DeletingRecordFurtherEducationParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingRecordFurtherEducationParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordFurtherEducationParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingRecordFurtherEducationParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.Publish = culture === \"fi\" ? Translations_fi.Publish : (culture === \"sv-FI\" ? Translations_sv_FI.Publish : Translations_en_US.Publish);\r\n\t\tTranslations.SavingRecordBasicEducationParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingRecordBasicEducationParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingRecordBasicEducationParameterWasSuccessful : Translations_en_US.SavingRecordBasicEducationParameterWasSuccessful);\r\n\t\tTranslations.Report = culture === \"fi\" ? Translations_fi.Report : (culture === \"sv-FI\" ? Translations_sv_FI.Report : Translations_en_US.Report);\r\n\t\tTranslations.SelectCompany = culture === \"fi\" ? Translations_fi.SelectCompany : (culture === \"sv-FI\" ? Translations_sv_FI.SelectCompany : Translations_en_US.SelectCompany);\r\n\t\tTranslations.MessageTypeCodeIsAlreadyInUse = culture === \"fi\" ? Translations_fi.MessageTypeCodeIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.MessageTypeCodeIsAlreadyInUse : Translations_en_US.MessageTypeCodeIsAlreadyInUse);\r\n\t\tTranslations.Weekly = culture === \"fi\" ? Translations_fi.Weekly : (culture === \"sv-FI\" ? Translations_sv_FI.Weekly : Translations_en_US.Weekly);\r\n\t\tTranslations.PageNameMustBeDefined = culture === \"fi\" ? Translations_fi.PageNameMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.PageNameMustBeDefined : Translations_en_US.PageNameMustBeDefined);\r\n\t\tTranslations.LockedCalendarTaskParameterCannotBeSaved = culture === \"fi\" ? Translations_fi.LockedCalendarTaskParameterCannotBeSaved : (culture === \"sv-FI\" ? Translations_sv_FI.LockedCalendarTaskParameterCannotBeSaved : Translations_en_US.LockedCalendarTaskParameterCannotBeSaved);\r\n\t\tTranslations.LogLine = culture === \"fi\" ? Translations_fi.LogLine : (culture === \"sv-FI\" ? Translations_sv_FI.LogLine : Translations_en_US.LogLine);\r\n\t\tTranslations.SendEmailInvitationConfirmation = culture === \"fi\" ? Translations_fi.SendEmailInvitationConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.SendEmailInvitationConfirmation : Translations_en_US.SendEmailInvitationConfirmation);\r\n\t\tTranslations.SSRSRefreshStarted = culture === \"fi\" ? Translations_fi.SSRSRefreshStarted : (culture === \"sv-FI\" ? Translations_sv_FI.SSRSRefreshStarted : Translations_en_US.SSRSRefreshStarted);\r\n\t\tTranslations.Version = culture === \"fi\" ? Translations_fi.Version : (culture === \"sv-FI\" ? Translations_sv_FI.Version : Translations_en_US.Version);\r\n\t\tTranslations.RemoveUser = culture === \"fi\" ? Translations_fi.RemoveUser : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveUser : Translations_en_US.RemoveUser);\r\n\t\tTranslations.AddPermission = culture === \"fi\" ? Translations_fi.AddPermission : (culture === \"sv-FI\" ? Translations_sv_FI.AddPermission : Translations_en_US.AddPermission);\r\n\t\tTranslations.RecordEmailNotificationType = culture === \"fi\" ? Translations_fi.RecordEmailNotificationType : (culture === \"sv-FI\" ? Translations_sv_FI.RecordEmailNotificationType : Translations_en_US.RecordEmailNotificationType);\r\n\t\tTranslations.DeletingOneTimePasswordWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingOneTimePasswordWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingOneTimePasswordWasNotSuccessfulErrorParameter : Translations_en_US.DeletingOneTimePasswordWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.TaskMustBeSavedBeforeCalendarTasksCanBeAdded = culture === \"fi\" ? Translations_fi.TaskMustBeSavedBeforeCalendarTasksCanBeAdded : (culture === \"sv-FI\" ? Translations_sv_FI.TaskMustBeSavedBeforeCalendarTasksCanBeAdded : Translations_en_US.TaskMustBeSavedBeforeCalendarTasksCanBeAdded);\r\n\t\tTranslations.ParameterPercentOfFileStorageQuotaUsed = culture === \"fi\" ? Translations_fi.ParameterPercentOfFileStorageQuotaUsed : (culture === \"sv-FI\" ? Translations_sv_FI.ParameterPercentOfFileStorageQuotaUsed : Translations_en_US.ParameterPercentOfFileStorageQuotaUsed);\r\n\t\tTranslations.PasswordChangeRequestParameterNotFound = culture === \"fi\" ? Translations_fi.PasswordChangeRequestParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.PasswordChangeRequestParameterNotFound : Translations_en_US.PasswordChangeRequestParameterNotFound);\r\n\t\tTranslations.EducationsAndCompetencies = culture === \"fi\" ? Translations_fi.EducationsAndCompetencies : (culture === \"sv-FI\" ? Translations_sv_FI.EducationsAndCompetencies : Translations_en_US.EducationsAndCompetencies);\r\n\t\tTranslations.Priority = culture === \"fi\" ? Translations_fi.Priority : (culture === \"sv-FI\" ? Translations_sv_FI.Priority : Translations_en_US.Priority);\r\n\t\tTranslations.AddCompanyGroup = culture === \"fi\" ? Translations_fi.AddCompanyGroup : (culture === \"sv-FI\" ? Translations_sv_FI.AddCompanyGroup : Translations_en_US.AddCompanyGroup);\r\n\t\tTranslations.DeletingUserParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingUserParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingUserParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingUserParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.AddUsersParameterWasSuccessful = culture === \"fi\" ? Translations_fi.AddUsersParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.AddUsersParameterWasSuccessful : Translations_en_US.AddUsersParameterWasSuccessful);\r\n\t\tTranslations.FormulaSin = culture === \"fi\" ? Translations_fi.FormulaSin : (culture === \"sv-FI\" ? Translations_sv_FI.FormulaSin : Translations_en_US.FormulaSin);\r\n\t\tTranslations.EmployeeTypeMustBeDefined = culture === \"fi\" ? Translations_fi.EmployeeTypeMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.EmployeeTypeMustBeDefined : Translations_en_US.EmployeeTypeMustBeDefined);\r\n\t\tTranslations.CompanyTaskTypes = culture === \"fi\" ? Translations_fi.CompanyTaskTypes : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyTaskTypes : Translations_en_US.CompanyTaskTypes);\r\n\t\tTranslations.SavingUserParametersWasSuccessful = culture === \"fi\" ? Translations_fi.SavingUserParametersWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingUserParametersWasSuccessful : Translations_en_US.SavingUserParametersWasSuccessful);\r\n\t\tTranslations.SendingEmailToParameter = culture === \"fi\" ? Translations_fi.SendingEmailToParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SendingEmailToParameter : Translations_en_US.SendingEmailToParameter);\r\n\t\tTranslations.RemoveLogisticVoucherCustomer = culture === \"fi\" ? Translations_fi.RemoveLogisticVoucherCustomer : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveLogisticVoucherCustomer : Translations_en_US.RemoveLogisticVoucherCustomer);\r\n\t\tTranslations.SavingRecordEmploymentParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingRecordEmploymentParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingRecordEmploymentParameterWasSuccessful : Translations_en_US.SavingRecordEmploymentParameterWasSuccessful);\r\n\t\tTranslations.Properties = culture === \"fi\" ? Translations_fi.Properties : (culture === \"sv-FI\" ? Translations_sv_FI.Properties : Translations_en_US.Properties);\r\n\t\tTranslations.FormMaxTextLength = culture === \"fi\" ? Translations_fi.FormMaxTextLength : (culture === \"sv-FI\" ? Translations_sv_FI.FormMaxTextLength : Translations_en_US.FormMaxTextLength);\r\n\t\tTranslations.RemoveFamiliarization = culture === \"fi\" ? Translations_fi.RemoveFamiliarization : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveFamiliarization : Translations_en_US.RemoveFamiliarization);\r\n\t\tTranslations.CompanyModuleProperties = culture === \"fi\" ? Translations_fi.CompanyModuleProperties : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyModuleProperties : Translations_en_US.CompanyModuleProperties);\r\n\t\tTranslations.UserTypeClaimNotFound = culture === \"fi\" ? Translations_fi.UserTypeClaimNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.UserTypeClaimNotFound : Translations_en_US.UserTypeClaimNotFound);\r\n\t\tTranslations.ArchiveExpiredFamiliarizations = culture === \"fi\" ? Translations_fi.ArchiveExpiredFamiliarizations : (culture === \"sv-FI\" ? Translations_sv_FI.ArchiveExpiredFamiliarizations : Translations_en_US.ArchiveExpiredFamiliarizations);\r\n\t\tTranslations.EditableDocumentVersionMustBeDefined = culture === \"fi\" ? Translations_fi.EditableDocumentVersionMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.EditableDocumentVersionMustBeDefined : Translations_en_US.EditableDocumentVersionMustBeDefined);\r\n\t\tTranslations.InstantMessage = culture === \"fi\" ? Translations_fi.InstantMessage : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessage : Translations_en_US.InstantMessage);\r\n\t\tTranslations.UserCannotRecieveEmailNotifications = culture === \"fi\" ? Translations_fi.UserCannotRecieveEmailNotifications : (culture === \"sv-FI\" ? Translations_sv_FI.UserCannotRecieveEmailNotifications : Translations_en_US.UserCannotRecieveEmailNotifications);\r\n\t\tTranslations.Starts = culture === \"fi\" ? Translations_fi.Starts : (culture === \"sv-FI\" ? Translations_sv_FI.Starts : Translations_en_US.Starts);\r\n\t\tTranslations.DeletingDirectoryItemDocumentParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingDirectoryItemDocumentParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingDirectoryItemDocumentParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingDirectoryItemDocumentParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.EventTypeCCodeIsAlreadyInUse = culture === \"fi\" ? Translations_fi.EventTypeCCodeIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.EventTypeCCodeIsAlreadyInUse : Translations_en_US.EventTypeCCodeIsAlreadyInUse);\r\n\t\tTranslations.AddPartnerParameterWasSuccessful = culture === \"fi\" ? Translations_fi.AddPartnerParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.AddPartnerParameterWasSuccessful : Translations_en_US.AddPartnerParameterWasSuccessful);\r\n\t\tTranslations.PasswordIsTooShort = culture === \"fi\" ? Translations_fi.PasswordIsTooShort : (culture === \"sv-FI\" ? Translations_sv_FI.PasswordIsTooShort : Translations_en_US.PasswordIsTooShort);\r\n\t\tTranslations.RenamingFileParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.RenamingFileParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.RenamingFileParameterWasNotSuccessfulErrorParameter : Translations_en_US.RenamingFileParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.WhistleBlowEventTypeAttachmentsAdded = culture === \"fi\" ? Translations_fi.WhistleBlowEventTypeAttachmentsAdded : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowEventTypeAttachmentsAdded : Translations_en_US.WhistleBlowEventTypeAttachmentsAdded);\r\n\t\tTranslations.SavingReportWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingReportWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingReportWasNotSuccessfulErrorParameter : Translations_en_US.SavingReportWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.ArchiveExpiredFurtherEducations = culture === \"fi\" ? Translations_fi.ArchiveExpiredFurtherEducations : (culture === \"sv-FI\" ? Translations_sv_FI.ArchiveExpiredFurtherEducations : Translations_en_US.ArchiveExpiredFurtherEducations);\r\n\t\tTranslations.DetectingLocation = culture === \"fi\" ? Translations_fi.DetectingLocation : (culture === \"sv-FI\" ? Translations_sv_FI.DetectingLocation : Translations_en_US.DetectingLocation);\r\n\t\tTranslations.SavingFilterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingFilterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingFilterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingFilterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.Phone = culture === \"fi\" ? Translations_fi.Phone : (culture === \"sv-FI\" ? Translations_sv_FI.Phone : Translations_en_US.Phone);\r\n\t\tTranslations.FormExpressionEditor = culture === \"fi\" ? Translations_fi.FormExpressionEditor : (culture === \"sv-FI\" ? Translations_sv_FI.FormExpressionEditor : Translations_en_US.FormExpressionEditor);\r\n\t\tTranslations.FiltersStandard = culture === \"fi\" ? Translations_fi.FiltersStandard : (culture === \"sv-FI\" ? Translations_sv_FI.FiltersStandard : Translations_en_US.FiltersStandard);\r\n\t\tTranslations.SelectFurtherEducation = culture === \"fi\" ? Translations_fi.SelectFurtherEducation : (culture === \"sv-FI\" ? Translations_sv_FI.SelectFurtherEducation : Translations_en_US.SelectFurtherEducation);\r\n\t\tTranslations.DocumentsParameterOverwriteConfirmation = culture === \"fi\" ? Translations_fi.DocumentsParameterOverwriteConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentsParameterOverwriteConfirmation : Translations_en_US.DocumentsParameterOverwriteConfirmation);\r\n\t\tTranslations.FormDefaultValue = culture === \"fi\" ? Translations_fi.FormDefaultValue : (culture === \"sv-FI\" ? Translations_sv_FI.FormDefaultValue : Translations_en_US.FormDefaultValue);\r\n\t\tTranslations.NotificationSettings = culture === \"fi\" ? Translations_fi.NotificationSettings : (culture === \"sv-FI\" ? Translations_sv_FI.NotificationSettings : Translations_en_US.NotificationSettings);\r\n\t\tTranslations.JobParameterNotFound = culture === \"fi\" ? Translations_fi.JobParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.JobParameterNotFound : Translations_en_US.JobParameterNotFound);\r\n\t\tTranslations.Month = culture === \"fi\" ? Translations_fi.Month : (culture === \"sv-FI\" ? Translations_sv_FI.Month : Translations_en_US.Month);\r\n\t\tTranslations.ModifiedDescription = culture === \"fi\" ? Translations_fi.ModifiedDescription : (culture === \"sv-FI\" ? Translations_sv_FI.ModifiedDescription : Translations_en_US.ModifiedDescription);\r\n\t\tTranslations.EditableDocumentCodeIsAlreadyInUse = culture === \"fi\" ? Translations_fi.EditableDocumentCodeIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.EditableDocumentCodeIsAlreadyInUse : Translations_en_US.EditableDocumentCodeIsAlreadyInUse);\r\n\t\tTranslations.LastListRow = culture === \"fi\" ? Translations_fi.LastListRow : (culture === \"sv-FI\" ? Translations_sv_FI.LastListRow : Translations_en_US.LastListRow);\r\n\t\tTranslations.DocumentParameterAlreadyExists = culture === \"fi\" ? Translations_fi.DocumentParameterAlreadyExists : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentParameterAlreadyExists : Translations_en_US.DocumentParameterAlreadyExists);\r\n\t\tTranslations.SelectEventPartner = culture === \"fi\" ? Translations_fi.SelectEventPartner : (culture === \"sv-FI\" ? Translations_sv_FI.SelectEventPartner : Translations_en_US.SelectEventPartner);\r\n\t\tTranslations.NewInstantMessageChannelGroupInternal = culture === \"fi\" ? Translations_fi.NewInstantMessageChannelGroupInternal : (culture === \"sv-FI\" ? Translations_sv_FI.NewInstantMessageChannelGroupInternal : Translations_en_US.NewInstantMessageChannelGroupInternal);\r\n\t\tTranslations.WhistleBlowEventTypeHandlersRemoved = culture === \"fi\" ? Translations_fi.WhistleBlowEventTypeHandlersRemoved : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowEventTypeHandlersRemoved : Translations_en_US.WhistleBlowEventTypeHandlersRemoved);\r\n\t\tTranslations.SendinEmailNotificationsWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SendinEmailNotificationsWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SendinEmailNotificationsWasNotSuccessfulErrorParameter : Translations_en_US.SendinEmailNotificationsWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.DoYouReallyWantToRemoveSelectedEventUrgencyClasses = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveSelectedEventUrgencyClasses : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveSelectedEventUrgencyClasses : Translations_en_US.DoYouReallyWantToRemoveSelectedEventUrgencyClasses);\r\n\t\tTranslations.DoYouReallyWantToRemoveTaskParameterPermanenty = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveTaskParameterPermanenty : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveTaskParameterPermanenty : Translations_en_US.DoYouReallyWantToRemoveTaskParameterPermanenty);\r\n\t\tTranslations.CompanyRole = culture === \"fi\" ? Translations_fi.CompanyRole : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyRole : Translations_en_US.CompanyRole);\r\n\t\tTranslations.AddToHomeScreen = culture === \"fi\" ? Translations_fi.AddToHomeScreen : (culture === \"sv-FI\" ? Translations_sv_FI.AddToHomeScreen : Translations_en_US.AddToHomeScreen);\r\n\t\tTranslations.RecordUsersFound = culture === \"fi\" ? Translations_fi.RecordUsersFound : (culture === \"sv-FI\" ? Translations_sv_FI.RecordUsersFound : Translations_en_US.RecordUsersFound);\r\n\t\tTranslations.NewRecordUserMustBeSavedBeforeAttachmentsCanBeAdded = culture === \"fi\" ? Translations_fi.NewRecordUserMustBeSavedBeforeAttachmentsCanBeAdded : (culture === \"sv-FI\" ? Translations_sv_FI.NewRecordUserMustBeSavedBeforeAttachmentsCanBeAdded : Translations_en_US.NewRecordUserMustBeSavedBeforeAttachmentsCanBeAdded);\r\n\t\tTranslations.SavingEditableDocumentParameterPublishWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingEditableDocumentParameterPublishWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEditableDocumentParameterPublishWasNotSuccessfulErrorParameter : Translations_en_US.SavingEditableDocumentParameterPublishWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.Entrepreneur = culture === \"fi\" ? Translations_fi.Entrepreneur : (culture === \"sv-FI\" ? Translations_sv_FI.Entrepreneur : Translations_en_US.Entrepreneur);\r\n\t\tTranslations.SendingEmails = culture === \"fi\" ? Translations_fi.SendingEmails : (culture === \"sv-FI\" ? Translations_sv_FI.SendingEmails : Translations_en_US.SendingEmails);\r\n\t\tTranslations.EditWhistleBlow = culture === \"fi\" ? Translations_fi.EditWhistleBlow : (culture === \"sv-FI\" ? Translations_sv_FI.EditWhistleBlow : Translations_en_US.EditWhistleBlow);\r\n\t\tTranslations.DeletingTaskStateParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingTaskStateParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingTaskStateParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingTaskStateParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.AddDefaultBasicEducation = culture === \"fi\" ? Translations_fi.AddDefaultBasicEducation : (culture === \"sv-FI\" ? Translations_sv_FI.AddDefaultBasicEducation : Translations_en_US.AddDefaultBasicEducation);\r\n\t\tTranslations.Yesterday = culture === \"fi\" ? Translations_fi.Yesterday : (culture === \"sv-FI\" ? Translations_sv_FI.Yesterday : Translations_en_US.Yesterday);\r\n\t\tTranslations.AddEventUrgencyClass = culture === \"fi\" ? Translations_fi.AddEventUrgencyClass : (culture === \"sv-FI\" ? Translations_sv_FI.AddEventUrgencyClass : Translations_en_US.AddEventUrgencyClass);\r\n\t\tTranslations.FileNameConstainsIllegalCharacters = culture === \"fi\" ? Translations_fi.FileNameConstainsIllegalCharacters : (culture === \"sv-FI\" ? Translations_sv_FI.FileNameConstainsIllegalCharacters : Translations_en_US.FileNameConstainsIllegalCharacters);\r\n\t\tTranslations.NoImagesToShow = culture === \"fi\" ? Translations_fi.NoImagesToShow : (culture === \"sv-FI\" ? Translations_sv_FI.NoImagesToShow : Translations_en_US.NoImagesToShow);\r\n\t\tTranslations.DoYouReallyWantToRemoveSelectedTaskPriorities = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveSelectedTaskPriorities : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveSelectedTaskPriorities : Translations_en_US.DoYouReallyWantToRemoveSelectedTaskPriorities);\r\n\t\tTranslations.EditDefaultEventType = culture === \"fi\" ? Translations_fi.EditDefaultEventType : (culture === \"sv-FI\" ? Translations_sv_FI.EditDefaultEventType : Translations_en_US.EditDefaultEventType);\r\n\t\tTranslations.RemoveAttachment = culture === \"fi\" ? Translations_fi.RemoveAttachment : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveAttachment : Translations_en_US.RemoveAttachment);\r\n\t\tTranslations.FirstName = culture === \"fi\" ? Translations_fi.FirstName : (culture === \"sv-FI\" ? Translations_sv_FI.FirstName : Translations_en_US.FirstName);\r\n\t\tTranslations.CalendarTaskStateNotStarted = culture === \"fi\" ? Translations_fi.CalendarTaskStateNotStarted : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskStateNotStarted : Translations_en_US.CalendarTaskStateNotStarted);\r\n\t\tTranslations.EventHandler = culture === \"fi\" ? Translations_fi.EventHandler : (culture === \"sv-FI\" ? Translations_sv_FI.EventHandler : Translations_en_US.EventHandler);\r\n\t\tTranslations.OpenTrashBin = culture === \"fi\" ? Translations_fi.OpenTrashBin : (culture === \"sv-FI\" ? Translations_sv_FI.OpenTrashBin : Translations_en_US.OpenTrashBin);\r\n\t\tTranslations.TaskPriorities = culture === \"fi\" ? Translations_fi.TaskPriorities : (culture === \"sv-FI\" ? Translations_sv_FI.TaskPriorities : Translations_en_US.TaskPriorities);\r\n\t\tTranslations.WhistleBlowInformantInstuctions = culture === \"fi\" ? Translations_fi.WhistleBlowInformantInstuctions : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowInformantInstuctions : Translations_en_US.WhistleBlowInformantInstuctions);\r\n\t\tTranslations.NewUserGroupMustBeSavedBeforeUsersCanBeAdded = culture === \"fi\" ? Translations_fi.NewUserGroupMustBeSavedBeforeUsersCanBeAdded : (culture === \"sv-FI\" ? Translations_sv_FI.NewUserGroupMustBeSavedBeforeUsersCanBeAdded : Translations_en_US.NewUserGroupMustBeSavedBeforeUsersCanBeAdded);\r\n\t\tTranslations.BrowseFiles = culture === \"fi\" ? Translations_fi.BrowseFiles : (culture === \"sv-FI\" ? Translations_sv_FI.BrowseFiles : Translations_en_US.BrowseFiles);\r\n\t\tTranslations.EditRemainder = culture === \"fi\" ? Translations_fi.EditRemainder : (culture === \"sv-FI\" ? Translations_sv_FI.EditRemainder : Translations_en_US.EditRemainder);\r\n\t\tTranslations.DeletingRecordQualificationParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingRecordQualificationParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordQualificationParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingRecordQualificationParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.RecordFurtherEducationParameterIsInUseInParameterRecordUsersQualificationsAndCannotBeDeleted = culture === \"fi\" ? Translations_fi.RecordFurtherEducationParameterIsInUseInParameterRecordUsersQualificationsAndCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.RecordFurtherEducationParameterIsInUseInParameterRecordUsersQualificationsAndCannotBeDeleted : Translations_en_US.RecordFurtherEducationParameterIsInUseInParameterRecordUsersQualificationsAndCannotBeDeleted);\r\n\t\tTranslations.Start = culture === \"fi\" ? Translations_fi.Start : (culture === \"sv-FI\" ? Translations_sv_FI.Start : Translations_en_US.Start);\r\n\t\tTranslations.ModifyDateEndDate = culture === \"fi\" ? Translations_fi.ModifyDateEndDate : (culture === \"sv-FI\" ? Translations_sv_FI.ModifyDateEndDate : Translations_en_US.ModifyDateEndDate);\r\n\t\tTranslations.WhistleBlowStateReceived = culture === \"fi\" ? Translations_fi.WhistleBlowStateReceived : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowStateReceived : Translations_en_US.WhistleBlowStateReceived);\r\n\t\tTranslations.UserParameterPermissionDeniedForUnitParameter = culture === \"fi\" ? Translations_fi.UserParameterPermissionDeniedForUnitParameter : (culture === \"sv-FI\" ? Translations_sv_FI.UserParameterPermissionDeniedForUnitParameter : Translations_en_US.UserParameterPermissionDeniedForUnitParameter);\r\n\t\tTranslations.DeletingTaskParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingTaskParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingTaskParameterWasSuccessful : Translations_en_US.DeletingTaskParameterWasSuccessful);\r\n\t\tTranslations.LastNameMustBeDefined = culture === \"fi\" ? Translations_fi.LastNameMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.LastNameMustBeDefined : Translations_en_US.LastNameMustBeDefined);\r\n\t\tTranslations.RequiredValidQualificationCount = culture === \"fi\" ? Translations_fi.RequiredValidQualificationCount : (culture === \"sv-FI\" ? Translations_sv_FI.RequiredValidQualificationCount : Translations_en_US.RequiredValidQualificationCount);\r\n\t\tTranslations.Qualifications = culture === \"fi\" ? Translations_fi.Qualifications : (culture === \"sv-FI\" ? Translations_sv_FI.Qualifications : Translations_en_US.Qualifications);\r\n\t\tTranslations.MaximumPasswordLengthCanParameterCharacters = culture === \"fi\" ? Translations_fi.MaximumPasswordLengthCanParameterCharacters : (culture === \"sv-FI\" ? Translations_sv_FI.MaximumPasswordLengthCanParameterCharacters : Translations_en_US.MaximumPasswordLengthCanParameterCharacters);\r\n\t\tTranslations.EditLogisticVoucherPaymentSetting = culture === \"fi\" ? Translations_fi.EditLogisticVoucherPaymentSetting : (culture === \"sv-FI\" ? Translations_sv_FI.EditLogisticVoucherPaymentSetting : Translations_en_US.EditLogisticVoucherPaymentSetting);\r\n\t\tTranslations.DocumentNameIsTooLong = culture === \"fi\" ? Translations_fi.DocumentNameIsTooLong : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentNameIsTooLong : Translations_en_US.DocumentNameIsTooLong);\r\n\t\tTranslations.SavingEditableDocumentParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingEditableDocumentParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEditableDocumentParameterWasSuccessful : Translations_en_US.SavingEditableDocumentParameterWasSuccessful);\r\n\t\tTranslations.ExternalsSystemParameterNotFound = culture === \"fi\" ? Translations_fi.ExternalsSystemParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.ExternalsSystemParameterNotFound : Translations_en_US.ExternalsSystemParameterNotFound);\r\n\t\tTranslations.DefaultCalendarTaskCategories = culture === \"fi\" ? Translations_fi.DefaultCalendarTaskCategories : (culture === \"sv-FI\" ? Translations_sv_FI.DefaultCalendarTaskCategories : Translations_en_US.DefaultCalendarTaskCategories);\r\n\t\tTranslations.EditPayerSettings = culture === \"fi\" ? Translations_fi.EditPayerSettings : (culture === \"sv-FI\" ? Translations_sv_FI.EditPayerSettings : Translations_en_US.EditPayerSettings);\r\n\t\tTranslations.EditDefaultTaskPriority = culture === \"fi\" ? Translations_fi.EditDefaultTaskPriority : (culture === \"sv-FI\" ? Translations_sv_FI.EditDefaultTaskPriority : Translations_en_US.EditDefaultTaskPriority);\r\n\t\tTranslations.Menu = culture === \"fi\" ? Translations_fi.Menu : (culture === \"sv-FI\" ? Translations_sv_FI.Menu : Translations_en_US.Menu);\r\n\t\tTranslations.RecordFurtherEducationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted = culture === \"fi\" ? Translations_fi.RecordFurtherEducationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.RecordFurtherEducationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted : Translations_en_US.RecordFurtherEducationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted);\r\n\t\tTranslations.Descending = culture === \"fi\" ? Translations_fi.Descending : (culture === \"sv-FI\" ? Translations_sv_FI.Descending : Translations_en_US.Descending);\r\n\t\tTranslations.NotSet = culture === \"fi\" ? Translations_fi.NotSet : (culture === \"sv-FI\" ? Translations_sv_FI.NotSet : Translations_en_US.NotSet);\r\n\t\tTranslations.DeletingEventUrgencyClassParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingEventUrgencyClassParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingEventUrgencyClassParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingEventUrgencyClassParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.AddUserGroupsParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.AddUserGroupsParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.AddUserGroupsParameterWasNotSuccessfulErrorParameter : Translations_en_US.AddUserGroupsParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.ResultGrouping = culture === \"fi\" ? Translations_fi.ResultGrouping : (culture === \"sv-FI\" ? Translations_sv_FI.ResultGrouping : Translations_en_US.ResultGrouping);\r\n\t\tTranslations.SelectReceiver = culture === \"fi\" ? Translations_fi.SelectReceiver : (culture === \"sv-FI\" ? Translations_sv_FI.SelectReceiver : Translations_en_US.SelectReceiver);\r\n\t}\r\n\r\n\tstatic setCulture2(culture: string) {\r\n\t\t\tTranslations.Continue = culture === \"fi\" ? Translations_fi.Continue : (culture === \"sv-FI\" ? Translations_sv_FI.Continue : Translations_en_US.Continue);\r\n\t\t\tTranslations.FurtherEducationsMustBeDefinedBeforeAddingRecordUsers = culture === \"fi\" ? Translations_fi.FurtherEducationsMustBeDefinedBeforeAddingRecordUsers : (culture === \"sv-FI\" ? Translations_sv_FI.FurtherEducationsMustBeDefinedBeforeAddingRecordUsers : Translations_en_US.FurtherEducationsMustBeDefinedBeforeAddingRecordUsers);\r\n\t\t\tTranslations.MoveTaskToTrashBin = culture === \"fi\" ? Translations_fi.MoveTaskToTrashBin : (culture === \"sv-FI\" ? Translations_sv_FI.MoveTaskToTrashBin : Translations_en_US.MoveTaskToTrashBin);\r\n\t\t\tTranslations.DoYouReallyWantToRemoveMessageTypeParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveMessageTypeParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveMessageTypeParameter : Translations_en_US.DoYouReallyWantToRemoveMessageTypeParameter);\r\n\t\t\tTranslations.RemoveEventPartner = culture === \"fi\" ? Translations_fi.RemoveEventPartner : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveEventPartner : Translations_en_US.RemoveEventPartner);\r\n\t\t\tTranslations.DeletingTaskParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingTaskParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingTaskParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingTaskParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.ThisChannelHasBeenArchived = culture === \"fi\" ? Translations_fi.ThisChannelHasBeenArchived : (culture === \"sv-FI\" ? Translations_sv_FI.ThisChannelHasBeenArchived : Translations_en_US.ThisChannelHasBeenArchived);\r\n\t\t\tTranslations.Admin = culture === \"fi\" ? Translations_fi.Admin : (culture === \"sv-FI\" ? Translations_sv_FI.Admin : Translations_en_US.Admin);\r\n\t\t\tTranslations.EventsExcel = culture === \"fi\" ? Translations_fi.EventsExcel : (culture === \"sv-FI\" ? Translations_sv_FI.EventsExcel : Translations_en_US.EventsExcel);\r\n\t\t\tTranslations.SavingEventDefaultHandlerParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingEventDefaultHandlerParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventDefaultHandlerParameterWasSuccessful : Translations_en_US.SavingEventDefaultHandlerParameterWasSuccessful);\r\n\t\t\tTranslations.SavingInstantMessageChannelUserUserWasSuccessful = culture === \"fi\" ? Translations_fi.SavingInstantMessageChannelUserUserWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingInstantMessageChannelUserUserWasSuccessful : Translations_en_US.SavingInstantMessageChannelUserUserWasSuccessful);\r\n\t\t\tTranslations.Password = culture === \"fi\" ? Translations_fi.Password : (culture === \"sv-FI\" ? Translations_sv_FI.Password : Translations_en_US.Password);\r\n\t\t\tTranslations.EventParameterNotFound = culture === \"fi\" ? Translations_fi.EventParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.EventParameterNotFound : Translations_en_US.EventParameterNotFound);\r\n\t\t\tTranslations.AddCompanyGroupParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.AddCompanyGroupParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.AddCompanyGroupParameterWasNotSuccessfulConcurrencyError : Translations_en_US.AddCompanyGroupParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.RemoveDefaultTaskPriority = culture === \"fi\" ? Translations_fi.RemoveDefaultTaskPriority : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveDefaultTaskPriority : Translations_en_US.RemoveDefaultTaskPriority);\r\n\t\t\tTranslations.WholeHistory = culture === \"fi\" ? Translations_fi.WholeHistory : (culture === \"sv-FI\" ? Translations_sv_FI.WholeHistory : Translations_en_US.WholeHistory);\r\n\t\t\tTranslations.PrintParameterNotFound = culture === \"fi\" ? Translations_fi.PrintParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.PrintParameterNotFound : Translations_en_US.PrintParameterNotFound);\r\n\t\t\tTranslations.NextOfKin = culture === \"fi\" ? Translations_fi.NextOfKin : (culture === \"sv-FI\" ? Translations_sv_FI.NextOfKin : Translations_en_US.NextOfKin);\r\n\t\t\tTranslations.DeletingCompanyParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingCompanyParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingCompanyParameterWasSuccessful : Translations_en_US.DeletingCompanyParameterWasSuccessful);\r\n\t\t\tTranslations.FieldParameterConstainsIllegalCharactersForFileName = culture === \"fi\" ? Translations_fi.FieldParameterConstainsIllegalCharactersForFileName : (culture === \"sv-FI\" ? Translations_sv_FI.FieldParameterConstainsIllegalCharactersForFileName : Translations_en_US.FieldParameterConstainsIllegalCharactersForFileName);\r\n\t\t\tTranslations.FileNameMustBeDefined = culture === \"fi\" ? Translations_fi.FileNameMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.FileNameMustBeDefined : Translations_en_US.FileNameMustBeDefined);\r\n\t\t\tTranslations.Recurrence = culture === \"fi\" ? Translations_fi.Recurrence : (culture === \"sv-FI\" ? Translations_sv_FI.Recurrence : Translations_en_US.Recurrence);\r\n\t\t\tTranslations.ChangeSystemLanguageToFinnish = culture === \"fi\" ? Translations_fi.ChangeSystemLanguageToFinnish : (culture === \"sv-FI\" ? Translations_sv_FI.ChangeSystemLanguageToFinnish : Translations_en_US.ChangeSystemLanguageToFinnish);\r\n\t\t\tTranslations.DocumentApproved = culture === \"fi\" ? Translations_fi.DocumentApproved : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentApproved : Translations_en_US.DocumentApproved);\r\n\t\t\tTranslations.Print = culture === \"fi\" ? Translations_fi.Print : (culture === \"sv-FI\" ? Translations_sv_FI.Print : Translations_en_US.Print);\r\n\t\t\tTranslations.ProcessedFolderParameterErrorCountParameter = culture === \"fi\" ? Translations_fi.ProcessedFolderParameterErrorCountParameter : (culture === \"sv-FI\" ? Translations_sv_FI.ProcessedFolderParameterErrorCountParameter : Translations_en_US.ProcessedFolderParameterErrorCountParameter);\r\n\t\t\tTranslations.LoggedInUserAccountIsNotActive = culture === \"fi\" ? Translations_fi.LoggedInUserAccountIsNotActive : (culture === \"sv-FI\" ? Translations_sv_FI.LoggedInUserAccountIsNotActive : Translations_en_US.LoggedInUserAccountIsNotActive);\r\n\t\t\tTranslations.CalendarTaskCategoryParameterNotFound = culture === \"fi\" ? Translations_fi.CalendarTaskCategoryParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskCategoryParameterNotFound : Translations_en_US.CalendarTaskCategoryParameterNotFound);\r\n\t\t\tTranslations.Error = culture === \"fi\" ? Translations_fi.Error : (culture === \"sv-FI\" ? Translations_sv_FI.Error : Translations_en_US.Error);\r\n\t\t\tTranslations.AccessRightFull = culture === \"fi\" ? Translations_fi.AccessRightFull : (culture === \"sv-FI\" ? Translations_sv_FI.AccessRightFull : Translations_en_US.AccessRightFull);\r\n\t\t\tTranslations.RecordUserLogEntryTypeSave = culture === \"fi\" ? Translations_fi.RecordUserLogEntryTypeSave : (culture === \"sv-FI\" ? Translations_sv_FI.RecordUserLogEntryTypeSave : Translations_en_US.RecordUserLogEntryTypeSave);\r\n\t\t\tTranslations.DeletingUserGroupUsersOfCompanyParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingUserGroupUsersOfCompanyParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingUserGroupUsersOfCompanyParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingUserGroupUsersOfCompanyParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.AutoSaveVersionHistorySize = culture === \"fi\" ? Translations_fi.AutoSaveVersionHistorySize : (culture === \"sv-FI\" ? Translations_sv_FI.AutoSaveVersionHistorySize : Translations_en_US.AutoSaveVersionHistorySize);\r\n\t\t\tTranslations.FilterIsActive = culture === \"fi\" ? Translations_fi.FilterIsActive : (culture === \"sv-FI\" ? Translations_sv_FI.FilterIsActive : Translations_en_US.FilterIsActive);\r\n\t\t\tTranslations.WorkTimeType = culture === \"fi\" ? Translations_fi.WorkTimeType : (culture === \"sv-FI\" ? Translations_sv_FI.WorkTimeType : Translations_en_US.WorkTimeType);\r\n\t\t\tTranslations.InstantMessageChannel = culture === \"fi\" ? Translations_fi.InstantMessageChannel : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageChannel : Translations_en_US.InstantMessageChannel);\r\n\t\t\tTranslations.WhistleBlowDateAndTimeCannotBeInFuture = culture === \"fi\" ? Translations_fi.WhistleBlowDateAndTimeCannotBeInFuture : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowDateAndTimeCannotBeInFuture : Translations_en_US.WhistleBlowDateAndTimeCannotBeInFuture);\r\n\t\t\tTranslations.PrintFileName = culture === \"fi\" ? Translations_fi.PrintFileName : (culture === \"sv-FI\" ? Translations_sv_FI.PrintFileName : Translations_en_US.PrintFileName);\r\n\t\t\tTranslations.LogCleaning = culture === \"fi\" ? Translations_fi.LogCleaning : (culture === \"sv-FI\" ? Translations_sv_FI.LogCleaning : Translations_en_US.LogCleaning);\r\n\t\t\tTranslations.OpenCalendarTasks = culture === \"fi\" ? Translations_fi.OpenCalendarTasks : (culture === \"sv-FI\" ? Translations_sv_FI.OpenCalendarTasks : Translations_en_US.OpenCalendarTasks);\r\n\t\t\tTranslations.Edit = culture === \"fi\" ? Translations_fi.Edit : (culture === \"sv-FI\" ? Translations_sv_FI.Edit : Translations_en_US.Edit);\r\n\t\t\tTranslations.KeywordCodeIsAlreadyInUse = culture === \"fi\" ? Translations_fi.KeywordCodeIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.KeywordCodeIsAlreadyInUse : Translations_en_US.KeywordCodeIsAlreadyInUse);\r\n\t\t\tTranslations.ContentFiltering = culture === \"fi\" ? Translations_fi.ContentFiltering : (culture === \"sv-FI\" ? Translations_sv_FI.ContentFiltering : Translations_en_US.ContentFiltering);\r\n\t\t\tTranslations.Groups = culture === \"fi\" ? Translations_fi.Groups : (culture === \"sv-FI\" ? Translations_sv_FI.Groups : Translations_en_US.Groups);\r\n\t\t\tTranslations.FormRemoveFieldConfirmation = culture === \"fi\" ? Translations_fi.FormRemoveFieldConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.FormRemoveFieldConfirmation : Translations_en_US.FormRemoveFieldConfirmation);\r\n\t\t\tTranslations.TargetsOtherCompanies = culture === \"fi\" ? Translations_fi.TargetsOtherCompanies : (culture === \"sv-FI\" ? Translations_sv_FI.TargetsOtherCompanies : Translations_en_US.TargetsOtherCompanies);\r\n\t\t\tTranslations.CalendarTaskRepetitionRepeatIntervalWeeklySuffix = culture === \"fi\" ? Translations_fi.CalendarTaskRepetitionRepeatIntervalWeeklySuffix : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskRepetitionRepeatIntervalWeeklySuffix : Translations_en_US.CalendarTaskRepetitionRepeatIntervalWeeklySuffix);\r\n\t\t\tTranslations.DeletingTaskParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingTaskParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingTaskParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingTaskParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.CalendarTaskFilterByState = culture === \"fi\" ? Translations_fi.CalendarTaskFilterByState : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskFilterByState : Translations_en_US.CalendarTaskFilterByState);\r\n\t\t\tTranslations.PrintEvent = culture === \"fi\" ? Translations_fi.PrintEvent : (culture === \"sv-FI\" ? Translations_sv_FI.PrintEvent : Translations_en_US.PrintEvent);\r\n\t\t\tTranslations.MovedToTrashBin = culture === \"fi\" ? Translations_fi.MovedToTrashBin : (culture === \"sv-FI\" ? Translations_sv_FI.MovedToTrashBin : Translations_en_US.MovedToTrashBin);\r\n\t\t\tTranslations.UsedFileStorageQuota = culture === \"fi\" ? Translations_fi.UsedFileStorageQuota : (culture === \"sv-FI\" ? Translations_sv_FI.UsedFileStorageQuota : Translations_en_US.UsedFileStorageQuota);\r\n\t\t\tTranslations.ClassParameterHasNotBeenInitialized = culture === \"fi\" ? Translations_fi.ClassParameterHasNotBeenInitialized : (culture === \"sv-FI\" ? Translations_sv_FI.ClassParameterHasNotBeenInitialized : Translations_en_US.ClassParameterHasNotBeenInitialized);\r\n\t\t\tTranslations.CalendarTaskStateFinished = culture === \"fi\" ? Translations_fi.CalendarTaskStateFinished : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskStateFinished : Translations_en_US.CalendarTaskStateFinished);\r\n\t\t\tTranslations.Hours = culture === \"fi\" ? Translations_fi.Hours : (culture === \"sv-FI\" ? Translations_sv_FI.Hours : Translations_en_US.Hours);\r\n\t\t\tTranslations.OptionCodeIsAlreadyInUse = culture === \"fi\" ? Translations_fi.OptionCodeIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.OptionCodeIsAlreadyInUse : Translations_en_US.OptionCodeIsAlreadyInUse);\r\n\t\t\tTranslations.CopyingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.CopyingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.CopyingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulErrorParameter : Translations_en_US.CopyingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.UserFilterNoUserGroup = culture === \"fi\" ? Translations_fi.UserFilterNoUserGroup : (culture === \"sv-FI\" ? Translations_sv_FI.UserFilterNoUserGroup : Translations_en_US.UserFilterNoUserGroup);\r\n\t\t\tTranslations.DoYouReallyWantToRemoveEventTypeBParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveEventTypeBParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveEventTypeBParameter : Translations_en_US.DoYouReallyWantToRemoveEventTypeBParameter);\r\n\t\t\tTranslations.Archive = culture === \"fi\" ? Translations_fi.Archive : (culture === \"sv-FI\" ? Translations_sv_FI.Archive : Translations_en_US.Archive);\r\n\t\t\tTranslations.SavingWhistleBlowWasSuccessful = culture === \"fi\" ? Translations_fi.SavingWhistleBlowWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingWhistleBlowWasSuccessful : Translations_en_US.SavingWhistleBlowWasSuccessful);\r\n\t\t\tTranslations.Validity = culture === \"fi\" ? Translations_fi.Validity : (culture === \"sv-FI\" ? Translations_sv_FI.Validity : Translations_en_US.Validity);\r\n\t\t\tTranslations.DeletingFolderParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingFolderParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingFolderParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingFolderParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.AddUnit = culture === \"fi\" ? Translations_fi.AddUnit : (culture === \"sv-FI\" ? Translations_sv_FI.AddUnit : Translations_en_US.AddUnit);\r\n\t\t\tTranslations.FurtherEducations = culture === \"fi\" ? Translations_fi.FurtherEducations : (culture === \"sv-FI\" ? Translations_sv_FI.FurtherEducations : Translations_en_US.FurtherEducations);\r\n\t\t\tTranslations.SaveEventHandlerConfirmation = culture === \"fi\" ? Translations_fi.SaveEventHandlerConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.SaveEventHandlerConfirmation : Translations_en_US.SaveEventHandlerConfirmation);\r\n\t\t\tTranslations.RemoveParameterDocuments = culture === \"fi\" ? Translations_fi.RemoveParameterDocuments : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveParameterDocuments : Translations_en_US.RemoveParameterDocuments);\r\n\t\t\tTranslations.ExternalIntraSystemCompanyTokenMustBeDefined = culture === \"fi\" ? Translations_fi.ExternalIntraSystemCompanyTokenMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.ExternalIntraSystemCompanyTokenMustBeDefined : Translations_en_US.ExternalIntraSystemCompanyTokenMustBeDefined);\r\n\t\t\tTranslations.DeletingPartnersParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingPartnersParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingPartnersParameterWasSuccessful : Translations_en_US.DeletingPartnersParameterWasSuccessful);\r\n\t\t\tTranslations.Group = culture === \"fi\" ? Translations_fi.Group : (culture === \"sv-FI\" ? Translations_sv_FI.Group : Translations_en_US.Group);\r\n\t\t\tTranslations.EventTypeBTitle = culture === \"fi\" ? Translations_fi.EventTypeBTitle : (culture === \"sv-FI\" ? Translations_sv_FI.EventTypeBTitle : Translations_en_US.EventTypeBTitle);\r\n\t\t\tTranslations.RecordUser = culture === \"fi\" ? Translations_fi.RecordUser : (culture === \"sv-FI\" ? Translations_sv_FI.RecordUser : Translations_en_US.RecordUser);\r\n\t\t\tTranslations.DeletingTaskTypeParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingTaskTypeParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingTaskTypeParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingTaskTypeParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.RemoveUserAndRecordUser = culture === \"fi\" ? Translations_fi.RemoveUserAndRecordUser : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveUserAndRecordUser : Translations_en_US.RemoveUserAndRecordUser);\r\n\t\t\tTranslations.FormWidthPrint = culture === \"fi\" ? Translations_fi.FormWidthPrint : (culture === \"sv-FI\" ? Translations_sv_FI.FormWidthPrint : Translations_en_US.FormWidthPrint);\r\n\t\t\tTranslations.UpdateUserGroupParameterExternalSystemsWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.UpdateUserGroupParameterExternalSystemsWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.UpdateUserGroupParameterExternalSystemsWasNotSuccessfulErrorParameter : Translations_en_US.UpdateUserGroupParameterExternalSystemsWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.AddDefaultFurtherEducation = culture === \"fi\" ? Translations_fi.AddDefaultFurtherEducation : (culture === \"sv-FI\" ? Translations_sv_FI.AddDefaultFurtherEducation : Translations_en_US.AddDefaultFurtherEducation);\r\n\t\t\tTranslations.UserParameterCodeIsAlreadyInUse = culture === \"fi\" ? Translations_fi.UserParameterCodeIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.UserParameterCodeIsAlreadyInUse : Translations_en_US.UserParameterCodeIsAlreadyInUse);\r\n\t\t\tTranslations.PasswordHasBeenSetSuccessfully = culture === \"fi\" ? Translations_fi.PasswordHasBeenSetSuccessfully : (culture === \"sv-FI\" ? Translations_sv_FI.PasswordHasBeenSetSuccessfully : Translations_en_US.PasswordHasBeenSetSuccessfully);\r\n\t\t\tTranslations.AddUserGroupsParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.AddUserGroupsParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.AddUserGroupsParameterWasNotSuccessfulConcurrencyError : Translations_en_US.AddUserGroupsParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.RemoveReport = culture === \"fi\" ? Translations_fi.RemoveReport : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveReport : Translations_en_US.RemoveReport);\r\n\t\t\tTranslations.AddCompany = culture === \"fi\" ? Translations_fi.AddCompany : (culture === \"sv-FI\" ? Translations_sv_FI.AddCompany : Translations_en_US.AddCompany);\r\n\t\t\tTranslations.DoYouReallyWantToRemovePartnersParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemovePartnersParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemovePartnersParameter : Translations_en_US.DoYouReallyWantToRemovePartnersParameter);\r\n\t\t\tTranslations.State = culture === \"fi\" ? Translations_fi.State : (culture === \"sv-FI\" ? Translations_sv_FI.State : Translations_en_US.State);\r\n\t\t\tTranslations.CompanyCodeMustBeDefined = culture === \"fi\" ? Translations_fi.CompanyCodeMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyCodeMustBeDefined : Translations_en_US.CompanyCodeMustBeDefined);\r\n\t\t\tTranslations.SavingApplicationPermissionsWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingApplicationPermissionsWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingApplicationPermissionsWasNotSuccessfulErrorParameter : Translations_en_US.SavingApplicationPermissionsWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.LastWeek = culture === \"fi\" ? Translations_fi.LastWeek : (culture === \"sv-FI\" ? Translations_sv_FI.LastWeek : Translations_en_US.LastWeek);\r\n\t\t\tTranslations.TheUserNameOrPasswordIsIncorrect = culture === \"fi\" ? Translations_fi.TheUserNameOrPasswordIsIncorrect : (culture === \"sv-FI\" ? Translations_sv_FI.TheUserNameOrPasswordIsIncorrect : Translations_en_US.TheUserNameOrPasswordIsIncorrect);\r\n\t\t\tTranslations.SelectUnit = culture === \"fi\" ? Translations_fi.SelectUnit : (culture === \"sv-FI\" ? Translations_sv_FI.SelectUnit : Translations_en_US.SelectUnit);\r\n\t\t\tTranslations.AddDefaultEventHandler = culture === \"fi\" ? Translations_fi.AddDefaultEventHandler : (culture === \"sv-FI\" ? Translations_sv_FI.AddDefaultEventHandler : Translations_en_US.AddDefaultEventHandler);\r\n\t\t\tTranslations.SelectedDocumentTypes = culture === \"fi\" ? Translations_fi.SelectedDocumentTypes : (culture === \"sv-FI\" ? Translations_sv_FI.SelectedDocumentTypes : Translations_en_US.SelectedDocumentTypes);\r\n\t\t\tTranslations.FormulaDivision = culture === \"fi\" ? Translations_fi.FormulaDivision : (culture === \"sv-FI\" ? Translations_sv_FI.FormulaDivision : Translations_en_US.FormulaDivision);\r\n\t\t\tTranslations.RemoveCompanyTaskType = culture === \"fi\" ? Translations_fi.RemoveCompanyTaskType : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveCompanyTaskType : Translations_en_US.RemoveCompanyTaskType);\r\n\t\t\tTranslations.DeletingRecordQualificationsParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingRecordQualificationsParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordQualificationsParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingRecordQualificationsParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.RecordEmailNotificationShowExpired = culture === \"fi\" ? Translations_fi.RecordEmailNotificationShowExpired : (culture === \"sv-FI\" ? Translations_sv_FI.RecordEmailNotificationShowExpired : Translations_en_US.RecordEmailNotificationShowExpired);\r\n\t\t\tTranslations.AllSelected = culture === \"fi\" ? Translations_fi.AllSelected : (culture === \"sv-FI\" ? Translations_sv_FI.AllSelected : Translations_en_US.AllSelected);\r\n\t\t\tTranslations.RemoveDocument = culture === \"fi\" ? Translations_fi.RemoveDocument : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveDocument : Translations_en_US.RemoveDocument);\r\n\t\t\tTranslations.SavingCompanyParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingCompanyParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingCompanyParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingCompanyParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.UserPublicPasswordChangeMessage = culture === \"fi\" ? Translations_fi.UserPublicPasswordChangeMessage : (culture === \"sv-FI\" ? Translations_sv_FI.UserPublicPasswordChangeMessage : Translations_en_US.UserPublicPasswordChangeMessage);\r\n\t\t\tTranslations.JobTitle = culture === \"fi\" ? Translations_fi.JobTitle : (culture === \"sv-FI\" ? Translations_sv_FI.JobTitle : Translations_en_US.JobTitle);\r\n\t\t\tTranslations.EditMessage = culture === \"fi\" ? Translations_fi.EditMessage : (culture === \"sv-FI\" ? Translations_sv_FI.EditMessage : Translations_en_US.EditMessage);\r\n\t\t\tTranslations.SeasonalWorker = culture === \"fi\" ? Translations_fi.SeasonalWorker : (culture === \"sv-FI\" ? Translations_sv_FI.SeasonalWorker : Translations_en_US.SeasonalWorker);\r\n\t\t\tTranslations.DeletingEventTypeCParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingEventTypeCParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingEventTypeCParameterWasSuccessful : Translations_en_US.DeletingEventTypeCParameterWasSuccessful);\r\n\t\t\tTranslations.DoYouReallyWantToRemoveThisInstantMessage = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveThisInstantMessage : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveThisInstantMessage : Translations_en_US.DoYouReallyWantToRemoveThisInstantMessage);\r\n\t\t\tTranslations.AllWhistleBlowHandlersHaveReadMessage = culture === \"fi\" ? Translations_fi.AllWhistleBlowHandlersHaveReadMessage : (culture === \"sv-FI\" ? Translations_sv_FI.AllWhistleBlowHandlersHaveReadMessage : Translations_en_US.AllWhistleBlowHandlersHaveReadMessage);\r\n\t\t\tTranslations.PermissionToIdentificateEvents = culture === \"fi\" ? Translations_fi.PermissionToIdentificateEvents : (culture === \"sv-FI\" ? Translations_sv_FI.PermissionToIdentificateEvents : Translations_en_US.PermissionToIdentificateEvents);\r\n\t\t\tTranslations.SavingDirectoryItemPermissionsNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingDirectoryItemPermissionsNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingDirectoryItemPermissionsNotSuccessfulErrorParameter : Translations_en_US.SavingDirectoryItemPermissionsNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.Removed = culture === \"fi\" ? Translations_fi.Removed : (culture === \"sv-FI\" ? Translations_sv_FI.Removed : Translations_en_US.Removed);\r\n\t\t\tTranslations.WhistleBlowWasNotFoundExplanation = culture === \"fi\" ? Translations_fi.WhistleBlowWasNotFoundExplanation : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowWasNotFoundExplanation : Translations_en_US.WhistleBlowWasNotFoundExplanation);\r\n\t\t\tTranslations.WhistleBlowStateInProgress = culture === \"fi\" ? Translations_fi.WhistleBlowStateInProgress : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowStateInProgress : Translations_en_US.WhistleBlowStateInProgress);\r\n\t\t\tTranslations.ActiveUserRights = culture === \"fi\" ? Translations_fi.ActiveUserRights : (culture === \"sv-FI\" ? Translations_sv_FI.ActiveUserRights : Translations_en_US.ActiveUserRights);\r\n\t\t\tTranslations.MyFiltersAndReports = culture === \"fi\" ? Translations_fi.MyFiltersAndReports : (culture === \"sv-FI\" ? Translations_sv_FI.MyFiltersAndReports : Translations_en_US.MyFiltersAndReports);\r\n\t\t\tTranslations.SavingReportWasSuccessful = culture === \"fi\" ? Translations_fi.SavingReportWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingReportWasSuccessful : Translations_en_US.SavingReportWasSuccessful);\r\n\t\t\tTranslations.ArchivingWhistleBlowsParameterWasSuccessful = culture === \"fi\" ? Translations_fi.ArchivingWhistleBlowsParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.ArchivingWhistleBlowsParameterWasSuccessful : Translations_en_US.ArchivingWhistleBlowsParameterWasSuccessful);\r\n\t\t\tTranslations.EmptyingTaskTrashBinWasSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.EmptyingTaskTrashBinWasSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.EmptyingTaskTrashBinWasSuccessfulErrorParameter : Translations_en_US.EmptyingTaskTrashBinWasSuccessfulErrorParameter);\r\n\t\t\tTranslations.FormIntegerNumber = culture === \"fi\" ? Translations_fi.FormIntegerNumber : (culture === \"sv-FI\" ? Translations_sv_FI.FormIntegerNumber : Translations_en_US.FormIntegerNumber);\r\n\t\t\tTranslations.DeletingEventTypeBParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingEventTypeBParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingEventTypeBParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingEventTypeBParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.FiscalNumber = culture === \"fi\" ? Translations_fi.FiscalNumber : (culture === \"sv-FI\" ? Translations_sv_FI.FiscalNumber : Translations_en_US.FiscalNumber);\r\n\t\t\tTranslations.CompanyGroupAll = culture === \"fi\" ? Translations_fi.CompanyGroupAll : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyGroupAll : Translations_en_US.CompanyGroupAll);\r\n\t\t\tTranslations.SavingUserParameterParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingUserParameterParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingUserParameterParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingUserParameterParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.SavingEventPartnerParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingEventPartnerParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventPartnerParameterWasSuccessful : Translations_en_US.SavingEventPartnerParameterWasSuccessful);\r\n\t\t\tTranslations.OneTimeForm = culture === \"fi\" ? Translations_fi.OneTimeForm : (culture === \"sv-FI\" ? Translations_sv_FI.OneTimeForm : Translations_en_US.OneTimeForm);\r\n\t\t\tTranslations.CalendarTaskCategoryCodeIsAlreadyInUse = culture === \"fi\" ? Translations_fi.CalendarTaskCategoryCodeIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskCategoryCodeIsAlreadyInUse : Translations_en_US.CalendarTaskCategoryCodeIsAlreadyInUse);\r\n\t\t\tTranslations.CompanyThatIsInUseCannotBeDeleted = culture === \"fi\" ? Translations_fi.CompanyThatIsInUseCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyThatIsInUseCannotBeDeleted : Translations_en_US.CompanyThatIsInUseCannotBeDeleted);\r\n\t\t\tTranslations.ClosedPlural = culture === \"fi\" ? Translations_fi.ClosedPlural : (culture === \"sv-FI\" ? Translations_sv_FI.ClosedPlural : Translations_en_US.ClosedPlural);\r\n\t\t\tTranslations.Line = culture === \"fi\" ? Translations_fi.Line : (culture === \"sv-FI\" ? Translations_sv_FI.Line : Translations_en_US.Line);\r\n\t\t\tTranslations.Company = culture === \"fi\" ? Translations_fi.Company : (culture === \"sv-FI\" ? Translations_sv_FI.Company : Translations_en_US.Company);\r\n\t\t\tTranslations.NotifiedPersonsShort = culture === \"fi\" ? Translations_fi.NotifiedPersonsShort : (culture === \"sv-FI\" ? Translations_sv_FI.NotifiedPersonsShort : Translations_en_US.NotifiedPersonsShort);\r\n\t\t\tTranslations.WhistleBlowMustBeReceivedLatestAtParameter = culture === \"fi\" ? Translations_fi.WhistleBlowMustBeReceivedLatestAtParameter : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowMustBeReceivedLatestAtParameter : Translations_en_US.WhistleBlowMustBeReceivedLatestAtParameter);\r\n\t\t\tTranslations.MessageMustBeDefined = culture === \"fi\" ? Translations_fi.MessageMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.MessageMustBeDefined : Translations_en_US.MessageMustBeDefined);\r\n\t\t\tTranslations.InheritedUserRight = culture === \"fi\" ? Translations_fi.InheritedUserRight : (culture === \"sv-FI\" ? Translations_sv_FI.InheritedUserRight : Translations_en_US.InheritedUserRight);\r\n\t\t\tTranslations.WhistleBlowArchivingTypeChangeStateAndRemoveInformantData = culture === \"fi\" ? Translations_fi.WhistleBlowArchivingTypeChangeStateAndRemoveInformantData : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowArchivingTypeChangeStateAndRemoveInformantData : Translations_en_US.WhistleBlowArchivingTypeChangeStateAndRemoveInformantData);\r\n\t\t\tTranslations.AddPrint = culture === \"fi\" ? Translations_fi.AddPrint : (culture === \"sv-FI\" ? Translations_sv_FI.AddPrint : Translations_en_US.AddPrint);\r\n\t\t\tTranslations.FileParameterIsNotImage = culture === \"fi\" ? Translations_fi.FileParameterIsNotImage : (culture === \"sv-FI\" ? Translations_sv_FI.FileParameterIsNotImage : Translations_en_US.FileParameterIsNotImage);\r\n\t\t\tTranslations.SaveInstantMessageChannel = culture === \"fi\" ? Translations_fi.SaveInstantMessageChannel : (culture === \"sv-FI\" ? Translations_sv_FI.SaveInstantMessageChannel : Translations_en_US.SaveInstantMessageChannel);\r\n\t\t\tTranslations.FilterCondition = culture === \"fi\" ? Translations_fi.FilterCondition : (culture === \"sv-FI\" ? Translations_sv_FI.FilterCondition : Translations_en_US.FilterCondition);\r\n\t\t\tTranslations.UpdateCompanyExternalSystemsWasSuccessful = culture === \"fi\" ? Translations_fi.UpdateCompanyExternalSystemsWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.UpdateCompanyExternalSystemsWasSuccessful : Translations_en_US.UpdateCompanyExternalSystemsWasSuccessful);\r\n\t\t\tTranslations.NoEmailsToSend = culture === \"fi\" ? Translations_fi.NoEmailsToSend : (culture === \"sv-FI\" ? Translations_sv_FI.NoEmailsToSend : Translations_en_US.NoEmailsToSend);\r\n\t\t\tTranslations.Approve = culture === \"fi\" ? Translations_fi.Approve : (culture === \"sv-FI\" ? Translations_sv_FI.Approve : Translations_en_US.Approve);\r\n\t\t\tTranslations.NoAddedEventTypeCs = culture === \"fi\" ? Translations_fi.NoAddedEventTypeCs : (culture === \"sv-FI\" ? Translations_sv_FI.NoAddedEventTypeCs : Translations_en_US.NoAddedEventTypeCs);\r\n\t\t\tTranslations.NoAddedEventTypeBs = culture === \"fi\" ? Translations_fi.NoAddedEventTypeBs : (culture === \"sv-FI\" ? Translations_sv_FI.NoAddedEventTypeBs : Translations_en_US.NoAddedEventTypeBs);\r\n\t\t\tTranslations.SavingCompanyParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingCompanyParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingCompanyParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingCompanyParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.FormColumnWidthMobile = culture === \"fi\" ? Translations_fi.FormColumnWidthMobile : (culture === \"sv-FI\" ? Translations_sv_FI.FormColumnWidthMobile : Translations_en_US.FormColumnWidthMobile);\r\n\t\t\tTranslations.DeletingTaskPriorityParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingTaskPriorityParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingTaskPriorityParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingTaskPriorityParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.Missing = culture === \"fi\" ? Translations_fi.Missing : (culture === \"sv-FI\" ? Translations_sv_FI.Missing : Translations_en_US.Missing);\r\n\t\t\tTranslations.WhistleBlowFrontPage = culture === \"fi\" ? Translations_fi.WhistleBlowFrontPage : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowFrontPage : Translations_en_US.WhistleBlowFrontPage);\r\n\t\t\tTranslations.WhistleBlowDateAndTime = culture === \"fi\" ? Translations_fi.WhistleBlowDateAndTime : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowDateAndTime : Translations_en_US.WhistleBlowDateAndTime);\r\n\t\t\tTranslations.AddChildEventTypeB = culture === \"fi\" ? Translations_fi.AddChildEventTypeB : (culture === \"sv-FI\" ? Translations_sv_FI.AddChildEventTypeB : Translations_en_US.AddChildEventTypeB);\r\n\t\t\tTranslations.NewMessage = culture === \"fi\" ? Translations_fi.NewMessage : (culture === \"sv-FI\" ? Translations_sv_FI.NewMessage : Translations_en_US.NewMessage);\r\n\t\t\tTranslations.SavingEventSettingsWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingEventSettingsWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventSettingsWasNotSuccessfulErrorParameter : Translations_en_US.SavingEventSettingsWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.Last7Days = culture === \"fi\" ? Translations_fi.Last7Days : (culture === \"sv-FI\" ? Translations_sv_FI.Last7Days : Translations_en_US.Last7Days);\r\n\t\t\tTranslations.ReadingFolderParameter = culture === \"fi\" ? Translations_fi.ReadingFolderParameter : (culture === \"sv-FI\" ? Translations_sv_FI.ReadingFolderParameter : Translations_en_US.ReadingFolderParameter);\r\n\t\t\tTranslations.RemoveUserGroupExternalSystemsWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.RemoveUserGroupExternalSystemsWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveUserGroupExternalSystemsWasNotSuccessfulErrorParameter : Translations_en_US.RemoveUserGroupExternalSystemsWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.NewEmploymentMustBeSavedBeforeAttachmentsCanBeAdded = culture === \"fi\" ? Translations_fi.NewEmploymentMustBeSavedBeforeAttachmentsCanBeAdded : (culture === \"sv-FI\" ? Translations_sv_FI.NewEmploymentMustBeSavedBeforeAttachmentsCanBeAdded : Translations_en_US.NewEmploymentMustBeSavedBeforeAttachmentsCanBeAdded);\r\n\t\t\tTranslations.DocumentParameterDownloaded = culture === \"fi\" ? Translations_fi.DocumentParameterDownloaded : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentParameterDownloaded : Translations_en_US.DocumentParameterDownloaded);\r\n\t\t\tTranslations.EditTransferredProperty = culture === \"fi\" ? Translations_fi.EditTransferredProperty : (culture === \"sv-FI\" ? Translations_sv_FI.EditTransferredProperty : Translations_en_US.EditTransferredProperty);\r\n\t\t\tTranslations.SavingChartWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingChartWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingChartWasNotSuccessfulErrorParameter : Translations_en_US.SavingChartWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.Severity = culture === \"fi\" ? Translations_fi.Severity : (culture === \"sv-FI\" ? Translations_sv_FI.Severity : Translations_en_US.Severity);\r\n\t\t\tTranslations.Reminders = culture === \"fi\" ? Translations_fi.Reminders : (culture === \"sv-FI\" ? Translations_sv_FI.Reminders : Translations_en_US.Reminders);\r\n\t\t\tTranslations.SelectEventInListToSeeThePreview = culture === \"fi\" ? Translations_fi.SelectEventInListToSeeThePreview : (culture === \"sv-FI\" ? Translations_sv_FI.SelectEventInListToSeeThePreview : Translations_en_US.SelectEventInListToSeeThePreview);\r\n\t\t\tTranslations.RemoveFromFavorites = culture === \"fi\" ? Translations_fi.RemoveFromFavorites : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveFromFavorites : Translations_en_US.RemoveFromFavorites);\r\n\t\t\tTranslations.UserPasswordMustBeDefined = culture === \"fi\" ? Translations_fi.UserPasswordMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.UserPasswordMustBeDefined : Translations_en_US.UserPasswordMustBeDefined);\r\n\t\t\tTranslations.CalendarTaskRepetitionEndDatePrefix = culture === \"fi\" ? Translations_fi.CalendarTaskRepetitionEndDatePrefix : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskRepetitionEndDatePrefix : Translations_en_US.CalendarTaskRepetitionEndDatePrefix);\r\n\t\t\tTranslations.SavingUnitsWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingUnitsWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingUnitsWasNotSuccessfulConcurrencyError : Translations_en_US.SavingUnitsWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.DefaultFurtherEducationGroup = culture === \"fi\" ? Translations_fi.DefaultFurtherEducationGroup : (culture === \"sv-FI\" ? Translations_sv_FI.DefaultFurtherEducationGroup : Translations_en_US.DefaultFurtherEducationGroup);\r\n\t\t\tTranslations.SelectEventType = culture === \"fi\" ? Translations_fi.SelectEventType : (culture === \"sv-FI\" ? Translations_sv_FI.SelectEventType : Translations_en_US.SelectEventType);\r\n\t\t\tTranslations.WhistleBlowReportHasBeenSaved = culture === \"fi\" ? Translations_fi.WhistleBlowReportHasBeenSaved : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowReportHasBeenSaved : Translations_en_US.WhistleBlowReportHasBeenSaved);\r\n\t\t\tTranslations.SelectEventHandler = culture === \"fi\" ? Translations_fi.SelectEventHandler : (culture === \"sv-FI\" ? Translations_sv_FI.SelectEventHandler : Translations_en_US.SelectEventHandler);\r\n\t\t\tTranslations.CompanyTaskTypeTemplates = culture === \"fi\" ? Translations_fi.CompanyTaskTypeTemplates : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyTaskTypeTemplates : Translations_en_US.CompanyTaskTypeTemplates);\r\n\t\t\tTranslations.EmailHasBeenAlreadySentForThisMessage = culture === \"fi\" ? Translations_fi.EmailHasBeenAlreadySentForThisMessage : (culture === \"sv-FI\" ? Translations_sv_FI.EmailHasBeenAlreadySentForThisMessage : Translations_en_US.EmailHasBeenAlreadySentForThisMessage);\r\n\t\t\tTranslations.WhistleBlowUrl = culture === \"fi\" ? Translations_fi.WhistleBlowUrl : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowUrl : Translations_en_US.WhistleBlowUrl);\r\n\t\t\tTranslations.CopyingFolderParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.CopyingFolderParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.CopyingFolderParameterWasNotSuccessfulErrorParameter : Translations_en_US.CopyingFolderParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.ValueAddedTaxPercent = culture === \"fi\" ? Translations_fi.ValueAddedTaxPercent : (culture === \"sv-FI\" ? Translations_sv_FI.ValueAddedTaxPercent : Translations_en_US.ValueAddedTaxPercent);\r\n\t\t\tTranslations.Success = culture === \"fi\" ? Translations_fi.Success : (culture === \"sv-FI\" ? Translations_sv_FI.Success : Translations_en_US.Success);\r\n\t\t\tTranslations.SaveEvent = culture === \"fi\" ? Translations_fi.SaveEvent : (culture === \"sv-FI\" ? Translations_sv_FI.SaveEvent : Translations_en_US.SaveEvent);\r\n\t\t\tTranslations.UserGroupNameIsAlreadyInUse = culture === \"fi\" ? Translations_fi.UserGroupNameIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.UserGroupNameIsAlreadyInUse : Translations_en_US.UserGroupNameIsAlreadyInUse);\r\n\t\t\tTranslations.Time = culture === \"fi\" ? Translations_fi.Time : (culture === \"sv-FI\" ? Translations_sv_FI.Time : Translations_en_US.Time);\r\n\t\t\tTranslations.SelectableWhenCreatingAnEvent = culture === \"fi\" ? Translations_fi.SelectableWhenCreatingAnEvent : (culture === \"sv-FI\" ? Translations_sv_FI.SelectableWhenCreatingAnEvent : Translations_en_US.SelectableWhenCreatingAnEvent);\r\n\t\t\tTranslations.LogIn = culture === \"fi\" ? Translations_fi.LogIn : (culture === \"sv-FI\" ? Translations_sv_FI.LogIn : Translations_en_US.LogIn);\r\n\t\t\tTranslations.Form = culture === \"fi\" ? Translations_fi.Form : (culture === \"sv-FI\" ? Translations_sv_FI.Form : Translations_en_US.Form);\r\n\t\t\tTranslations.UpdateUserParameterExternalSystemsWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.UpdateUserParameterExternalSystemsWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.UpdateUserParameterExternalSystemsWasNotSuccessfulErrorParameter : Translations_en_US.UpdateUserParameterExternalSystemsWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.RemoveLogisticVoucherCompanyPaymentSetting = culture === \"fi\" ? Translations_fi.RemoveLogisticVoucherCompanyPaymentSetting : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveLogisticVoucherCompanyPaymentSetting : Translations_en_US.RemoveLogisticVoucherCompanyPaymentSetting);\r\n\t\t\tTranslations.EventApprovalWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.EventApprovalWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.EventApprovalWasNotSuccessfulErrorParameter : Translations_en_US.EventApprovalWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.PageFooterText = culture === \"fi\" ? Translations_fi.PageFooterText : (culture === \"sv-FI\" ? Translations_sv_FI.PageFooterText : Translations_en_US.PageFooterText);\r\n\t\t\tTranslations.ExternalSystemCode = culture === \"fi\" ? Translations_fi.ExternalSystemCode : (culture === \"sv-FI\" ? Translations_sv_FI.ExternalSystemCode : Translations_en_US.ExternalSystemCode);\r\n\t\t\tTranslations.SavingMessageTypeParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingMessageTypeParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingMessageTypeParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingMessageTypeParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.CurrentWorkPlaceNotAdded = culture === \"fi\" ? Translations_fi.CurrentWorkPlaceNotAdded : (culture === \"sv-FI\" ? Translations_sv_FI.CurrentWorkPlaceNotAdded : Translations_en_US.CurrentWorkPlaceNotAdded);\r\n\t\t\tTranslations.BasicEducations = culture === \"fi\" ? Translations_fi.BasicEducations : (culture === \"sv-FI\" ? Translations_sv_FI.BasicEducations : Translations_en_US.BasicEducations);\r\n\t\t\tTranslations.DeletingWhistleBlowChannelAdminsParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingWhistleBlowChannelAdminsParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingWhistleBlowChannelAdminsParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingWhistleBlowChannelAdminsParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.SuccessAudit = culture === \"fi\" ? Translations_fi.SuccessAudit : (culture === \"sv-FI\" ? Translations_sv_FI.SuccessAudit : Translations_en_US.SuccessAudit);\r\n\t\t\tTranslations.FormTextInputs = culture === \"fi\" ? Translations_fi.FormTextInputs : (culture === \"sv-FI\" ? Translations_sv_FI.FormTextInputs : Translations_en_US.FormTextInputs);\r\n\t\t\tTranslations.RemovePayer = culture === \"fi\" ? Translations_fi.RemovePayer : (culture === \"sv-FI\" ? Translations_sv_FI.RemovePayer : Translations_en_US.RemovePayer);\r\n\t\t\tTranslations.NoName = culture === \"fi\" ? Translations_fi.NoName : (culture === \"sv-FI\" ? Translations_sv_FI.NoName : Translations_en_US.NoName);\r\n\t\t\tTranslations.DeletingRecordUserEmploymentsParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingRecordUserEmploymentsParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordUserEmploymentsParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingRecordUserEmploymentsParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.ImageChangeInterval = culture === \"fi\" ? Translations_fi.ImageChangeInterval : (culture === \"sv-FI\" ? Translations_sv_FI.ImageChangeInterval : Translations_en_US.ImageChangeInterval);\r\n\t\t\tTranslations.EditableDocumentPublishUnapprovedConfirmation = culture === \"fi\" ? Translations_fi.EditableDocumentPublishUnapprovedConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.EditableDocumentPublishUnapprovedConfirmation : Translations_en_US.EditableDocumentPublishUnapprovedConfirmation);\r\n\t\t\tTranslations.UnitProperties = culture === \"fi\" ? Translations_fi.UnitProperties : (culture === \"sv-FI\" ? Translations_sv_FI.UnitProperties : Translations_en_US.UnitProperties);\r\n\t\t\tTranslations.AddingAddRecordUserFurtherEducationsWasSuccessful = culture === \"fi\" ? Translations_fi.AddingAddRecordUserFurtherEducationsWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.AddingAddRecordUserFurtherEducationsWasSuccessful : Translations_en_US.AddingAddRecordUserFurtherEducationsWasSuccessful);\r\n\t\t\tTranslations.SavingMessageParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingMessageParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingMessageParameterWasSuccessful : Translations_en_US.SavingMessageParameterWasSuccessful);\r\n\t\t\tTranslations.AddCompanyParameterWasSuccessful = culture === \"fi\" ? Translations_fi.AddCompanyParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.AddCompanyParameterWasSuccessful : Translations_en_US.AddCompanyParameterWasSuccessful);\r\n\t\t\tTranslations.RequestPasswordChangeMessage3 = culture === \"fi\" ? Translations_fi.RequestPasswordChangeMessage3 : (culture === \"sv-FI\" ? Translations_sv_FI.RequestPasswordChangeMessage3 : Translations_en_US.RequestPasswordChangeMessage3);\r\n\t\t\tTranslations.InvitationParameterNotFound = culture === \"fi\" ? Translations_fi.InvitationParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.InvitationParameterNotFound : Translations_en_US.InvitationParameterNotFound);\r\n\t\t\tTranslations.FormExpressionFormat = culture === \"fi\" ? Translations_fi.FormExpressionFormat : (culture === \"sv-FI\" ? Translations_sv_FI.FormExpressionFormat : Translations_en_US.FormExpressionFormat);\r\n\t\t\tTranslations.DeletingEventTypeParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingEventTypeParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingEventTypeParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingEventTypeParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.FormulaHypot = culture === \"fi\" ? Translations_fi.FormulaHypot : (culture === \"sv-FI\" ? Translations_sv_FI.FormulaHypot : Translations_en_US.FormulaHypot);\r\n\t\t\tTranslations.EventTypeCParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted = culture === \"fi\" ? Translations_fi.EventTypeCParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.EventTypeCParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted : Translations_en_US.EventTypeCParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted);\r\n\t\t\tTranslations.DoYouReallyWantToRemoveUserParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveUserParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveUserParameter : Translations_en_US.DoYouReallyWantToRemoveUserParameter);\r\n\t\t\tTranslations.OtherInformation = culture === \"fi\" ? Translations_fi.OtherInformation : (culture === \"sv-FI\" ? Translations_sv_FI.OtherInformation : Translations_en_US.OtherInformation);\r\n\t\t\tTranslations.FormAddDropdownOption = culture === \"fi\" ? Translations_fi.FormAddDropdownOption : (culture === \"sv-FI\" ? Translations_sv_FI.FormAddDropdownOption : Translations_en_US.FormAddDropdownOption);\r\n\t\t\tTranslations.InstantMessageChannelUser = culture === \"fi\" ? Translations_fi.InstantMessageChannelUser : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageChannelUser : Translations_en_US.InstantMessageChannelUser);\r\n\t\t\tTranslations.File = culture === \"fi\" ? Translations_fi.File : (culture === \"sv-FI\" ? Translations_sv_FI.File : Translations_en_US.File);\r\n\t\t\tTranslations.RemoveRowConfirmation = culture === \"fi\" ? Translations_fi.RemoveRowConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveRowConfirmation : Translations_en_US.RemoveRowConfirmation);\r\n\t\t\tTranslations.CkickToChangeTheIcon = culture === \"fi\" ? Translations_fi.CkickToChangeTheIcon : (culture === \"sv-FI\" ? Translations_sv_FI.CkickToChangeTheIcon : Translations_en_US.CkickToChangeTheIcon);\r\n\t\t\tTranslations.CurrentCalendarWeek = culture === \"fi\" ? Translations_fi.CurrentCalendarWeek : (culture === \"sv-FI\" ? Translations_sv_FI.CurrentCalendarWeek : Translations_en_US.CurrentCalendarWeek);\r\n\t\t\tTranslations.ExternalSystemCompanyCodeMustBeDefined = culture === \"fi\" ? Translations_fi.ExternalSystemCompanyCodeMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.ExternalSystemCompanyCodeMustBeDefined : Translations_en_US.ExternalSystemCompanyCodeMustBeDefined);\r\n\t\t\tTranslations.SelectEventTypeB = culture === \"fi\" ? Translations_fi.SelectEventTypeB : (culture === \"sv-FI\" ? Translations_sv_FI.SelectEventTypeB : Translations_en_US.SelectEventTypeB);\r\n\t\t\tTranslations.AddImageFromClipboard = culture === \"fi\" ? Translations_fi.AddImageFromClipboard : (culture === \"sv-FI\" ? Translations_sv_FI.AddImageFromClipboard : Translations_en_US.AddImageFromClipboard);\r\n\t\t\tTranslations.ErrorUserGroupChangeWouldLeadToInvalidDefaultEventHandlers = culture === \"fi\" ? Translations_fi.ErrorUserGroupChangeWouldLeadToInvalidDefaultEventHandlers : (culture === \"sv-FI\" ? Translations_sv_FI.ErrorUserGroupChangeWouldLeadToInvalidDefaultEventHandlers : Translations_en_US.ErrorUserGroupChangeWouldLeadToInvalidDefaultEventHandlers);\r\n\t\t\tTranslations.CopyGroupPermissions = culture === \"fi\" ? Translations_fi.CopyGroupPermissions : (culture === \"sv-FI\" ? Translations_sv_FI.CopyGroupPermissions : Translations_en_US.CopyGroupPermissions);\r\n\t\t\tTranslations.SavingEventTypesWasSuccessful = culture === \"fi\" ? Translations_fi.SavingEventTypesWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventTypesWasSuccessful : Translations_en_US.SavingEventTypesWasSuccessful);\r\n\t\t\tTranslations.EditTaskState = culture === \"fi\" ? Translations_fi.EditTaskState : (culture === \"sv-FI\" ? Translations_sv_FI.EditTaskState : Translations_en_US.EditTaskState);\r\n\t\t\tTranslations.Value = culture === \"fi\" ? Translations_fi.Value : (culture === \"sv-FI\" ? Translations_sv_FI.Value : Translations_en_US.Value);\r\n\t\t\tTranslations.Images = culture === \"fi\" ? Translations_fi.Images : (culture === \"sv-FI\" ? Translations_sv_FI.Images : Translations_en_US.Images);\r\n\t\t\tTranslations.FieldParameterContainsInvalidCompanyCodeCharacters = culture === \"fi\" ? Translations_fi.FieldParameterContainsInvalidCompanyCodeCharacters : (culture === \"sv-FI\" ? Translations_sv_FI.FieldParameterContainsInvalidCompanyCodeCharacters : Translations_en_US.FieldParameterContainsInvalidCompanyCodeCharacters);\r\n\t\t\tTranslations.ReadingFileParameterWasNotSuccessfulFileNotFound = culture === \"fi\" ? Translations_fi.ReadingFileParameterWasNotSuccessfulFileNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.ReadingFileParameterWasNotSuccessfulFileNotFound : Translations_en_US.ReadingFileParameterWasNotSuccessfulFileNotFound);\r\n\t\t\tTranslations.MaximumSizeOfInstantMessageAttachmentIsParameterMB = culture === \"fi\" ? Translations_fi.MaximumSizeOfInstantMessageAttachmentIsParameterMB : (culture === \"sv-FI\" ? Translations_sv_FI.MaximumSizeOfInstantMessageAttachmentIsParameterMB : Translations_en_US.MaximumSizeOfInstantMessageAttachmentIsParameterMB);\r\n\t\t\tTranslations.UserRecordStatisticsActiveCards = culture === \"fi\" ? Translations_fi.UserRecordStatisticsActiveCards : (culture === \"sv-FI\" ? Translations_sv_FI.UserRecordStatisticsActiveCards : Translations_en_US.UserRecordStatisticsActiveCards);\r\n\t\t\tTranslations.UserFirstNameMustBeDefined = culture === \"fi\" ? Translations_fi.UserFirstNameMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.UserFirstNameMustBeDefined : Translations_en_US.UserFirstNameMustBeDefined);\r\n\t\t\tTranslations.PaymentVoucherCounter = culture === \"fi\" ? Translations_fi.PaymentVoucherCounter : (culture === \"sv-FI\" ? Translations_sv_FI.PaymentVoucherCounter : Translations_en_US.PaymentVoucherCounter);\r\n\t\t\tTranslations.Visibility = culture === \"fi\" ? Translations_fi.Visibility : (culture === \"sv-FI\" ? Translations_sv_FI.Visibility : Translations_en_US.Visibility);\r\n\t\t\tTranslations.EmployeeTypeIsNotSupported = culture === \"fi\" ? Translations_fi.EmployeeTypeIsNotSupported : (culture === \"sv-FI\" ? Translations_sv_FI.EmployeeTypeIsNotSupported : Translations_en_US.EmployeeTypeIsNotSupported);\r\n\t\t\tTranslations.DoYouReallyWantToRemoveKeywordParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveKeywordParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveKeywordParameter : Translations_en_US.DoYouReallyWantToRemoveKeywordParameter);\r\n\t\t\tTranslations.RequestPasswordChangeLinkHasBeenSent = culture === \"fi\" ? Translations_fi.RequestPasswordChangeLinkHasBeenSent : (culture === \"sv-FI\" ? Translations_sv_FI.RequestPasswordChangeLinkHasBeenSent : Translations_en_US.RequestPasswordChangeLinkHasBeenSent);\r\n\t\t\tTranslations.AddInstantMessageUserParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.AddInstantMessageUserParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.AddInstantMessageUserParameterWasNotSuccessfulErrorParameter : Translations_en_US.AddInstantMessageUserParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.RemoveDefaultEventType = culture === \"fi\" ? Translations_fi.RemoveDefaultEventType : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveDefaultEventType : Translations_en_US.RemoveDefaultEventType);\r\n\t\t\tTranslations.Valid = culture === \"fi\" ? Translations_fi.Valid : (culture === \"sv-FI\" ? Translations_sv_FI.Valid : Translations_en_US.Valid);\r\n\t\t\tTranslations.UserCodeIsAlreadyInUse = culture === \"fi\" ? Translations_fi.UserCodeIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.UserCodeIsAlreadyInUse : Translations_en_US.UserCodeIsAlreadyInUse);\r\n\t\t\tTranslations.DeletingCompanyGroupParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingCompanyGroupParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingCompanyGroupParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingCompanyGroupParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.DeletingEventUrgencyClassParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingEventUrgencyClassParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingEventUrgencyClassParameterWasSuccessful : Translations_en_US.DeletingEventUrgencyClassParameterWasSuccessful);\r\n\t\t\tTranslations.Files = culture === \"fi\" ? Translations_fi.Files : (culture === \"sv-FI\" ? Translations_sv_FI.Files : Translations_en_US.Files);\r\n\t\t\tTranslations.Drafts = culture === \"fi\" ? Translations_fi.Drafts : (culture === \"sv-FI\" ? Translations_sv_FI.Drafts : Translations_en_US.Drafts);\r\n\t\t\tTranslations.MessageVisibilityPeriodNotActive = culture === \"fi\" ? Translations_fi.MessageVisibilityPeriodNotActive : (culture === \"sv-FI\" ? Translations_sv_FI.MessageVisibilityPeriodNotActive : Translations_en_US.MessageVisibilityPeriodNotActive);\r\n\t\t\tTranslations.DeletingRecordQualificationsParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingRecordQualificationsParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordQualificationsParameterWasSuccessful : Translations_en_US.DeletingRecordQualificationsParameterWasSuccessful);\r\n\t\t\tTranslations.Observer = culture === \"fi\" ? Translations_fi.Observer : (culture === \"sv-FI\" ? Translations_sv_FI.Observer : Translations_en_US.Observer);\r\n\t\t\tTranslations.EventTypeParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted = culture === \"fi\" ? Translations_fi.EventTypeParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.EventTypeParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted : Translations_en_US.EventTypeParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted);\r\n\t\t\tTranslations.Usage = culture === \"fi\" ? Translations_fi.Usage : (culture === \"sv-FI\" ? Translations_sv_FI.Usage : Translations_en_US.Usage);\r\n\t\t\tTranslations.RowForm = culture === \"fi\" ? Translations_fi.RowForm : (culture === \"sv-FI\" ? Translations_sv_FI.RowForm : Translations_en_US.RowForm);\r\n\t\t\tTranslations.FormComponents = culture === \"fi\" ? Translations_fi.FormComponents : (culture === \"sv-FI\" ? Translations_sv_FI.FormComponents : Translations_en_US.FormComponents);\r\n\t\t\tTranslations.CompanyParameterNotFound = culture === \"fi\" ? Translations_fi.CompanyParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyParameterNotFound : Translations_en_US.CompanyParameterNotFound);\r\n\t\t\tTranslations.DoYouReallyWantToReplaceDocumentTemplateParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToReplaceDocumentTemplateParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToReplaceDocumentTemplateParameter : Translations_en_US.DoYouReallyWantToReplaceDocumentTemplateParameter);\r\n\t\t\tTranslations.AddUserToUserGroup = culture === \"fi\" ? Translations_fi.AddUserToUserGroup : (culture === \"sv-FI\" ? Translations_sv_FI.AddUserToUserGroup : Translations_en_US.AddUserToUserGroup);\r\n\t\t\tTranslations.Aprint = culture === \"fi\" ? Translations_fi.Aprint : (culture === \"sv-FI\" ? Translations_sv_FI.Aprint : Translations_en_US.Aprint);\r\n\t\t\tTranslations.InstantMessageChannelOnlyAdministratorCannotExitInstantMessageChannel = culture === \"fi\" ? Translations_fi.InstantMessageChannelOnlyAdministratorCannotExitInstantMessageChannel : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageChannelOnlyAdministratorCannotExitInstantMessageChannel : Translations_en_US.InstantMessageChannelOnlyAdministratorCannotExitInstantMessageChannel);\r\n\t\t\tTranslations.ReminderDaysBefore = culture === \"fi\" ? Translations_fi.ReminderDaysBefore : (culture === \"sv-FI\" ? Translations_sv_FI.ReminderDaysBefore : Translations_en_US.ReminderDaysBefore);\r\n\t\t\tTranslations.TitleIsAlreadyInUse = culture === \"fi\" ? Translations_fi.TitleIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.TitleIsAlreadyInUse : Translations_en_US.TitleIsAlreadyInUse);\r\n\t\t\tTranslations.DoYouWantToAddThisApplicationToHomeScreen = culture === \"fi\" ? Translations_fi.DoYouWantToAddThisApplicationToHomeScreen : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouWantToAddThisApplicationToHomeScreen : Translations_en_US.DoYouWantToAddThisApplicationToHomeScreen);\r\n\t\t\tTranslations.DocumentCreated = culture === \"fi\" ? Translations_fi.DocumentCreated : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentCreated : Translations_en_US.DocumentCreated);\r\n\t\t\tTranslations.TasksExcelByTaskRows = culture === \"fi\" ? Translations_fi.TasksExcelByTaskRows : (culture === \"sv-FI\" ? Translations_sv_FI.TasksExcelByTaskRows : Translations_en_US.TasksExcelByTaskRows);\r\n\t\t\tTranslations.AddingAttachmentsParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.AddingAttachmentsParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.AddingAttachmentsParameterWasNotSuccessfulErrorParameter : Translations_en_US.AddingAttachmentsParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.FrontPage = culture === \"fi\" ? Translations_fi.FrontPage : (culture === \"sv-FI\" ? Translations_sv_FI.FrontPage : Translations_en_US.FrontPage);\r\n\t\t\tTranslations.Cancel = culture === \"fi\" ? Translations_fi.Cancel : (culture === \"sv-FI\" ? Translations_sv_FI.Cancel : Translations_en_US.Cancel);\r\n\t\t\tTranslations.FileFilter = culture === \"fi\" ? Translations_fi.FileFilter : (culture === \"sv-FI\" ? Translations_sv_FI.FileFilter : Translations_en_US.FileFilter);\r\n\t\t\tTranslations.DoYouReallyWantToRemovePrintParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemovePrintParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemovePrintParameter : Translations_en_US.DoYouReallyWantToRemovePrintParameter);\r\n\t\t\tTranslations.AddingAddRecordUserQualificationsWasSuccessful = culture === \"fi\" ? Translations_fi.AddingAddRecordUserQualificationsWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.AddingAddRecordUserQualificationsWasSuccessful : Translations_en_US.AddingAddRecordUserQualificationsWasSuccessful);\r\n\t\t\tTranslations.MessagePreservationTime = culture === \"fi\" ? Translations_fi.MessagePreservationTime : (culture === \"sv-FI\" ? Translations_sv_FI.MessagePreservationTime : Translations_en_US.MessagePreservationTime);\r\n\t\t\tTranslations.ClearSubUnitDefaultHandlers = culture === \"fi\" ? Translations_fi.ClearSubUnitDefaultHandlers : (culture === \"sv-FI\" ? Translations_sv_FI.ClearSubUnitDefaultHandlers : Translations_en_US.ClearSubUnitDefaultHandlers);\r\n\t\t\tTranslations.NotificationsSentSuccessfully = culture === \"fi\" ? Translations_fi.NotificationsSentSuccessfully : (culture === \"sv-FI\" ? Translations_sv_FI.NotificationsSentSuccessfully : Translations_en_US.NotificationsSentSuccessfully);\r\n\t\t\tTranslations.InstantMessageSettings = culture === \"fi\" ? Translations_fi.InstantMessageSettings : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageSettings : Translations_en_US.InstantMessageSettings);\r\n\t\t\tTranslations.SavingReadReceiptWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingReadReceiptWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingReadReceiptWasNotSuccessfulErrorParameter : Translations_en_US.SavingReadReceiptWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.TaskDataRowParameterNotFound = culture === \"fi\" ? Translations_fi.TaskDataRowParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.TaskDataRowParameterNotFound : Translations_en_US.TaskDataRowParameterNotFound);\r\n\t\t\tTranslations.Path = culture === \"fi\" ? Translations_fi.Path : (culture === \"sv-FI\" ? Translations_sv_FI.Path : Translations_en_US.Path);\r\n\t\t\tTranslations.Competency = culture === \"fi\" ? Translations_fi.Competency : (culture === \"sv-FI\" ? Translations_sv_FI.Competency : Translations_en_US.Competency);\r\n\t\t\tTranslations.MovingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.MovingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.MovingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulErrorParameter : Translations_en_US.MovingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.CalendarTaskRemoveSeries = culture === \"fi\" ? Translations_fi.CalendarTaskRemoveSeries : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskRemoveSeries : Translations_en_US.CalendarTaskRemoveSeries);\r\n\t\t\tTranslations.DeletingRecordBasicEducationsParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingRecordBasicEducationsParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordBasicEducationsParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingRecordBasicEducationsParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.AddWhistleBlowChannelAdminParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.AddWhistleBlowChannelAdminParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.AddWhistleBlowChannelAdminParameterWasNotSuccessfulErrorParameter : Translations_en_US.AddWhistleBlowChannelAdminParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.DownloadPdf = culture === \"fi\" ? Translations_fi.DownloadPdf : (culture === \"sv-FI\" ? Translations_sv_FI.DownloadPdf : Translations_en_US.DownloadPdf);\r\n\t\t\tTranslations.Import = culture === \"fi\" ? Translations_fi.Import : (culture === \"sv-FI\" ? Translations_sv_FI.Import : Translations_en_US.Import);\r\n\t\t\tTranslations.WhistleBlowNonAnonymousReport = culture === \"fi\" ? Translations_fi.WhistleBlowNonAnonymousReport : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowNonAnonymousReport : Translations_en_US.WhistleBlowNonAnonymousReport);\r\n\t\t\tTranslations.EmploymentType = culture === \"fi\" ? Translations_fi.EmploymentType : (culture === \"sv-FI\" ? Translations_sv_FI.EmploymentType : Translations_en_US.EmploymentType);\r\n\t\t\tTranslations.FileSynchronizationToDatabaseFinishedInParameterSeconds = culture === \"fi\" ? Translations_fi.FileSynchronizationToDatabaseFinishedInParameterSeconds : (culture === \"sv-FI\" ? Translations_sv_FI.FileSynchronizationToDatabaseFinishedInParameterSeconds : Translations_en_US.FileSynchronizationToDatabaseFinishedInParameterSeconds);\r\n\t\t\tTranslations.RemoveEventType = culture === \"fi\" ? Translations_fi.RemoveEventType : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveEventType : Translations_en_US.RemoveEventType);\r\n\t\t\tTranslations.DeletingRecordUserTransferredPropertyParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingRecordUserTransferredPropertyParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordUserTransferredPropertyParameterWasSuccessful : Translations_en_US.DeletingRecordUserTransferredPropertyParameterWasSuccessful);\r\n\t\t\tTranslations.AllDay = culture === \"fi\" ? Translations_fi.AllDay : (culture === \"sv-FI\" ? Translations_sv_FI.AllDay : Translations_en_US.AllDay);\r\n\t\t\tTranslations.Resources = culture === \"fi\" ? Translations_fi.Resources : (culture === \"sv-FI\" ? Translations_sv_FI.Resources : Translations_en_US.Resources);\r\n\t\t\tTranslations.AddTransferredProperty = culture === \"fi\" ? Translations_fi.AddTransferredProperty : (culture === \"sv-FI\" ? Translations_sv_FI.AddTransferredProperty : Translations_en_US.AddTransferredProperty);\r\n\t\t\tTranslations.DocumentTemplates = culture === \"fi\" ? Translations_fi.DocumentTemplates : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentTemplates : Translations_en_US.DocumentTemplates);\r\n\t\t\tTranslations.UserSessionHasBeenExpired = culture === \"fi\" ? Translations_fi.UserSessionHasBeenExpired : (culture === \"sv-FI\" ? Translations_sv_FI.UserSessionHasBeenExpired : Translations_en_US.UserSessionHasBeenExpired);\r\n\t\t\tTranslations.SavingRecordFurtherEducationGroupParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingRecordFurtherEducationGroupParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingRecordFurtherEducationGroupParameterWasSuccessful : Translations_en_US.SavingRecordFurtherEducationGroupParameterWasSuccessful);\r\n\t\t\tTranslations.AddDefaultTaskState = culture === \"fi\" ? Translations_fi.AddDefaultTaskState : (culture === \"sv-FI\" ? Translations_sv_FI.AddDefaultTaskState : Translations_en_US.AddDefaultTaskState);\r\n\t\t\tTranslations.JobTypeMessageNotification = culture === \"fi\" ? Translations_fi.JobTypeMessageNotification : (culture === \"sv-FI\" ? Translations_sv_FI.JobTypeMessageNotification : Translations_en_US.JobTypeMessageNotification);\r\n\t\t\tTranslations.SavingKeywordParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingKeywordParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingKeywordParameterWasSuccessful : Translations_en_US.SavingKeywordParameterWasSuccessful);\r\n\t\t\tTranslations.AccessRightReadCalendarTask = culture === \"fi\" ? Translations_fi.AccessRightReadCalendarTask : (culture === \"sv-FI\" ? Translations_sv_FI.AccessRightReadCalendarTask : Translations_en_US.AccessRightReadCalendarTask);\r\n\t\t\tTranslations.DoYouReallyWantToRemoveFileFilterParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveFileFilterParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveFileFilterParameter : Translations_en_US.DoYouReallyWantToRemoveFileFilterParameter);\r\n\t\t\tTranslations.AddEventMessageConfirmation = culture === \"fi\" ? Translations_fi.AddEventMessageConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.AddEventMessageConfirmation : Translations_en_US.AddEventMessageConfirmation);\r\n\t\t\tTranslations.LockedDocumentsParameterCannotBeMoved = culture === \"fi\" ? Translations_fi.LockedDocumentsParameterCannotBeMoved : (culture === \"sv-FI\" ? Translations_sv_FI.LockedDocumentsParameterCannotBeMoved : Translations_en_US.LockedDocumentsParameterCannotBeMoved);\r\n\t\t\tTranslations.RemoveTaskState = culture === \"fi\" ? Translations_fi.RemoveTaskState : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveTaskState : Translations_en_US.RemoveTaskState);\r\n\t\t\tTranslations.Conversions = culture === \"fi\" ? Translations_fi.Conversions : (culture === \"sv-FI\" ? Translations_sv_FI.Conversions : Translations_en_US.Conversions);\r\n\t\t\tTranslations.Created = culture === \"fi\" ? Translations_fi.Created : (culture === \"sv-FI\" ? Translations_sv_FI.Created : Translations_en_US.Created);\r\n\t\t\tTranslations.CalendarTaskRepetitionEnd = culture === \"fi\" ? Translations_fi.CalendarTaskRepetitionEnd : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskRepetitionEnd : Translations_en_US.CalendarTaskRepetitionEnd);\r\n\t\t\tTranslations.DeletingRecordFamiliarizationParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingRecordFamiliarizationParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordFamiliarizationParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingRecordFamiliarizationParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.UserHasUsedMobile = culture === \"fi\" ? Translations_fi.UserHasUsedMobile : (culture === \"sv-FI\" ? Translations_sv_FI.UserHasUsedMobile : Translations_en_US.UserHasUsedMobile);\r\n\t\t\tTranslations.RemoveBasicEducation = culture === \"fi\" ? Translations_fi.RemoveBasicEducation : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveBasicEducation : Translations_en_US.RemoveBasicEducation);\r\n\t\t\tTranslations.VersionInformation = culture === \"fi\" ? Translations_fi.VersionInformation : (culture === \"sv-FI\" ? Translations_sv_FI.VersionInformation : Translations_en_US.VersionInformation);\r\n\t\t\tTranslations.Days = culture === \"fi\" ? Translations_fi.Days : (culture === \"sv-FI\" ? Translations_sv_FI.Days : Translations_en_US.Days);\r\n\t\t\tTranslations.CkickToChangeThePicture = culture === \"fi\" ? Translations_fi.CkickToChangeThePicture : (culture === \"sv-FI\" ? Translations_sv_FI.CkickToChangeThePicture : Translations_en_US.CkickToChangeThePicture);\r\n\t\t\tTranslations.PostalCode = culture === \"fi\" ? Translations_fi.PostalCode : (culture === \"sv-FI\" ? Translations_sv_FI.PostalCode : Translations_en_US.PostalCode);\r\n\t\t\tTranslations.RecordUserLogEntryTypePrint = culture === \"fi\" ? Translations_fi.RecordUserLogEntryTypePrint : (culture === \"sv-FI\" ? Translations_sv_FI.RecordUserLogEntryTypePrint : Translations_en_US.RecordUserLogEntryTypePrint);\r\n\t\t\tTranslations.NameMustBeDefined = culture === \"fi\" ? Translations_fi.NameMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.NameMustBeDefined : Translations_en_US.NameMustBeDefined);\r\n\t\t\tTranslations.ExternalSystemUserTokenParameterIsAlreadyInUse = culture === \"fi\" ? Translations_fi.ExternalSystemUserTokenParameterIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.ExternalSystemUserTokenParameterIsAlreadyInUse : Translations_en_US.ExternalSystemUserTokenParameterIsAlreadyInUse);\r\n\t\t\tTranslations.WhistleBlowResolutionCanceled = culture === \"fi\" ? Translations_fi.WhistleBlowResolutionCanceled : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowResolutionCanceled : Translations_en_US.WhistleBlowResolutionCanceled);\r\n\t\t\tTranslations.Theme = culture === \"fi\" ? Translations_fi.Theme : (culture === \"sv-FI\" ? Translations_sv_FI.Theme : Translations_en_US.Theme);\r\n\t\t\tTranslations.SaveFilterAs = culture === \"fi\" ? Translations_fi.SaveFilterAs : (culture === \"sv-FI\" ? Translations_sv_FI.SaveFilterAs : Translations_en_US.SaveFilterAs);\r\n\t\t\tTranslations.AttachmentIsEmpty = culture === \"fi\" ? Translations_fi.AttachmentIsEmpty : (culture === \"sv-FI\" ? Translations_sv_FI.AttachmentIsEmpty : Translations_en_US.AttachmentIsEmpty);\r\n\t\t\tTranslations.SaveTask = culture === \"fi\" ? Translations_fi.SaveTask : (culture === \"sv-FI\" ? Translations_sv_FI.SaveTask : Translations_en_US.SaveTask);\r\n\t\t\tTranslations.FormModifyUser = culture === \"fi\" ? Translations_fi.FormModifyUser : (culture === \"sv-FI\" ? Translations_sv_FI.FormModifyUser : Translations_en_US.FormModifyUser);\r\n\t\t\tTranslations.FormHeight = culture === \"fi\" ? Translations_fi.FormHeight : (culture === \"sv-FI\" ? Translations_sv_FI.FormHeight : Translations_en_US.FormHeight);\r\n\t\t\tTranslations.RemovePermission = culture === \"fi\" ? Translations_fi.RemovePermission : (culture === \"sv-FI\" ? Translations_sv_FI.RemovePermission : Translations_en_US.RemovePermission);\r\n\t\t\tTranslations.DeletingInstantMessageChannelWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingInstantMessageChannelWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingInstantMessageChannelWasNotSuccessfulErrorParameter : Translations_en_US.DeletingInstantMessageChannelWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.UserGroupsMustBeDefined = culture === \"fi\" ? Translations_fi.UserGroupsMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.UserGroupsMustBeDefined : Translations_en_US.UserGroupsMustBeDefined);\r\n\t\t\tTranslations.PrintGenerationFailed = culture === \"fi\" ? Translations_fi.PrintGenerationFailed : (culture === \"sv-FI\" ? Translations_sv_FI.PrintGenerationFailed : Translations_en_US.PrintGenerationFailed);\r\n\t\t\tTranslations.LogDocumentPreview = culture === \"fi\" ? Translations_fi.LogDocumentPreview : (culture === \"sv-FI\" ? Translations_sv_FI.LogDocumentPreview : Translations_en_US.LogDocumentPreview);\r\n\t\t\tTranslations.DeletingOneTimePasswordWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingOneTimePasswordWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingOneTimePasswordWasSuccessful : Translations_en_US.DeletingOneTimePasswordWasSuccessful);\r\n\t\t\tTranslations.FormulaTrunc = culture === \"fi\" ? Translations_fi.FormulaTrunc : (culture === \"sv-FI\" ? Translations_sv_FI.FormulaTrunc : Translations_en_US.FormulaTrunc);\r\n\t\t\tTranslations.SendPasswordChangeEmailConfirmation = culture === \"fi\" ? Translations_fi.SendPasswordChangeEmailConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.SendPasswordChangeEmailConfirmation : Translations_en_US.SendPasswordChangeEmailConfirmation);\r\n\t\t\tTranslations.DeletingTaskStateParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingTaskStateParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingTaskStateParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingTaskStateParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.Years = culture === \"fi\" ? Translations_fi.Years : (culture === \"sv-FI\" ? Translations_sv_FI.Years : Translations_en_US.Years);\r\n\t\t\tTranslations.SavingEventTypeCsWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingEventTypeCsWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventTypeCsWasNotSuccessfulErrorParameter : Translations_en_US.SavingEventTypeCsWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.DeletingDefaultEventHandlerParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingDefaultEventHandlerParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingDefaultEventHandlerParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingDefaultEventHandlerParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.SavingMessageParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingMessageParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingMessageParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingMessageParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.RecordUserTrangerredPropertyParameterNotFound = culture === \"fi\" ? Translations_fi.RecordUserTrangerredPropertyParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.RecordUserTrangerredPropertyParameterNotFound : Translations_en_US.RecordUserTrangerredPropertyParameterNotFound);\r\n\t\t\tTranslations.PreviewWeb = culture === \"fi\" ? Translations_fi.PreviewWeb : (culture === \"sv-FI\" ? Translations_sv_FI.PreviewWeb : Translations_en_US.PreviewWeb);\r\n\t\t\tTranslations.RemoveComment = culture === \"fi\" ? Translations_fi.RemoveComment : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveComment : Translations_en_US.RemoveComment);\r\n\t\t\tTranslations.TimeSpanYear = culture === \"fi\" ? Translations_fi.TimeSpanYear : (culture === \"sv-FI\" ? Translations_sv_FI.TimeSpanYear : Translations_en_US.TimeSpanYear);\r\n\t\t\tTranslations.OpenCalendarTask = culture === \"fi\" ? Translations_fi.OpenCalendarTask : (culture === \"sv-FI\" ? Translations_sv_FI.OpenCalendarTask : Translations_en_US.OpenCalendarTask);\r\n\t\t\tTranslations.FormulaExponent = culture === \"fi\" ? Translations_fi.FormulaExponent : (culture === \"sv-FI\" ? Translations_sv_FI.FormulaExponent : Translations_en_US.FormulaExponent);\r\n\t\t\tTranslations.Voluntary = culture === \"fi\" ? Translations_fi.Voluntary : (culture === \"sv-FI\" ? Translations_sv_FI.Voluntary : Translations_en_US.Voluntary);\r\n\t\t\tTranslations.SavingRecordFurtherEducationParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingRecordFurtherEducationParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingRecordFurtherEducationParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingRecordFurtherEducationParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.WhistleBlowChannelParameterNotFound = culture === \"fi\" ? Translations_fi.WhistleBlowChannelParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowChannelParameterNotFound : Translations_en_US.WhistleBlowChannelParameterNotFound);\r\n\t\t\tTranslations.SelectMonth = culture === \"fi\" ? Translations_fi.SelectMonth : (culture === \"sv-FI\" ? Translations_sv_FI.SelectMonth : Translations_en_US.SelectMonth);\r\n\t\t\tTranslations.CalendarTaskStateStarted = culture === \"fi\" ? Translations_fi.CalendarTaskStateStarted : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskStateStarted : Translations_en_US.CalendarTaskStateStarted);\r\n\t\t\tTranslations.DeletingRecordBasicEducationsParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingRecordBasicEducationsParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordBasicEducationsParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingRecordBasicEducationsParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.TaskStateParameterIsInUseInParameterTasksAndCannotBeDeleted = culture === \"fi\" ? Translations_fi.TaskStateParameterIsInUseInParameterTasksAndCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.TaskStateParameterIsInUseInParameterTasksAndCannotBeDeleted : Translations_en_US.TaskStateParameterIsInUseInParameterTasksAndCannotBeDeleted);\r\n\t\t\tTranslations.WhistleBlowAnonymousReport = culture === \"fi\" ? Translations_fi.WhistleBlowAnonymousReport : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowAnonymousReport : Translations_en_US.WhistleBlowAnonymousReport);\r\n\t\t\tTranslations.DeletingEventTypeCParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingEventTypeCParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingEventTypeCParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingEventTypeCParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.Operators = culture === \"fi\" ? Translations_fi.Operators : (culture === \"sv-FI\" ? Translations_sv_FI.Operators : Translations_en_US.Operators);\r\n\t\t\tTranslations.CreatingFileParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.CreatingFileParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.CreatingFileParameterWasNotSuccessfulErrorParameter : Translations_en_US.CreatingFileParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.SourceFolderAndTargetFolderAreSame = culture === \"fi\" ? Translations_fi.SourceFolderAndTargetFolderAreSame : (culture === \"sv-FI\" ? Translations_sv_FI.SourceFolderAndTargetFolderAreSame : Translations_en_US.SourceFolderAndTargetFolderAreSame);\r\n\t\t\tTranslations.DeletingRecordFurtherEducationParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingRecordFurtherEducationParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordFurtherEducationParameterWasSuccessful : Translations_en_US.DeletingRecordFurtherEducationParameterWasSuccessful);\r\n\t\t\tTranslations.SavingDocumentTemplateParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingDocumentTemplateParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingDocumentTemplateParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingDocumentTemplateParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.AddDocumentTemplate = culture === \"fi\" ? Translations_fi.AddDocumentTemplate : (culture === \"sv-FI\" ? Translations_sv_FI.AddDocumentTemplate : Translations_en_US.AddDocumentTemplate);\r\n\t\t\tTranslations.AddTask = culture === \"fi\" ? Translations_fi.AddTask : (culture === \"sv-FI\" ? Translations_sv_FI.AddTask : Translations_en_US.AddTask);\r\n\t\t\tTranslations.PublicationOfEditableDocumentCannotBeRemoved = culture === \"fi\" ? Translations_fi.PublicationOfEditableDocumentCannotBeRemoved : (culture === \"sv-FI\" ? Translations_sv_FI.PublicationOfEditableDocumentCannotBeRemoved : Translations_en_US.PublicationOfEditableDocumentCannotBeRemoved);\r\n\t\t\tTranslations.AddQualifications = culture === \"fi\" ? Translations_fi.AddQualifications : (culture === \"sv-FI\" ? Translations_sv_FI.AddQualifications : Translations_en_US.AddQualifications);\r\n\t\t\tTranslations.SavingUnitPermissionsWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingUnitPermissionsWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingUnitPermissionsWasNotSuccessfulConcurrencyError : Translations_en_US.SavingUnitPermissionsWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.RemoveDefaultHandler = culture === \"fi\" ? Translations_fi.RemoveDefaultHandler : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveDefaultHandler : Translations_en_US.RemoveDefaultHandler);\r\n\t\t\tTranslations.ChartGenerationAborted = culture === \"fi\" ? Translations_fi.ChartGenerationAborted : (culture === \"sv-FI\" ? Translations_sv_FI.ChartGenerationAborted : Translations_en_US.ChartGenerationAborted);\r\n\t\t\tTranslations.SystemAdminMessage = culture === \"fi\" ? Translations_fi.SystemAdminMessage : (culture === \"sv-FI\" ? Translations_sv_FI.SystemAdminMessage : Translations_en_US.SystemAdminMessage);\r\n\t\t\tTranslations.AddTarget = culture === \"fi\" ? Translations_fi.AddTarget : (culture === \"sv-FI\" ? Translations_sv_FI.AddTarget : Translations_en_US.AddTarget);\r\n\t\t\tTranslations.TargetDoesNotHaveFoldersWithWritePermissions = culture === \"fi\" ? Translations_fi.TargetDoesNotHaveFoldersWithWritePermissions : (culture === \"sv-FI\" ? Translations_sv_FI.TargetDoesNotHaveFoldersWithWritePermissions : Translations_en_US.TargetDoesNotHaveFoldersWithWritePermissions);\r\n\t\t\tTranslations.UpdateCompanyExternalSystemsWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.UpdateCompanyExternalSystemsWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.UpdateCompanyExternalSystemsWasNotSuccessfulErrorParameter : Translations_en_US.UpdateCompanyExternalSystemsWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.DeletingMessageTypeParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingMessageTypeParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingMessageTypeParameterWasSuccessful : Translations_en_US.DeletingMessageTypeParameterWasSuccessful);\r\n\t\t\tTranslations.LockedTaskDataRowCannotBeSaved = culture === \"fi\" ? Translations_fi.LockedTaskDataRowCannotBeSaved : (culture === \"sv-FI\" ? Translations_sv_FI.LockedTaskDataRowCannotBeSaved : Translations_en_US.LockedTaskDataRowCannotBeSaved);\r\n\t\t\tTranslations.RemoveLogisticVoucherPaymentSetting = culture === \"fi\" ? Translations_fi.RemoveLogisticVoucherPaymentSetting : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveLogisticVoucherPaymentSetting : Translations_en_US.RemoveLogisticVoucherPaymentSetting);\r\n\t\t\tTranslations.WhistleBlowSourceEmail = culture === \"fi\" ? Translations_fi.WhistleBlowSourceEmail : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowSourceEmail : Translations_en_US.WhistleBlowSourceEmail);\r\n\t\t\tTranslations.DeletingKeywordsParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingKeywordsParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingKeywordsParameterWasSuccessful : Translations_en_US.DeletingKeywordsParameterWasSuccessful);\r\n\t\t\tTranslations.SavingRecordFamiliarizationParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingRecordFamiliarizationParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingRecordFamiliarizationParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingRecordFamiliarizationParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.SavingPrintWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingPrintWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingPrintWasNotSuccessfulErrorParameter : Translations_en_US.SavingPrintWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.DeletingCalendarTaskParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingCalendarTaskParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingCalendarTaskParameterWasSuccessful : Translations_en_US.DeletingCalendarTaskParameterWasSuccessful);\r\n\t\t\tTranslations.SavingRecordBasicEducationParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingRecordBasicEducationParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingRecordBasicEducationParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingRecordBasicEducationParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.DeletingMessageTypeParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingMessageTypeParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingMessageTypeParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingMessageTypeParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.EventClosed = culture === \"fi\" ? Translations_fi.EventClosed : (culture === \"sv-FI\" ? Translations_sv_FI.EventClosed : Translations_en_US.EventClosed);\r\n\t\t\tTranslations.DeletingAttachmentsParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingAttachmentsParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingAttachmentsParameterWasSuccessful : Translations_en_US.DeletingAttachmentsParameterWasSuccessful);\r\n\t\t\tTranslations.SendReadReceipt = culture === \"fi\" ? Translations_fi.SendReadReceipt : (culture === \"sv-FI\" ? Translations_sv_FI.SendReadReceipt : Translations_en_US.SendReadReceipt);\r\n\t\t\tTranslations.SaveTaskConfirmation = culture === \"fi\" ? Translations_fi.SaveTaskConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.SaveTaskConfirmation : Translations_en_US.SaveTaskConfirmation);\r\n\t\t\tTranslations.TaskStates = culture === \"fi\" ? Translations_fi.TaskStates : (culture === \"sv-FI\" ? Translations_sv_FI.TaskStates : Translations_en_US.TaskStates);\r\n\t\t\tTranslations.ActionIsNotAuthorized = culture === \"fi\" ? Translations_fi.ActionIsNotAuthorized : (culture === \"sv-FI\" ? Translations_sv_FI.ActionIsNotAuthorized : Translations_en_US.ActionIsNotAuthorized);\r\n\t\t\tTranslations.SavingInstantMessageChannelUserWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingInstantMessageChannelUserWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingInstantMessageChannelUserWasNotSuccessfulErrorParameter : Translations_en_US.SavingInstantMessageChannelUserWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.Communication = culture === \"fi\" ? Translations_fi.Communication : (culture === \"sv-FI\" ? Translations_sv_FI.Communication : Translations_en_US.Communication);\r\n\t\t\tTranslations.WhistleBlowSourceSystem = culture === \"fi\" ? Translations_fi.WhistleBlowSourceSystem : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowSourceSystem : Translations_en_US.WhistleBlowSourceSystem);\r\n\t\t\tTranslations.NotValid = culture === \"fi\" ? Translations_fi.NotValid : (culture === \"sv-FI\" ? Translations_sv_FI.NotValid : Translations_en_US.NotValid);\r\n\t\t\tTranslations.DocumentModuleProperties = culture === \"fi\" ? Translations_fi.DocumentModuleProperties : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentModuleProperties : Translations_en_US.DocumentModuleProperties);\r\n\t\t\tTranslations.LoginTitle = culture === \"fi\" ? Translations_fi.LoginTitle : (culture === \"sv-FI\" ? Translations_sv_FI.LoginTitle : Translations_en_US.LoginTitle);\r\n\t\t\tTranslations.Unit = culture === \"fi\" ? Translations_fi.Unit : (culture === \"sv-FI\" ? Translations_sv_FI.Unit : Translations_en_US.Unit);\r\n\t\t\tTranslations.FormEmptyArea = culture === \"fi\" ? Translations_fi.FormEmptyArea : (culture === \"sv-FI\" ? Translations_sv_FI.FormEmptyArea : Translations_en_US.FormEmptyArea);\r\n\t\t\tTranslations.DoYouReallyWantToUnlockMessage = culture === \"fi\" ? Translations_fi.DoYouReallyWantToUnlockMessage : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToUnlockMessage : Translations_en_US.DoYouReallyWantToUnlockMessage);\r\n\t\t\tTranslations.PublishEvent = culture === \"fi\" ? Translations_fi.PublishEvent : (culture === \"sv-FI\" ? Translations_sv_FI.PublishEvent : Translations_en_US.PublishEvent);\r\n\t\t\tTranslations.AddKeyword = culture === \"fi\" ? Translations_fi.AddKeyword : (culture === \"sv-FI\" ? Translations_sv_FI.AddKeyword : Translations_en_US.AddKeyword);\r\n\t\t\tTranslations.RemoveEventUrgencyClass = culture === \"fi\" ? Translations_fi.RemoveEventUrgencyClass : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveEventUrgencyClass : Translations_en_US.RemoveEventUrgencyClass);\r\n\t\t\tTranslations.Competencies = culture === \"fi\" ? Translations_fi.Competencies : (culture === \"sv-FI\" ? Translations_sv_FI.Competencies : Translations_en_US.Competencies);\r\n\t\t\tTranslations.DeletingInstantMessageChannelWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingInstantMessageChannelWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingInstantMessageChannelWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingInstantMessageChannelWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.Saved = culture === \"fi\" ? Translations_fi.Saved : (culture === \"sv-FI\" ? Translations_sv_FI.Saved : Translations_en_US.Saved);\r\n\t\t\tTranslations.UserCodeUpdateWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.UserCodeUpdateWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.UserCodeUpdateWasNotSuccessfulErrorParameter : Translations_en_US.UserCodeUpdateWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.AddCompanyGroupsParameterWasSuccessful = culture === \"fi\" ? Translations_fi.AddCompanyGroupsParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.AddCompanyGroupsParameterWasSuccessful : Translations_en_US.AddCompanyGroupsParameterWasSuccessful);\r\n\t\t\tTranslations.OK = culture === \"fi\" ? Translations_fi.OK : (culture === \"sv-FI\" ? Translations_sv_FI.OK : Translations_en_US.OK);\r\n\t\t\tTranslations.ReferenceNumberPrefix = culture === \"fi\" ? Translations_fi.ReferenceNumberPrefix : (culture === \"sv-FI\" ? Translations_sv_FI.ReferenceNumberPrefix : Translations_en_US.ReferenceNumberPrefix);\r\n\t\t\tTranslations.DocumentProperties = culture === \"fi\" ? Translations_fi.DocumentProperties : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentProperties : Translations_en_US.DocumentProperties);\r\n\t\t\tTranslations.TaskCreated = culture === \"fi\" ? Translations_fi.TaskCreated : (culture === \"sv-FI\" ? Translations_sv_FI.TaskCreated : Translations_en_US.TaskCreated);\r\n\t\t\tTranslations.Close = culture === \"fi\" ? Translations_fi.Close : (culture === \"sv-FI\" ? Translations_sv_FI.Close : Translations_en_US.Close);\r\n\t\t\tTranslations.Messages = culture === \"fi\" ? Translations_fi.Messages : (culture === \"sv-FI\" ? Translations_sv_FI.Messages : Translations_en_US.Messages);\r\n\t\t\tTranslations.FieldsToBePrinted = culture === \"fi\" ? Translations_fi.FieldsToBePrinted : (culture === \"sv-FI\" ? Translations_sv_FI.FieldsToBePrinted : Translations_en_US.FieldsToBePrinted);\r\n\t\t\tTranslations.WhistleBlowSourceOther = culture === \"fi\" ? Translations_fi.WhistleBlowSourceOther : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowSourceOther : Translations_en_US.WhistleBlowSourceOther);\r\n\t\t\tTranslations.AddRecordUser = culture === \"fi\" ? Translations_fi.AddRecordUser : (culture === \"sv-FI\" ? Translations_sv_FI.AddRecordUser : Translations_en_US.AddRecordUser);\r\n\t\t\tTranslations.EditPermission = culture === \"fi\" ? Translations_fi.EditPermission : (culture === \"sv-FI\" ? Translations_sv_FI.EditPermission : Translations_en_US.EditPermission);\r\n\t\t\tTranslations.UserGroupNameMustBeDefined = culture === \"fi\" ? Translations_fi.UserGroupNameMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.UserGroupNameMustBeDefined : Translations_en_US.UserGroupNameMustBeDefined);\r\n\t\t\tTranslations.WhistleBlowStatisticsRecordCount = culture === \"fi\" ? Translations_fi.WhistleBlowStatisticsRecordCount : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowStatisticsRecordCount : Translations_en_US.WhistleBlowStatisticsRecordCount);\r\n\t\t\tTranslations.WelcomeToUseEsalkkuSystem = culture === \"fi\" ? Translations_fi.WelcomeToUseEsalkkuSystem : (culture === \"sv-FI\" ? Translations_sv_FI.WelcomeToUseEsalkkuSystem : Translations_en_US.WelcomeToUseEsalkkuSystem);\r\n\t\t\tTranslations.DoYouReallyWantToRemoveSelectedMessageTypes = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveSelectedMessageTypes : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveSelectedMessageTypes : Translations_en_US.DoYouReallyWantToRemoveSelectedMessageTypes);\r\n\t\t\tTranslations.TaskPriorityCodeIsAlreadyInUse = culture === \"fi\" ? Translations_fi.TaskPriorityCodeIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.TaskPriorityCodeIsAlreadyInUse : Translations_en_US.TaskPriorityCodeIsAlreadyInUse);\r\n\t\t\tTranslations.IdentificationDetails = culture === \"fi\" ? Translations_fi.IdentificationDetails : (culture === \"sv-FI\" ? Translations_sv_FI.IdentificationDetails : Translations_en_US.IdentificationDetails);\r\n\t\t\tTranslations.CurrentTopicsAbbr = culture === \"fi\" ? Translations_fi.CurrentTopicsAbbr : (culture === \"sv-FI\" ? Translations_sv_FI.CurrentTopicsAbbr : Translations_en_US.CurrentTopicsAbbr);\r\n\t\t\tTranslations.SavingRecordEmploymentParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingRecordEmploymentParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingRecordEmploymentParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingRecordEmploymentParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.LockedDocumentParameterCannotBeDeleted = culture === \"fi\" ? Translations_fi.LockedDocumentParameterCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.LockedDocumentParameterCannotBeDeleted : Translations_en_US.LockedDocumentParameterCannotBeDeleted);\r\n\t\t\tTranslations.Empty = culture === \"fi\" ? Translations_fi.Empty : (culture === \"sv-FI\" ? Translations_sv_FI.Empty : Translations_en_US.Empty);\r\n\t\t\tTranslations.UserRecordStatisticsSavedCards = culture === \"fi\" ? Translations_fi.UserRecordStatisticsSavedCards : (culture === \"sv-FI\" ? Translations_sv_FI.UserRecordStatisticsSavedCards : Translations_en_US.UserRecordStatisticsSavedCards);\r\n\t\t\tTranslations.DependencyResolvingFailedForInterfaceParameter = culture === \"fi\" ? Translations_fi.DependencyResolvingFailedForInterfaceParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DependencyResolvingFailedForInterfaceParameter : Translations_en_US.DependencyResolvingFailedForInterfaceParameter);\r\n\t\t\tTranslations.AddingWhistleBlowHandlersWasSuccessful = culture === \"fi\" ? Translations_fi.AddingWhistleBlowHandlersWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.AddingWhistleBlowHandlersWasSuccessful : Translations_en_US.AddingWhistleBlowHandlersWasSuccessful);\r\n\t\t\tTranslations.ProcessingTime = culture === \"fi\" ? Translations_fi.ProcessingTime : (culture === \"sv-FI\" ? Translations_sv_FI.ProcessingTime : Translations_en_US.ProcessingTime);\r\n\t\t\tTranslations.SavingMessageParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingMessageParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingMessageParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingMessageParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.CompanyGroups = culture === \"fi\" ? Translations_fi.CompanyGroups : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyGroups : Translations_en_US.CompanyGroups);\r\n\t\t\tTranslations.EmptyForm = culture === \"fi\" ? Translations_fi.EmptyForm : (culture === \"sv-FI\" ? Translations_sv_FI.EmptyForm : Translations_en_US.EmptyForm);\r\n\t\t\tTranslations.SpecifedTimeFrame = culture === \"fi\" ? Translations_fi.SpecifedTimeFrame : (culture === \"sv-FI\" ? Translations_sv_FI.SpecifedTimeFrame : Translations_en_US.SpecifedTimeFrame);\r\n\t\t\tTranslations.AddDefaultTaskType = culture === \"fi\" ? Translations_fi.AddDefaultTaskType : (culture === \"sv-FI\" ? Translations_sv_FI.AddDefaultTaskType : Translations_en_US.AddDefaultTaskType);\r\n\t\t\tTranslations.AddCalendarTask = culture === \"fi\" ? Translations_fi.AddCalendarTask : (culture === \"sv-FI\" ? Translations_sv_FI.AddCalendarTask : Translations_en_US.AddCalendarTask);\r\n\t\t\tTranslations.AddPartnersByClickingPlusButton = culture === \"fi\" ? Translations_fi.AddPartnersByClickingPlusButton : (culture === \"sv-FI\" ? Translations_sv_FI.AddPartnersByClickingPlusButton : Translations_en_US.AddPartnersByClickingPlusButton);\r\n\t\t\tTranslations.DeletingEventTypeBParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingEventTypeBParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingEventTypeBParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingEventTypeBParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.RemovingCalendarTaskHandlersWasSuccessful = culture === \"fi\" ? Translations_fi.RemovingCalendarTaskHandlersWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.RemovingCalendarTaskHandlersWasSuccessful : Translations_en_US.RemovingCalendarTaskHandlersWasSuccessful);\r\n\t\t\tTranslations.SavingRecordUserQualificationParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingRecordUserQualificationParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingRecordUserQualificationParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingRecordUserQualificationParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.StartDate = culture === \"fi\" ? Translations_fi.StartDate : (culture === \"sv-FI\" ? Translations_sv_FI.StartDate : Translations_en_US.StartDate);\r\n\t\t\tTranslations.NewWhistleBlowMustBeSavedBeforeHandlersCanBeAdded = culture === \"fi\" ? Translations_fi.NewWhistleBlowMustBeSavedBeforeHandlersCanBeAdded : (culture === \"sv-FI\" ? Translations_sv_FI.NewWhistleBlowMustBeSavedBeforeHandlersCanBeAdded : Translations_en_US.NewWhistleBlowMustBeSavedBeforeHandlersCanBeAdded);\r\n\t\t\tTranslations.EditEventTypeB = culture === \"fi\" ? Translations_fi.EditEventTypeB : (culture === \"sv-FI\" ? Translations_sv_FI.EditEventTypeB : Translations_en_US.EditEventTypeB);\r\n\t\t\tTranslations.Closed = culture === \"fi\" ? Translations_fi.Closed : (culture === \"sv-FI\" ? Translations_sv_FI.Closed : Translations_en_US.Closed);\r\n\t\t\tTranslations.CustomerNumber = culture === \"fi\" ? Translations_fi.CustomerNumber : (culture === \"sv-FI\" ? Translations_sv_FI.CustomerNumber : Translations_en_US.CustomerNumber);\r\n\t\t\tTranslations.Reports = culture === \"fi\" ? Translations_fi.Reports : (culture === \"sv-FI\" ? Translations_sv_FI.Reports : Translations_en_US.Reports);\r\n\t\t\tTranslations.DaysAgo60 = culture === \"fi\" ? Translations_fi.DaysAgo60 : (culture === \"sv-FI\" ? Translations_sv_FI.DaysAgo60 : Translations_en_US.DaysAgo60);\r\n\t\t\tTranslations.UnkownErrorHasBeenOccured = culture === \"fi\" ? Translations_fi.UnkownErrorHasBeenOccured : (culture === \"sv-FI\" ? Translations_sv_FI.UnkownErrorHasBeenOccured : Translations_en_US.UnkownErrorHasBeenOccured);\r\n\t\t\tTranslations.InstantMessageUserInvitationAcceptTypeCanInvite = culture === \"fi\" ? Translations_fi.InstantMessageUserInvitationAcceptTypeCanInvite : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageUserInvitationAcceptTypeCanInvite : Translations_en_US.InstantMessageUserInvitationAcceptTypeCanInvite);\r\n\t\t\tTranslations.Schema = culture === \"fi\" ? Translations_fi.Schema : (culture === \"sv-FI\" ? Translations_sv_FI.Schema : Translations_en_US.Schema);\r\n\t\t\tTranslations.UserGroupAll = culture === \"fi\" ? Translations_fi.UserGroupAll : (culture === \"sv-FI\" ? Translations_sv_FI.UserGroupAll : Translations_en_US.UserGroupAll);\r\n\t\t\tTranslations.Admins = culture === \"fi\" ? Translations_fi.Admins : (culture === \"sv-FI\" ? Translations_sv_FI.Admins : Translations_en_US.Admins);\r\n\t\t\tTranslations.CompanyGroupModuleProperties = culture === \"fi\" ? Translations_fi.CompanyGroupModuleProperties : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyGroupModuleProperties : Translations_en_US.CompanyGroupModuleProperties);\r\n\t\t\tTranslations.RecordUserLogEntryTypeCreate = culture === \"fi\" ? Translations_fi.RecordUserLogEntryTypeCreate : (culture === \"sv-FI\" ? Translations_sv_FI.RecordUserLogEntryTypeCreate : Translations_en_US.RecordUserLogEntryTypeCreate);\r\n\t\t\tTranslations.SendEmailInvitation = culture === \"fi\" ? Translations_fi.SendEmailInvitation : (culture === \"sv-FI\" ? Translations_sv_FI.SendEmailInvitation : Translations_en_US.SendEmailInvitation);\r\n\t\t\tTranslations.SendReadReceiptInfo = culture === \"fi\" ? Translations_fi.SendReadReceiptInfo : (culture === \"sv-FI\" ? Translations_sv_FI.SendReadReceiptInfo : Translations_en_US.SendReadReceiptInfo);\r\n\t\t\tTranslations.SavingRecordUserTransferredPropertyParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingRecordUserTransferredPropertyParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingRecordUserTransferredPropertyParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingRecordUserTransferredPropertyParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.EmailAddressMustBeValid = culture === \"fi\" ? Translations_fi.EmailAddressMustBeValid : (culture === \"sv-FI\" ? Translations_sv_FI.EmailAddressMustBeValid : Translations_en_US.EmailAddressMustBeValid);\r\n\t\t\tTranslations.AddEventTypeCsToEvent = culture === \"fi\" ? Translations_fi.AddEventTypeCsToEvent : (culture === \"sv-FI\" ? Translations_sv_FI.AddEventTypeCsToEvent : Translations_en_US.AddEventTypeCsToEvent);\r\n\t\t\tTranslations.DoYouReallyWantToRemoveSelectedCalendarTaskHandlers = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveSelectedCalendarTaskHandlers : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveSelectedCalendarTaskHandlers : Translations_en_US.DoYouReallyWantToRemoveSelectedCalendarTaskHandlers);\r\n\t\t\tTranslations.Uploaded = culture === \"fi\" ? Translations_fi.Uploaded : (culture === \"sv-FI\" ? Translations_sv_FI.Uploaded : Translations_en_US.Uploaded);\r\n\t\t\tTranslations.UnreadInstantMessages = culture === \"fi\" ? Translations_fi.UnreadInstantMessages : (culture === \"sv-FI\" ? Translations_sv_FI.UnreadInstantMessages : Translations_en_US.UnreadInstantMessages);\r\n\t\t\tTranslations.SendingEmail = culture === \"fi\" ? Translations_fi.SendingEmail : (culture === \"sv-FI\" ? Translations_sv_FI.SendingEmail : Translations_en_US.SendingEmail);\r\n\t\t\tTranslations.TaskTypeNameMustBeDefined = culture === \"fi\" ? Translations_fi.TaskTypeNameMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.TaskTypeNameMustBeDefined : Translations_en_US.TaskTypeNameMustBeDefined);\r\n\t\t\tTranslations.ExpiringIn180Days = culture === \"fi\" ? Translations_fi.ExpiringIn180Days : (culture === \"sv-FI\" ? Translations_sv_FI.ExpiringIn180Days : Translations_en_US.ExpiringIn180Days);\r\n\t\t\tTranslations.CompanyGroupCodeMustBeDefined = culture === \"fi\" ? Translations_fi.CompanyGroupCodeMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyGroupCodeMustBeDefined : Translations_en_US.CompanyGroupCodeMustBeDefined);\r\n\t\t\tTranslations.Modified = culture === \"fi\" ? Translations_fi.Modified : (culture === \"sv-FI\" ? Translations_sv_FI.Modified : Translations_en_US.Modified);\r\n\t\t\tTranslations.EmailNotificationInUse = culture === \"fi\" ? Translations_fi.EmailNotificationInUse : (culture === \"sv-FI\" ? Translations_sv_FI.EmailNotificationInUse : Translations_en_US.EmailNotificationInUse);\r\n\t\t\tTranslations.FormColumnWidthPrint = culture === \"fi\" ? Translations_fi.FormColumnWidthPrint : (culture === \"sv-FI\" ? Translations_sv_FI.FormColumnWidthPrint : Translations_en_US.FormColumnWidthPrint);\r\n\t\t\tTranslations.Unlimited = culture === \"fi\" ? Translations_fi.Unlimited : (culture === \"sv-FI\" ? Translations_sv_FI.Unlimited : Translations_en_US.Unlimited);\r\n\t\t\tTranslations.FolderParameterAlreadyExists = culture === \"fi\" ? Translations_fi.FolderParameterAlreadyExists : (culture === \"sv-FI\" ? Translations_sv_FI.FolderParameterAlreadyExists : Translations_en_US.FolderParameterAlreadyExists);\r\n\t\t\tTranslations.EditRecordUser = culture === \"fi\" ? Translations_fi.EditRecordUser : (culture === \"sv-FI\" ? Translations_sv_FI.EditRecordUser : Translations_en_US.EditRecordUser);\r\n\t\t\tTranslations.EventReport = culture === \"fi\" ? Translations_fi.EventReport : (culture === \"sv-FI\" ? Translations_sv_FI.EventReport : Translations_en_US.EventReport);\r\n\t\t\tTranslations.DocumentContentsSearch = culture === \"fi\" ? Translations_fi.DocumentContentsSearch : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentContentsSearch : Translations_en_US.DocumentContentsSearch);\r\n\t\t\tTranslations.ZipFileParameterNotFound = culture === \"fi\" ? Translations_fi.ZipFileParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.ZipFileParameterNotFound : Translations_en_US.ZipFileParameterNotFound);\r\n\t\t\tTranslations.MyLastModifications = culture === \"fi\" ? Translations_fi.MyLastModifications : (culture === \"sv-FI\" ? Translations_sv_FI.MyLastModifications : Translations_en_US.MyLastModifications);\r\n\t\t\tTranslations.ExternalSystemUserCodeClaimNotFound = culture === \"fi\" ? Translations_fi.ExternalSystemUserCodeClaimNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.ExternalSystemUserCodeClaimNotFound : Translations_en_US.ExternalSystemUserCodeClaimNotFound);\r\n\t\t\tTranslations.AllUserGroups = culture === \"fi\" ? Translations_fi.AllUserGroups : (culture === \"sv-FI\" ? Translations_sv_FI.AllUserGroups : Translations_en_US.AllUserGroups);\r\n\t\t\tTranslations.DocumentApproval = culture === \"fi\" ? Translations_fi.DocumentApproval : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentApproval : Translations_en_US.DocumentApproval);\r\n\t\t\tTranslations.IgnoreFolderPatterns = culture === \"fi\" ? Translations_fi.IgnoreFolderPatterns : (culture === \"sv-FI\" ? Translations_sv_FI.IgnoreFolderPatterns : Translations_en_US.IgnoreFolderPatterns);\r\n\t\t\tTranslations.DeletingCompanyGroupsParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingCompanyGroupsParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingCompanyGroupsParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingCompanyGroupsParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.LoginAddress = culture === \"fi\" ? Translations_fi.LoginAddress : (culture === \"sv-FI\" ? Translations_sv_FI.LoginAddress : Translations_en_US.LoginAddress);\r\n\t\t\tTranslations.AddCompanyGroupsParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.AddCompanyGroupsParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.AddCompanyGroupsParameterWasNotSuccessfulErrorParameter : Translations_en_US.AddCompanyGroupsParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.StateOpen = culture === \"fi\" ? Translations_fi.StateOpen : (culture === \"sv-FI\" ? Translations_sv_FI.StateOpen : Translations_en_US.StateOpen);\r\n\t\t\tTranslations.SavingUserParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingUserParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingUserParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingUserParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.InvalidValueParameter = culture === \"fi\" ? Translations_fi.InvalidValueParameter : (culture === \"sv-FI\" ? Translations_sv_FI.InvalidValueParameter : Translations_en_US.InvalidValueParameter);\r\n\t\t\tTranslations.SavingInstantMessageChannelParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingInstantMessageChannelParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingInstantMessageChannelParameterWasSuccessful : Translations_en_US.SavingInstantMessageChannelParameterWasSuccessful);\r\n\t\t\tTranslations.FormSizeMedium = culture === \"fi\" ? Translations_fi.FormSizeMedium : (culture === \"sv-FI\" ? Translations_sv_FI.FormSizeMedium : Translations_en_US.FormSizeMedium);\r\n\t\t\tTranslations.WhistleBlowStatisticsUnreadMessages = culture === \"fi\" ? Translations_fi.WhistleBlowStatisticsUnreadMessages : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowStatisticsUnreadMessages : Translations_en_US.WhistleBlowStatisticsUnreadMessages);\r\n\t\t\tTranslations.MessageTypeCodeMustBeDefined = culture === \"fi\" ? Translations_fi.MessageTypeCodeMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.MessageTypeCodeMustBeDefined : Translations_en_US.MessageTypeCodeMustBeDefined);\r\n\t\t\tTranslations.DocumentParameterOverwriteConfirmation = culture === \"fi\" ? Translations_fi.DocumentParameterOverwriteConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentParameterOverwriteConfirmation : Translations_en_US.DocumentParameterOverwriteConfirmation);\r\n\t\t\tTranslations.DeletingRecordFamiliarizationsParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingRecordFamiliarizationsParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordFamiliarizationsParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingRecordFamiliarizationsParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.CheckingExistanceOfFolderParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.CheckingExistanceOfFolderParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.CheckingExistanceOfFolderParameterWasNotSuccessfulErrorParameter : Translations_en_US.CheckingExistanceOfFolderParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.DeletingAttachmentParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingAttachmentParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingAttachmentParameterWasSuccessful : Translations_en_US.DeletingAttachmentParameterWasSuccessful);\r\n\t\t\tTranslations.UserIdClaimNotFound = culture === \"fi\" ? Translations_fi.UserIdClaimNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.UserIdClaimNotFound : Translations_en_US.UserIdClaimNotFound);\r\n\t\t\tTranslations.SaveUserFurtherEducation = culture === \"fi\" ? Translations_fi.SaveUserFurtherEducation : (culture === \"sv-FI\" ? Translations_sv_FI.SaveUserFurtherEducation : Translations_en_US.SaveUserFurtherEducation);\r\n\t\t\tTranslations.ProjectNumber = culture === \"fi\" ? Translations_fi.ProjectNumber : (culture === \"sv-FI\" ? Translations_sv_FI.ProjectNumber : Translations_en_US.ProjectNumber);\r\n\t\t\tTranslations.DefaultDeductionWithoutTax = culture === \"fi\" ? Translations_fi.DefaultDeductionWithoutTax : (culture === \"sv-FI\" ? Translations_sv_FI.DefaultDeductionWithoutTax : Translations_en_US.DefaultDeductionWithoutTax);\r\n\t\t\tTranslations.FormTextInput = culture === \"fi\" ? Translations_fi.FormTextInput : (culture === \"sv-FI\" ? Translations_sv_FI.FormTextInput : Translations_en_US.FormTextInput);\r\n\t\t\tTranslations.EditDefaultHandlers = culture === \"fi\" ? Translations_fi.EditDefaultHandlers : (culture === \"sv-FI\" ? Translations_sv_FI.EditDefaultHandlers : Translations_en_US.EditDefaultHandlers);\r\n\t\t\tTranslations.Last120Days = culture === \"fi\" ? Translations_fi.Last120Days : (culture === \"sv-FI\" ? Translations_sv_FI.Last120Days : Translations_en_US.Last120Days);\r\n\t\t\tTranslations.DeletingWhistleBlowCategoriesParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingWhistleBlowCategoriesParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingWhistleBlowCategoriesParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingWhistleBlowCategoriesParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.FormDropdownOptionsDialog = culture === \"fi\" ? Translations_fi.FormDropdownOptionsDialog : (culture === \"sv-FI\" ? Translations_sv_FI.FormDropdownOptionsDialog : Translations_en_US.FormDropdownOptionsDialog);\r\n\t\t\tTranslations.MarkMessageAsRead = culture === \"fi\" ? Translations_fi.MarkMessageAsRead : (culture === \"sv-FI\" ? Translations_sv_FI.MarkMessageAsRead : Translations_en_US.MarkMessageAsRead);\r\n\t\t\tTranslations.FileStorageQuotaGB = culture === \"fi\" ? Translations_fi.FileStorageQuotaGB : (culture === \"sv-FI\" ? Translations_sv_FI.FileStorageQuotaGB : Translations_en_US.FileStorageQuotaGB);\r\n\t\t\tTranslations.EmptyingTaskTrashBinWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.EmptyingTaskTrashBinWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.EmptyingTaskTrashBinWasNotSuccessfulConcurrencyError : Translations_en_US.EmptyingTaskTrashBinWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.SendMessage = culture === \"fi\" ? Translations_fi.SendMessage : (culture === \"sv-FI\" ? Translations_sv_FI.SendMessage : Translations_en_US.SendMessage);\r\n\t\t\tTranslations.RestoringTaskParameterFromTrashBinWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.RestoringTaskParameterFromTrashBinWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.RestoringTaskParameterFromTrashBinWasNotSuccessfulConcurrencyError : Translations_en_US.RestoringTaskParameterFromTrashBinWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.SavingChartWasSuccessful = culture === \"fi\" ? Translations_fi.SavingChartWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingChartWasSuccessful : Translations_en_US.SavingChartWasSuccessful);\r\n\t\t\tTranslations.CalendarTaskCategories = culture === \"fi\" ? Translations_fi.CalendarTaskCategories : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskCategories : Translations_en_US.CalendarTaskCategories);\r\n\t\t\tTranslations.PasswordHasBeenCopiedToClipboard = culture === \"fi\" ? Translations_fi.PasswordHasBeenCopiedToClipboard : (culture === \"sv-FI\" ? Translations_sv_FI.PasswordHasBeenCopiedToClipboard : Translations_en_US.PasswordHasBeenCopiedToClipboard);\r\n\t\t\tTranslations.DeletingInstantMessageChannelWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingInstantMessageChannelWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingInstantMessageChannelWasSuccessful : Translations_en_US.DeletingInstantMessageChannelWasSuccessful);\r\n\t\t\tTranslations.TimeMustBeDefined = culture === \"fi\" ? Translations_fi.TimeMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.TimeMustBeDefined : Translations_en_US.TimeMustBeDefined);\r\n\t\t\tTranslations.DoYouReallyWantToRemoveFileParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveFileParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveFileParameter : Translations_en_US.DoYouReallyWantToRemoveFileParameter);\r\n\t\t\tTranslations.UserNotAllowedToViewNotifier = culture === \"fi\" ? Translations_fi.UserNotAllowedToViewNotifier : (culture === \"sv-FI\" ? Translations_sv_FI.UserNotAllowedToViewNotifier : Translations_en_US.UserNotAllowedToViewNotifier);\r\n\t\t\tTranslations.SaveComment = culture === \"fi\" ? Translations_fi.SaveComment : (culture === \"sv-FI\" ? Translations_sv_FI.SaveComment : Translations_en_US.SaveComment);\r\n\t\t\tTranslations.AdditionalSettings = culture === \"fi\" ? Translations_fi.AdditionalSettings : (culture === \"sv-FI\" ? Translations_sv_FI.AdditionalSettings : Translations_en_US.AdditionalSettings);\r\n\t\t\tTranslations.ImageProperties = culture === \"fi\" ? Translations_fi.ImageProperties : (culture === \"sv-FI\" ? Translations_sv_FI.ImageProperties : Translations_en_US.ImageProperties);\r\n\t\t\tTranslations.UploadDocument = culture === \"fi\" ? Translations_fi.UploadDocument : (culture === \"sv-FI\" ? Translations_sv_FI.UploadDocument : Translations_en_US.UploadDocument);\r\n\t\t\tTranslations.Contents = culture === \"fi\" ? Translations_fi.Contents : (culture === \"sv-FI\" ? Translations_sv_FI.Contents : Translations_en_US.Contents);\r\n\t\t\tTranslations.PermissionsOtherCompanies = culture === \"fi\" ? Translations_fi.PermissionsOtherCompanies : (culture === \"sv-FI\" ? Translations_sv_FI.PermissionsOtherCompanies : Translations_en_US.PermissionsOtherCompanies);\r\n\t\t\tTranslations.FormTextPreWrap = culture === \"fi\" ? Translations_fi.FormTextPreWrap : (culture === \"sv-FI\" ? Translations_sv_FI.FormTextPreWrap : Translations_en_US.FormTextPreWrap);\r\n\t\t\tTranslations.SavingReportWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingReportWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingReportWasNotSuccessfulConcurrencyError : Translations_en_US.SavingReportWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.Employee = culture === \"fi\" ? Translations_fi.Employee : (culture === \"sv-FI\" ? Translations_sv_FI.Employee : Translations_en_US.Employee);\r\n\t\t\tTranslations.LanguageNonLocalEnglish = culture === \"fi\" ? Translations_fi.LanguageNonLocalEnglish : (culture === \"sv-FI\" ? Translations_sv_FI.LanguageNonLocalEnglish : Translations_en_US.LanguageNonLocalEnglish);\r\n\t\t\tTranslations.RecordUserModuleProperties = culture === \"fi\" ? Translations_fi.RecordUserModuleProperties : (culture === \"sv-FI\" ? Translations_sv_FI.RecordUserModuleProperties : Translations_en_US.RecordUserModuleProperties);\r\n\t\t\tTranslations.EditEventType = culture === \"fi\" ? Translations_fi.EditEventType : (culture === \"sv-FI\" ? Translations_sv_FI.EditEventType : Translations_en_US.EditEventType);\r\n\t\t\tTranslations.UserGroups = culture === \"fi\" ? Translations_fi.UserGroups : (culture === \"sv-FI\" ? Translations_sv_FI.UserGroups : Translations_en_US.UserGroups);\r\n\t\t\tTranslations.WhistleBlowStatisticsResolvedRecords = culture === \"fi\" ? Translations_fi.WhistleBlowStatisticsResolvedRecords : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowStatisticsResolvedRecords : Translations_en_US.WhistleBlowStatisticsResolvedRecords);\r\n\t\t\tTranslations.DeletingWhistleBlowParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingWhistleBlowParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingWhistleBlowParameterWasSuccessful : Translations_en_US.DeletingWhistleBlowParameterWasSuccessful);\r\n\t\t\tTranslations.SelectImageFile = culture === \"fi\" ? Translations_fi.SelectImageFile : (culture === \"sv-FI\" ? Translations_sv_FI.SelectImageFile : Translations_en_US.SelectImageFile);\r\n\t\t\tTranslations.DeletingFileFilterParameterWasNotSuccessfulUsedInParameterFolders = culture === \"fi\" ? Translations_fi.DeletingFileFilterParameterWasNotSuccessfulUsedInParameterFolders : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingFileFilterParameterWasNotSuccessfulUsedInParameterFolders : Translations_en_US.DeletingFileFilterParameterWasNotSuccessfulUsedInParameterFolders);\r\n\t\t\tTranslations.TogglePreviewPanel = culture === \"fi\" ? Translations_fi.TogglePreviewPanel : (culture === \"sv-FI\" ? Translations_sv_FI.TogglePreviewPanel : Translations_en_US.TogglePreviewPanel);\r\n\t\t\tTranslations.MovingTaskParameterToTrashBinWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.MovingTaskParameterToTrashBinWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.MovingTaskParameterToTrashBinWasNotSuccessfulErrorParameter : Translations_en_US.MovingTaskParameterToTrashBinWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.FolderProperties = culture === \"fi\" ? Translations_fi.FolderProperties : (culture === \"sv-FI\" ? Translations_sv_FI.FolderProperties : Translations_en_US.FolderProperties);\r\n\t\t\tTranslations.DeletingDirectoryItemFolderParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingDirectoryItemFolderParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingDirectoryItemFolderParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingDirectoryItemFolderParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.NewCompanyInformation = culture === \"fi\" ? Translations_fi.NewCompanyInformation : (culture === \"sv-FI\" ? Translations_sv_FI.NewCompanyInformation : Translations_en_US.NewCompanyInformation);\r\n\t\t\tTranslations.ShowOnMap = culture === \"fi\" ? Translations_fi.ShowOnMap : (culture === \"sv-FI\" ? Translations_sv_FI.ShowOnMap : Translations_en_US.ShowOnMap);\r\n\t\t\tTranslations.DeletingTaskPrioritiesParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingTaskPrioritiesParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingTaskPrioritiesParameterWasSuccessful : Translations_en_US.DeletingTaskPrioritiesParameterWasSuccessful);\r\n\t\t\tTranslations.TaskMustBeSavedBeforeNewDataRowsCanBeAdded = culture === \"fi\" ? Translations_fi.TaskMustBeSavedBeforeNewDataRowsCanBeAdded : (culture === \"sv-FI\" ? Translations_sv_FI.TaskMustBeSavedBeforeNewDataRowsCanBeAdded : Translations_en_US.TaskMustBeSavedBeforeNewDataRowsCanBeAdded);\r\n\t\t\tTranslations.DeletingCompanyParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingCompanyParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingCompanyParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingCompanyParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.CommentMustNotBeEmpty = culture === \"fi\" ? Translations_fi.CommentMustNotBeEmpty : (culture === \"sv-FI\" ? Translations_sv_FI.CommentMustNotBeEmpty : Translations_en_US.CommentMustNotBeEmpty);\r\n\t\t\tTranslations.EventsToApprove = culture === \"fi\" ? Translations_fi.EventsToApprove : (culture === \"sv-FI\" ? Translations_sv_FI.EventsToApprove : Translations_en_US.EventsToApprove);\r\n\t\t\tTranslations.DeletingTaskTypesParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingTaskTypesParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingTaskTypesParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingTaskTypesParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.FileFilterCodeIsAlreadyInUse = culture === \"fi\" ? Translations_fi.FileFilterCodeIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.FileFilterCodeIsAlreadyInUse : Translations_en_US.FileFilterCodeIsAlreadyInUse);\r\n\t\t\tTranslations.RemoveFurtherEducation = culture === \"fi\" ? Translations_fi.RemoveFurtherEducation : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveFurtherEducation : Translations_en_US.RemoveFurtherEducation);\r\n\t\t\tTranslations.MessageStartDateMustBeDefined = culture === \"fi\" ? Translations_fi.MessageStartDateMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.MessageStartDateMustBeDefined : Translations_en_US.MessageStartDateMustBeDefined);\r\n\t\t\tTranslations.DefaultEventHandlersAndNotifiedPersons = culture === \"fi\" ? Translations_fi.DefaultEventHandlersAndNotifiedPersons : (culture === \"sv-FI\" ? Translations_sv_FI.DefaultEventHandlersAndNotifiedPersons : Translations_en_US.DefaultEventHandlersAndNotifiedPersons);\r\n\t\t\tTranslations.DeletingPartnersParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingPartnersParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingPartnersParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingPartnersParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.EventTypeMustBeDefined = culture === \"fi\" ? Translations_fi.EventTypeMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.EventTypeMustBeDefined : Translations_en_US.EventTypeMustBeDefined);\r\n\t\t\tTranslations.WhistleBlowCategory = culture === \"fi\" ? Translations_fi.WhistleBlowCategory : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowCategory : Translations_en_US.WhistleBlowCategory);\r\n\t\t\tTranslations.FileParameterAlreadyExistsInFileSystem = culture === \"fi\" ? Translations_fi.FileParameterAlreadyExistsInFileSystem : (culture === \"sv-FI\" ? Translations_sv_FI.FileParameterAlreadyExistsInFileSystem : Translations_en_US.FileParameterAlreadyExistsInFileSystem);\r\n\t\t\tTranslations.DeletingTaskStatesParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingTaskStatesParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingTaskStatesParameterWasSuccessful : Translations_en_US.DeletingTaskStatesParameterWasSuccessful);\r\n\t\t\tTranslations.ModifyExistingDocumentTemplate = culture === \"fi\" ? Translations_fi.ModifyExistingDocumentTemplate : (culture === \"sv-FI\" ? Translations_sv_FI.ModifyExistingDocumentTemplate : Translations_en_US.ModifyExistingDocumentTemplate);\r\n\t\t\tTranslations.CalendarTaskSeries = culture === \"fi\" ? Translations_fi.CalendarTaskSeries : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskSeries : Translations_en_US.CalendarTaskSeries);\r\n\t\t\tTranslations.TitleMustBeDefined = culture === \"fi\" ? Translations_fi.TitleMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.TitleMustBeDefined : Translations_en_US.TitleMustBeDefined);\r\n\t\t\tTranslations.AddUserParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.AddUserParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.AddUserParameterWasNotSuccessfulConcurrencyError : Translations_en_US.AddUserParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.WhistleBlowChannelWasNotFoundExplanation = culture === \"fi\" ? Translations_fi.WhistleBlowChannelWasNotFoundExplanation : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowChannelWasNotFoundExplanation : Translations_en_US.WhistleBlowChannelWasNotFoundExplanation);\r\n\t\t\tTranslations.FormInitializeFromSavedRowDialog = culture === \"fi\" ? Translations_fi.FormInitializeFromSavedRowDialog : (culture === \"sv-FI\" ? Translations_sv_FI.FormInitializeFromSavedRowDialog : Translations_en_US.FormInitializeFromSavedRowDialog);\r\n\t\t\tTranslations.RemoveUserAndKeepRecordUser = culture === \"fi\" ? Translations_fi.RemoveUserAndKeepRecordUser : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveUserAndKeepRecordUser : Translations_en_US.RemoveUserAndKeepRecordUser);\r\n\t\t\tTranslations.Keywords = culture === \"fi\" ? Translations_fi.Keywords : (culture === \"sv-FI\" ? Translations_sv_FI.Keywords : Translations_en_US.Keywords);\r\n\t\t\tTranslations.SelectRecordUsers = culture === \"fi\" ? Translations_fi.SelectRecordUsers : (culture === \"sv-FI\" ? Translations_sv_FI.SelectRecordUsers : Translations_en_US.SelectRecordUsers);\r\n\t\t\tTranslations.AddCompanyParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.AddCompanyParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.AddCompanyParameterWasNotSuccessfulErrorParameter : Translations_en_US.AddCompanyParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.UserRecordStatisticsExpiredQualifications = culture === \"fi\" ? Translations_fi.UserRecordStatisticsExpiredQualifications : (culture === \"sv-FI\" ? Translations_sv_FI.UserRecordStatisticsExpiredQualifications : Translations_en_US.UserRecordStatisticsExpiredQualifications);\r\n\t\t\tTranslations.DaysAgo120 = culture === \"fi\" ? Translations_fi.DaysAgo120 : (culture === \"sv-FI\" ? Translations_sv_FI.DaysAgo120 : Translations_en_US.DaysAgo120);\r\n\t\t\tTranslations.WhistleBlowResolutionOther = culture === \"fi\" ? Translations_fi.WhistleBlowResolutionOther : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowResolutionOther : Translations_en_US.WhistleBlowResolutionOther);\r\n\t\t\tTranslations.AddCompanyGroupParameterWasSuccessful = culture === \"fi\" ? Translations_fi.AddCompanyGroupParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.AddCompanyGroupParameterWasSuccessful : Translations_en_US.AddCompanyGroupParameterWasSuccessful);\r\n\t\t\tTranslations.ZipFileCreationFailed = culture === \"fi\" ? Translations_fi.ZipFileCreationFailed : (culture === \"sv-FI\" ? Translations_sv_FI.ZipFileCreationFailed : Translations_en_US.ZipFileCreationFailed);\r\n\t\t\tTranslations.EmailsSentSuccessfully = culture === \"fi\" ? Translations_fi.EmailsSentSuccessfully : (culture === \"sv-FI\" ? Translations_sv_FI.EmailsSentSuccessfully : Translations_en_US.EmailsSentSuccessfully);\r\n\t\t\tTranslations.AccessRightReadTasks = culture === \"fi\" ? Translations_fi.AccessRightReadTasks : (culture === \"sv-FI\" ? Translations_sv_FI.AccessRightReadTasks : Translations_en_US.AccessRightReadTasks);\r\n\t\t\tTranslations.DeletingCompaniesParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingCompaniesParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingCompaniesParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingCompaniesParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.AddMessageType = culture === \"fi\" ? Translations_fi.AddMessageType : (culture === \"sv-FI\" ? Translations_sv_FI.AddMessageType : Translations_en_US.AddMessageType);\r\n\t\t\tTranslations.AddBasicEducation = culture === \"fi\" ? Translations_fi.AddBasicEducation : (culture === \"sv-FI\" ? Translations_sv_FI.AddBasicEducation : Translations_en_US.AddBasicEducation);\r\n\t\t\tTranslations.SaveAndSend = culture === \"fi\" ? Translations_fi.SaveAndSend : (culture === \"sv-FI\" ? Translations_sv_FI.SaveAndSend : Translations_en_US.SaveAndSend);\r\n\t\t\tTranslations.RemoveTaskPermanently = culture === \"fi\" ? Translations_fi.RemoveTaskPermanently : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveTaskPermanently : Translations_en_US.RemoveTaskPermanently);\r\n\t\t\tTranslations.NotAssigned = culture === \"fi\" ? Translations_fi.NotAssigned : (culture === \"sv-FI\" ? Translations_sv_FI.NotAssigned : Translations_en_US.NotAssigned);\r\n\t\t\tTranslations.EditUnit = culture === \"fi\" ? Translations_fi.EditUnit : (culture === \"sv-FI\" ? Translations_sv_FI.EditUnit : Translations_en_US.EditUnit);\r\n\t\t\tTranslations.FormColumnWidth = culture === \"fi\" ? Translations_fi.FormColumnWidth : (culture === \"sv-FI\" ? Translations_sv_FI.FormColumnWidth : Translations_en_US.FormColumnWidth);\r\n\t\t\tTranslations.PasswordMustContainLowercaseChar = culture === \"fi\" ? Translations_fi.PasswordMustContainLowercaseChar : (culture === \"sv-FI\" ? Translations_sv_FI.PasswordMustContainLowercaseChar : Translations_en_US.PasswordMustContainLowercaseChar);\r\n\t\t\tTranslations.ServiceFeePercent = culture === \"fi\" ? Translations_fi.ServiceFeePercent : (culture === \"sv-FI\" ? Translations_sv_FI.ServiceFeePercent : Translations_en_US.ServiceFeePercent);\r\n\t\t\tTranslations.ImportingUsersParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.ImportingUsersParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.ImportingUsersParameterWasNotSuccessfulErrorParameter : Translations_en_US.ImportingUsersParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.ApprovedEvent = culture === \"fi\" ? Translations_fi.ApprovedEvent : (culture === \"sv-FI\" ? Translations_sv_FI.ApprovedEvent : Translations_en_US.ApprovedEvent);\r\n\t\t\tTranslations.RecordFurtherEducationParameterNotFound = culture === \"fi\" ? Translations_fi.RecordFurtherEducationParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.RecordFurtherEducationParameterNotFound : Translations_en_US.RecordFurtherEducationParameterNotFound);\r\n\t\t\tTranslations.PasswordChangeRequestHasBeenExpired = culture === \"fi\" ? Translations_fi.PasswordChangeRequestHasBeenExpired : (culture === \"sv-FI\" ? Translations_sv_FI.PasswordChangeRequestHasBeenExpired : Translations_en_US.PasswordChangeRequestHasBeenExpired);\r\n\t\t\tTranslations.RecordUserFamiliarizationParameterNotFound = culture === \"fi\" ? Translations_fi.RecordUserFamiliarizationParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.RecordUserFamiliarizationParameterNotFound : Translations_en_US.RecordUserFamiliarizationParameterNotFound);\r\n\t\t\tTranslations.MessageDateMustBeDefined = culture === \"fi\" ? Translations_fi.MessageDateMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.MessageDateMustBeDefined : Translations_en_US.MessageDateMustBeDefined);\r\n\t\t\tTranslations.InUse = culture === \"fi\" ? Translations_fi.InUse : (culture === \"sv-FI\" ? Translations_sv_FI.InUse : Translations_en_US.InUse);\r\n\t\t\tTranslations.CurrentWorkPlace = culture === \"fi\" ? Translations_fi.CurrentWorkPlace : (culture === \"sv-FI\" ? Translations_sv_FI.CurrentWorkPlace : Translations_en_US.CurrentWorkPlace);\r\n\t\t\tTranslations.AllUnits = culture === \"fi\" ? Translations_fi.AllUnits : (culture === \"sv-FI\" ? Translations_sv_FI.AllUnits : Translations_en_US.AllUnits);\r\n\t\t\tTranslations.Remainders = culture === \"fi\" ? Translations_fi.Remainders : (culture === \"sv-FI\" ? Translations_sv_FI.Remainders : Translations_en_US.Remainders);\r\n\t\t\tTranslations.InstantMessageChannelParameterNotFound = culture === \"fi\" ? Translations_fi.InstantMessageChannelParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageChannelParameterNotFound : Translations_en_US.InstantMessageChannelParameterNotFound);\r\n\t\t\tTranslations.Orientation = culture === \"fi\" ? Translations_fi.Orientation : (culture === \"sv-FI\" ? Translations_sv_FI.Orientation : Translations_en_US.Orientation);\r\n\t\t\tTranslations.YouHaveUnapprovedChangesDoYouWantApproveChanges = culture === \"fi\" ? Translations_fi.YouHaveUnapprovedChangesDoYouWantApproveChanges : (culture === \"sv-FI\" ? Translations_sv_FI.YouHaveUnapprovedChangesDoYouWantApproveChanges : Translations_en_US.YouHaveUnapprovedChangesDoYouWantApproveChanges);\r\n\t\t\tTranslations.SavingUserParameterParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingUserParameterParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingUserParameterParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingUserParameterParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.UseInheritedContentFiltering = culture === \"fi\" ? Translations_fi.UseInheritedContentFiltering : (culture === \"sv-FI\" ? Translations_sv_FI.UseInheritedContentFiltering : Translations_en_US.UseInheritedContentFiltering);\r\n\t\t\tTranslations.PreviousCalendarYear = culture === \"fi\" ? Translations_fi.PreviousCalendarYear : (culture === \"sv-FI\" ? Translations_sv_FI.PreviousCalendarYear : Translations_en_US.PreviousCalendarYear);\r\n\t\t\tTranslations.ToggleArchivedFurtherEducations = culture === \"fi\" ? Translations_fi.ToggleArchivedFurtherEducations : (culture === \"sv-FI\" ? Translations_sv_FI.ToggleArchivedFurtherEducations : Translations_en_US.ToggleArchivedFurtherEducations);\r\n\t\t\tTranslations.Intern = culture === \"fi\" ? Translations_fi.Intern : (culture === \"sv-FI\" ? Translations_sv_FI.Intern : Translations_en_US.Intern);\r\n\t\t\tTranslations.DecreasingVersionHistorySizeRemovesCurrentlySavedVersionHistoryRecords = culture === \"fi\" ? Translations_fi.DecreasingVersionHistorySizeRemovesCurrentlySavedVersionHistoryRecords : (culture === \"sv-FI\" ? Translations_sv_FI.DecreasingVersionHistorySizeRemovesCurrentlySavedVersionHistoryRecords : Translations_en_US.DecreasingVersionHistorySizeRemovesCurrentlySavedVersionHistoryRecords);\r\n\t\t\tTranslations.PublishVersionHistorySize = culture === \"fi\" ? Translations_fi.PublishVersionHistorySize : (culture === \"sv-FI\" ? Translations_sv_FI.PublishVersionHistorySize : Translations_en_US.PublishVersionHistorySize);\r\n\t\t\tTranslations.Keyword = culture === \"fi\" ? Translations_fi.Keyword : (culture === \"sv-FI\" ? Translations_sv_FI.Keyword : Translations_en_US.Keyword);\r\n\t\t\tTranslations.DeletingRecordUserEmploymentParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingRecordUserEmploymentParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordUserEmploymentParameterWasSuccessful : Translations_en_US.DeletingRecordUserEmploymentParameterWasSuccessful);\r\n\t\t\tTranslations.RecordFamiliarizationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted = culture === \"fi\" ? Translations_fi.RecordFamiliarizationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.RecordFamiliarizationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted : Translations_en_US.RecordFamiliarizationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted);\r\n\t\t\tTranslations.InstantMessageUserInvitationAcceptTypeCannotInvite = culture === \"fi\" ? Translations_fi.InstantMessageUserInvitationAcceptTypeCannotInvite : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageUserInvitationAcceptTypeCannotInvite : Translations_en_US.InstantMessageUserInvitationAcceptTypeCannotInvite);\r\n\t\t\tTranslations.SelectUrgencyClass = culture === \"fi\" ? Translations_fi.SelectUrgencyClass : (culture === \"sv-FI\" ? Translations_sv_FI.SelectUrgencyClass : Translations_en_US.SelectUrgencyClass);\r\n\t\t\tTranslations.Restore = culture === \"fi\" ? Translations_fi.Restore : (culture === \"sv-FI\" ? Translations_sv_FI.Restore : Translations_en_US.Restore);\r\n\t\t\tTranslations.MaximumTotalSizeOfAttachmentsIsParameterMB = culture === \"fi\" ? Translations_fi.MaximumTotalSizeOfAttachmentsIsParameterMB : (culture === \"sv-FI\" ? Translations_sv_FI.MaximumTotalSizeOfAttachmentsIsParameterMB : Translations_en_US.MaximumTotalSizeOfAttachmentsIsParameterMB);\r\n\t\t\tTranslations.ResolutionDescription = culture === \"fi\" ? Translations_fi.ResolutionDescription : (culture === \"sv-FI\" ? Translations_sv_FI.ResolutionDescription : Translations_en_US.ResolutionDescription);\r\n\t\t\tTranslations.EmptyTaskTrashBinConfirmation = culture === \"fi\" ? Translations_fi.EmptyTaskTrashBinConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.EmptyTaskTrashBinConfirmation : Translations_en_US.EmptyTaskTrashBinConfirmation);\r\n\t\t\tTranslations.DeletingDocumentTemplatesParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingDocumentTemplatesParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingDocumentTemplatesParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingDocumentTemplatesParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.LanguageNonLocalFinnish = culture === \"fi\" ? Translations_fi.LanguageNonLocalFinnish : (culture === \"sv-FI\" ? Translations_sv_FI.LanguageNonLocalFinnish : Translations_en_US.LanguageNonLocalFinnish);\r\n\t\t\tTranslations.VersionHistory = culture === \"fi\" ? Translations_fi.VersionHistory : (culture === \"sv-FI\" ? Translations_sv_FI.VersionHistory : Translations_en_US.VersionHistory);\r\n\t\t\tTranslations.Min = culture === \"fi\" ? Translations_fi.Min : (culture === \"sv-FI\" ? Translations_sv_FI.Min : Translations_en_US.Min);\r\n\t\t\tTranslations.EditEventTypeC = culture === \"fi\" ? Translations_fi.EditEventTypeC : (culture === \"sv-FI\" ? Translations_sv_FI.EditEventTypeC : Translations_en_US.EditEventTypeC);\r\n\t\t\tTranslations.Choose = culture === \"fi\" ? Translations_fi.Choose : (culture === \"sv-FI\" ? Translations_sv_FI.Choose : Translations_en_US.Choose);\r\n\t\t\tTranslations.QualificationIsValid = culture === \"fi\" ? Translations_fi.QualificationIsValid : (culture === \"sv-FI\" ? Translations_sv_FI.QualificationIsValid : Translations_en_US.QualificationIsValid);\r\n\t\t\tTranslations.ChangingPasswordWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.ChangingPasswordWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.ChangingPasswordWasNotSuccessfulConcurrencyError : Translations_en_US.ChangingPasswordWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.DeletingEventUrgencyClassesParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingEventUrgencyClassesParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingEventUrgencyClassesParameterWasSuccessful : Translations_en_US.DeletingEventUrgencyClassesParameterWasSuccessful);\r\n\t\t\tTranslations.RecordUserExcelSalary = culture === \"fi\" ? Translations_fi.RecordUserExcelSalary : (culture === \"sv-FI\" ? Translations_sv_FI.RecordUserExcelSalary : Translations_en_US.RecordUserExcelSalary);\r\n\t\t\tTranslations.Event = culture === \"fi\" ? Translations_fi.Event : (culture === \"sv-FI\" ? Translations_sv_FI.Event : Translations_en_US.Event);\r\n\t\t\tTranslations.RestoreTaskFromTrashBin = culture === \"fi\" ? Translations_fi.RestoreTaskFromTrashBin : (culture === \"sv-FI\" ? Translations_sv_FI.RestoreTaskFromTrashBin : Translations_en_US.RestoreTaskFromTrashBin);\r\n\t\t\tTranslations.RemovingEventHandlersWasSuccessful = culture === \"fi\" ? Translations_fi.RemovingEventHandlersWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.RemovingEventHandlersWasSuccessful : Translations_en_US.RemovingEventHandlersWasSuccessful);\r\n\t\t\tTranslations.Anonymity = culture === \"fi\" ? Translations_fi.Anonymity : (culture === \"sv-FI\" ? Translations_sv_FI.Anonymity : Translations_en_US.Anonymity);\r\n\t\t\tTranslations.FormFalse = culture === \"fi\" ? Translations_fi.FormFalse : (culture === \"sv-FI\" ? Translations_sv_FI.FormFalse : Translations_en_US.FormFalse);\r\n\t\t\tTranslations.SearchCondition = culture === \"fi\" ? Translations_fi.SearchCondition : (culture === \"sv-FI\" ? Translations_sv_FI.SearchCondition : Translations_en_US.SearchCondition);\r\n\t\t\tTranslations.Category = culture === \"fi\" ? Translations_fi.Category : (culture === \"sv-FI\" ? Translations_sv_FI.Category : Translations_en_US.Category);\r\n\t\t\tTranslations.DeletingEventParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingEventParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingEventParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingEventParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.SharedFilter = culture === \"fi\" ? Translations_fi.SharedFilter : (culture === \"sv-FI\" ? Translations_sv_FI.SharedFilter : Translations_en_US.SharedFilter);\r\n\t\t\tTranslations.AddRemainder = culture === \"fi\" ? Translations_fi.AddRemainder : (culture === \"sv-FI\" ? Translations_sv_FI.AddRemainder : Translations_en_US.AddRemainder);\r\n\t\t\tTranslations.TrashBin = culture === \"fi\" ? Translations_fi.TrashBin : (culture === \"sv-FI\" ? Translations_sv_FI.TrashBin : Translations_en_US.TrashBin);\r\n\t\t\tTranslations.SelectCategory = culture === \"fi\" ? Translations_fi.SelectCategory : (culture === \"sv-FI\" ? Translations_sv_FI.SelectCategory : Translations_en_US.SelectCategory);\r\n\t\t\tTranslations.UsedInParameterTasks = culture === \"fi\" ? Translations_fi.UsedInParameterTasks : (culture === \"sv-FI\" ? Translations_sv_FI.UsedInParameterTasks : Translations_en_US.UsedInParameterTasks);\r\n\t\t\tTranslations.WhistleBlowSeverityNormal = culture === \"fi\" ? Translations_fi.WhistleBlowSeverityNormal : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowSeverityNormal : Translations_en_US.WhistleBlowSeverityNormal);\r\n\t\t\tTranslations.SearchEvents = culture === \"fi\" ? Translations_fi.SearchEvents : (culture === \"sv-FI\" ? Translations_sv_FI.SearchEvents : Translations_en_US.SearchEvents);\r\n\t\t\tTranslations.ClosedEvent = culture === \"fi\" ? Translations_fi.ClosedEvent : (culture === \"sv-FI\" ? Translations_sv_FI.ClosedEvent : Translations_en_US.ClosedEvent);\r\n\t\t\tTranslations.NoCalendarTasksToShow = culture === \"fi\" ? Translations_fi.NoCalendarTasksToShow : (culture === \"sv-FI\" ? Translations_sv_FI.NoCalendarTasksToShow : Translations_en_US.NoCalendarTasksToShow);\r\n\t\t\tTranslations.PreviewPrint = culture === \"fi\" ? Translations_fi.PreviewPrint : (culture === \"sv-FI\" ? Translations_sv_FI.PreviewPrint : Translations_en_US.PreviewPrint);\r\n\t\t\tTranslations.SavingEventTypesWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingEventTypesWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventTypesWasNotSuccessfulErrorParameter : Translations_en_US.SavingEventTypesWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.WhistleBlowArchivingTypeChangeState = culture === \"fi\" ? Translations_fi.WhistleBlowArchivingTypeChangeState : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowArchivingTypeChangeState : Translations_en_US.WhistleBlowArchivingTypeChangeState);\r\n\t\t\tTranslations.AddCompanyGroups = culture === \"fi\" ? Translations_fi.AddCompanyGroups : (culture === \"sv-FI\" ? Translations_sv_FI.AddCompanyGroups : Translations_en_US.AddCompanyGroups);\r\n\t\t\tTranslations.FolderName = culture === \"fi\" ? Translations_fi.FolderName : (culture === \"sv-FI\" ? Translations_sv_FI.FolderName : Translations_en_US.FolderName);\r\n\t\t\tTranslations.DeletingCalendarTaskCategoryParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingCalendarTaskCategoryParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingCalendarTaskCategoryParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingCalendarTaskCategoryParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.DeletingTaskTypeParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingTaskTypeParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingTaskTypeParameterWasSuccessful : Translations_en_US.DeletingTaskTypeParameterWasSuccessful);\r\n\t\t\tTranslations.InstantMessageChannelInternal = culture === \"fi\" ? Translations_fi.InstantMessageChannelInternal : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageChannelInternal : Translations_en_US.InstantMessageChannelInternal);\r\n\t\t\tTranslations.AdministratorUserCodeMustBeDefined = culture === \"fi\" ? Translations_fi.AdministratorUserCodeMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.AdministratorUserCodeMustBeDefined : Translations_en_US.AdministratorUserCodeMustBeDefined);\r\n\t\t\tTranslations.CreatingCompressedFileWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.CreatingCompressedFileWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.CreatingCompressedFileWasNotSuccessfulErrorParameter : Translations_en_US.CreatingCompressedFileWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.DoYouReallyWantToRemoveSharedDocumentTemplateParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveSharedDocumentTemplateParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveSharedDocumentTemplateParameter : Translations_en_US.DoYouReallyWantToRemoveSharedDocumentTemplateParameter);\r\n\t\t\tTranslations.DeletingUserParametersWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingUserParametersWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingUserParametersWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingUserParametersWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.DeletingAttachmentParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingAttachmentParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingAttachmentParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingAttachmentParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.DeletingDocumentTemplatesParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingDocumentTemplatesParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingDocumentTemplatesParameterWasSuccessful : Translations_en_US.DeletingDocumentTemplatesParameterWasSuccessful);\r\n\t\t\tTranslations.PanelName = culture === \"fi\" ? Translations_fi.PanelName : (culture === \"sv-FI\" ? Translations_sv_FI.PanelName : Translations_en_US.PanelName);\r\n\t\t\tTranslations.UserCodeParameterMustBeValid = culture === \"fi\" ? Translations_fi.UserCodeParameterMustBeValid : (culture === \"sv-FI\" ? Translations_sv_FI.UserCodeParameterMustBeValid : Translations_en_US.UserCodeParameterMustBeValid);\r\n\t\t\tTranslations.RemovePartner = culture === \"fi\" ? Translations_fi.RemovePartner : (culture === \"sv-FI\" ? Translations_sv_FI.RemovePartner : Translations_en_US.RemovePartner);\r\n\t\t\tTranslations.SourceDescription = culture === \"fi\" ? Translations_fi.SourceDescription : (culture === \"sv-FI\" ? Translations_sv_FI.SourceDescription : Translations_en_US.SourceDescription);\r\n\t\t\tTranslations.CopyingFileParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.CopyingFileParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.CopyingFileParameterWasNotSuccessfulErrorParameter : Translations_en_US.CopyingFileParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.Other = culture === \"fi\" ? Translations_fi.Other : (culture === \"sv-FI\" ? Translations_sv_FI.Other : Translations_en_US.Other);\r\n\t\t\tTranslations.DeletingPartnerParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingPartnerParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingPartnerParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingPartnerParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.FormulaDateAndTimeDiffInTimeSpan = culture === \"fi\" ? Translations_fi.FormulaDateAndTimeDiffInTimeSpan : (culture === \"sv-FI\" ? Translations_sv_FI.FormulaDateAndTimeDiffInTimeSpan : Translations_en_US.FormulaDateAndTimeDiffInTimeSpan);\r\n\t\t\tTranslations.AccessRightWriteRecords = culture === \"fi\" ? Translations_fi.AccessRightWriteRecords : (culture === \"sv-FI\" ? Translations_sv_FI.AccessRightWriteRecords : Translations_en_US.AccessRightWriteRecords);\r\n\t\t\tTranslations.AdditionalPermissionARecords = culture === \"fi\" ? Translations_fi.AdditionalPermissionARecords : (culture === \"sv-FI\" ? Translations_sv_FI.AdditionalPermissionARecords : Translations_en_US.AdditionalPermissionARecords);\r\n\t\t\tTranslations.SavingTaskDataRowWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingTaskDataRowWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingTaskDataRowWasNotSuccessfulConcurrencyError : Translations_en_US.SavingTaskDataRowWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.UserName = culture === \"fi\" ? Translations_fi.UserName : (culture === \"sv-FI\" ? Translations_sv_FI.UserName : Translations_en_US.UserName);\r\n\t\t\tTranslations.ReadingFileParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.ReadingFileParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.ReadingFileParameterWasNotSuccessfulErrorParameter : Translations_en_US.ReadingFileParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.DeletingCalendarTaskParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingCalendarTaskParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingCalendarTaskParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingCalendarTaskParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.Approval = culture === \"fi\" ? Translations_fi.Approval : (culture === \"sv-FI\" ? Translations_sv_FI.Approval : Translations_en_US.Approval);\r\n\t\t\tTranslations.ExternalIntraSystemUserTokenMustBeDefined = culture === \"fi\" ? Translations_fi.ExternalIntraSystemUserTokenMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.ExternalIntraSystemUserTokenMustBeDefined : Translations_en_US.ExternalIntraSystemUserTokenMustBeDefined);\r\n\t\t\tTranslations.Repeated = culture === \"fi\" ? Translations_fi.Repeated : (culture === \"sv-FI\" ? Translations_sv_FI.Repeated : Translations_en_US.Repeated);\r\n\t\t\tTranslations.WhistleBlowChannelMustHaveAtLeastOneAdministrator = culture === \"fi\" ? Translations_fi.WhistleBlowChannelMustHaveAtLeastOneAdministrator : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowChannelMustHaveAtLeastOneAdministrator : Translations_en_US.WhistleBlowChannelMustHaveAtLeastOneAdministrator);\r\n\t\t\tTranslations.Internet = culture === \"fi\" ? Translations_fi.Internet : (culture === \"sv-FI\" ? Translations_sv_FI.Internet : Translations_en_US.Internet);\r\n\t\t\tTranslations.AgencyWorker = culture === \"fi\" ? Translations_fi.AgencyWorker : (culture === \"sv-FI\" ? Translations_sv_FI.AgencyWorker : Translations_en_US.AgencyWorker);\r\n\t\t\tTranslations.Remove = culture === \"fi\" ? Translations_fi.Remove : (culture === \"sv-FI\" ? Translations_sv_FI.Remove : Translations_en_US.Remove);\r\n\t\t\tTranslations.EmailSendDate = culture === \"fi\" ? Translations_fi.EmailSendDate : (culture === \"sv-FI\" ? Translations_sv_FI.EmailSendDate : Translations_en_US.EmailSendDate);\r\n\t\t\tTranslations.IpAddress = culture === \"fi\" ? Translations_fi.IpAddress : (culture === \"sv-FI\" ? Translations_sv_FI.IpAddress : Translations_en_US.IpAddress);\r\n\t\t\tTranslations.DeletingCompanyGroupsParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingCompanyGroupsParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingCompanyGroupsParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingCompanyGroupsParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.Text = culture === \"fi\" ? Translations_fi.Text : (culture === \"sv-FI\" ? Translations_sv_FI.Text : Translations_en_US.Text);\r\n\t\t\tTranslations.RecordBasicEducationCodeIsAlreadyInUse = culture === \"fi\" ? Translations_fi.RecordBasicEducationCodeIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.RecordBasicEducationCodeIsAlreadyInUse : Translations_en_US.RecordBasicEducationCodeIsAlreadyInUse);\r\n\t\t\tTranslations.InstantMessageChannelGroupExternal = culture === \"fi\" ? Translations_fi.InstantMessageChannelGroupExternal : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageChannelGroupExternal : Translations_en_US.InstantMessageChannelGroupExternal);\r\n\t\t\tTranslations.Yearly = culture === \"fi\" ? Translations_fi.Yearly : (culture === \"sv-FI\" ? Translations_sv_FI.Yearly : Translations_en_US.Yearly);\r\n\t\t\tTranslations.AddForm = culture === \"fi\" ? Translations_fi.AddForm : (culture === \"sv-FI\" ? Translations_sv_FI.AddForm : Translations_en_US.AddForm);\r\n\t\t\tTranslations.Test = culture === \"fi\" ? Translations_fi.Test : (culture === \"sv-FI\" ? Translations_sv_FI.Test : Translations_en_US.Test);\r\n\t\t\tTranslations.DeletingEventPartnerParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingEventPartnerParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingEventPartnerParameterWasSuccessful : Translations_en_US.DeletingEventPartnerParameterWasSuccessful);\r\n\t\t\tTranslations.CompanyNumber = culture === \"fi\" ? Translations_fi.CompanyNumber : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyNumber : Translations_en_US.CompanyNumber);\r\n\t\t\tTranslations.CalendarTaskParameterNotFound = culture === \"fi\" ? Translations_fi.CalendarTaskParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskParameterNotFound : Translations_en_US.CalendarTaskParameterNotFound);\r\n\t\t\tTranslations.FormSizeExtraLarge = culture === \"fi\" ? Translations_fi.FormSizeExtraLarge : (culture === \"sv-FI\" ? Translations_sv_FI.FormSizeExtraLarge : Translations_en_US.FormSizeExtraLarge);\r\n\t\t\tTranslations.PublishVersion = culture === \"fi\" ? Translations_fi.PublishVersion : (culture === \"sv-FI\" ? Translations_sv_FI.PublishVersion : Translations_en_US.PublishVersion);\r\n\t\t\tTranslations.UserCanBeSelectedAsEventHandler = culture === \"fi\" ? Translations_fi.UserCanBeSelectedAsEventHandler : (culture === \"sv-FI\" ? Translations_sv_FI.UserCanBeSelectedAsEventHandler : Translations_en_US.UserCanBeSelectedAsEventHandler);\r\n\t\t\tTranslations.RemoveTaskHandler = culture === \"fi\" ? Translations_fi.RemoveTaskHandler : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveTaskHandler : Translations_en_US.RemoveTaskHandler);\r\n\t\t\tTranslations.ClearSubUnitDefaultHandlersAndNotifiedPersons = culture === \"fi\" ? Translations_fi.ClearSubUnitDefaultHandlersAndNotifiedPersons : (culture === \"sv-FI\" ? Translations_sv_FI.ClearSubUnitDefaultHandlersAndNotifiedPersons : Translations_en_US.ClearSubUnitDefaultHandlersAndNotifiedPersons);\r\n\t\t\tTranslations.DoYouReallyWantToRemoveSelectedForms = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveSelectedForms : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveSelectedForms : Translations_en_US.DoYouReallyWantToRemoveSelectedForms);\r\n\t\t\tTranslations.SavingWhistleBlowCategoryParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingWhistleBlowCategoryParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingWhistleBlowCategoryParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingWhistleBlowCategoryParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.SavingTaskStateParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingTaskStateParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingTaskStateParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingTaskStateParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.FileParameterNotFound = culture === \"fi\" ? Translations_fi.FileParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.FileParameterNotFound : Translations_en_US.FileParameterNotFound);\r\n\t\t\tTranslations.ByName = culture === \"fi\" ? Translations_fi.ByName : (culture === \"sv-FI\" ? Translations_sv_FI.ByName : Translations_en_US.ByName);\r\n\t\t\tTranslations.PrintTask = culture === \"fi\" ? Translations_fi.PrintTask : (culture === \"sv-FI\" ? Translations_sv_FI.PrintTask : Translations_en_US.PrintTask);\r\n\t\t\tTranslations.AddPartnerCompanies = culture === \"fi\" ? Translations_fi.AddPartnerCompanies : (culture === \"sv-FI\" ? Translations_sv_FI.AddPartnerCompanies : Translations_en_US.AddPartnerCompanies);\r\n\t\t\tTranslations.AddUser = culture === \"fi\" ? Translations_fi.AddUser : (culture === \"sv-FI\" ? Translations_sv_FI.AddUser : Translations_en_US.AddUser);\r\n\t\t\tTranslations.DeletingUsersParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingUsersParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingUsersParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingUsersParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.GeneralInfo = culture === \"fi\" ? Translations_fi.GeneralInfo : (culture === \"sv-FI\" ? Translations_sv_FI.GeneralInfo : Translations_en_US.GeneralInfo);\r\n\t\t\tTranslations.Published = culture === \"fi\" ? Translations_fi.Published : (culture === \"sv-FI\" ? Translations_sv_FI.Published : Translations_en_US.Published);\r\n\t\t\tTranslations.CurrentTopics = culture === \"fi\" ? Translations_fi.CurrentTopics : (culture === \"sv-FI\" ? Translations_sv_FI.CurrentTopics : Translations_en_US.CurrentTopics);\r\n\t\t\tTranslations.SaveFilter = culture === \"fi\" ? Translations_fi.SaveFilter : (culture === \"sv-FI\" ? Translations_sv_FI.SaveFilter : Translations_en_US.SaveFilter);\r\n\t\t\tTranslations.AddPayer = culture === \"fi\" ? Translations_fi.AddPayer : (culture === \"sv-FI\" ? Translations_sv_FI.AddPayer : Translations_en_US.AddPayer);\r\n\t\t\tTranslations.SavePasswordAndMoveToLoginPage = culture === \"fi\" ? Translations_fi.SavePasswordAndMoveToLoginPage : (culture === \"sv-FI\" ? Translations_sv_FI.SavePasswordAndMoveToLoginPage : Translations_en_US.SavePasswordAndMoveToLoginPage);\r\n\t\t\tTranslations.SaveAsFavorite = culture === \"fi\" ? Translations_fi.SaveAsFavorite : (culture === \"sv-FI\" ? Translations_sv_FI.SaveAsFavorite : Translations_en_US.SaveAsFavorite);\r\n\t\t\tTranslations.DraftCannotBeApproved = culture === \"fi\" ? Translations_fi.DraftCannotBeApproved : (culture === \"sv-FI\" ? Translations_sv_FI.DraftCannotBeApproved : Translations_en_US.DraftCannotBeApproved);\r\n\t\t\tTranslations.WhistleBlowSeverityVeryLow = culture === \"fi\" ? Translations_fi.WhistleBlowSeverityVeryLow : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowSeverityVeryLow : Translations_en_US.WhistleBlowSeverityVeryLow);\r\n\t\t\tTranslations.DownloadAttachment = culture === \"fi\" ? Translations_fi.DownloadAttachment : (culture === \"sv-FI\" ? Translations_sv_FI.DownloadAttachment : Translations_en_US.DownloadAttachment);\r\n\t\t\tTranslations.InstantMessageChannelGroupInternal = culture === \"fi\" ? Translations_fi.InstantMessageChannelGroupInternal : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageChannelGroupInternal : Translations_en_US.InstantMessageChannelGroupInternal);\r\n\t\t\tTranslations.Publisher = culture === \"fi\" ? Translations_fi.Publisher : (culture === \"sv-FI\" ? Translations_sv_FI.Publisher : Translations_en_US.Publisher);\r\n\t\t\tTranslations.Courses = culture === \"fi\" ? Translations_fi.Courses : (culture === \"sv-FI\" ? Translations_sv_FI.Courses : Translations_en_US.Courses);\r\n\t\t\tTranslations.AuthorizationLevelSuperUser = culture === \"fi\" ? Translations_fi.AuthorizationLevelSuperUser : (culture === \"sv-FI\" ? Translations_sv_FI.AuthorizationLevelSuperUser : Translations_en_US.AuthorizationLevelSuperUser);\r\n\t\t\tTranslations.WageGroup = culture === \"fi\" ? Translations_fi.WageGroup : (culture === \"sv-FI\" ? Translations_sv_FI.WageGroup : Translations_en_US.WageGroup);\r\n\t\t\tTranslations.RemoveCompany = culture === \"fi\" ? Translations_fi.RemoveCompany : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveCompany : Translations_en_US.RemoveCompany);\r\n\t\t\tTranslations.OnlyImageAndPdfAttachmentsAreAllowedInvalidAttachmentParamater = culture === \"fi\" ? Translations_fi.OnlyImageAndPdfAttachmentsAreAllowedInvalidAttachmentParamater : (culture === \"sv-FI\" ? Translations_sv_FI.OnlyImageAndPdfAttachmentsAreAllowedInvalidAttachmentParamater : Translations_en_US.OnlyImageAndPdfAttachmentsAreAllowedInvalidAttachmentParamater);\r\n\t\t\tTranslations.SavingInstantMessageChannelUserWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingInstantMessageChannelUserWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingInstantMessageChannelUserWasNotSuccessfulConcurrencyError : Translations_en_US.SavingInstantMessageChannelUserWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.AddEventTypesToEvent = culture === \"fi\" ? Translations_fi.AddEventTypesToEvent : (culture === \"sv-FI\" ? Translations_sv_FI.AddEventTypesToEvent : Translations_en_US.AddEventTypesToEvent);\r\n\t\t\tTranslations.UserRecordStatisticsExpiringInSixMonthsFamiliarizations = culture === \"fi\" ? Translations_fi.UserRecordStatisticsExpiringInSixMonthsFamiliarizations : (culture === \"sv-FI\" ? Translations_sv_FI.UserRecordStatisticsExpiringInSixMonthsFamiliarizations : Translations_en_US.UserRecordStatisticsExpiringInSixMonthsFamiliarizations);\r\n\t\t\tTranslations.FileChangesCheckingAndEmailingStarted = culture === \"fi\" ? Translations_fi.FileChangesCheckingAndEmailingStarted : (culture === \"sv-FI\" ? Translations_sv_FI.FileChangesCheckingAndEmailingStarted : Translations_en_US.FileChangesCheckingAndEmailingStarted);\r\n\t\t\tTranslations.DeletingWhistleBlowChannelAdminParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingWhistleBlowChannelAdminParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingWhistleBlowChannelAdminParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingWhistleBlowChannelAdminParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.DocumentPublished = culture === \"fi\" ? Translations_fi.DocumentPublished : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentPublished : Translations_en_US.DocumentPublished);\r\n\t\t\tTranslations.Unread = culture === \"fi\" ? Translations_fi.Unread : (culture === \"sv-FI\" ? Translations_sv_FI.Unread : Translations_en_US.Unread);\r\n\t\t\tTranslations.ImportUserDialogInstruction = culture === \"fi\" ? Translations_fi.ImportUserDialogInstruction : (culture === \"sv-FI\" ? Translations_sv_FI.ImportUserDialogInstruction : Translations_en_US.ImportUserDialogInstruction);\r\n\t\t\tTranslations.AddingEventHandlerWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.AddingEventHandlerWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.AddingEventHandlerWasNotSuccessfulErrorParameter : Translations_en_US.AddingEventHandlerWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.DoYouReallyWantToCreateRemainderInPast = culture === \"fi\" ? Translations_fi.DoYouReallyWantToCreateRemainderInPast : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToCreateRemainderInPast : Translations_en_US.DoYouReallyWantToCreateRemainderInPast);\r\n\t\t\tTranslations.PasswordMustContainDigitOrSpecialCharacter = culture === \"fi\" ? Translations_fi.PasswordMustContainDigitOrSpecialCharacter : (culture === \"sv-FI\" ? Translations_sv_FI.PasswordMustContainDigitOrSpecialCharacter : Translations_en_US.PasswordMustContainDigitOrSpecialCharacter);\r\n\t\t\tTranslations.Today = culture === \"fi\" ? Translations_fi.Today : (culture === \"sv-FI\" ? Translations_sv_FI.Today : Translations_en_US.Today);\r\n\t\t\tTranslations.SavingWhistleBlowChannelParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingWhistleBlowChannelParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingWhistleBlowChannelParameterWasSuccessful : Translations_en_US.SavingWhistleBlowChannelParameterWasSuccessful);\r\n\t\t\tTranslations.DocumentModulePropertiesSaveWasSuccessful = culture === \"fi\" ? Translations_fi.DocumentModulePropertiesSaveWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentModulePropertiesSaveWasSuccessful : Translations_en_US.DocumentModulePropertiesSaveWasSuccessful);\r\n\t\t\tTranslations.TasksFound = culture === \"fi\" ? Translations_fi.TasksFound : (culture === \"sv-FI\" ? Translations_sv_FI.TasksFound : Translations_en_US.TasksFound);\r\n\t\t\tTranslations.UserReports = culture === \"fi\" ? Translations_fi.UserReports : (culture === \"sv-FI\" ? Translations_sv_FI.UserReports : Translations_en_US.UserReports);\r\n\t\t\tTranslations.EditableDocumentApproveConfirmation = culture === \"fi\" ? Translations_fi.EditableDocumentApproveConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.EditableDocumentApproveConfirmation : Translations_en_US.EditableDocumentApproveConfirmation);\r\n\t\t\tTranslations.ChartProperties = culture === \"fi\" ? Translations_fi.ChartProperties : (culture === \"sv-FI\" ? Translations_sv_FI.ChartProperties : Translations_en_US.ChartProperties);\r\n\t\t\tTranslations.DeletingUserGroupsParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingUserGroupsParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingUserGroupsParameterWasSuccessful : Translations_en_US.DeletingUserGroupsParameterWasSuccessful);\r\n\t\t\tTranslations.CalendarTaskEditSeries = culture === \"fi\" ? Translations_fi.CalendarTaskEditSeries : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskEditSeries : Translations_en_US.CalendarTaskEditSeries);\r\n\t\t\tTranslations.ExpiresInYear = culture === \"fi\" ? Translations_fi.ExpiresInYear : (culture === \"sv-FI\" ? Translations_sv_FI.ExpiresInYear : Translations_en_US.ExpiresInYear);\r\n\t\t\tTranslations.Week = culture === \"fi\" ? Translations_fi.Week : (culture === \"sv-FI\" ? Translations_sv_FI.Week : Translations_en_US.Week);\r\n\t\t\tTranslations.MaximumSizeOfFilesThatCanBeAddedInBatchIsParameterMB = culture === \"fi\" ? Translations_fi.MaximumSizeOfFilesThatCanBeAddedInBatchIsParameterMB : (culture === \"sv-FI\" ? Translations_sv_FI.MaximumSizeOfFilesThatCanBeAddedInBatchIsParameterMB : Translations_en_US.MaximumSizeOfFilesThatCanBeAddedInBatchIsParameterMB);\r\n\t\t\tTranslations.Instructions = culture === \"fi\" ? Translations_fi.Instructions : (culture === \"sv-FI\" ? Translations_sv_FI.Instructions : Translations_en_US.Instructions);\r\n\t\t\tTranslations.ArchivingRecordUserFamiliarizationsWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.ArchivingRecordUserFamiliarizationsWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.ArchivingRecordUserFamiliarizationsWasNotSuccessfulErrorParameter : Translations_en_US.ArchivingRecordUserFamiliarizationsWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.SavingEventPartnerParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingEventPartnerParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventPartnerParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingEventPartnerParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.EInvoiceAddress = culture === \"fi\" ? Translations_fi.EInvoiceAddress : (culture === \"sv-FI\" ? Translations_sv_FI.EInvoiceAddress : Translations_en_US.EInvoiceAddress);\r\n\t\t\tTranslations.SavingApplicationPermissionsWasSuccessful = culture === \"fi\" ? Translations_fi.SavingApplicationPermissionsWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingApplicationPermissionsWasSuccessful : Translations_en_US.SavingApplicationPermissionsWasSuccessful);\r\n\t\t\tTranslations.ExitingInstantMessageChannelWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.ExitingInstantMessageChannelWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.ExitingInstantMessageChannelWasNotSuccessfulConcurrencyError : Translations_en_US.ExitingInstantMessageChannelWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.Search = culture === \"fi\" ? Translations_fi.Search : (culture === \"sv-FI\" ? Translations_sv_FI.Search : Translations_en_US.Search);\r\n\t\t\tTranslations.SavingOneTimePasswordParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingOneTimePasswordParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingOneTimePasswordParameterWasSuccessful : Translations_en_US.SavingOneTimePasswordParameterWasSuccessful);\r\n\t\t\tTranslations.DeletingRecordFurtherEducationsParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingRecordFurtherEducationsParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordFurtherEducationsParameterWasSuccessful : Translations_en_US.DeletingRecordFurtherEducationsParameterWasSuccessful);\r\n\t\t\tTranslations.FormDropdownOption = culture === \"fi\" ? Translations_fi.FormDropdownOption : (culture === \"sv-FI\" ? Translations_sv_FI.FormDropdownOption : Translations_en_US.FormDropdownOption);\r\n\t\t\tTranslations.DoYouReallyWantToRemoveTaskStateParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveTaskStateParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveTaskStateParameter : Translations_en_US.DoYouReallyWantToRemoveTaskStateParameter);\r\n\t\t\tTranslations.CalendarTaskHandlerFilter = culture === \"fi\" ? Translations_fi.CalendarTaskHandlerFilter : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskHandlerFilter : Translations_en_US.CalendarTaskHandlerFilter);\r\n\t\t\tTranslations.EventApprovalWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.EventApprovalWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.EventApprovalWasNotSuccessfulConcurrencyError : Translations_en_US.EventApprovalWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.AddWhistleBlowChannelAdminsParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.AddWhistleBlowChannelAdminsParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.AddWhistleBlowChannelAdminsParameterWasNotSuccessfulErrorParameter : Translations_en_US.AddWhistleBlowChannelAdminsParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.AddCompaniesParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.AddCompaniesParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.AddCompaniesParameterWasNotSuccessfulConcurrencyError : Translations_en_US.AddCompaniesParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.UserIsSystemAdminClaimNotFound = culture === \"fi\" ? Translations_fi.UserIsSystemAdminClaimNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.UserIsSystemAdminClaimNotFound : Translations_en_US.UserIsSystemAdminClaimNotFound);\r\n\t\t\tTranslations.WhistleBlowAnonymousReportInfo = culture === \"fi\" ? Translations_fi.WhistleBlowAnonymousReportInfo : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowAnonymousReportInfo : Translations_en_US.WhistleBlowAnonymousReportInfo);\r\n\t\t\tTranslations.DeletingWhistleBlowCategoriesParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingWhistleBlowCategoriesParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingWhistleBlowCategoriesParameterWasSuccessful : Translations_en_US.DeletingWhistleBlowCategoriesParameterWasSuccessful);\r\n\t\t\tTranslations.MaximumSizeOfAttachmentThatCanBeAddedInBatchIsParameterMB = culture === \"fi\" ? Translations_fi.MaximumSizeOfAttachmentThatCanBeAddedInBatchIsParameterMB : (culture === \"sv-FI\" ? Translations_sv_FI.MaximumSizeOfAttachmentThatCanBeAddedInBatchIsParameterMB : Translations_en_US.MaximumSizeOfAttachmentThatCanBeAddedInBatchIsParameterMB);\r\n\t\t\tTranslations.SavingUserGroupParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingUserGroupParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingUserGroupParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingUserGroupParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.EmployeeType = culture === \"fi\" ? Translations_fi.EmployeeType : (culture === \"sv-FI\" ? Translations_sv_FI.EmployeeType : Translations_en_US.EmployeeType);\r\n\t\t\tTranslations.EventTypeC = culture === \"fi\" ? Translations_fi.EventTypeC : (culture === \"sv-FI\" ? Translations_sv_FI.EventTypeC : Translations_en_US.EventTypeC);\r\n\t\t\tTranslations.EventTypeBCodeIsAlreadyInUse = culture === \"fi\" ? Translations_fi.EventTypeBCodeIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.EventTypeBCodeIsAlreadyInUse : Translations_en_US.EventTypeBCodeIsAlreadyInUse);\r\n\t\t\tTranslations.TimeSpanQuarter = culture === \"fi\" ? Translations_fi.TimeSpanQuarter : (culture === \"sv-FI\" ? Translations_sv_FI.TimeSpanQuarter : Translations_en_US.TimeSpanQuarter);\r\n\t\t\tTranslations.OpenWhistleBlow = culture === \"fi\" ? Translations_fi.OpenWhistleBlow : (culture === \"sv-FI\" ? Translations_sv_FI.OpenWhistleBlow : Translations_en_US.OpenWhistleBlow);\r\n\t\t\tTranslations.DeletingDirectoryItemDocumentParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingDirectoryItemDocumentParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingDirectoryItemDocumentParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingDirectoryItemDocumentParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.UseObserverAction = culture === \"fi\" ? Translations_fi.UseObserverAction : (culture === \"sv-FI\" ? Translations_sv_FI.UseObserverAction : Translations_en_US.UseObserverAction);\r\n\t\t\tTranslations.LogisticVoucherCustomers = culture === \"fi\" ? Translations_fi.LogisticVoucherCustomers : (culture === \"sv-FI\" ? Translations_sv_FI.LogisticVoucherCustomers : Translations_en_US.LogisticVoucherCustomers);\r\n\t\t\tTranslations.PermissionToCreateEventsToPartners = culture === \"fi\" ? Translations_fi.PermissionToCreateEventsToPartners : (culture === \"sv-FI\" ? Translations_sv_FI.PermissionToCreateEventsToPartners : Translations_en_US.PermissionToCreateEventsToPartners);\r\n\t\t\tTranslations.AmountOfComments = culture === \"fi\" ? Translations_fi.AmountOfComments : (culture === \"sv-FI\" ? Translations_sv_FI.AmountOfComments : Translations_en_US.AmountOfComments);\r\n\t\t\tTranslations.DeletingOptionParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingOptionParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingOptionParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingOptionParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.NewCompanyMustBeSavedBeforeCompanyGroupsCanBeAdded = culture === \"fi\" ? Translations_fi.NewCompanyMustBeSavedBeforeCompanyGroupsCanBeAdded : (culture === \"sv-FI\" ? Translations_sv_FI.NewCompanyMustBeSavedBeforeCompanyGroupsCanBeAdded : Translations_en_US.NewCompanyMustBeSavedBeforeCompanyGroupsCanBeAdded);\r\n\t\t\tTranslations.UnitMustBeSelected = culture === \"fi\" ? Translations_fi.UnitMustBeSelected : (culture === \"sv-FI\" ? Translations_sv_FI.UnitMustBeSelected : Translations_en_US.UnitMustBeSelected);\r\n\t\t\tTranslations.AddEventHandlersToEvent = culture === \"fi\" ? Translations_fi.AddEventHandlersToEvent : (culture === \"sv-FI\" ? Translations_sv_FI.AddEventHandlersToEvent : Translations_en_US.AddEventHandlersToEvent);\r\n\t\t\tTranslations.ObserverActionMustBeDefined = culture === \"fi\" ? Translations_fi.ObserverActionMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.ObserverActionMustBeDefined : Translations_en_US.ObserverActionMustBeDefined);\r\n\t\t\tTranslations.AddLogisticVoucherCustomerPaymentSetting = culture === \"fi\" ? Translations_fi.AddLogisticVoucherCustomerPaymentSetting : (culture === \"sv-FI\" ? Translations_sv_FI.AddLogisticVoucherCustomerPaymentSetting : Translations_en_US.AddLogisticVoucherCustomerPaymentSetting);\r\n\t\t\tTranslations.DescriptionMustBeDefined = culture === \"fi\" ? Translations_fi.DescriptionMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.DescriptionMustBeDefined : Translations_en_US.DescriptionMustBeDefined);\r\n\t\t\tTranslations.AddUsersParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.AddUsersParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.AddUsersParameterWasNotSuccessfulErrorParameter : Translations_en_US.AddUsersParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.DocumentIsEmpty = culture === \"fi\" ? Translations_fi.DocumentIsEmpty : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentIsEmpty : Translations_en_US.DocumentIsEmpty);\r\n\t\t\tTranslations.CompanyGroup = culture === \"fi\" ? Translations_fi.CompanyGroup : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyGroup : Translations_en_US.CompanyGroup);\r\n\t\t\tTranslations.SavingEventTypeBParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingEventTypeBParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventTypeBParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingEventTypeBParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.AddCompanyParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.AddCompanyParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.AddCompanyParameterWasNotSuccessfulConcurrencyError : Translations_en_US.AddCompanyParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.WhistleBlowResolutionUnspecified = culture === \"fi\" ? Translations_fi.WhistleBlowResolutionUnspecified : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowResolutionUnspecified : Translations_en_US.WhistleBlowResolutionUnspecified);\r\n\t\t\tTranslations.RequestValidationErrorOnFieldParameterWithValueParameter = culture === \"fi\" ? Translations_fi.RequestValidationErrorOnFieldParameterWithValueParameter : (culture === \"sv-FI\" ? Translations_sv_FI.RequestValidationErrorOnFieldParameterWithValueParameter : Translations_en_US.RequestValidationErrorOnFieldParameterWithValueParameter);\r\n\t\t\tTranslations.FormCalculatedIntegerNumber = culture === \"fi\" ? Translations_fi.FormCalculatedIntegerNumber : (culture === \"sv-FI\" ? Translations_sv_FI.FormCalculatedIntegerNumber : Translations_en_US.FormCalculatedIntegerNumber);\r\n\t\t\tTranslations.EventUrgencyClassParameterIsInUseInParameterEventsAndCannotBeDeleted = culture === \"fi\" ? Translations_fi.EventUrgencyClassParameterIsInUseInParameterEventsAndCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.EventUrgencyClassParameterIsInUseInParameterEventsAndCannotBeDeleted : Translations_en_US.EventUrgencyClassParameterIsInUseInParameterEventsAndCannotBeDeleted);\r\n\t\t\tTranslations.PrintTextPublished = culture === \"fi\" ? Translations_fi.PrintTextPublished : (culture === \"sv-FI\" ? Translations_sv_FI.PrintTextPublished : Translations_en_US.PrintTextPublished);\r\n\t\t\tTranslations.SavingRecordBasicEducationParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingRecordBasicEducationParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingRecordBasicEducationParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingRecordBasicEducationParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.AddUsers = culture === \"fi\" ? Translations_fi.AddUsers : (culture === \"sv-FI\" ? Translations_sv_FI.AddUsers : Translations_en_US.AddUsers);\r\n\t\t\tTranslations.DefaultEventTypes = culture === \"fi\" ? Translations_fi.DefaultEventTypes : (culture === \"sv-FI\" ? Translations_sv_FI.DefaultEventTypes : Translations_en_US.DefaultEventTypes);\r\n\t\t\tTranslations.DeletingMetadataFromFileParameterFailed = culture === \"fi\" ? Translations_fi.DeletingMetadataFromFileParameterFailed : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingMetadataFromFileParameterFailed : Translations_en_US.DeletingMetadataFromFileParameterFailed);\r\n\t\t\tTranslations.UnitHandlingIncomingEvents = culture === \"fi\" ? Translations_fi.UnitHandlingIncomingEvents : (culture === \"sv-FI\" ? Translations_sv_FI.UnitHandlingIncomingEvents : Translations_en_US.UnitHandlingIncomingEvents);\r\n\t\t\tTranslations.CalendarTaskOpenSeries = culture === \"fi\" ? Translations_fi.CalendarTaskOpenSeries : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskOpenSeries : Translations_en_US.CalendarTaskOpenSeries);\r\n\t\t\tTranslations.RemoveFilter = culture === \"fi\" ? Translations_fi.RemoveFilter : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveFilter : Translations_en_US.RemoveFilter);\r\n\t\t\tTranslations.Select = culture === \"fi\" ? Translations_fi.Select : (culture === \"sv-FI\" ? Translations_sv_FI.Select : Translations_en_US.Select);\r\n\t\t\tTranslations.ReminderMinutesBefore = culture === \"fi\" ? Translations_fi.ReminderMinutesBefore : (culture === \"sv-FI\" ? Translations_sv_FI.ReminderMinutesBefore : Translations_en_US.ReminderMinutesBefore);\r\n\t\t\tTranslations.RecordParameterLockingFailedRecordIsWriteLockedToUserParameter = culture === \"fi\" ? Translations_fi.RecordParameterLockingFailedRecordIsWriteLockedToUserParameter : (culture === \"sv-FI\" ? Translations_sv_FI.RecordParameterLockingFailedRecordIsWriteLockedToUserParameter : Translations_en_US.RecordParameterLockingFailedRecordIsWriteLockedToUserParameter);\r\n\t\t\tTranslations.Units = culture === \"fi\" ? Translations_fi.Units : (culture === \"sv-FI\" ? Translations_sv_FI.Units : Translations_en_US.Units);\r\n\t\t\tTranslations.ReportsModified = culture === \"fi\" ? Translations_fi.ReportsModified : (culture === \"sv-FI\" ? Translations_sv_FI.ReportsModified : Translations_en_US.ReportsModified);\r\n\t\t\tTranslations.SavingTaskParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingTaskParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingTaskParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingTaskParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.DoYouReallyWantToUnlockTaskDataRow = culture === \"fi\" ? Translations_fi.DoYouReallyWantToUnlockTaskDataRow : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToUnlockTaskDataRow : Translations_en_US.DoYouReallyWantToUnlockTaskDataRow);\r\n\t\t\tTranslations.Year = culture === \"fi\" ? Translations_fi.Year : (culture === \"sv-FI\" ? Translations_sv_FI.Year : Translations_en_US.Year);\r\n\t\t\tTranslations.EventHandlers = culture === \"fi\" ? Translations_fi.EventHandlers : (culture === \"sv-FI\" ? Translations_sv_FI.EventHandlers : Translations_en_US.EventHandlers);\r\n\t\t\tTranslations.DataTransferError = culture === \"fi\" ? Translations_fi.DataTransferError : (culture === \"sv-FI\" ? Translations_sv_FI.DataTransferError : Translations_en_US.DataTransferError);\r\n\t\t\tTranslations.SendPasswordChangeEmail = culture === \"fi\" ? Translations_fi.SendPasswordChangeEmail : (culture === \"sv-FI\" ? Translations_sv_FI.SendPasswordChangeEmail : Translations_en_US.SendPasswordChangeEmail);\r\n\t\t\tTranslations.AddLogisticVoucherPaymentSetting = culture === \"fi\" ? Translations_fi.AddLogisticVoucherPaymentSetting : (culture === \"sv-FI\" ? Translations_sv_FI.AddLogisticVoucherPaymentSetting : Translations_en_US.AddLogisticVoucherPaymentSetting);\r\n\t\t\tTranslations.WhistleBlowCategoryParameterIsInUseInParameterWhistleBlowsAndCannotBeDeleted = culture === \"fi\" ? Translations_fi.WhistleBlowCategoryParameterIsInUseInParameterWhistleBlowsAndCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowCategoryParameterIsInUseInParameterWhistleBlowsAndCannotBeDeleted : Translations_en_US.WhistleBlowCategoryParameterIsInUseInParameterWhistleBlowsAndCannotBeDeleted);\r\n\t\t\tTranslations.ModifyExistingSharedDocumentTemplate = culture === \"fi\" ? Translations_fi.ModifyExistingSharedDocumentTemplate : (culture === \"sv-FI\" ? Translations_sv_FI.ModifyExistingSharedDocumentTemplate : Translations_en_US.ModifyExistingSharedDocumentTemplate);\r\n\t\t\tTranslations.WhistleBlowFollowReport = culture === \"fi\" ? Translations_fi.WhistleBlowFollowReport : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowFollowReport : Translations_en_US.WhistleBlowFollowReport);\r\n\t\t\tTranslations.DeletingCompanyParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingCompanyParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingCompanyParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingCompanyParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.SavingTaskStateParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingTaskStateParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingTaskStateParameterWasSuccessful : Translations_en_US.SavingTaskStateParameterWasSuccessful);\r\n\t\t\tTranslations.MovingFilesAndDocumentsToFolderParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.MovingFilesAndDocumentsToFolderParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.MovingFilesAndDocumentsToFolderParameterWasNotSuccessfulErrorParameter : Translations_en_US.MovingFilesAndDocumentsToFolderParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.CopyPermissionToAllSameLevelUnits = culture === \"fi\" ? Translations_fi.CopyPermissionToAllSameLevelUnits : (culture === \"sv-FI\" ? Translations_sv_FI.CopyPermissionToAllSameLevelUnits : Translations_en_US.CopyPermissionToAllSameLevelUnits);\r\n\t\t\tTranslations.Default = culture === \"fi\" ? Translations_fi.Default : (culture === \"sv-FI\" ? Translations_sv_FI.Default : Translations_en_US.Default);\r\n\t\t\tTranslations.Relation = culture === \"fi\" ? Translations_fi.Relation : (culture === \"sv-FI\" ? Translations_sv_FI.Relation : Translations_en_US.Relation);\r\n\t\t\tTranslations.FormCompactStyle = culture === \"fi\" ? Translations_fi.FormCompactStyle : (culture === \"sv-FI\" ? Translations_sv_FI.FormCompactStyle : Translations_en_US.FormCompactStyle);\r\n\t\t\tTranslations.ArchivingRecordUserFurtherEducationsWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.ArchivingRecordUserFurtherEducationsWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.ArchivingRecordUserFurtherEducationsWasNotSuccessfulConcurrencyError : Translations_en_US.ArchivingRecordUserFurtherEducationsWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.SavingKeywordParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingKeywordParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingKeywordParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingKeywordParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.Open = culture === \"fi\" ? Translations_fi.Open : (culture === \"sv-FI\" ? Translations_sv_FI.Open : Translations_en_US.Open);\r\n\t\t\tTranslations.DeletingFileFilterParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingFileFilterParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingFileFilterParameterWasSuccessful : Translations_en_US.DeletingFileFilterParameterWasSuccessful);\r\n\t\t\tTranslations.CompanyGroupNameMustBeDefined = culture === \"fi\" ? Translations_fi.CompanyGroupNameMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyGroupNameMustBeDefined : Translations_en_US.CompanyGroupNameMustBeDefined);\r\n\t\t\tTranslations.RecordUserExcelQualification = culture === \"fi\" ? Translations_fi.RecordUserExcelQualification : (culture === \"sv-FI\" ? Translations_sv_FI.RecordUserExcelQualification : Translations_en_US.RecordUserExcelQualification);\r\n\t\t\tTranslations.SavingEventParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingEventParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingEventParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.AddingAddRecordUserTransferredPropertiesWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.AddingAddRecordUserTransferredPropertiesWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.AddingAddRecordUserTransferredPropertiesWasNotSuccessfulErrorParameter : Translations_en_US.AddingAddRecordUserTransferredPropertiesWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.Save = culture === \"fi\" ? Translations_fi.Save : (culture === \"sv-FI\" ? Translations_sv_FI.Save : Translations_en_US.Save);\r\n\t\t\tTranslations.UserAccountMustBeSelected = culture === \"fi\" ? Translations_fi.UserAccountMustBeSelected : (culture === \"sv-FI\" ? Translations_sv_FI.UserAccountMustBeSelected : Translations_en_US.UserAccountMustBeSelected);\r\n\t\t\tTranslations.SavingRecordUserParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingRecordUserParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingRecordUserParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingRecordUserParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.NoReports = culture === \"fi\" ? Translations_fi.NoReports : (culture === \"sv-FI\" ? Translations_sv_FI.NoReports : Translations_en_US.NoReports);\r\n\t\t\tTranslations.IncludeArchivedFurtherEducations = culture === \"fi\" ? Translations_fi.IncludeArchivedFurtherEducations : (culture === \"sv-FI\" ? Translations_sv_FI.IncludeArchivedFurtherEducations : Translations_en_US.IncludeArchivedFurtherEducations);\r\n\t\t\tTranslations.DoYouReallyWantToRemoveWhistleBlowCategoryParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveWhistleBlowCategoryParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveWhistleBlowCategoryParameter : Translations_en_US.DoYouReallyWantToRemoveWhistleBlowCategoryParameter);\r\n\t\t\tTranslations.SavingOptionParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingOptionParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingOptionParameterWasSuccessful : Translations_en_US.SavingOptionParameterWasSuccessful);\r\n\t\t\tTranslations.MessageParameterNotFound = culture === \"fi\" ? Translations_fi.MessageParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.MessageParameterNotFound : Translations_en_US.MessageParameterNotFound);\r\n\t\t\tTranslations.UserIsInstantMessageChannelOnlyAdministratorInParameterInstantMessageChannels = culture === \"fi\" ? Translations_fi.UserIsInstantMessageChannelOnlyAdministratorInParameterInstantMessageChannels : (culture === \"sv-FI\" ? Translations_sv_FI.UserIsInstantMessageChannelOnlyAdministratorInParameterInstantMessageChannels : Translations_en_US.UserIsInstantMessageChannelOnlyAdministratorInParameterInstantMessageChannels);\r\n\t\t\tTranslations.AddWhistleBlow = culture === \"fi\" ? Translations_fi.AddWhistleBlow : (culture === \"sv-FI\" ? Translations_sv_FI.AddWhistleBlow : Translations_en_US.AddWhistleBlow);\r\n\t\t\tTranslations.Location = culture === \"fi\" ? Translations_fi.Location : (culture === \"sv-FI\" ? Translations_sv_FI.Location : Translations_en_US.Location);\r\n\t\t\tTranslations.DoYouWantToPublishEvent = culture === \"fi\" ? Translations_fi.DoYouWantToPublishEvent : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouWantToPublishEvent : Translations_en_US.DoYouWantToPublishEvent);\r\n\t\t\tTranslations.EditableDocumentParameterNotFound = culture === \"fi\" ? Translations_fi.EditableDocumentParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.EditableDocumentParameterNotFound : Translations_en_US.EditableDocumentParameterNotFound);\r\n\t\t\tTranslations.MessageTypesMustBeDefinedBeforeAddingMessages = culture === \"fi\" ? Translations_fi.MessageTypesMustBeDefinedBeforeAddingMessages : (culture === \"sv-FI\" ? Translations_sv_FI.MessageTypesMustBeDefinedBeforeAddingMessages : Translations_en_US.MessageTypesMustBeDefinedBeforeAddingMessages);\r\n\t\t\tTranslations.RemoveCalendarTaskCategory = culture === \"fi\" ? Translations_fi.RemoveCalendarTaskCategory : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveCalendarTaskCategory : Translations_en_US.RemoveCalendarTaskCategory);\r\n\t\t\tTranslations.DeletingInstantMessageChannelParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingInstantMessageChannelParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingInstantMessageChannelParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingInstantMessageChannelParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.AdminMustBeDefined = culture === \"fi\" ? Translations_fi.AdminMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.AdminMustBeDefined : Translations_en_US.AdminMustBeDefined);\r\n\t\t\tTranslations.FormBuilder = culture === \"fi\" ? Translations_fi.FormBuilder : (culture === \"sv-FI\" ? Translations_sv_FI.FormBuilder : Translations_en_US.FormBuilder);\r\n\t\t\tTranslations.AddCompanyGroupParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.AddCompanyGroupParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.AddCompanyGroupParameterWasNotSuccessfulErrorParameter : Translations_en_US.AddCompanyGroupParameterWasNotSuccessfulErrorParameter);\r\n\t\t\tTranslations.EventIsApprovedByUser = culture === \"fi\" ? Translations_fi.EventIsApprovedByUser : (culture === \"sv-FI\" ? Translations_sv_FI.EventIsApprovedByUser : Translations_en_US.EventIsApprovedByUser);\r\n\t\t\tTranslations.ThisWeek = culture === \"fi\" ? Translations_fi.ThisWeek : (culture === \"sv-FI\" ? Translations_sv_FI.ThisWeek : Translations_en_US.ThisWeek);\r\n\t\t\tTranslations.AccessRightReadWhistleBlow = culture === \"fi\" ? Translations_fi.AccessRightReadWhistleBlow : (culture === \"sv-FI\" ? Translations_sv_FI.AccessRightReadWhistleBlow : Translations_en_US.AccessRightReadWhistleBlow);\r\n\t\t\tTranslations.ExpiresInParameterMonths = culture === \"fi\" ? Translations_fi.ExpiresInParameterMonths : (culture === \"sv-FI\" ? Translations_sv_FI.ExpiresInParameterMonths : Translations_en_US.ExpiresInParameterMonths);\r\n\t\t\tTranslations.KeywordsAndCondition = culture === \"fi\" ? Translations_fi.KeywordsAndCondition : (culture === \"sv-FI\" ? Translations_sv_FI.KeywordsAndCondition : Translations_en_US.KeywordsAndCondition);\r\n\t\t\tTranslations.AddingAddRecordUserTransferredPropertiesWasSuccessful = culture === \"fi\" ? Translations_fi.AddingAddRecordUserTransferredPropertiesWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.AddingAddRecordUserTransferredPropertiesWasSuccessful : Translations_en_US.AddingAddRecordUserTransferredPropertiesWasSuccessful);\r\n\t\t\tTranslations.Permissions = culture === \"fi\" ? Translations_fi.Permissions : (culture === \"sv-FI\" ? Translations_sv_FI.Permissions : Translations_en_US.Permissions);\r\n\t\t\tTranslations.InheritedContentFilter = culture === \"fi\" ? Translations_fi.InheritedContentFilter : (culture === \"sv-FI\" ? Translations_sv_FI.InheritedContentFilter : Translations_en_US.InheritedContentFilter);\r\n\t\t\tTranslations.UserFilterInActive = culture === \"fi\" ? Translations_fi.UserFilterInActive : (culture === \"sv-FI\" ? Translations_sv_FI.UserFilterInActive : Translations_en_US.UserFilterInActive);\r\n\t\t\tTranslations.UserRecordStatisticsMissingQualifications = culture === \"fi\" ? Translations_fi.UserRecordStatisticsMissingQualifications : (culture === \"sv-FI\" ? Translations_sv_FI.UserRecordStatisticsMissingQualifications : Translations_en_US.UserRecordStatisticsMissingQualifications);\r\n\t\t\tTranslations.FormulaAbs = culture === \"fi\" ? Translations_fi.FormulaAbs : (culture === \"sv-FI\" ? Translations_sv_FI.FormulaAbs : Translations_en_US.FormulaAbs);\r\n\t\t\tTranslations.DirectoryItemDocumentsNotFound = culture === \"fi\" ? Translations_fi.DirectoryItemDocumentsNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.DirectoryItemDocumentsNotFound : Translations_en_US.DirectoryItemDocumentsNotFound);\r\n\t\t\tTranslations.Attachments = culture === \"fi\" ? Translations_fi.Attachments : (culture === \"sv-FI\" ? Translations_sv_FI.Attachments : Translations_en_US.Attachments);\r\n\t\t\tTranslations.DeletingInstantMessageUserParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingInstantMessageUserParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingInstantMessageUserParameterWasSuccessful : Translations_en_US.DeletingInstantMessageUserParameterWasSuccessful);\r\n\t\t\tTranslations.ReminderNone = culture === \"fi\" ? Translations_fi.ReminderNone : (culture === \"sv-FI\" ? Translations_sv_FI.ReminderNone : Translations_en_US.ReminderNone);\r\n\t\t\tTranslations.RemoveMessage = culture === \"fi\" ? Translations_fi.RemoveMessage : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveMessage : Translations_en_US.RemoveMessage);\r\n\t\t\tTranslations.ContentVersion = culture === \"fi\" ? Translations_fi.ContentVersion : (culture === \"sv-FI\" ? Translations_sv_FI.ContentVersion : Translations_en_US.ContentVersion);\r\n\t\t\tTranslations.PayeeUsersCanLogInToTheSystem = culture === \"fi\" ? Translations_fi.PayeeUsersCanLogInToTheSystem : (culture === \"sv-FI\" ? Translations_sv_FI.PayeeUsersCanLogInToTheSystem : Translations_en_US.PayeeUsersCanLogInToTheSystem);\r\n\t\t\tTranslations.FormExpressionMustBeDefined = culture === \"fi\" ? Translations_fi.FormExpressionMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.FormExpressionMustBeDefined : Translations_en_US.FormExpressionMustBeDefined);\r\n\t\t\tTranslations.AddingEventHandlersWasSuccessful = culture === \"fi\" ? Translations_fi.AddingEventHandlersWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.AddingEventHandlersWasSuccessful : Translations_en_US.AddingEventHandlersWasSuccessful);\r\n\t\t\tTranslations.AccountIBANNumber = culture === \"fi\" ? Translations_fi.AccountIBANNumber : (culture === \"sv-FI\" ? Translations_sv_FI.AccountIBANNumber : Translations_en_US.AccountIBANNumber);\r\n\t\t\tTranslations.PersonalIdentityCode = culture === \"fi\" ? Translations_fi.PersonalIdentityCode : (culture === \"sv-FI\" ? Translations_sv_FI.PersonalIdentityCode : Translations_en_US.PersonalIdentityCode);\r\n\t\t\tTranslations.DoYouReallyWantToRemoveSelectedRecordFamiliarizations = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveSelectedRecordFamiliarizations : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveSelectedRecordFamiliarizations : Translations_en_US.DoYouReallyWantToRemoveSelectedRecordFamiliarizations);\r\n\t\t\tTranslations.DoYouReallyWantToRemoveEventTypeCParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveEventTypeCParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveEventTypeCParameter : Translations_en_US.DoYouReallyWantToRemoveEventTypeCParameter);\r\n\t\t\tTranslations.SavingCompanyGroupParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingCompanyGroupParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingCompanyGroupParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingCompanyGroupParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.DeletingRecordFamiliarizationParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingRecordFamiliarizationParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordFamiliarizationParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingRecordFamiliarizationParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.FormSizeDefault = culture === \"fi\" ? Translations_fi.FormSizeDefault : (culture === \"sv-FI\" ? Translations_sv_FI.FormSizeDefault : Translations_en_US.FormSizeDefault);\r\n\t\t\tTranslations.UserRecordStatisticsExpiredFamiliarizations = culture === \"fi\" ? Translations_fi.UserRecordStatisticsExpiredFamiliarizations : (culture === \"sv-FI\" ? Translations_sv_FI.UserRecordStatisticsExpiredFamiliarizations : Translations_en_US.UserRecordStatisticsExpiredFamiliarizations);\r\n\t\t\tTranslations.Expand = culture === \"fi\" ? Translations_fi.Expand : (culture === \"sv-FI\" ? Translations_sv_FI.Expand : Translations_en_US.Expand);\r\n\t\t\tTranslations.UserRecordStatisticsExpiringInSixMonthsFurtherEducations = culture === \"fi\" ? Translations_fi.UserRecordStatisticsExpiringInSixMonthsFurtherEducations : (culture === \"sv-FI\" ? Translations_sv_FI.UserRecordStatisticsExpiringInSixMonthsFurtherEducations : Translations_en_US.UserRecordStatisticsExpiringInSixMonthsFurtherEducations);\r\n\t\t\tTranslations.ChangedEventUnit = culture === \"fi\" ? Translations_fi.ChangedEventUnit : (culture === \"sv-FI\" ? Translations_sv_FI.ChangedEventUnit : Translations_en_US.ChangedEventUnit);\r\n\t\t\tTranslations.ReadReceiptGivenPlur = culture === \"fi\" ? Translations_fi.ReadReceiptGivenPlur : (culture === \"sv-FI\" ? Translations_sv_FI.ReadReceiptGivenPlur : Translations_en_US.ReadReceiptGivenPlur);\r\n\t\t\tTranslations.DateMustBeDefined = culture === \"fi\" ? Translations_fi.DateMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.DateMustBeDefined : Translations_en_US.DateMustBeDefined);\r\n\t\t\tTranslations.EventTypeParameterNotFound = culture === \"fi\" ? Translations_fi.EventTypeParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.EventTypeParameterNotFound : Translations_en_US.EventTypeParameterNotFound);\r\n\t\t\tTranslations.DeletingRecordFurtherEducationGroupParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingRecordFurtherEducationGroupParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordFurtherEducationGroupParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingRecordFurtherEducationGroupParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.SavingMessageSendPushParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingMessageSendPushParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingMessageSendPushParameterWasSuccessful : Translations_en_US.SavingMessageSendPushParameterWasSuccessful);\r\n\t\t\tTranslations.DoYouReallyWantToRemoveSelectedCalendarTaskCategories = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveSelectedCalendarTaskCategories : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveSelectedCalendarTaskCategories : Translations_en_US.DoYouReallyWantToRemoveSelectedCalendarTaskCategories);\r\n\t\t\tTranslations.LoadMore = culture === \"fi\" ? Translations_fi.LoadMore : (culture === \"sv-FI\" ? Translations_sv_FI.LoadMore : Translations_en_US.LoadMore);\r\n\t\t\tTranslations.DeletingDefaultEventHandlerParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingDefaultEventHandlerParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingDefaultEventHandlerParameterWasSuccessful : Translations_en_US.DeletingDefaultEventHandlerParameterWasSuccessful);\r\n\t\t\tTranslations.AccessRightReadEvents = culture === \"fi\" ? Translations_fi.AccessRightReadEvents : (culture === \"sv-FI\" ? Translations_sv_FI.AccessRightReadEvents : Translations_en_US.AccessRightReadEvents);\r\n\t\t\tTranslations.RecordUserWithSameFirstNameMiddleNameAndLastNameAlreadyExists = culture === \"fi\" ? Translations_fi.RecordUserWithSameFirstNameMiddleNameAndLastNameAlreadyExists : (culture === \"sv-FI\" ? Translations_sv_FI.RecordUserWithSameFirstNameMiddleNameAndLastNameAlreadyExists : Translations_en_US.RecordUserWithSameFirstNameMiddleNameAndLastNameAlreadyExists);\r\n\t\t\tTranslations.PrivacyPolicyUrlMustBeDefined = culture === \"fi\" ? Translations_fi.PrivacyPolicyUrlMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.PrivacyPolicyUrlMustBeDefined : Translations_en_US.PrivacyPolicyUrlMustBeDefined);\r\n\t\t\tTranslations.ForwardMessage = culture === \"fi\" ? Translations_fi.ForwardMessage : (culture === \"sv-FI\" ? Translations_sv_FI.ForwardMessage : Translations_en_US.ForwardMessage);\r\n\t\t\tTranslations.EventTypeBParameterNotFound = culture === \"fi\" ? Translations_fi.EventTypeBParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.EventTypeBParameterNotFound : Translations_en_US.EventTypeBParameterNotFound);\r\n\t\t\tTranslations.GroupByEducation = culture === \"fi\" ? Translations_fi.GroupByEducation : (culture === \"sv-FI\" ? Translations_sv_FI.GroupByEducation : Translations_en_US.GroupByEducation);\r\n\t\t\tTranslations.DeletingUserGroupParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingUserGroupParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingUserGroupParameterWasSuccessful : Translations_en_US.DeletingUserGroupParameterWasSuccessful);\r\n\t\t\tTranslations.SelectEventTypeC = culture === \"fi\" ? Translations_fi.SelectEventTypeC : (culture === \"sv-FI\" ? Translations_sv_FI.SelectEventTypeC : Translations_en_US.SelectEventTypeC);\r\n\t\t\tTranslations.RefreshList = culture === \"fi\" ? Translations_fi.RefreshList : (culture === \"sv-FI\" ? Translations_sv_FI.RefreshList : Translations_en_US.RefreshList);\r\n\t\t\tTranslations.NewPrint = culture === \"fi\" ? Translations_fi.NewPrint : (culture === \"sv-FI\" ? Translations_sv_FI.NewPrint : Translations_en_US.NewPrint);\r\n\t\t\tTranslations.DeletingTaskPriorityParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingTaskPriorityParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingTaskPriorityParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingTaskPriorityParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.NewInstantMessageChannelGroup = culture === \"fi\" ? Translations_fi.NewInstantMessageChannelGroup : (culture === \"sv-FI\" ? Translations_sv_FI.NewInstantMessageChannelGroup : Translations_en_US.NewInstantMessageChannelGroup);\r\n\t\t\tTranslations.ChangedUrgencyClass = culture === \"fi\" ? Translations_fi.ChangedUrgencyClass : (culture === \"sv-FI\" ? Translations_sv_FI.ChangedUrgencyClass : Translations_en_US.ChangedUrgencyClass);\r\n\t\t\tTranslations.SavingOptionParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingOptionParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingOptionParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingOptionParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.Next = culture === \"fi\" ? Translations_fi.Next : (culture === \"sv-FI\" ? Translations_sv_FI.Next : Translations_en_US.Next);\r\n\t\t\tTranslations.DeletingUserGroupUsersOfCompanyParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingUserGroupUsersOfCompanyParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingUserGroupUsersOfCompanyParameterWasSuccessful : Translations_en_US.DeletingUserGroupUsersOfCompanyParameterWasSuccessful);\r\n\t\t\tTranslations.AllUsersOfTheUnit = culture === \"fi\" ? Translations_fi.AllUsersOfTheUnit : (culture === \"sv-FI\" ? Translations_sv_FI.AllUsersOfTheUnit : Translations_en_US.AllUsersOfTheUnit);\r\n\t\t\tTranslations.ClickToChangeTheLogo = culture === \"fi\" ? Translations_fi.ClickToChangeTheLogo : (culture === \"sv-FI\" ? Translations_sv_FI.ClickToChangeTheLogo : Translations_en_US.ClickToChangeTheLogo);\r\n\t\t\tTranslations.DeletingTaskStatesParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingTaskStatesParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingTaskStatesParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingTaskStatesParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.TargetCompany = culture === \"fi\" ? Translations_fi.TargetCompany : (culture === \"sv-FI\" ? Translations_sv_FI.TargetCompany : Translations_en_US.TargetCompany);\r\n\t\t\tTranslations.SavingRecordUserParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingRecordUserParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingRecordUserParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingRecordUserParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.FamiliarizationTime = culture === \"fi\" ? Translations_fi.FamiliarizationTime : (culture === \"sv-FI\" ? Translations_sv_FI.FamiliarizationTime : Translations_en_US.FamiliarizationTime);\r\n\t\t\tTranslations.AddPartner = culture === \"fi\" ? Translations_fi.AddPartner : (culture === \"sv-FI\" ? Translations_sv_FI.AddPartner : Translations_en_US.AddPartner);\r\n\t\t\tTranslations.CopyingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.CopyingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.CopyingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulConcurrencyError : Translations_en_US.CopyingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulConcurrencyError);\r\n\t\t\tTranslations.EditWhistleBlowChannel = culture === \"fi\" ? Translations_fi.EditWhistleBlowChannel : (culture === \"sv-FI\" ? Translations_sv_FI.EditWhistleBlowChannel : Translations_en_US.EditWhistleBlowChannel);\r\n\t\t\tTranslations.DocumentNameIsIllegal = culture === \"fi\" ? Translations_fi.DocumentNameIsIllegal : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentNameIsIllegal : Translations_en_US.DocumentNameIsIllegal);\r\n\t\t\tTranslations.ByDate = culture === \"fi\" ? Translations_fi.ByDate : (culture === \"sv-FI\" ? Translations_sv_FI.ByDate : Translations_en_US.ByDate);\r\n\t\t\tTranslations.FolderMustBeEmptyBeforeItCanBeRemoved = culture === \"fi\" ? Translations_fi.FolderMustBeEmptyBeforeItCanBeRemoved : (culture === \"sv-FI\" ? Translations_sv_FI.FolderMustBeEmptyBeforeItCanBeRemoved : Translations_en_US.FolderMustBeEmptyBeforeItCanBeRemoved);\r\n\t\t\tTranslations.UserLastNameMustBeDefined = culture === \"fi\" ? Translations_fi.UserLastNameMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.UserLastNameMustBeDefined : Translations_en_US.UserLastNameMustBeDefined);\r\n\t\t}\r\n\r\n\tstatic setCulture3(culture: string) {\r\n\t\tTranslations.SavingOneTimePasswordWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingOneTimePasswordWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingOneTimePasswordWasNotSuccessfulErrorParameter : Translations_en_US.SavingOneTimePasswordWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.FullNameClaimNotFound = culture === \"fi\" ? Translations_fi.FullNameClaimNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.FullNameClaimNotFound : Translations_en_US.FullNameClaimNotFound);\r\n\t\tTranslations.RenewPersonalizationWithUser = culture === \"fi\" ? Translations_fi.RenewPersonalizationWithUser : (culture === \"sv-FI\" ? Translations_sv_FI.RenewPersonalizationWithUser : Translations_en_US.RenewPersonalizationWithUser);\r\n\t\tTranslations.SavingUserParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingUserParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingUserParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingUserParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.AddSalaryRowToMultipleUserRecords = culture === \"fi\" ? Translations_fi.AddSalaryRowToMultipleUserRecords : (culture === \"sv-FI\" ? Translations_sv_FI.AddSalaryRowToMultipleUserRecords : Translations_en_US.AddSalaryRowToMultipleUserRecords);\r\n\t\tTranslations.AddingTaskHandlerWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.AddingTaskHandlerWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.AddingTaskHandlerWasNotSuccessfulErrorParameter : Translations_en_US.AddingTaskHandlerWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.RestoringTaskParameterFromTrashBinWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.RestoringTaskParameterFromTrashBinWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.RestoringTaskParameterFromTrashBinWasNotSuccessfulErrorParameter : Translations_en_US.RestoringTaskParameterFromTrashBinWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.MovingFolderDirectoryItemParameterToFolderParameterWasSuccessful = culture === \"fi\" ? Translations_fi.MovingFolderDirectoryItemParameterToFolderParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.MovingFolderDirectoryItemParameterToFolderParameterWasSuccessful : Translations_en_US.MovingFolderDirectoryItemParameterToFolderParameterWasSuccessful);\r\n\t\tTranslations.VersionProperties = culture === \"fi\" ? Translations_fi.VersionProperties : (culture === \"sv-FI\" ? Translations_sv_FI.VersionProperties : Translations_en_US.VersionProperties);\r\n\t\tTranslations.LastName = culture === \"fi\" ? Translations_fi.LastName : (culture === \"sv-FI\" ? Translations_sv_FI.LastName : Translations_en_US.LastName);\r\n\t\tTranslations.DoYouReallyWantToRemoveRecordFurtherEducationGroupParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveRecordFurtherEducationGroupParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveRecordFurtherEducationGroupParameter : Translations_en_US.DoYouReallyWantToRemoveRecordFurtherEducationGroupParameter);\r\n\t\tTranslations.FormLineBreak = culture === \"fi\" ? Translations_fi.FormLineBreak : (culture === \"sv-FI\" ? Translations_sv_FI.FormLineBreak : Translations_en_US.FormLineBreak);\r\n\t\tTranslations.FormTrue = culture === \"fi\" ? Translations_fi.FormTrue : (culture === \"sv-FI\" ? Translations_sv_FI.FormTrue : Translations_en_US.FormTrue);\r\n\t\tTranslations.AttachmentParameterNotFound = culture === \"fi\" ? Translations_fi.AttachmentParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.AttachmentParameterNotFound : Translations_en_US.AttachmentParameterNotFound);\r\n\t\tTranslations.UnlockingEventParameterWasNotSuccessful = culture === \"fi\" ? Translations_fi.UnlockingEventParameterWasNotSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.UnlockingEventParameterWasNotSuccessful : Translations_en_US.UnlockingEventParameterWasNotSuccessful);\r\n\t\tTranslations.AddUserGroupsParameterWasSuccessful = culture === \"fi\" ? Translations_fi.AddUserGroupsParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.AddUserGroupsParameterWasSuccessful : Translations_en_US.AddUserGroupsParameterWasSuccessful);\r\n\t\tTranslations.EditInstantMessageChannel = culture === \"fi\" ? Translations_fi.EditInstantMessageChannel : (culture === \"sv-FI\" ? Translations_sv_FI.EditInstantMessageChannel : Translations_en_US.EditInstantMessageChannel);\r\n\t\tTranslations.UserCodeClaimNotFound = culture === \"fi\" ? Translations_fi.UserCodeClaimNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.UserCodeClaimNotFound : Translations_en_US.UserCodeClaimNotFound);\r\n\t\tTranslations.WhistleBlowSeverityHigh = culture === \"fi\" ? Translations_fi.WhistleBlowSeverityHigh : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowSeverityHigh : Translations_en_US.WhistleBlowSeverityHigh);\r\n\t\tTranslations.MessageMustBeSavedBeforeAttachmentsCanBeAdded = culture === \"fi\" ? Translations_fi.MessageMustBeSavedBeforeAttachmentsCanBeAdded : (culture === \"sv-FI\" ? Translations_sv_FI.MessageMustBeSavedBeforeAttachmentsCanBeAdded : Translations_en_US.MessageMustBeSavedBeforeAttachmentsCanBeAdded);\r\n\t\tTranslations.ApproveEventHandlerConfirmation2 = culture === \"fi\" ? Translations_fi.ApproveEventHandlerConfirmation2 : (culture === \"sv-FI\" ? Translations_sv_FI.ApproveEventHandlerConfirmation2 : Translations_en_US.ApproveEventHandlerConfirmation2);\r\n\t\tTranslations.SavingDirectoryItemPermissionsWasSuccessful = culture === \"fi\" ? Translations_fi.SavingDirectoryItemPermissionsWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingDirectoryItemPermissionsWasSuccessful : Translations_en_US.SavingDirectoryItemPermissionsWasSuccessful);\r\n\t\tTranslations.WhistleBlowStatisticsInProgressRecords = culture === \"fi\" ? Translations_fi.WhistleBlowStatisticsInProgressRecords : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowStatisticsInProgressRecords : Translations_en_US.WhistleBlowStatisticsInProgressRecords);\r\n\t\tTranslations.SearchFurtherEducations = culture === \"fi\" ? Translations_fi.SearchFurtherEducations : (culture === \"sv-FI\" ? Translations_sv_FI.SearchFurtherEducations : Translations_en_US.SearchFurtherEducations);\r\n\t\tTranslations.MiddleName = culture === \"fi\" ? Translations_fi.MiddleName : (culture === \"sv-FI\" ? Translations_sv_FI.MiddleName : Translations_en_US.MiddleName);\r\n\t\tTranslations.DeletingPartnerParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingPartnerParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingPartnerParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingPartnerParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.SavingRecordFurtherEducationParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingRecordFurtherEducationParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingRecordFurtherEducationParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingRecordFurtherEducationParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.DoYouReallyWantToUnlockCalendarTask = culture === \"fi\" ? Translations_fi.DoYouReallyWantToUnlockCalendarTask : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToUnlockCalendarTask : Translations_en_US.DoYouReallyWantToUnlockCalendarTask);\r\n\t\tTranslations.MoneyOut = culture === \"fi\" ? Translations_fi.MoneyOut : (culture === \"sv-FI\" ? Translations_sv_FI.MoneyOut : Translations_en_US.MoneyOut);\r\n\t\tTranslations.SavingUnitPermissionsWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingUnitPermissionsWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingUnitPermissionsWasNotSuccessfulErrorParameter : Translations_en_US.SavingUnitPermissionsWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.MovingTaskParameterToTrashBinWasSuccessful = culture === \"fi\" ? Translations_fi.MovingTaskParameterToTrashBinWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.MovingTaskParameterToTrashBinWasSuccessful : Translations_en_US.MovingTaskParameterToTrashBinWasSuccessful);\r\n\t\tTranslations.Paste = culture === \"fi\" ? Translations_fi.Paste : (culture === \"sv-FI\" ? Translations_sv_FI.Paste : Translations_en_US.Paste);\r\n\t\tTranslations.SavingTaskDataRowWasSuccessful = culture === \"fi\" ? Translations_fi.SavingTaskDataRowWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingTaskDataRowWasSuccessful : Translations_en_US.SavingTaskDataRowWasSuccessful);\r\n\t\tTranslations.WhistleBlowSourceUnspecified = culture === \"fi\" ? Translations_fi.WhistleBlowSourceUnspecified : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowSourceUnspecified : Translations_en_US.WhistleBlowSourceUnspecified);\r\n\t\tTranslations.GetPhoto = culture === \"fi\" ? Translations_fi.GetPhoto : (culture === \"sv-FI\" ? Translations_sv_FI.GetPhoto : Translations_en_US.GetPhoto);\r\n\t\tTranslations.CreatingNotifications = culture === \"fi\" ? Translations_fi.CreatingNotifications : (culture === \"sv-FI\" ? Translations_sv_FI.CreatingNotifications : Translations_en_US.CreatingNotifications);\r\n\t\tTranslations.SavingUserGroupParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingUserGroupParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingUserGroupParameterWasSuccessful : Translations_en_US.SavingUserGroupParameterWasSuccessful);\r\n\t\tTranslations.WhistleBlowDashboard = culture === \"fi\" ? Translations_fi.WhistleBlowDashboard : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowDashboard : Translations_en_US.WhistleBlowDashboard);\r\n\t\tTranslations.FormDropdowns = culture === \"fi\" ? Translations_fi.FormDropdowns : (culture === \"sv-FI\" ? Translations_sv_FI.FormDropdowns : Translations_en_US.FormDropdowns);\r\n\t\tTranslations.ChangePassword = culture === \"fi\" ? Translations_fi.ChangePassword : (culture === \"sv-FI\" ? Translations_sv_FI.ChangePassword : Translations_en_US.ChangePassword);\r\n\t\tTranslations.EventPartnerParameterNotFound = culture === \"fi\" ? Translations_fi.EventPartnerParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.EventPartnerParameterNotFound : Translations_en_US.EventPartnerParameterNotFound);\r\n\t\tTranslations.SelectDocumentTemplate = culture === \"fi\" ? Translations_fi.SelectDocumentTemplate : (culture === \"sv-FI\" ? Translations_sv_FI.SelectDocumentTemplate : Translations_en_US.SelectDocumentTemplate);\r\n\t\tTranslations.DoYouReallyWantToRemoveSelectedKeywords = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveSelectedKeywords : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveSelectedKeywords : Translations_en_US.DoYouReallyWantToRemoveSelectedKeywords);\r\n\t\tTranslations.PrintOrientation = culture === \"fi\" ? Translations_fi.PrintOrientation : (culture === \"sv-FI\" ? Translations_sv_FI.PrintOrientation : Translations_en_US.PrintOrientation);\r\n\t\tTranslations.AddRecordUserAndUserAccount = culture === \"fi\" ? Translations_fi.AddRecordUserAndUserAccount : (culture === \"sv-FI\" ? Translations_sv_FI.AddRecordUserAndUserAccount : Translations_en_US.AddRecordUserAndUserAccount);\r\n\t\tTranslations.Source = culture === \"fi\" ? Translations_fi.Source : (culture === \"sv-FI\" ? Translations_sv_FI.Source : Translations_en_US.Source);\r\n\t\tTranslations.LoggedInUserCannotBeDeleted = culture === \"fi\" ? Translations_fi.LoggedInUserCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.LoggedInUserCannotBeDeleted : Translations_en_US.LoggedInUserCannotBeDeleted);\r\n\t\tTranslations.DeletingPartnersParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingPartnersParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingPartnersParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingPartnersParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.RemoveSharedDocumentTemplate = culture === \"fi\" ? Translations_fi.RemoveSharedDocumentTemplate : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveSharedDocumentTemplate : Translations_en_US.RemoveSharedDocumentTemplate);\r\n\t\tTranslations.AddHandlers = culture === \"fi\" ? Translations_fi.AddHandlers : (culture === \"sv-FI\" ? Translations_sv_FI.AddHandlers : Translations_en_US.AddHandlers);\r\n\t\tTranslations.WhistleBlowInformantButtonHint = culture === \"fi\" ? Translations_fi.WhistleBlowInformantButtonHint : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowInformantButtonHint : Translations_en_US.WhistleBlowInformantButtonHint);\r\n\t\tTranslations.UnpublishingEditableDocumentParameterWasSuccessful = culture === \"fi\" ? Translations_fi.UnpublishingEditableDocumentParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.UnpublishingEditableDocumentParameterWasSuccessful : Translations_en_US.UnpublishingEditableDocumentParameterWasSuccessful);\r\n\t\tTranslations.DoYouReallyWantToRemovePartnerParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemovePartnerParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemovePartnerParameter : Translations_en_US.DoYouReallyWantToRemovePartnerParameter);\r\n\t\tTranslations.DeletingFileFiltersParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingFileFiltersParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingFileFiltersParameterWasSuccessful : Translations_en_US.DeletingFileFiltersParameterWasSuccessful);\r\n\t\tTranslations.DeletingUsersParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingUsersParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingUsersParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingUsersParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.AddAttachementsToEvent = culture === \"fi\" ? Translations_fi.AddAttachementsToEvent : (culture === \"sv-FI\" ? Translations_sv_FI.AddAttachementsToEvent : Translations_en_US.AddAttachementsToEvent);\r\n\t\tTranslations.UserGroupCodeMustBeDefined = culture === \"fi\" ? Translations_fi.UserGroupCodeMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.UserGroupCodeMustBeDefined : Translations_en_US.UserGroupCodeMustBeDefined);\r\n\t\tTranslations.AddDefaultEventType = culture === \"fi\" ? Translations_fi.AddDefaultEventType : (culture === \"sv-FI\" ? Translations_sv_FI.AddDefaultEventType : Translations_en_US.AddDefaultEventType);\r\n\t\tTranslations.Last30Days = culture === \"fi\" ? Translations_fi.Last30Days : (culture === \"sv-FI\" ? Translations_sv_FI.Last30Days : Translations_en_US.Last30Days);\r\n\t\tTranslations.DoYouReallyWantToRemoveSelectedTaskStates = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveSelectedTaskStates : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveSelectedTaskStates : Translations_en_US.DoYouReallyWantToRemoveSelectedTaskStates);\r\n\t\tTranslations.ArchivingRecordUserFamiliarizationsWasSuccessful = culture === \"fi\" ? Translations_fi.ArchivingRecordUserFamiliarizationsWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.ArchivingRecordUserFamiliarizationsWasSuccessful : Translations_en_US.ArchivingRecordUserFamiliarizationsWasSuccessful);\r\n\t\tTranslations.UnitParameterNotFound = culture === \"fi\" ? Translations_fi.UnitParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.UnitParameterNotFound : Translations_en_US.UnitParameterNotFound);\r\n\t\tTranslations.AdvancePaymentReportPath = culture === \"fi\" ? Translations_fi.AdvancePaymentReportPath : (culture === \"sv-FI\" ? Translations_sv_FI.AdvancePaymentReportPath : Translations_en_US.AdvancePaymentReportPath);\r\n\t\tTranslations.CalendarTaskRepetitionRepeatIntervalMonthlySuffix = culture === \"fi\" ? Translations_fi.CalendarTaskRepetitionRepeatIntervalMonthlySuffix : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskRepetitionRepeatIntervalMonthlySuffix : Translations_en_US.CalendarTaskRepetitionRepeatIntervalMonthlySuffix);\r\n\t\tTranslations.AddTransferredProperties = culture === \"fi\" ? Translations_fi.AddTransferredProperties : (culture === \"sv-FI\" ? Translations_sv_FI.AddTransferredProperties : Translations_en_US.AddTransferredProperties);\r\n\t\tTranslations.DeletingEventUrgencyClassesParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingEventUrgencyClassesParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingEventUrgencyClassesParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingEventUrgencyClassesParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.ChangingPasswordWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.ChangingPasswordWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.ChangingPasswordWasNotSuccessfulErrorParameter : Translations_en_US.ChangingPasswordWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.WhistleBlowChannelPageNameCodeIsAlreadyInUse = culture === \"fi\" ? Translations_fi.WhistleBlowChannelPageNameCodeIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowChannelPageNameCodeIsAlreadyInUse : Translations_en_US.WhistleBlowChannelPageNameCodeIsAlreadyInUse);\r\n\t\tTranslations.PasswordConfirmationDoesNotMatchPassword = culture === \"fi\" ? Translations_fi.PasswordConfirmationDoesNotMatchPassword : (culture === \"sv-FI\" ? Translations_sv_FI.PasswordConfirmationDoesNotMatchPassword : Translations_en_US.PasswordConfirmationDoesNotMatchPassword);\r\n\t\tTranslations.DeletingUserParametersWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingUserParametersWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingUserParametersWasNotSuccessfulErrorParameter : Translations_en_US.DeletingUserParametersWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.DeletingInstantMessageWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingInstantMessageWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingInstantMessageWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingInstantMessageWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.AddedComment = culture === \"fi\" ? Translations_fi.AddedComment : (culture === \"sv-FI\" ? Translations_sv_FI.AddedComment : Translations_en_US.AddedComment);\r\n\t\tTranslations.ParameterResults = culture === \"fi\" ? Translations_fi.ParameterResults : (culture === \"sv-FI\" ? Translations_sv_FI.ParameterResults : Translations_en_US.ParameterResults);\r\n\t\tTranslations.UpdatingApplication = culture === \"fi\" ? Translations_fi.UpdatingApplication : (culture === \"sv-FI\" ? Translations_sv_FI.UpdatingApplication : Translations_en_US.UpdatingApplication);\r\n\t\tTranslations.EventPartners = culture === \"fi\" ? Translations_fi.EventPartners : (culture === \"sv-FI\" ? Translations_sv_FI.EventPartners : Translations_en_US.EventPartners);\r\n\t\tTranslations.Ends = culture === \"fi\" ? Translations_fi.Ends : (culture === \"sv-FI\" ? Translations_sv_FI.Ends : Translations_en_US.Ends);\r\n\t\tTranslations.CopyOrMoveFilesDocuments = culture === \"fi\" ? Translations_fi.CopyOrMoveFilesDocuments : (culture === \"sv-FI\" ? Translations_sv_FI.CopyOrMoveFilesDocuments : Translations_en_US.CopyOrMoveFilesDocuments);\r\n\t\tTranslations.PortalInUse = culture === \"fi\" ? Translations_fi.PortalInUse : (culture === \"sv-FI\" ? Translations_sv_FI.PortalInUse : Translations_en_US.PortalInUse);\r\n\t\tTranslations.PaymentTermInDays = culture === \"fi\" ? Translations_fi.PaymentTermInDays : (culture === \"sv-FI\" ? Translations_sv_FI.PaymentTermInDays : Translations_en_US.PaymentTermInDays);\r\n\t\tTranslations.CopyOrMoveFolder = culture === \"fi\" ? Translations_fi.CopyOrMoveFolder : (culture === \"sv-FI\" ? Translations_sv_FI.CopyOrMoveFolder : Translations_en_US.CopyOrMoveFolder);\r\n\t\tTranslations.BasicEducation = culture === \"fi\" ? Translations_fi.BasicEducation : (culture === \"sv-FI\" ? Translations_sv_FI.BasicEducation : Translations_en_US.BasicEducation);\r\n\t\tTranslations.SelectDocumentInListToSeeThePreview = culture === \"fi\" ? Translations_fi.SelectDocumentInListToSeeThePreview : (culture === \"sv-FI\" ? Translations_sv_FI.SelectDocumentInListToSeeThePreview : Translations_en_US.SelectDocumentInListToSeeThePreview);\r\n\t\tTranslations.DefaultLanguage = culture === \"fi\" ? Translations_fi.DefaultLanguage : (culture === \"sv-FI\" ? Translations_sv_FI.DefaultLanguage : Translations_en_US.DefaultLanguage);\r\n\t\tTranslations.EditDefaultTaskType = culture === \"fi\" ? Translations_fi.EditDefaultTaskType : (culture === \"sv-FI\" ? Translations_sv_FI.EditDefaultTaskType : Translations_en_US.EditDefaultTaskType);\r\n\t\tTranslations.DeletingCompanyGroupsParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingCompanyGroupsParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingCompanyGroupsParameterWasSuccessful : Translations_en_US.DeletingCompanyGroupsParameterWasSuccessful);\r\n\t\tTranslations.SavingTaskParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingTaskParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingTaskParameterWasSuccessful : Translations_en_US.SavingTaskParameterWasSuccessful);\r\n\t\tTranslations.SelectCustomer = culture === \"fi\" ? Translations_fi.SelectCustomer : (culture === \"sv-FI\" ? Translations_sv_FI.SelectCustomer : Translations_en_US.SelectCustomer);\r\n\t\tTranslations.SavingWhistleBlowChannelParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingWhistleBlowChannelParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingWhistleBlowChannelParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingWhistleBlowChannelParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.NotRepeated = culture === \"fi\" ? Translations_fi.NotRepeated : (culture === \"sv-FI\" ? Translations_sv_FI.NotRepeated : Translations_en_US.NotRepeated);\r\n\t\tTranslations.DeletingUserParametersWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingUserParametersWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingUserParametersWasSuccessful : Translations_en_US.DeletingUserParametersWasSuccessful);\r\n\t\tTranslations.EditDefaultEventHandlersAndNotifiedPersons = culture === \"fi\" ? Translations_fi.EditDefaultEventHandlersAndNotifiedPersons : (culture === \"sv-FI\" ? Translations_sv_FI.EditDefaultEventHandlersAndNotifiedPersons : Translations_en_US.EditDefaultEventHandlersAndNotifiedPersons);\r\n\t\tTranslations.TaskHandlerParameterNotFound = culture === \"fi\" ? Translations_fi.TaskHandlerParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.TaskHandlerParameterNotFound : Translations_en_US.TaskHandlerParameterNotFound);\r\n\t\tTranslations.SavingUserParameterParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingUserParameterParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingUserParameterParameterWasSuccessful : Translations_en_US.SavingUserParameterParameterWasSuccessful);\r\n\t\tTranslations.FilesParameterAreEmpty = culture === \"fi\" ? Translations_fi.FilesParameterAreEmpty : (culture === \"sv-FI\" ? Translations_sv_FI.FilesParameterAreEmpty : Translations_en_US.FilesParameterAreEmpty);\r\n\t\tTranslations.FolderNameIsTooLong = culture === \"fi\" ? Translations_fi.FolderNameIsTooLong : (culture === \"sv-FI\" ? Translations_sv_FI.FolderNameIsTooLong : Translations_en_US.FolderNameIsTooLong);\r\n\t\tTranslations.FileUploadWasSuccessful = culture === \"fi\" ? Translations_fi.FileUploadWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.FileUploadWasSuccessful : Translations_en_US.FileUploadWasSuccessful);\r\n\t\tTranslations.WaitingToBeApproved = culture === \"fi\" ? Translations_fi.WaitingToBeApproved : (culture === \"sv-FI\" ? Translations_sv_FI.WaitingToBeApproved : Translations_en_US.WaitingToBeApproved);\r\n\t\tTranslations.EditDefaultTaskState = culture === \"fi\" ? Translations_fi.EditDefaultTaskState : (culture === \"sv-FI\" ? Translations_sv_FI.EditDefaultTaskState : Translations_en_US.EditDefaultTaskState);\r\n\t\tTranslations.WhistleBlowState = culture === \"fi\" ? Translations_fi.WhistleBlowState : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowState : Translations_en_US.WhistleBlowState);\r\n\t\tTranslations.AddChildEventTypeC = culture === \"fi\" ? Translations_fi.AddChildEventTypeC : (culture === \"sv-FI\" ? Translations_sv_FI.AddChildEventTypeC : Translations_en_US.AddChildEventTypeC);\r\n\t\tTranslations.SelectReminder = culture === \"fi\" ? Translations_fi.SelectReminder : (culture === \"sv-FI\" ? Translations_sv_FI.SelectReminder : Translations_en_US.SelectReminder);\r\n\t\tTranslations.CanShareContentToCompanies = culture === \"fi\" ? Translations_fi.CanShareContentToCompanies : (culture === \"sv-FI\" ? Translations_sv_FI.CanShareContentToCompanies : Translations_en_US.CanShareContentToCompanies);\r\n\t\tTranslations.VersionParameterPublishedAsPdfFile = culture === \"fi\" ? Translations_fi.VersionParameterPublishedAsPdfFile : (culture === \"sv-FI\" ? Translations_sv_FI.VersionParameterPublishedAsPdfFile : Translations_en_US.VersionParameterPublishedAsPdfFile);\r\n\t\tTranslations.UserGroupModuleProperties = culture === \"fi\" ? Translations_fi.UserGroupModuleProperties : (culture === \"sv-FI\" ? Translations_sv_FI.UserGroupModuleProperties : Translations_en_US.UserGroupModuleProperties);\r\n\t\tTranslations.DeletingMessageParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingMessageParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingMessageParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingMessageParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.RemoveRecordUserAndUser = culture === \"fi\" ? Translations_fi.RemoveRecordUserAndUser : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveRecordUserAndUser : Translations_en_US.RemoveRecordUserAndUser);\r\n\t\tTranslations.CloseSystem = culture === \"fi\" ? Translations_fi.CloseSystem : (culture === \"sv-FI\" ? Translations_sv_FI.CloseSystem : Translations_en_US.CloseSystem);\r\n\t\tTranslations.OldestMessage = culture === \"fi\" ? Translations_fi.OldestMessage : (culture === \"sv-FI\" ? Translations_sv_FI.OldestMessage : Translations_en_US.OldestMessage);\r\n\t\tTranslations.PositionErrorUnavailable = culture === \"fi\" ? Translations_fi.PositionErrorUnavailable : (culture === \"sv-FI\" ? Translations_sv_FI.PositionErrorUnavailable : Translations_en_US.PositionErrorUnavailable);\r\n\t\tTranslations.AddNotifiedPerson = culture === \"fi\" ? Translations_fi.AddNotifiedPerson : (culture === \"sv-FI\" ? Translations_sv_FI.AddNotifiedPerson : Translations_en_US.AddNotifiedPerson);\r\n\t\tTranslations.DeletingUserGroupsParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingUserGroupsParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingUserGroupsParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingUserGroupsParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.ExportToExcel = culture === \"fi\" ? Translations_fi.ExportToExcel : (culture === \"sv-FI\" ? Translations_sv_FI.ExportToExcel : Translations_en_US.ExportToExcel);\r\n\t\tTranslations.EmailSent = culture === \"fi\" ? Translations_fi.EmailSent : (culture === \"sv-FI\" ? Translations_sv_FI.EmailSent : Translations_en_US.EmailSent);\r\n\t\tTranslations.MaximumSizeOfDocumentThatCanBeAddedInBatchIsParameterMB = culture === \"fi\" ? Translations_fi.MaximumSizeOfDocumentThatCanBeAddedInBatchIsParameterMB : (culture === \"sv-FI\" ? Translations_sv_FI.MaximumSizeOfDocumentThatCanBeAddedInBatchIsParameterMB : Translations_en_US.MaximumSizeOfDocumentThatCanBeAddedInBatchIsParameterMB);\r\n\t\tTranslations.SavingReadReceiptWasSuccessful = culture === \"fi\" ? Translations_fi.SavingReadReceiptWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingReadReceiptWasSuccessful : Translations_en_US.SavingReadReceiptWasSuccessful);\r\n\t\tTranslations.DeletingRecordFurtherEducationParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingRecordFurtherEducationParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordFurtherEducationParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingRecordFurtherEducationParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.InstantMessageChannelArchivingTypeKeepMessages = culture === \"fi\" ? Translations_fi.InstantMessageChannelArchivingTypeKeepMessages : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageChannelArchivingTypeKeepMessages : Translations_en_US.InstantMessageChannelArchivingTypeKeepMessages);\r\n\t\tTranslations.WhistleBlowStatisticsNewRecords = culture === \"fi\" ? Translations_fi.WhistleBlowStatisticsNewRecords : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowStatisticsNewRecords : Translations_en_US.WhistleBlowStatisticsNewRecords);\r\n\t\tTranslations.FurtherEducationParameterNotFound = culture === \"fi\" ? Translations_fi.FurtherEducationParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.FurtherEducationParameterNotFound : Translations_en_US.FurtherEducationParameterNotFound);\r\n\t\tTranslations.FileRemovalWasSuccessful = culture === \"fi\" ? Translations_fi.FileRemovalWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.FileRemovalWasSuccessful : Translations_en_US.FileRemovalWasSuccessful);\r\n\t\tTranslations.ApprovalComment = culture === \"fi\" ? Translations_fi.ApprovalComment : (culture === \"sv-FI\" ? Translations_sv_FI.ApprovalComment : Translations_en_US.ApprovalComment);\r\n\t\tTranslations.ChangeSystemLanguageToSwedish = culture === \"fi\" ? Translations_fi.ChangeSystemLanguageToSwedish : (culture === \"sv-FI\" ? Translations_sv_FI.ChangeSystemLanguageToSwedish : Translations_en_US.ChangeSystemLanguageToSwedish);\r\n\t\tTranslations.MinimumPasswordLengthMustBeAtLeastParameterCharacters = culture === \"fi\" ? Translations_fi.MinimumPasswordLengthMustBeAtLeastParameterCharacters : (culture === \"sv-FI\" ? Translations_sv_FI.MinimumPasswordLengthMustBeAtLeastParameterCharacters : Translations_en_US.MinimumPasswordLengthMustBeAtLeastParameterCharacters);\r\n\t\tTranslations.EventTypeCodeIsAlreadyInUse = culture === \"fi\" ? Translations_fi.EventTypeCodeIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.EventTypeCodeIsAlreadyInUse : Translations_en_US.EventTypeCodeIsAlreadyInUse);\r\n\t\tTranslations.SavingWhistleBlowWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingWhistleBlowWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingWhistleBlowWasNotSuccessfulErrorParameter : Translations_en_US.SavingWhistleBlowWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.WhistleBlowReportHasBeenSavedBottomText = culture === \"fi\" ? Translations_fi.WhistleBlowReportHasBeenSavedBottomText : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowReportHasBeenSavedBottomText : Translations_en_US.WhistleBlowReportHasBeenSavedBottomText);\r\n\t\tTranslations.AdministratorPasswordMustBeDefined = culture === \"fi\" ? Translations_fi.AdministratorPasswordMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.AdministratorPasswordMustBeDefined : Translations_en_US.AdministratorPasswordMustBeDefined);\r\n\t\tTranslations.MessageTypeClass = culture === \"fi\" ? Translations_fi.MessageTypeClass : (culture === \"sv-FI\" ? Translations_sv_FI.MessageTypeClass : Translations_en_US.MessageTypeClass);\r\n\t\tTranslations.Returned = culture === \"fi\" ? Translations_fi.Returned : (culture === \"sv-FI\" ? Translations_sv_FI.Returned : Translations_en_US.Returned);\r\n\t\tTranslations.AccessRightWriteWhistleBlow = culture === \"fi\" ? Translations_fi.AccessRightWriteWhistleBlow : (culture === \"sv-FI\" ? Translations_sv_FI.AccessRightWriteWhistleBlow : Translations_en_US.AccessRightWriteWhistleBlow);\r\n\t\tTranslations.PublishDate = culture === \"fi\" ? Translations_fi.PublishDate : (culture === \"sv-FI\" ? Translations_sv_FI.PublishDate : Translations_en_US.PublishDate);\r\n\t\tTranslations.FormRowColumn = culture === \"fi\" ? Translations_fi.FormRowColumn : (culture === \"sv-FI\" ? Translations_sv_FI.FormRowColumn : Translations_en_US.FormRowColumn);\r\n\t\tTranslations.Functions = culture === \"fi\" ? Translations_fi.Functions : (culture === \"sv-FI\" ? Translations_sv_FI.Functions : Translations_en_US.Functions);\r\n\t\tTranslations.WhistleBlowInformantMessageConfirmation = culture === \"fi\" ? Translations_fi.WhistleBlowInformantMessageConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowInformantMessageConfirmation : Translations_en_US.WhistleBlowInformantMessageConfirmation);\r\n\t\tTranslations.WhistleBlowUrlInfo = culture === \"fi\" ? Translations_fi.WhistleBlowUrlInfo : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowUrlInfo : Translations_en_US.WhistleBlowUrlInfo);\r\n\t\tTranslations.DocumentNameConstainsIllegalCharacters = culture === \"fi\" ? Translations_fi.DocumentNameConstainsIllegalCharacters : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentNameConstainsIllegalCharacters : Translations_en_US.DocumentNameConstainsIllegalCharacters);\r\n\t\tTranslations.RemoveDefaultBasicEducation = culture === \"fi\" ? Translations_fi.RemoveDefaultBasicEducation : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveDefaultBasicEducation : Translations_en_US.RemoveDefaultBasicEducation);\r\n\t\tTranslations.EventTypeParameterIsInUseInParameterEventsAndCannotBeDeleted = culture === \"fi\" ? Translations_fi.EventTypeParameterIsInUseInParameterEventsAndCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.EventTypeParameterIsInUseInParameterEventsAndCannotBeDeleted : Translations_en_US.EventTypeParameterIsInUseInParameterEventsAndCannotBeDeleted);\r\n\t\tTranslations.FormMinimumValue = culture === \"fi\" ? Translations_fi.FormMinimumValue : (culture === \"sv-FI\" ? Translations_sv_FI.FormMinimumValue : Translations_en_US.FormMinimumValue);\r\n\t\tTranslations.IdCard = culture === \"fi\" ? Translations_fi.IdCard : (culture === \"sv-FI\" ? Translations_sv_FI.IdCard : Translations_en_US.IdCard);\r\n\t\tTranslations.SavingEventUrgencyClassParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingEventUrgencyClassParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventUrgencyClassParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingEventUrgencyClassParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.SavingDefaultHandlersWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingDefaultHandlersWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingDefaultHandlersWasNotSuccessfulConcurrencyError : Translations_en_US.SavingDefaultHandlersWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.AdditionalPermissionAInstantMessages = culture === \"fi\" ? Translations_fi.AdditionalPermissionAInstantMessages : (culture === \"sv-FI\" ? Translations_sv_FI.AdditionalPermissionAInstantMessages : Translations_en_US.AdditionalPermissionAInstantMessages);\r\n\t\tTranslations.AddEmployments = culture === \"fi\" ? Translations_fi.AddEmployments : (culture === \"sv-FI\" ? Translations_sv_FI.AddEmployments : Translations_en_US.AddEmployments);\r\n\t\tTranslations.DeletingRecordUserParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingRecordUserParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordUserParameterWasSuccessful : Translations_en_US.DeletingRecordUserParameterWasSuccessful);\r\n\t\tTranslations.AddRecordUserWithoutUserAccount = culture === \"fi\" ? Translations_fi.AddRecordUserWithoutUserAccount : (culture === \"sv-FI\" ? Translations_sv_FI.AddRecordUserWithoutUserAccount : Translations_en_US.AddRecordUserWithoutUserAccount);\r\n\t\tTranslations.AddInstantMessageUserParameterWasSuccessful = culture === \"fi\" ? Translations_fi.AddInstantMessageUserParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.AddInstantMessageUserParameterWasSuccessful : Translations_en_US.AddInstantMessageUserParameterWasSuccessful);\r\n\t\tTranslations.AddTaskPriority = culture === \"fi\" ? Translations_fi.AddTaskPriority : (culture === \"sv-FI\" ? Translations_sv_FI.AddTaskPriority : Translations_en_US.AddTaskPriority);\r\n\t\tTranslations.RemovingCalendarTaskHandlerWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.RemovingCalendarTaskHandlerWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.RemovingCalendarTaskHandlerWasNotSuccessfulErrorParameter : Translations_en_US.RemovingCalendarTaskHandlerWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.Total = culture === \"fi\" ? Translations_fi.Total : (culture === \"sv-FI\" ? Translations_sv_FI.Total : Translations_en_US.Total);\r\n\t\tTranslations.DefaultEventHandlerParameterNotFound = culture === \"fi\" ? Translations_fi.DefaultEventHandlerParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.DefaultEventHandlerParameterNotFound : Translations_en_US.DefaultEventHandlerParameterNotFound);\r\n\t\tTranslations.AddEventType = culture === \"fi\" ? Translations_fi.AddEventType : (culture === \"sv-FI\" ? Translations_sv_FI.AddEventType : Translations_en_US.AddEventType);\r\n\t\tTranslations.DeletingFileParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingFileParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingFileParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingFileParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.CompanyCodeContainsIllegalCharacters = culture === \"fi\" ? Translations_fi.CompanyCodeContainsIllegalCharacters : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyCodeContainsIllegalCharacters : Translations_en_US.CompanyCodeContainsIllegalCharacters);\r\n\t\tTranslations.SavingWhistleBlowChannelParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingWhistleBlowChannelParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingWhistleBlowChannelParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingWhistleBlowChannelParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.ScopeUnit = culture === \"fi\" ? Translations_fi.ScopeUnit : (culture === \"sv-FI\" ? Translations_sv_FI.ScopeUnit : Translations_en_US.ScopeUnit);\r\n\t\tTranslations.EditEvent = culture === \"fi\" ? Translations_fi.EditEvent : (culture === \"sv-FI\" ? Translations_sv_FI.EditEvent : Translations_en_US.EditEvent);\r\n\t\tTranslations.DoYouReallyWantToRemoveUnitParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveUnitParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveUnitParameter : Translations_en_US.DoYouReallyWantToRemoveUnitParameter);\r\n\t\tTranslations.UserRecordStatisticsExpiringInSixMonthsQualifications = culture === \"fi\" ? Translations_fi.UserRecordStatisticsExpiringInSixMonthsQualifications : (culture === \"sv-FI\" ? Translations_sv_FI.UserRecordStatisticsExpiringInSixMonthsQualifications : Translations_en_US.UserRecordStatisticsExpiringInSixMonthsQualifications);\r\n\t\tTranslations.CalendarTaskChangeSelectedDateToSeeTheTasks = culture === \"fi\" ? Translations_fi.CalendarTaskChangeSelectedDateToSeeTheTasks : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskChangeSelectedDateToSeeTheTasks : Translations_en_US.CalendarTaskChangeSelectedDateToSeeTheTasks);\r\n\t\tTranslations.Addition = culture === \"fi\" ? Translations_fi.Addition : (culture === \"sv-FI\" ? Translations_sv_FI.Addition : Translations_en_US.Addition);\r\n\t\tTranslations.AccessRightReadRecords = culture === \"fi\" ? Translations_fi.AccessRightReadRecords : (culture === \"sv-FI\" ? Translations_sv_FI.AccessRightReadRecords : Translations_en_US.AccessRightReadRecords);\r\n\t\tTranslations.AddingAttachmentsParameterWasSuccessful = culture === \"fi\" ? Translations_fi.AddingAttachmentsParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.AddingAttachmentsParameterWasSuccessful : Translations_en_US.AddingAttachmentsParameterWasSuccessful);\r\n\t\tTranslations.Sending = culture === \"fi\" ? Translations_fi.Sending : (culture === \"sv-FI\" ? Translations_sv_FI.Sending : Translations_en_US.Sending);\r\n\t\tTranslations.EventTypeBs = culture === \"fi\" ? Translations_fi.EventTypeBs : (culture === \"sv-FI\" ? Translations_sv_FI.EventTypeBs : Translations_en_US.EventTypeBs);\r\n\t\tTranslations.AttachmentImageSize = culture === \"fi\" ? Translations_fi.AttachmentImageSize : (culture === \"sv-FI\" ? Translations_sv_FI.AttachmentImageSize : Translations_en_US.AttachmentImageSize);\r\n\t\tTranslations.UserEventsNotApproved = culture === \"fi\" ? Translations_fi.UserEventsNotApproved : (culture === \"sv-FI\" ? Translations_sv_FI.UserEventsNotApproved : Translations_en_US.UserEventsNotApproved);\r\n\t\tTranslations.DeletingRecordUserEmploymentParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingRecordUserEmploymentParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordUserEmploymentParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingRecordUserEmploymentParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.DoYouReallyWantToUnlockTask = culture === \"fi\" ? Translations_fi.DoYouReallyWantToUnlockTask : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToUnlockTask : Translations_en_US.DoYouReallyWantToUnlockTask);\r\n\t\tTranslations.FormFontSize = culture === \"fi\" ? Translations_fi.FormFontSize : (culture === \"sv-FI\" ? Translations_sv_FI.FormFontSize : Translations_en_US.FormFontSize);\r\n\t\tTranslations.NewTransferredPropertyMustBeSavedBeforeAttachmentsCanBeAdded = culture === \"fi\" ? Translations_fi.NewTransferredPropertyMustBeSavedBeforeAttachmentsCanBeAdded : (culture === \"sv-FI\" ? Translations_sv_FI.NewTransferredPropertyMustBeSavedBeforeAttachmentsCanBeAdded : Translations_en_US.NewTransferredPropertyMustBeSavedBeforeAttachmentsCanBeAdded);\r\n\t\tTranslations.Name = culture === \"fi\" ? Translations_fi.Name : (culture === \"sv-FI\" ? Translations_sv_FI.Name : Translations_en_US.Name);\r\n\t\tTranslations.WhistleBlowSeverityCritical = culture === \"fi\" ? Translations_fi.WhistleBlowSeverityCritical : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowSeverityCritical : Translations_en_US.WhistleBlowSeverityCritical);\r\n\t\tTranslations.CreateReport = culture === \"fi\" ? Translations_fi.CreateReport : (culture === \"sv-FI\" ? Translations_sv_FI.CreateReport : Translations_en_US.CreateReport);\r\n\t\tTranslations.FormWidth = culture === \"fi\" ? Translations_fi.FormWidth : (culture === \"sv-FI\" ? Translations_sv_FI.FormWidth : Translations_en_US.FormWidth);\r\n\t\tTranslations.WhistleBlowMessageHasNotBeenSentCloseConfirmation = culture === \"fi\" ? Translations_fi.WhistleBlowMessageHasNotBeenSentCloseConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowMessageHasNotBeenSentCloseConfirmation : Translations_en_US.WhistleBlowMessageHasNotBeenSentCloseConfirmation);\r\n\t\tTranslations.CopyUnitDefaultHandlersAndNotifiedPersonsToAllSameLevelUnits = culture === \"fi\" ? Translations_fi.CopyUnitDefaultHandlersAndNotifiedPersonsToAllSameLevelUnits : (culture === \"sv-FI\" ? Translations_sv_FI.CopyUnitDefaultHandlersAndNotifiedPersonsToAllSameLevelUnits : Translations_en_US.CopyUnitDefaultHandlersAndNotifiedPersonsToAllSameLevelUnits);\r\n\t\tTranslations.TaskStateParameterNotFound = culture === \"fi\" ? Translations_fi.TaskStateParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.TaskStateParameterNotFound : Translations_en_US.TaskStateParameterNotFound);\r\n\t\tTranslations.DirectCosts = culture === \"fi\" ? Translations_fi.DirectCosts : (culture === \"sv-FI\" ? Translations_sv_FI.DirectCosts : Translations_en_US.DirectCosts);\r\n\t\tTranslations.DeletingRecordFurtherEducationGroupParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingRecordFurtherEducationGroupParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordFurtherEducationGroupParameterWasSuccessful : Translations_en_US.DeletingRecordFurtherEducationGroupParameterWasSuccessful);\r\n\t\tTranslations.Calendar = culture === \"fi\" ? Translations_fi.Calendar : (culture === \"sv-FI\" ? Translations_sv_FI.Calendar : Translations_en_US.Calendar);\r\n\t\tTranslations.ANew = culture === \"fi\" ? Translations_fi.ANew : (culture === \"sv-FI\" ? Translations_sv_FI.ANew : Translations_en_US.ANew);\r\n\t\tTranslations.DeletingKeywordsParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingKeywordsParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingKeywordsParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingKeywordsParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.EmailAddressDoesNotExist = culture === \"fi\" ? Translations_fi.EmailAddressDoesNotExist : (culture === \"sv-FI\" ? Translations_sv_FI.EmailAddressDoesNotExist : Translations_en_US.EmailAddressDoesNotExist);\r\n\t\tTranslations.CurrentCalendarYear = culture === \"fi\" ? Translations_fi.CurrentCalendarYear : (culture === \"sv-FI\" ? Translations_sv_FI.CurrentCalendarYear : Translations_en_US.CurrentCalendarYear);\r\n\t\tTranslations.EditLogisticVoucherTransportCompany = culture === \"fi\" ? Translations_fi.EditLogisticVoucherTransportCompany : (culture === \"sv-FI\" ? Translations_sv_FI.EditLogisticVoucherTransportCompany : Translations_en_US.EditLogisticVoucherTransportCompany);\r\n\t\tTranslations.Approved = culture === \"fi\" ? Translations_fi.Approved : (culture === \"sv-FI\" ? Translations_sv_FI.Approved : Translations_en_US.Approved);\r\n\t\tTranslations.SSRSRefreshFinishedInParameterSeconds = culture === \"fi\" ? Translations_fi.SSRSRefreshFinishedInParameterSeconds : (culture === \"sv-FI\" ? Translations_sv_FI.SSRSRefreshFinishedInParameterSeconds : Translations_en_US.SSRSRefreshFinishedInParameterSeconds);\r\n\t\tTranslations.RecordFurtherEducationGroupParameterNotFound = culture === \"fi\" ? Translations_fi.RecordFurtherEducationGroupParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.RecordFurtherEducationGroupParameterNotFound : Translations_en_US.RecordFurtherEducationGroupParameterNotFound);\r\n\t\tTranslations.ActiveTasks = culture === \"fi\" ? Translations_fi.ActiveTasks : (culture === \"sv-FI\" ? Translations_sv_FI.ActiveTasks : Translations_en_US.ActiveTasks);\r\n\t\tTranslations.DraftVersion = culture === \"fi\" ? Translations_fi.DraftVersion : (culture === \"sv-FI\" ? Translations_sv_FI.DraftVersion : Translations_en_US.DraftVersion);\r\n\t\tTranslations.FormTextArea = culture === \"fi\" ? Translations_fi.FormTextArea : (culture === \"sv-FI\" ? Translations_sv_FI.FormTextArea : Translations_en_US.FormTextArea);\r\n\t\tTranslations.RequireReadReceipt = culture === \"fi\" ? Translations_fi.RequireReadReceipt : (culture === \"sv-FI\" ? Translations_sv_FI.RequireReadReceipt : Translations_en_US.RequireReadReceipt);\r\n\t\tTranslations.WhistleBlow = culture === \"fi\" ? Translations_fi.WhistleBlow : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlow : Translations_en_US.WhistleBlow);\r\n\t\tTranslations.PreviewIsNotSupportedForThisFileType = culture === \"fi\" ? Translations_fi.PreviewIsNotSupportedForThisFileType : (culture === \"sv-FI\" ? Translations_sv_FI.PreviewIsNotSupportedForThisFileType : Translations_en_US.PreviewIsNotSupportedForThisFileType);\r\n\t\tTranslations.TransferToChannel = culture === \"fi\" ? Translations_fi.TransferToChannel : (culture === \"sv-FI\" ? Translations_sv_FI.TransferToChannel : Translations_en_US.TransferToChannel);\r\n\t\tTranslations.DoYouReallyWantToRemoveRecordUserTransferredPropertyParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveRecordUserTransferredPropertyParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveRecordUserTransferredPropertyParameter : Translations_en_US.DoYouReallyWantToRemoveRecordUserTransferredPropertyParameter);\r\n\t\tTranslations.GroupByQuarter = culture === \"fi\" ? Translations_fi.GroupByQuarter : (culture === \"sv-FI\" ? Translations_sv_FI.GroupByQuarter : Translations_en_US.GroupByQuarter);\r\n\t\tTranslations.CompanyLogo = culture === \"fi\" ? Translations_fi.CompanyLogo : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyLogo : Translations_en_US.CompanyLogo);\r\n\t\tTranslations.WhistleBlowCategoryCodeIsAlreadyInUse = culture === \"fi\" ? Translations_fi.WhistleBlowCategoryCodeIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowCategoryCodeIsAlreadyInUse : Translations_en_US.WhistleBlowCategoryCodeIsAlreadyInUse);\r\n\t\tTranslations.InvalidInvitationParameter = culture === \"fi\" ? Translations_fi.InvalidInvitationParameter : (culture === \"sv-FI\" ? Translations_sv_FI.InvalidInvitationParameter : Translations_en_US.InvalidInvitationParameter);\r\n\t\tTranslations.FileFilterParameterNotFound = culture === \"fi\" ? Translations_fi.FileFilterParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.FileFilterParameterNotFound : Translations_en_US.FileFilterParameterNotFound);\r\n\t\tTranslations.PanelSize4 = culture === \"fi\" ? Translations_fi.PanelSize4 : (culture === \"sv-FI\" ? Translations_sv_FI.PanelSize4 : Translations_en_US.PanelSize4);\r\n\t\tTranslations.DoYouReallyWantToRemoveDefaultEventHandlerParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveDefaultEventHandlerParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveDefaultEventHandlerParameter : Translations_en_US.DoYouReallyWantToRemoveDefaultEventHandlerParameter);\r\n\t\tTranslations.RestoringInstantMessageWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.RestoringInstantMessageWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.RestoringInstantMessageWasNotSuccessfulErrorParameter : Translations_en_US.RestoringInstantMessageWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.LogOut = culture === \"fi\" ? Translations_fi.LogOut : (culture === \"sv-FI\" ? Translations_sv_FI.LogOut : Translations_en_US.LogOut);\r\n\t\tTranslations.WorkShiftType = culture === \"fi\" ? Translations_fi.WorkShiftType : (culture === \"sv-FI\" ? Translations_sv_FI.WorkShiftType : Translations_en_US.WorkShiftType);\r\n\t\tTranslations.SavingUserParametersWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingUserParametersWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingUserParametersWasNotSuccessfulConcurrencyError : Translations_en_US.SavingUserParametersWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.ChangesMaxAmount = culture === \"fi\" ? Translations_fi.ChangesMaxAmount : (culture === \"sv-FI\" ? Translations_sv_FI.ChangesMaxAmount : Translations_en_US.ChangesMaxAmount);\r\n\t\tTranslations.ValidPasswordMustBeDefined = culture === \"fi\" ? Translations_fi.ValidPasswordMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.ValidPasswordMustBeDefined : Translations_en_US.ValidPasswordMustBeDefined);\r\n\t\tTranslations.AllPartners = culture === \"fi\" ? Translations_fi.AllPartners : (culture === \"sv-FI\" ? Translations_sv_FI.AllPartners : Translations_en_US.AllPartners);\r\n\t\tTranslations.EditEventTypes = culture === \"fi\" ? Translations_fi.EditEventTypes : (culture === \"sv-FI\" ? Translations_sv_FI.EditEventTypes : Translations_en_US.EditEventTypes);\r\n\t\tTranslations.ValidityEndDateExpirationTime = culture === \"fi\" ? Translations_fi.ValidityEndDateExpirationTime : (culture === \"sv-FI\" ? Translations_sv_FI.ValidityEndDateExpirationTime : Translations_en_US.ValidityEndDateExpirationTime);\r\n\t\tTranslations.DeletingTaskStatesParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingTaskStatesParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingTaskStatesParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingTaskStatesParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.Settings = culture === \"fi\" ? Translations_fi.Settings : (culture === \"sv-FI\" ? Translations_sv_FI.Settings : Translations_en_US.Settings);\r\n\t\tTranslations.TaskTypesMustBeDefinedBeforeAddingTasks = culture === \"fi\" ? Translations_fi.TaskTypesMustBeDefinedBeforeAddingTasks : (culture === \"sv-FI\" ? Translations_sv_FI.TaskTypesMustBeDefinedBeforeAddingTasks : Translations_en_US.TaskTypesMustBeDefinedBeforeAddingTasks);\r\n\t\tTranslations.DeletingCalendarTaskCategoryParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingCalendarTaskCategoryParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingCalendarTaskCategoryParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingCalendarTaskCategoryParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.SavingInstantMessageChannelParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingInstantMessageChannelParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingInstantMessageChannelParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingInstantMessageChannelParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.ValidityStartDate = culture === \"fi\" ? Translations_fi.ValidityStartDate : (culture === \"sv-FI\" ? Translations_sv_FI.ValidityStartDate : Translations_en_US.ValidityStartDate);\r\n\t\tTranslations.AllCompanies = culture === \"fi\" ? Translations_fi.AllCompanies : (culture === \"sv-FI\" ? Translations_sv_FI.AllCompanies : Translations_en_US.AllCompanies);\r\n\t\tTranslations.Scope = culture === \"fi\" ? Translations_fi.Scope : (culture === \"sv-FI\" ? Translations_sv_FI.Scope : Translations_en_US.Scope);\r\n\t\tTranslations.RenamingFolderParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.RenamingFolderParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.RenamingFolderParameterWasNotSuccessfulErrorParameter : Translations_en_US.RenamingFolderParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.DoYouReallyWantToRemoveEditableDocumentParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveEditableDocumentParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveEditableDocumentParameter : Translations_en_US.DoYouReallyWantToRemoveEditableDocumentParameter);\r\n\t\tTranslations.DeletingWhistleBlowParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingWhistleBlowParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingWhistleBlowParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingWhistleBlowParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.DoYouReallyWantToRemoveReportParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveReportParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveReportParameter : Translations_en_US.DoYouReallyWantToRemoveReportParameter);\r\n\t\tTranslations.SaveReport = culture === \"fi\" ? Translations_fi.SaveReport : (culture === \"sv-FI\" ? Translations_sv_FI.SaveReport : Translations_en_US.SaveReport);\r\n\t\tTranslations.RecordBasicEducationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted = culture === \"fi\" ? Translations_fi.RecordBasicEducationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.RecordBasicEducationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted : Translations_en_US.RecordBasicEducationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted);\r\n\t\tTranslations.Rejected = culture === \"fi\" ? Translations_fi.Rejected : (culture === \"sv-FI\" ? Translations_sv_FI.Rejected : Translations_en_US.Rejected);\r\n\t\tTranslations.AddFurtherEducationToMultipleUserRecords = culture === \"fi\" ? Translations_fi.AddFurtherEducationToMultipleUserRecords : (culture === \"sv-FI\" ? Translations_sv_FI.AddFurtherEducationToMultipleUserRecords : Translations_en_US.AddFurtherEducationToMultipleUserRecords);\r\n\t\tTranslations.PrintTextPrinted = culture === \"fi\" ? Translations_fi.PrintTextPrinted : (culture === \"sv-FI\" ? Translations_sv_FI.PrintTextPrinted : Translations_en_US.PrintTextPrinted);\r\n\t\tTranslations.FurtherEducationGroup = culture === \"fi\" ? Translations_fi.FurtherEducationGroup : (culture === \"sv-FI\" ? Translations_sv_FI.FurtherEducationGroup : Translations_en_US.FurtherEducationGroup);\r\n\t\tTranslations.WhistleBlowPasswordConfirmed = culture === \"fi\" ? Translations_fi.WhistleBlowPasswordConfirmed : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowPasswordConfirmed : Translations_en_US.WhistleBlowPasswordConfirmed);\r\n\t\tTranslations.NewPassword = culture === \"fi\" ? Translations_fi.NewPassword : (culture === \"sv-FI\" ? Translations_sv_FI.NewPassword : Translations_en_US.NewPassword);\r\n\t\tTranslations.DocumentTemplate = culture === \"fi\" ? Translations_fi.DocumentTemplate : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentTemplate : Translations_en_US.DocumentTemplate);\r\n\t\tTranslations.ToDo = culture === \"fi\" ? Translations_fi.ToDo : (culture === \"sv-FI\" ? Translations_sv_FI.ToDo : Translations_en_US.ToDo);\r\n\t\tTranslations.DoYouReallyWantToRemoveSelectedDocumentTemplates = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveSelectedDocumentTemplates : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveSelectedDocumentTemplates : Translations_en_US.DoYouReallyWantToRemoveSelectedDocumentTemplates);\r\n\t\tTranslations.FormSortField = culture === \"fi\" ? Translations_fi.FormSortField : (culture === \"sv-FI\" ? Translations_sv_FI.FormSortField : Translations_en_US.FormSortField);\r\n\t\tTranslations.DeletingInstantMessageUserParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingInstantMessageUserParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingInstantMessageUserParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingInstantMessageUserParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.EditLogisticVoucherCustomerPaymentSetting = culture === \"fi\" ? Translations_fi.EditLogisticVoucherCustomerPaymentSetting : (culture === \"sv-FI\" ? Translations_sv_FI.EditLogisticVoucherCustomerPaymentSetting : Translations_en_US.EditLogisticVoucherCustomerPaymentSetting);\r\n\t\tTranslations.FormMobile = culture === \"fi\" ? Translations_fi.FormMobile : (culture === \"sv-FI\" ? Translations_sv_FI.FormMobile : Translations_en_US.FormMobile);\r\n\t\tTranslations.PermissionDeniedForOperation = culture === \"fi\" ? Translations_fi.PermissionDeniedForOperation : (culture === \"sv-FI\" ? Translations_sv_FI.PermissionDeniedForOperation : Translations_en_US.PermissionDeniedForOperation);\r\n\t\tTranslations.NotApproved = culture === \"fi\" ? Translations_fi.NotApproved : (culture === \"sv-FI\" ? Translations_sv_FI.NotApproved : Translations_en_US.NotApproved);\r\n\t\tTranslations.RequestPasswordChangeMessage2 = culture === \"fi\" ? Translations_fi.RequestPasswordChangeMessage2 : (culture === \"sv-FI\" ? Translations_sv_FI.RequestPasswordChangeMessage2 : Translations_en_US.RequestPasswordChangeMessage2);\r\n\t\tTranslations.NoPublishedMessages = culture === \"fi\" ? Translations_fi.NoPublishedMessages : (culture === \"sv-FI\" ? Translations_sv_FI.NoPublishedMessages : Translations_en_US.NoPublishedMessages);\r\n\t\tTranslations.FormulaMax = culture === \"fi\" ? Translations_fi.FormulaMax : (culture === \"sv-FI\" ? Translations_sv_FI.FormulaMax : Translations_en_US.FormulaMax);\r\n\t\tTranslations.SavingEventSettingsWasSuccessful = culture === \"fi\" ? Translations_fi.SavingEventSettingsWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventSettingsWasSuccessful : Translations_en_US.SavingEventSettingsWasSuccessful);\r\n\t\tTranslations.DeletingDirectoryItemDocumentParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingDirectoryItemDocumentParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingDirectoryItemDocumentParameterWasSuccessful : Translations_en_US.DeletingDirectoryItemDocumentParameterWasSuccessful);\r\n\t\tTranslations.DisableExternalIntraSystemConfirmation = culture === \"fi\" ? Translations_fi.DisableExternalIntraSystemConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.DisableExternalIntraSystemConfirmation : Translations_en_US.DisableExternalIntraSystemConfirmation);\r\n\t\tTranslations.GroupByYear = culture === \"fi\" ? Translations_fi.GroupByYear : (culture === \"sv-FI\" ? Translations_sv_FI.GroupByYear : Translations_en_US.GroupByYear);\r\n\t\tTranslations.ChangingPasswordWasSuccessful = culture === \"fi\" ? Translations_fi.ChangingPasswordWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.ChangingPasswordWasSuccessful : Translations_en_US.ChangingPasswordWasSuccessful);\r\n\t\tTranslations.OldestModification = culture === \"fi\" ? Translations_fi.OldestModification : (culture === \"sv-FI\" ? Translations_sv_FI.OldestModification : Translations_en_US.OldestModification);\r\n\t\tTranslations.DeletingRecordFurtherEducationsParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingRecordFurtherEducationsParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordFurtherEducationsParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingRecordFurtherEducationsParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.FormulaSubtraction = culture === \"fi\" ? Translations_fi.FormulaSubtraction : (culture === \"sv-FI\" ? Translations_sv_FI.FormulaSubtraction : Translations_en_US.FormulaSubtraction);\r\n\t\tTranslations.MinimumPasswordLength = culture === \"fi\" ? Translations_fi.MinimumPasswordLength : (culture === \"sv-FI\" ? Translations_sv_FI.MinimumPasswordLength : Translations_en_US.MinimumPasswordLength);\r\n\t\tTranslations.DeletingCalendarTaskCategoriesParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingCalendarTaskCategoriesParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingCalendarTaskCategoriesParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingCalendarTaskCategoriesParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.AddQualificationToMultipleUserRecords = culture === \"fi\" ? Translations_fi.AddQualificationToMultipleUserRecords : (culture === \"sv-FI\" ? Translations_sv_FI.AddQualificationToMultipleUserRecords : Translations_en_US.AddQualificationToMultipleUserRecords);\r\n\t\tTranslations.FormRemoveColumnFromRowConfirmation = culture === \"fi\" ? Translations_fi.FormRemoveColumnFromRowConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.FormRemoveColumnFromRowConfirmation : Translations_en_US.FormRemoveColumnFromRowConfirmation);\r\n\t\tTranslations.AddFurtherEducationGroup = culture === \"fi\" ? Translations_fi.AddFurtherEducationGroup : (culture === \"sv-FI\" ? Translations_sv_FI.AddFurtherEducationGroup : Translations_en_US.AddFurtherEducationGroup);\r\n\t\tTranslations.ContactPerson = culture === \"fi\" ? Translations_fi.ContactPerson : (culture === \"sv-FI\" ? Translations_sv_FI.ContactPerson : Translations_en_US.ContactPerson);\r\n\t\tTranslations.FormDropdown = culture === \"fi\" ? Translations_fi.FormDropdown : (culture === \"sv-FI\" ? Translations_sv_FI.FormDropdown : Translations_en_US.FormDropdown);\r\n\t\tTranslations.SelectForm = culture === \"fi\" ? Translations_fi.SelectForm : (culture === \"sv-FI\" ? Translations_sv_FI.SelectForm : Translations_en_US.SelectForm);\r\n\t\tTranslations.ExpiringIn90Days = culture === \"fi\" ? Translations_fi.ExpiringIn90Days : (culture === \"sv-FI\" ? Translations_sv_FI.ExpiringIn90Days : Translations_en_US.ExpiringIn90Days);\r\n\t\tTranslations.WhistleBlowParameterNotFound = culture === \"fi\" ? Translations_fi.WhistleBlowParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowParameterNotFound : Translations_en_US.WhistleBlowParameterNotFound);\r\n\t\tTranslations.DeletingAttachmentsParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingAttachmentsParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingAttachmentsParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingAttachmentsParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.CheckingExistanceOfFileParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.CheckingExistanceOfFileParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.CheckingExistanceOfFileParameterWasNotSuccessfulErrorParameter : Translations_en_US.CheckingExistanceOfFileParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.UnitCodeIsAlreadyInUse = culture === \"fi\" ? Translations_fi.UnitCodeIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.UnitCodeIsAlreadyInUse : Translations_en_US.UnitCodeIsAlreadyInUse);\r\n\t\tTranslations.DeletingInstantMessageWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingInstantMessageWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingInstantMessageWasNotSuccessfulErrorParameter : Translations_en_US.DeletingInstantMessageWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.FormSizeSmall = culture === \"fi\" ? Translations_fi.FormSizeSmall : (culture === \"sv-FI\" ? Translations_sv_FI.FormSizeSmall : Translations_en_US.FormSizeSmall);\r\n\t\tTranslations.WhistleBlowChannel = culture === \"fi\" ? Translations_fi.WhistleBlowChannel : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowChannel : Translations_en_US.WhistleBlowChannel);\r\n\t\tTranslations.UpdateUserGroupParameterExternalSystemsWasSuccessful = culture === \"fi\" ? Translations_fi.UpdateUserGroupParameterExternalSystemsWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.UpdateUserGroupParameterExternalSystemsWasSuccessful : Translations_en_US.UpdateUserGroupParameterExternalSystemsWasSuccessful);\r\n\t\tTranslations.WhistleBlowEventTypeMessageAdded = culture === \"fi\" ? Translations_fi.WhistleBlowEventTypeMessageAdded : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowEventTypeMessageAdded : Translations_en_US.WhistleBlowEventTypeMessageAdded);\r\n\t\tTranslations.Modification = culture === \"fi\" ? Translations_fi.Modification : (culture === \"sv-FI\" ? Translations_sv_FI.Modification : Translations_en_US.Modification);\r\n\t\tTranslations.CreatingUserTokenWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.CreatingUserTokenWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.CreatingUserTokenWasNotSuccessfulErrorParameter : Translations_en_US.CreatingUserTokenWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.AddWhistleBlowCategory = culture === \"fi\" ? Translations_fi.AddWhistleBlowCategory : (culture === \"sv-FI\" ? Translations_sv_FI.AddWhistleBlowCategory : Translations_en_US.AddWhistleBlowCategory);\r\n\t\tTranslations.LanguageEnglish = culture === \"fi\" ? Translations_fi.LanguageEnglish : (culture === \"sv-FI\" ? Translations_sv_FI.LanguageEnglish : Translations_en_US.LanguageEnglish);\r\n\t\tTranslations.SavingFileFilterParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingFileFilterParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingFileFilterParameterWasSuccessful : Translations_en_US.SavingFileFilterParameterWasSuccessful);\r\n\t\tTranslations.Invited = culture === \"fi\" ? Translations_fi.Invited : (culture === \"sv-FI\" ? Translations_sv_FI.Invited : Translations_en_US.Invited);\r\n\t\tTranslations.NoneSelected = culture === \"fi\" ? Translations_fi.NoneSelected : (culture === \"sv-FI\" ? Translations_sv_FI.NoneSelected : Translations_en_US.NoneSelected);\r\n\t\tTranslations.GroupByUnit = culture === \"fi\" ? Translations_fi.GroupByUnit : (culture === \"sv-FI\" ? Translations_sv_FI.GroupByUnit : Translations_en_US.GroupByUnit);\r\n\t\tTranslations.RemoveTaskType = culture === \"fi\" ? Translations_fi.RemoveTaskType : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveTaskType : Translations_en_US.RemoveTaskType);\r\n\t\tTranslations.DownloadFileTemplate = culture === \"fi\" ? Translations_fi.DownloadFileTemplate : (culture === \"sv-FI\" ? Translations_sv_FI.DownloadFileTemplate : Translations_en_US.DownloadFileTemplate);\r\n\t\tTranslations.AddPartnerParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.AddPartnerParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.AddPartnerParameterWasNotSuccessfulConcurrencyError : Translations_en_US.AddPartnerParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.EditCompanyTaskType = culture === \"fi\" ? Translations_fi.EditCompanyTaskType : (culture === \"sv-FI\" ? Translations_sv_FI.EditCompanyTaskType : Translations_en_US.EditCompanyTaskType);\r\n\t\tTranslations.ReportGenerationFailed = culture === \"fi\" ? Translations_fi.ReportGenerationFailed : (culture === \"sv-FI\" ? Translations_sv_FI.ReportGenerationFailed : Translations_en_US.ReportGenerationFailed);\r\n\t\tTranslations.RemoveFileFilter = culture === \"fi\" ? Translations_fi.RemoveFileFilter : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveFileFilter : Translations_en_US.RemoveFileFilter);\r\n\t\tTranslations.BrowserInfo = culture === \"fi\" ? Translations_fi.BrowserInfo : (culture === \"sv-FI\" ? Translations_sv_FI.BrowserInfo : Translations_en_US.BrowserInfo);\r\n\t\tTranslations.DeletingMessageTypeParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingMessageTypeParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingMessageTypeParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingMessageTypeParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.DoYouReallyWantToRemoveEventHandlerParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveEventHandlerParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveEventHandlerParameter : Translations_en_US.DoYouReallyWantToRemoveEventHandlerParameter);\r\n\t\tTranslations.BusinessIdentityCode = culture === \"fi\" ? Translations_fi.BusinessIdentityCode : (culture === \"sv-FI\" ? Translations_sv_FI.BusinessIdentityCode : Translations_en_US.BusinessIdentityCode);\r\n\t\tTranslations.FormRelativeDefinition = culture === \"fi\" ? Translations_fi.FormRelativeDefinition : (culture === \"sv-FI\" ? Translations_sv_FI.FormRelativeDefinition : Translations_en_US.FormRelativeDefinition);\r\n\t\tTranslations.Education = culture === \"fi\" ? Translations_fi.Education : (culture === \"sv-FI\" ? Translations_sv_FI.Education : Translations_en_US.Education);\r\n\t\tTranslations.EditLogisticVoucherCustomer = culture === \"fi\" ? Translations_fi.EditLogisticVoucherCustomer : (culture === \"sv-FI\" ? Translations_sv_FI.EditLogisticVoucherCustomer : Translations_en_US.EditLogisticVoucherCustomer);\r\n\t\tTranslations.Date = culture === \"fi\" ? Translations_fi.Date : (culture === \"sv-FI\" ? Translations_sv_FI.Date : Translations_en_US.Date);\r\n\t\tTranslations.DriversLicenseType = culture === \"fi\" ? Translations_fi.DriversLicenseType : (culture === \"sv-FI\" ? Translations_sv_FI.DriversLicenseType : Translations_en_US.DriversLicenseType);\r\n\t\tTranslations.CalendarTaskRepetitionRepeatIntervalMonthPrefix = culture === \"fi\" ? Translations_fi.CalendarTaskRepetitionRepeatIntervalMonthPrefix : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskRepetitionRepeatIntervalMonthPrefix : Translations_en_US.CalendarTaskRepetitionRepeatIntervalMonthPrefix);\r\n\t\tTranslations.ModifyDate = culture === \"fi\" ? Translations_fi.ModifyDate : (culture === \"sv-FI\" ? Translations_sv_FI.ModifyDate : Translations_en_US.ModifyDate);\r\n\t\tTranslations.LastYear = culture === \"fi\" ? Translations_fi.LastYear : (culture === \"sv-FI\" ? Translations_sv_FI.LastYear : Translations_en_US.LastYear);\r\n\t\tTranslations.EditableDocumentPublishConfirmation = culture === \"fi\" ? Translations_fi.EditableDocumentPublishConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.EditableDocumentPublishConfirmation : Translations_en_US.EditableDocumentPublishConfirmation);\r\n\t\tTranslations.BirthDate = culture === \"fi\" ? Translations_fi.BirthDate : (culture === \"sv-FI\" ? Translations_sv_FI.BirthDate : Translations_en_US.BirthDate);\r\n\t\tTranslations.EditUser = culture === \"fi\" ? Translations_fi.EditUser : (culture === \"sv-FI\" ? Translations_sv_FI.EditUser : Translations_en_US.EditUser);\r\n\t\tTranslations.EventMessageConfirmation = culture === \"fi\" ? Translations_fi.EventMessageConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.EventMessageConfirmation : Translations_en_US.EventMessageConfirmation);\r\n\t\tTranslations.CompanyInstantMessageChannels = culture === \"fi\" ? Translations_fi.CompanyInstantMessageChannels : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyInstantMessageChannels : Translations_en_US.CompanyInstantMessageChannels);\r\n\t\tTranslations.OthersLastModifications = culture === \"fi\" ? Translations_fi.OthersLastModifications : (culture === \"sv-FI\" ? Translations_sv_FI.OthersLastModifications : Translations_en_US.OthersLastModifications);\r\n\t\tTranslations.SavingTaskTypeParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingTaskTypeParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingTaskTypeParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingTaskTypeParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.ChangeToReadMode = culture === \"fi\" ? Translations_fi.ChangeToReadMode : (culture === \"sv-FI\" ? Translations_sv_FI.ChangeToReadMode : Translations_en_US.ChangeToReadMode);\r\n\t\tTranslations.AddToFavorites = culture === \"fi\" ? Translations_fi.AddToFavorites : (culture === \"sv-FI\" ? Translations_sv_FI.AddToFavorites : Translations_en_US.AddToFavorites);\r\n\t\tTranslations.EventTypeTitle = culture === \"fi\" ? Translations_fi.EventTypeTitle : (culture === \"sv-FI\" ? Translations_sv_FI.EventTypeTitle : Translations_en_US.EventTypeTitle);\r\n\t\tTranslations.AddUserGroup = culture === \"fi\" ? Translations_fi.AddUserGroup : (culture === \"sv-FI\" ? Translations_sv_FI.AddUserGroup : Translations_en_US.AddUserGroup);\r\n\t\tTranslations.Ascending = culture === \"fi\" ? Translations_fi.Ascending : (culture === \"sv-FI\" ? Translations_sv_FI.Ascending : Translations_en_US.Ascending);\r\n\t\tTranslations.AddEventMessage = culture === \"fi\" ? Translations_fi.AddEventMessage : (culture === \"sv-FI\" ? Translations_sv_FI.AddEventMessage : Translations_en_US.AddEventMessage);\r\n\t\tTranslations.DeletingRecordUserParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingRecordUserParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordUserParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingRecordUserParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.DeletingMessageTypesParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingMessageTypesParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingMessageTypesParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingMessageTypesParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.JobLineParameterNotFound = culture === \"fi\" ? Translations_fi.JobLineParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.JobLineParameterNotFound : Translations_en_US.JobLineParameterNotFound);\r\n\t\tTranslations.SavingUserParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingUserParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingUserParameterWasSuccessful : Translations_en_US.SavingUserParameterWasSuccessful);\r\n\t\tTranslations.SelectUserGroupOrUser = culture === \"fi\" ? Translations_fi.SelectUserGroupOrUser : (culture === \"sv-FI\" ? Translations_sv_FI.SelectUserGroupOrUser : Translations_en_US.SelectUserGroupOrUser);\r\n\t\tTranslations.MessageTitleMustBeDefined = culture === \"fi\" ? Translations_fi.MessageTitleMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.MessageTitleMustBeDefined : Translations_en_US.MessageTitleMustBeDefined);\r\n\t\tTranslations.Collapse = culture === \"fi\" ? Translations_fi.Collapse : (culture === \"sv-FI\" ? Translations_sv_FI.Collapse : Translations_en_US.Collapse);\r\n\t\tTranslations.NewRecordUserMustBeSavedBeforeRowsCanBeAdded = culture === \"fi\" ? Translations_fi.NewRecordUserMustBeSavedBeforeRowsCanBeAdded : (culture === \"sv-FI\" ? Translations_sv_FI.NewRecordUserMustBeSavedBeforeRowsCanBeAdded : Translations_en_US.NewRecordUserMustBeSavedBeforeRowsCanBeAdded);\r\n\t\tTranslations.RecordUserFurtherEducationParameterNotFound = culture === \"fi\" ? Translations_fi.RecordUserFurtherEducationParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.RecordUserFurtherEducationParameterNotFound : Translations_en_US.RecordUserFurtherEducationParameterNotFound);\r\n\t\tTranslations.AnyTime = culture === \"fi\" ? Translations_fi.AnyTime : (culture === \"sv-FI\" ? Translations_sv_FI.AnyTime : Translations_en_US.AnyTime);\r\n\t\tTranslations.DeletingTaskStateParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingTaskStateParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingTaskStateParameterWasSuccessful : Translations_en_US.DeletingTaskStateParameterWasSuccessful);\r\n\t\tTranslations.MoveUp = culture === \"fi\" ? Translations_fi.MoveUp : (culture === \"sv-FI\" ? Translations_sv_FI.MoveUp : Translations_en_US.MoveUp);\r\n\t\tTranslations.InvalidValueInArgumentParameter = culture === \"fi\" ? Translations_fi.InvalidValueInArgumentParameter : (culture === \"sv-FI\" ? Translations_sv_FI.InvalidValueInArgumentParameter : Translations_en_US.InvalidValueInArgumentParameter);\r\n\t\tTranslations.UpdateCompanyExternalSystemsWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.UpdateCompanyExternalSystemsWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.UpdateCompanyExternalSystemsWasNotSuccessfulConcurrencyError : Translations_en_US.UpdateCompanyExternalSystemsWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.Filters = culture === \"fi\" ? Translations_fi.Filters : (culture === \"sv-FI\" ? Translations_sv_FI.Filters : Translations_en_US.Filters);\r\n\t\tTranslations.CopyingFilesAndDocumentsToFolderParameterWasSuccessful = culture === \"fi\" ? Translations_fi.CopyingFilesAndDocumentsToFolderParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.CopyingFilesAndDocumentsToFolderParameterWasSuccessful : Translations_en_US.CopyingFilesAndDocumentsToFolderParameterWasSuccessful);\r\n\t\tTranslations.SavingEventUrgencyClassParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingEventUrgencyClassParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventUrgencyClassParameterWasSuccessful : Translations_en_US.SavingEventUrgencyClassParameterWasSuccessful);\r\n\t\tTranslations.AccessRightRead = culture === \"fi\" ? Translations_fi.AccessRightRead : (culture === \"sv-FI\" ? Translations_sv_FI.AccessRightRead : Translations_en_US.AccessRightRead);\r\n\t\tTranslations.PostalAddress = culture === \"fi\" ? Translations_fi.PostalAddress : (culture === \"sv-FI\" ? Translations_sv_FI.PostalAddress : Translations_en_US.PostalAddress);\r\n\t\tTranslations.OtherCompanies = culture === \"fi\" ? Translations_fi.OtherCompanies : (culture === \"sv-FI\" ? Translations_sv_FI.OtherCompanies : Translations_en_US.OtherCompanies);\r\n\t\tTranslations.TrainingEndDateCannotPrecedeTrainingStartDate = culture === \"fi\" ? Translations_fi.TrainingEndDateCannotPrecedeTrainingStartDate : (culture === \"sv-FI\" ? Translations_sv_FI.TrainingEndDateCannotPrecedeTrainingStartDate : Translations_en_US.TrainingEndDateCannotPrecedeTrainingStartDate);\r\n\t\tTranslations.WhistleBlowEventTypeCreated = culture === \"fi\" ? Translations_fi.WhistleBlowEventTypeCreated : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowEventTypeCreated : Translations_en_US.WhistleBlowEventTypeCreated);\r\n\t\tTranslations.RemoveDefaultEventHandler = culture === \"fi\" ? Translations_fi.RemoveDefaultEventHandler : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveDefaultEventHandler : Translations_en_US.RemoveDefaultEventHandler);\r\n\t\tTranslations.EventTypeCs = culture === \"fi\" ? Translations_fi.EventTypeCs : (culture === \"sv-FI\" ? Translations_sv_FI.EventTypeCs : Translations_en_US.EventTypeCs);\r\n\t\tTranslations.NewPasswordMustBeDefined = culture === \"fi\" ? Translations_fi.NewPasswordMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.NewPasswordMustBeDefined : Translations_en_US.NewPasswordMustBeDefined);\r\n\t\tTranslations.LockedTaskParameterCannotBeDeleted = culture === \"fi\" ? Translations_fi.LockedTaskParameterCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.LockedTaskParameterCannotBeDeleted : Translations_en_US.LockedTaskParameterCannotBeDeleted);\r\n\t\tTranslations.ApplicationName = culture === \"fi\" ? Translations_fi.ApplicationName : (culture === \"sv-FI\" ? Translations_sv_FI.ApplicationName : Translations_en_US.ApplicationName);\r\n\t\tTranslations.SavingEditableDocumentParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingEditableDocumentParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEditableDocumentParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingEditableDocumentParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.ImportUsers = culture === \"fi\" ? Translations_fi.ImportUsers : (culture === \"sv-FI\" ? Translations_sv_FI.ImportUsers : Translations_en_US.ImportUsers);\r\n\t\tTranslations.LockedEventParameterCannotBeSaved = culture === \"fi\" ? Translations_fi.LockedEventParameterCannotBeSaved : (culture === \"sv-FI\" ? Translations_sv_FI.LockedEventParameterCannotBeSaved : Translations_en_US.LockedEventParameterCannotBeSaved);\r\n\t\tTranslations.DoYouReallyWantToRemoveRecordFurtherEducationParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveRecordFurtherEducationParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveRecordFurtherEducationParameter : Translations_en_US.DoYouReallyWantToRemoveRecordFurtherEducationParameter);\r\n\t\tTranslations.DeletingWhistleBlowChannelAdminParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingWhistleBlowChannelAdminParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingWhistleBlowChannelAdminParameterWasSuccessful : Translations_en_US.DeletingWhistleBlowChannelAdminParameterWasSuccessful);\r\n\t\tTranslations.DeletingFileFilterParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingFileFilterParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingFileFilterParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingFileFilterParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.Previous = culture === \"fi\" ? Translations_fi.Previous : (culture === \"sv-FI\" ? Translations_sv_FI.Previous : Translations_en_US.Previous);\r\n\t\tTranslations.DeletingInstantMessageUsersParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingInstantMessageUsersParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingInstantMessageUsersParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingInstantMessageUsersParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.ModifyDateStartDate = culture === \"fi\" ? Translations_fi.ModifyDateStartDate : (culture === \"sv-FI\" ? Translations_sv_FI.ModifyDateStartDate : Translations_en_US.ModifyDateStartDate);\r\n\t\tTranslations.SavingCalendarTaskCategoryParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingCalendarTaskCategoryParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingCalendarTaskCategoryParameterWasSuccessful : Translations_en_US.SavingCalendarTaskCategoryParameterWasSuccessful);\r\n\t\tTranslations.EmailAddressParameterIsInvalid = culture === \"fi\" ? Translations_fi.EmailAddressParameterIsInvalid : (culture === \"sv-FI\" ? Translations_sv_FI.EmailAddressParameterIsInvalid : Translations_en_US.EmailAddressParameterIsInvalid);\r\n\t\tTranslations.EditKeyword = culture === \"fi\" ? Translations_fi.EditKeyword : (culture === \"sv-FI\" ? Translations_sv_FI.EditKeyword : Translations_en_US.EditKeyword);\r\n\t\tTranslations.DeletingEventTypeCParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingEventTypeCParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingEventTypeCParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingEventTypeCParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.SavingWhistleBlowCategoryParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingWhistleBlowCategoryParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingWhistleBlowCategoryParameterWasSuccessful : Translations_en_US.SavingWhistleBlowCategoryParameterWasSuccessful);\r\n\t\tTranslations.Required = culture === \"fi\" ? Translations_fi.Required : (culture === \"sv-FI\" ? Translations_sv_FI.Required : Translations_en_US.Required);\r\n\t\tTranslations.SavingMessageSendPushParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingMessageSendPushParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingMessageSendPushParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingMessageSendPushParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.CourseCredit = culture === \"fi\" ? Translations_fi.CourseCredit : (culture === \"sv-FI\" ? Translations_sv_FI.CourseCredit : Translations_en_US.CourseCredit);\r\n\t\tTranslations.RemoveUserGroup = culture === \"fi\" ? Translations_fi.RemoveUserGroup : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveUserGroup : Translations_en_US.RemoveUserGroup);\r\n\t\tTranslations.DeletingWhistleBlowCategoriesParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingWhistleBlowCategoriesParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingWhistleBlowCategoriesParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingWhistleBlowCategoriesParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.CalendarTaskRepetitionEndDateSuffix = culture === \"fi\" ? Translations_fi.CalendarTaskRepetitionEndDateSuffix : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskRepetitionEndDateSuffix : Translations_en_US.CalendarTaskRepetitionEndDateSuffix);\r\n\t\tTranslations.JobLineDataIsEmpty = culture === \"fi\" ? Translations_fi.JobLineDataIsEmpty : (culture === \"sv-FI\" ? Translations_sv_FI.JobLineDataIsEmpty : Translations_en_US.JobLineDataIsEmpty);\r\n\t\tTranslations.MessageUnit = culture === \"fi\" ? Translations_fi.MessageUnit : (culture === \"sv-FI\" ? Translations_sv_FI.MessageUnit : Translations_en_US.MessageUnit);\r\n\t\tTranslations.SharedReportCompany = culture === \"fi\" ? Translations_fi.SharedReportCompany : (culture === \"sv-FI\" ? Translations_sv_FI.SharedReportCompany : Translations_en_US.SharedReportCompany);\r\n\t\tTranslations.Document = culture === \"fi\" ? Translations_fi.Document : (culture === \"sv-FI\" ? Translations_sv_FI.Document : Translations_en_US.Document);\r\n\t\tTranslations.FurtherEducation = culture === \"fi\" ? Translations_fi.FurtherEducation : (culture === \"sv-FI\" ? Translations_sv_FI.FurtherEducation : Translations_en_US.FurtherEducation);\r\n\t\tTranslations.SendingPusNotificationsWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SendingPusNotificationsWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SendingPusNotificationsWasNotSuccessfulErrorParameter : Translations_en_US.SendingPusNotificationsWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.CreatingPrint = culture === \"fi\" ? Translations_fi.CreatingPrint : (culture === \"sv-FI\" ? Translations_sv_FI.CreatingPrint : Translations_en_US.CreatingPrint);\r\n\t\tTranslations.MessageVisibilityPeriodNotStarted = culture === \"fi\" ? Translations_fi.MessageVisibilityPeriodNotStarted : (culture === \"sv-FI\" ? Translations_sv_FI.MessageVisibilityPeriodNotStarted : Translations_en_US.MessageVisibilityPeriodNotStarted);\r\n\t\tTranslations.InstantMessageUserInvitationAcceptTypeAutoAcceptInvitation = culture === \"fi\" ? Translations_fi.InstantMessageUserInvitationAcceptTypeAutoAcceptInvitation : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageUserInvitationAcceptTypeAutoAcceptInvitation : Translations_en_US.InstantMessageUserInvitationAcceptTypeAutoAcceptInvitation);\r\n\t\tTranslations.WhistleBlowReport = culture === \"fi\" ? Translations_fi.WhistleBlowReport : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowReport : Translations_en_US.WhistleBlowReport);\r\n\t\tTranslations.CopyingFilesAndDocumentsToFolderParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.CopyingFilesAndDocumentsToFolderParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.CopyingFilesAndDocumentsToFolderParameterWasNotSuccessfulConcurrencyError : Translations_en_US.CopyingFilesAndDocumentsToFolderParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.Administrator = culture === \"fi\" ? Translations_fi.Administrator : (culture === \"sv-FI\" ? Translations_sv_FI.Administrator : Translations_en_US.Administrator);\r\n\t\tTranslations.RemoveUserAndRecordUserArchive = culture === \"fi\" ? Translations_fi.RemoveUserAndRecordUserArchive : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveUserAndRecordUserArchive : Translations_en_US.RemoveUserAndRecordUserArchive);\r\n\t\tTranslations.InstantMessagePartners = culture === \"fi\" ? Translations_fi.InstantMessagePartners : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessagePartners : Translations_en_US.InstantMessagePartners);\r\n\t\tTranslations.TaskPriority = culture === \"fi\" ? Translations_fi.TaskPriority : (culture === \"sv-FI\" ? Translations_sv_FI.TaskPriority : Translations_en_US.TaskPriority);\r\n\t\tTranslations.AddingRecordUserSalaryRowsWasSuccessful = culture === \"fi\" ? Translations_fi.AddingRecordUserSalaryRowsWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.AddingRecordUserSalaryRowsWasSuccessful : Translations_en_US.AddingRecordUserSalaryRowsWasSuccessful);\r\n\t\tTranslations.ChangeSystemLanguageToEnglish = culture === \"fi\" ? Translations_fi.ChangeSystemLanguageToEnglish : (culture === \"sv-FI\" ? Translations_sv_FI.ChangeSystemLanguageToEnglish : Translations_en_US.ChangeSystemLanguageToEnglish);\r\n\t\tTranslations.RemovingEventHandlerWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.RemovingEventHandlerWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.RemovingEventHandlerWasNotSuccessfulErrorParameter : Translations_en_US.RemovingEventHandlerWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.Partner = culture === \"fi\" ? Translations_fi.Partner : (culture === \"sv-FI\" ? Translations_sv_FI.Partner : Translations_en_US.Partner);\r\n\t\tTranslations.DoYouReallyWantToRemoveMessageParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveMessageParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveMessageParameter : Translations_en_US.DoYouReallyWantToRemoveMessageParameter);\r\n\t\tTranslations.RemoveTarget = culture === \"fi\" ? Translations_fi.RemoveTarget : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveTarget : Translations_en_US.RemoveTarget);\r\n\t\tTranslations.AddCommentsToEvent = culture === \"fi\" ? Translations_fi.AddCommentsToEvent : (culture === \"sv-FI\" ? Translations_sv_FI.AddCommentsToEvent : Translations_en_US.AddCommentsToEvent);\r\n\t\tTranslations.Companies = culture === \"fi\" ? Translations_fi.Companies : (culture === \"sv-FI\" ? Translations_sv_FI.Companies : Translations_en_US.Companies);\r\n\t\tTranslations.FormTextAlignmentRight = culture === \"fi\" ? Translations_fi.FormTextAlignmentRight : (culture === \"sv-FI\" ? Translations_sv_FI.FormTextAlignmentRight : Translations_en_US.FormTextAlignmentRight);\r\n\t\tTranslations.PanelSize3 = culture === \"fi\" ? Translations_fi.PanelSize3 : (culture === \"sv-FI\" ? Translations_sv_FI.PanelSize3 : Translations_en_US.PanelSize3);\r\n\t\tTranslations.SaveAndPublish = culture === \"fi\" ? Translations_fi.SaveAndPublish : (culture === \"sv-FI\" ? Translations_sv_FI.SaveAndPublish : Translations_en_US.SaveAndPublish);\r\n\t\tTranslations.CalendarTasks = culture === \"fi\" ? Translations_fi.CalendarTasks : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTasks : Translations_en_US.CalendarTasks);\r\n\t\tTranslations.DeletingRecordFamiliarizationsParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingRecordFamiliarizationsParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordFamiliarizationsParameterWasSuccessful : Translations_en_US.DeletingRecordFamiliarizationsParameterWasSuccessful);\r\n\t\tTranslations.HoursPerTrainingDay = culture === \"fi\" ? Translations_fi.HoursPerTrainingDay : (culture === \"sv-FI\" ? Translations_sv_FI.HoursPerTrainingDay : Translations_en_US.HoursPerTrainingDay);\r\n\t\tTranslations.PasswordMustBeDefined = culture === \"fi\" ? Translations_fi.PasswordMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.PasswordMustBeDefined : Translations_en_US.PasswordMustBeDefined);\r\n\t\tTranslations.RemoveEventTypeC = culture === \"fi\" ? Translations_fi.RemoveEventTypeC : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveEventTypeC : Translations_en_US.RemoveEventTypeC);\r\n\t\tTranslations.ExitingInstantMessageChannelWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.ExitingInstantMessageChannelWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.ExitingInstantMessageChannelWasNotSuccessfulErrorParameter : Translations_en_US.ExitingInstantMessageChannelWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.ExitInstantMessageChannel = culture === \"fi\" ? Translations_fi.ExitInstantMessageChannel : (culture === \"sv-FI\" ? Translations_sv_FI.ExitInstantMessageChannel : Translations_en_US.ExitInstantMessageChannel);\r\n\t\tTranslations.SavePrint = culture === \"fi\" ? Translations_fi.SavePrint : (culture === \"sv-FI\" ? Translations_sv_FI.SavePrint : Translations_en_US.SavePrint);\r\n\t\tTranslations.AddLogisticVoucherTransportCompany = culture === \"fi\" ? Translations_fi.AddLogisticVoucherTransportCompany : (culture === \"sv-FI\" ? Translations_sv_FI.AddLogisticVoucherTransportCompany : Translations_en_US.AddLogisticVoucherTransportCompany);\r\n\t\tTranslations.DefineRecordUserFurtherEducation = culture === \"fi\" ? Translations_fi.DefineRecordUserFurtherEducation : (culture === \"sv-FI\" ? Translations_sv_FI.DefineRecordUserFurtherEducation : Translations_en_US.DefineRecordUserFurtherEducation);\r\n\t\tTranslations.EventPartnerIsAlreadyInDefined = culture === \"fi\" ? Translations_fi.EventPartnerIsAlreadyInDefined : (culture === \"sv-FI\" ? Translations_sv_FI.EventPartnerIsAlreadyInDefined : Translations_en_US.EventPartnerIsAlreadyInDefined);\r\n\t\tTranslations.BasicEducationsMustBeDefinedBeforeAddingRecordUsers = culture === \"fi\" ? Translations_fi.BasicEducationsMustBeDefinedBeforeAddingRecordUsers : (culture === \"sv-FI\" ? Translations_sv_FI.BasicEducationsMustBeDefinedBeforeAddingRecordUsers : Translations_en_US.BasicEducationsMustBeDefinedBeforeAddingRecordUsers);\r\n\t\tTranslations.FormulaRemainder = culture === \"fi\" ? Translations_fi.FormulaRemainder : (culture === \"sv-FI\" ? Translations_sv_FI.FormulaRemainder : Translations_en_US.FormulaRemainder);\r\n\t\tTranslations.SavingEventTypeBParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingEventTypeBParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventTypeBParameterWasSuccessful : Translations_en_US.SavingEventTypeBParameterWasSuccessful);\r\n\t\tTranslations.EventsDashboard = culture === \"fi\" ? Translations_fi.EventsDashboard : (culture === \"sv-FI\" ? Translations_sv_FI.EventsDashboard : Translations_en_US.EventsDashboard);\r\n\t\tTranslations.UserAccountConnected = culture === \"fi\" ? Translations_fi.UserAccountConnected : (culture === \"sv-FI\" ? Translations_sv_FI.UserAccountConnected : Translations_en_US.UserAccountConnected);\r\n\t\tTranslations.DeletingDirectoryItemFolderParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingDirectoryItemFolderParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingDirectoryItemFolderParameterWasSuccessful : Translations_en_US.DeletingDirectoryItemFolderParameterWasSuccessful);\r\n\t\tTranslations.Card = culture === \"fi\" ? Translations_fi.Card : (culture === \"sv-FI\" ? Translations_sv_FI.Card : Translations_en_US.Card);\r\n\t\tTranslations.SavingRecordFamiliarizationParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingRecordFamiliarizationParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingRecordFamiliarizationParameterWasSuccessful : Translations_en_US.SavingRecordFamiliarizationParameterWasSuccessful);\r\n\t\tTranslations.SelectState = culture === \"fi\" ? Translations_fi.SelectState : (culture === \"sv-FI\" ? Translations_sv_FI.SelectState : Translations_en_US.SelectState);\r\n\t\tTranslations.Qualification = culture === \"fi\" ? Translations_fi.Qualification : (culture === \"sv-FI\" ? Translations_sv_FI.Qualification : Translations_en_US.Qualification);\r\n\t\tTranslations.GroupByPerson = culture === \"fi\" ? Translations_fi.GroupByPerson : (culture === \"sv-FI\" ? Translations_sv_FI.GroupByPerson : Translations_en_US.GroupByPerson);\r\n\t\tTranslations.DeletingWhistleBlowCategoryParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingWhistleBlowCategoryParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingWhistleBlowCategoryParameterWasSuccessful : Translations_en_US.DeletingWhistleBlowCategoryParameterWasSuccessful);\r\n\t\tTranslations.AddFurtherEducation = culture === \"fi\" ? Translations_fi.AddFurtherEducation : (culture === \"sv-FI\" ? Translations_sv_FI.AddFurtherEducation : Translations_en_US.AddFurtherEducation);\r\n\t\tTranslations.UnitNameMustBeDefined = culture === \"fi\" ? Translations_fi.UnitNameMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.UnitNameMustBeDefined : Translations_en_US.UnitNameMustBeDefined);\r\n\t\tTranslations.NewFurtherEducationMustBeSavedBeforeAttachmentsCanBeAdded = culture === \"fi\" ? Translations_fi.NewFurtherEducationMustBeSavedBeforeAttachmentsCanBeAdded : (culture === \"sv-FI\" ? Translations_sv_FI.NewFurtherEducationMustBeSavedBeforeAttachmentsCanBeAdded : Translations_en_US.NewFurtherEducationMustBeSavedBeforeAttachmentsCanBeAdded);\r\n\t\tTranslations.EventHandlersExcelTitle = culture === \"fi\" ? Translations_fi.EventHandlersExcelTitle : (culture === \"sv-FI\" ? Translations_sv_FI.EventHandlersExcelTitle : Translations_en_US.EventHandlersExcelTitle);\r\n\t\tTranslations.ActiveState = culture === \"fi\" ? Translations_fi.ActiveState : (culture === \"sv-FI\" ? Translations_sv_FI.ActiveState : Translations_en_US.ActiveState);\r\n\t\tTranslations.UpdateUserParameterExternalSystemsWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.UpdateUserParameterExternalSystemsWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.UpdateUserParameterExternalSystemsWasNotSuccessfulConcurrencyError : Translations_en_US.UpdateUserParameterExternalSystemsWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.AddEditableDocument = culture === \"fi\" ? Translations_fi.AddEditableDocument : (culture === \"sv-FI\" ? Translations_sv_FI.AddEditableDocument : Translations_en_US.AddEditableDocument);\r\n\t\tTranslations.SharedReport = culture === \"fi\" ? Translations_fi.SharedReport : (culture === \"sv-FI\" ? Translations_sv_FI.SharedReport : Translations_en_US.SharedReport);\r\n\t\tTranslations.NewRecordUserMustBeSavedBeforeTransferredPropertiesCanBeAdded = culture === \"fi\" ? Translations_fi.NewRecordUserMustBeSavedBeforeTransferredPropertiesCanBeAdded : (culture === \"sv-FI\" ? Translations_sv_FI.NewRecordUserMustBeSavedBeforeTransferredPropertiesCanBeAdded : Translations_en_US.NewRecordUserMustBeSavedBeforeTransferredPropertiesCanBeAdded);\r\n\t\tTranslations.SavingDirectoryItemFolderParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingDirectoryItemFolderParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingDirectoryItemFolderParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingDirectoryItemFolderParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.AccessRightWriteEvents = culture === \"fi\" ? Translations_fi.AccessRightWriteEvents : (culture === \"sv-FI\" ? Translations_sv_FI.AccessRightWriteEvents : Translations_en_US.AccessRightWriteEvents);\r\n\t\tTranslations.PageBreakBetweenGroups = culture === \"fi\" ? Translations_fi.PageBreakBetweenGroups : (culture === \"sv-FI\" ? Translations_sv_FI.PageBreakBetweenGroups : Translations_en_US.PageBreakBetweenGroups);\r\n\t\tTranslations.SavingRecordFurtherEducationParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingRecordFurtherEducationParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingRecordFurtherEducationParameterWasSuccessful : Translations_en_US.SavingRecordFurtherEducationParameterWasSuccessful);\r\n\t\tTranslations.DeletingMessageTypesParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingMessageTypesParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingMessageTypesParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingMessageTypesParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.DocumentModified = culture === \"fi\" ? Translations_fi.DocumentModified : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentModified : Translations_en_US.DocumentModified);\r\n\t\tTranslations.FamiliarizationTrainer = culture === \"fi\" ? Translations_fi.FamiliarizationTrainer : (culture === \"sv-FI\" ? Translations_sv_FI.FamiliarizationTrainer : Translations_en_US.FamiliarizationTrainer);\r\n\t\tTranslations.CompanyCodeClaimNotFound = culture === \"fi\" ? Translations_fi.CompanyCodeClaimNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyCodeClaimNotFound : Translations_en_US.CompanyCodeClaimNotFound);\r\n\t\tTranslations.RecordFamiliarizationCodeIsAlreadyInUse = culture === \"fi\" ? Translations_fi.RecordFamiliarizationCodeIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.RecordFamiliarizationCodeIsAlreadyInUse : Translations_en_US.RecordFamiliarizationCodeIsAlreadyInUse);\r\n\t\tTranslations.AddLogisticVoucherCustomer = culture === \"fi\" ? Translations_fi.AddLogisticVoucherCustomer : (culture === \"sv-FI\" ? Translations_sv_FI.AddLogisticVoucherCustomer : Translations_en_US.AddLogisticVoucherCustomer);\r\n\t\tTranslations.RecordBasicEducationParameterNotFound = culture === \"fi\" ? Translations_fi.RecordBasicEducationParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.RecordBasicEducationParameterNotFound : Translations_en_US.RecordBasicEducationParameterNotFound);\r\n\t\tTranslations.DefaultSettings = culture === \"fi\" ? Translations_fi.DefaultSettings : (culture === \"sv-FI\" ? Translations_sv_FI.DefaultSettings : Translations_en_US.DefaultSettings);\r\n\t\tTranslations.InvalidRequest = culture === \"fi\" ? Translations_fi.InvalidRequest : (culture === \"sv-FI\" ? Translations_sv_FI.InvalidRequest : Translations_en_US.InvalidRequest);\r\n\t\tTranslations.CompanyToken = culture === \"fi\" ? Translations_fi.CompanyToken : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyToken : Translations_en_US.CompanyToken);\r\n\t\tTranslations.InstantMessageParameterNotFound = culture === \"fi\" ? Translations_fi.InstantMessageParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageParameterNotFound : Translations_en_US.InstantMessageParameterNotFound);\r\n\t\tTranslations.SomeInstantMessageUsersHaveReadMessage = culture === \"fi\" ? Translations_fi.SomeInstantMessageUsersHaveReadMessage : (culture === \"sv-FI\" ? Translations_sv_FI.SomeInstantMessageUsersHaveReadMessage : Translations_en_US.SomeInstantMessageUsersHaveReadMessage);\r\n\t\tTranslations.CompanyCodeIsAlreadyInUse = culture === \"fi\" ? Translations_fi.CompanyCodeIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyCodeIsAlreadyInUse : Translations_en_US.CompanyCodeIsAlreadyInUse);\r\n\t\tTranslations.DeletingEventPartnerParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingEventPartnerParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingEventPartnerParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingEventPartnerParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.ShowSchema = culture === \"fi\" ? Translations_fi.ShowSchema : (culture === \"sv-FI\" ? Translations_sv_FI.ShowSchema : Translations_en_US.ShowSchema);\r\n\t\tTranslations.SharedDocumentTemplate = culture === \"fi\" ? Translations_fi.SharedDocumentTemplate : (culture === \"sv-FI\" ? Translations_sv_FI.SharedDocumentTemplate : Translations_en_US.SharedDocumentTemplate);\r\n\t\tTranslations.CalendarTaskOpenOccurrence = culture === \"fi\" ? Translations_fi.CalendarTaskOpenOccurrence : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskOpenOccurrence : Translations_en_US.CalendarTaskOpenOccurrence);\r\n\t\tTranslations.NameIsAlreadyInUse = culture === \"fi\" ? Translations_fi.NameIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.NameIsAlreadyInUse : Translations_en_US.NameIsAlreadyInUse);\r\n\t\tTranslations.SavingEditableDocumentParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingEditableDocumentParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEditableDocumentParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingEditableDocumentParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.PreviousCalendarWeek = culture === \"fi\" ? Translations_fi.PreviousCalendarWeek : (culture === \"sv-FI\" ? Translations_sv_FI.PreviousCalendarWeek : Translations_en_US.PreviousCalendarWeek);\r\n\t\tTranslations.DocumentEndDate = culture === \"fi\" ? Translations_fi.DocumentEndDate : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentEndDate : Translations_en_US.DocumentEndDate);\r\n\t\tTranslations.EnableExternalIntraSystemConfirmation = culture === \"fi\" ? Translations_fi.EnableExternalIntraSystemConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.EnableExternalIntraSystemConfirmation : Translations_en_US.EnableExternalIntraSystemConfirmation);\r\n\t\tTranslations.DocumentNameParameterConstainsIllegalCharacters = culture === \"fi\" ? Translations_fi.DocumentNameParameterConstainsIllegalCharacters : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentNameParameterConstainsIllegalCharacters : Translations_en_US.DocumentNameParameterConstainsIllegalCharacters);\r\n\t\tTranslations.Unlock = culture === \"fi\" ? Translations_fi.Unlock : (culture === \"sv-FI\" ? Translations_sv_FI.Unlock : Translations_en_US.Unlock);\r\n\t\tTranslations.ActiveUserTasks = culture === \"fi\" ? Translations_fi.ActiveUserTasks : (culture === \"sv-FI\" ? Translations_sv_FI.ActiveUserTasks : Translations_en_US.ActiveUserTasks);\r\n\t\tTranslations.CalendarTaskRepetitionRepeatIntervalMonthSuffix = culture === \"fi\" ? Translations_fi.CalendarTaskRepetitionRepeatIntervalMonthSuffix : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskRepetitionRepeatIntervalMonthSuffix : Translations_en_US.CalendarTaskRepetitionRepeatIntervalMonthSuffix);\r\n\t\tTranslations.WhistleBlowStatisticsNonAnonymousRecords = culture === \"fi\" ? Translations_fi.WhistleBlowStatisticsNonAnonymousRecords : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowStatisticsNonAnonymousRecords : Translations_en_US.WhistleBlowStatisticsNonAnonymousRecords);\r\n\t\tTranslations.DefaultFamiliarizations = culture === \"fi\" ? Translations_fi.DefaultFamiliarizations : (culture === \"sv-FI\" ? Translations_sv_FI.DefaultFamiliarizations : Translations_en_US.DefaultFamiliarizations);\r\n\t\tTranslations.FolderNameMustBeDefined = culture === \"fi\" ? Translations_fi.FolderNameMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.FolderNameMustBeDefined : Translations_en_US.FolderNameMustBeDefined);\r\n\t\tTranslations.WhistleBlowEventTypeAttachmentsRemoved = culture === \"fi\" ? Translations_fi.WhistleBlowEventTypeAttachmentsRemoved : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowEventTypeAttachmentsRemoved : Translations_en_US.WhistleBlowEventTypeAttachmentsRemoved);\r\n\t\tTranslations.RemovingWhistleBlowHandlerWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.RemovingWhistleBlowHandlerWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.RemovingWhistleBlowHandlerWasNotSuccessfulErrorParameter : Translations_en_US.RemovingWhistleBlowHandlerWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.PermissionsForSection = culture === \"fi\" ? Translations_fi.PermissionsForSection : (culture === \"sv-FI\" ? Translations_sv_FI.PermissionsForSection : Translations_en_US.PermissionsForSection);\r\n\t\tTranslations.AdditionalPermissionAEvents = culture === \"fi\" ? Translations_fi.AdditionalPermissionAEvents : (culture === \"sv-FI\" ? Translations_sv_FI.AdditionalPermissionAEvents : Translations_en_US.AdditionalPermissionAEvents);\r\n\t\tTranslations.FormProperties = culture === \"fi\" ? Translations_fi.FormProperties : (culture === \"sv-FI\" ? Translations_sv_FI.FormProperties : Translations_en_US.FormProperties);\r\n\t\tTranslations.AuthorizationLevelAdmin = culture === \"fi\" ? Translations_fi.AuthorizationLevelAdmin : (culture === \"sv-FI\" ? Translations_sv_FI.AuthorizationLevelAdmin : Translations_en_US.AuthorizationLevelAdmin);\r\n\t\tTranslations.SavingEventTypeBsWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingEventTypeBsWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventTypeBsWasNotSuccessfulErrorParameter : Translations_en_US.SavingEventTypeBsWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.NewComment = culture === \"fi\" ? Translations_fi.NewComment : (culture === \"sv-FI\" ? Translations_sv_FI.NewComment : Translations_en_US.NewComment);\r\n\t\tTranslations.ExternalIntraSystems = culture === \"fi\" ? Translations_fi.ExternalIntraSystems : (culture === \"sv-FI\" ? Translations_sv_FI.ExternalIntraSystems : Translations_en_US.ExternalIntraSystems);\r\n\t\tTranslations.SelectUserGroup = culture === \"fi\" ? Translations_fi.SelectUserGroup : (culture === \"sv-FI\" ? Translations_sv_FI.SelectUserGroup : Translations_en_US.SelectUserGroup);\r\n\t\tTranslations.TaskDataRows = culture === \"fi\" ? Translations_fi.TaskDataRows : (culture === \"sv-FI\" ? Translations_sv_FI.TaskDataRows : Translations_en_US.TaskDataRows);\r\n\t\tTranslations.PathMustBeDefined = culture === \"fi\" ? Translations_fi.PathMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.PathMustBeDefined : Translations_en_US.PathMustBeDefined);\r\n\t\tTranslations.RenewPersonalization = culture === \"fi\" ? Translations_fi.RenewPersonalization : (culture === \"sv-FI\" ? Translations_sv_FI.RenewPersonalization : Translations_en_US.RenewPersonalization);\r\n\t\tTranslations.AttachmentParameterDownloaded = culture === \"fi\" ? Translations_fi.AttachmentParameterDownloaded : (culture === \"sv-FI\" ? Translations_sv_FI.AttachmentParameterDownloaded : Translations_en_US.AttachmentParameterDownloaded);\r\n\t\tTranslations.AddDefaultHandler = culture === \"fi\" ? Translations_fi.AddDefaultHandler : (culture === \"sv-FI\" ? Translations_sv_FI.AddDefaultHandler : Translations_en_US.AddDefaultHandler);\r\n\t\tTranslations.VerifyUserName = culture === \"fi\" ? Translations_fi.VerifyUserName : (culture === \"sv-FI\" ? Translations_sv_FI.VerifyUserName : Translations_en_US.VerifyUserName);\r\n\t\tTranslations.CalendarTaskCategory = culture === \"fi\" ? Translations_fi.CalendarTaskCategory : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskCategory : Translations_en_US.CalendarTaskCategory);\r\n\t\tTranslations.FormulaCbrt = culture === \"fi\" ? Translations_fi.FormulaCbrt : (culture === \"sv-FI\" ? Translations_sv_FI.FormulaCbrt : Translations_en_US.FormulaCbrt);\r\n\t\tTranslations.EditBasicEducation = culture === \"fi\" ? Translations_fi.EditBasicEducation : (culture === \"sv-FI\" ? Translations_sv_FI.EditBasicEducation : Translations_en_US.EditBasicEducation);\r\n\t\tTranslations.EmploymentStartDate = culture === \"fi\" ? Translations_fi.EmploymentStartDate : (culture === \"sv-FI\" ? Translations_sv_FI.EmploymentStartDate : Translations_en_US.EmploymentStartDate);\r\n\t\tTranslations.SavingEventDefaultHandlerParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingEventDefaultHandlerParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventDefaultHandlerParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingEventDefaultHandlerParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.EventTypeB = culture === \"fi\" ? Translations_fi.EventTypeB : (culture === \"sv-FI\" ? Translations_sv_FI.EventTypeB : Translations_en_US.EventTypeB);\r\n\t\tTranslations.EditCalendarTask = culture === \"fi\" ? Translations_fi.EditCalendarTask : (culture === \"sv-FI\" ? Translations_sv_FI.EditCalendarTask : Translations_en_US.EditCalendarTask);\r\n\t\tTranslations.TaskPrioritiesMustBeDefinedBeforeAddingTasks = culture === \"fi\" ? Translations_fi.TaskPrioritiesMustBeDefinedBeforeAddingTasks : (culture === \"sv-FI\" ? Translations_sv_FI.TaskPrioritiesMustBeDefinedBeforeAddingTasks : Translations_en_US.TaskPrioritiesMustBeDefinedBeforeAddingTasks);\r\n\t\tTranslations.FailureAudit = culture === \"fi\" ? Translations_fi.FailureAudit : (culture === \"sv-FI\" ? Translations_sv_FI.FailureAudit : Translations_en_US.FailureAudit);\r\n\t\tTranslations.DeletingTaskTypesParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingTaskTypesParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingTaskTypesParameterWasSuccessful : Translations_en_US.DeletingTaskTypesParameterWasSuccessful);\r\n\t\tTranslations.Expired = culture === \"fi\" ? Translations_fi.Expired : (culture === \"sv-FI\" ? Translations_sv_FI.Expired : Translations_en_US.Expired);\r\n\t\tTranslations.ParameterIsNotValidBankBICCode = culture === \"fi\" ? Translations_fi.ParameterIsNotValidBankBICCode : (culture === \"sv-FI\" ? Translations_sv_FI.ParameterIsNotValidBankBICCode : Translations_en_US.ParameterIsNotValidBankBICCode);\r\n\t\tTranslations.DefaultTaskTypes = culture === \"fi\" ? Translations_fi.DefaultTaskTypes : (culture === \"sv-FI\" ? Translations_sv_FI.DefaultTaskTypes : Translations_en_US.DefaultTaskTypes);\r\n\t\tTranslations.AddCalendarTaskCategory = culture === \"fi\" ? Translations_fi.AddCalendarTaskCategory : (culture === \"sv-FI\" ? Translations_sv_FI.AddCalendarTaskCategory : Translations_en_US.AddCalendarTaskCategory);\r\n\t\tTranslations.DefaultFurtherEducation = culture === \"fi\" ? Translations_fi.DefaultFurtherEducation : (culture === \"sv-FI\" ? Translations_sv_FI.DefaultFurtherEducation : Translations_en_US.DefaultFurtherEducation);\r\n\t\tTranslations.NoMessagesToShow = culture === \"fi\" ? Translations_fi.NoMessagesToShow : (culture === \"sv-FI\" ? Translations_sv_FI.NoMessagesToShow : Translations_en_US.NoMessagesToShow);\r\n\t\tTranslations.AddEventTypeBsToEvent = culture === \"fi\" ? Translations_fi.AddEventTypeBsToEvent : (culture === \"sv-FI\" ? Translations_sv_FI.AddEventTypeBsToEvent : Translations_en_US.AddEventTypeBsToEvent);\r\n\t\tTranslations.Selected = culture === \"fi\" ? Translations_fi.Selected : (culture === \"sv-FI\" ? Translations_sv_FI.Selected : Translations_en_US.Selected);\r\n\t\tTranslations.SavingCalendarTaskCategoryParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingCalendarTaskCategoryParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingCalendarTaskCategoryParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingCalendarTaskCategoryParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.AddingAttachmentParameterWasSuccessful = culture === \"fi\" ? Translations_fi.AddingAttachmentParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.AddingAttachmentParameterWasSuccessful : Translations_en_US.AddingAttachmentParameterWasSuccessful);\r\n\t\tTranslations.EditAll = culture === \"fi\" ? Translations_fi.EditAll : (culture === \"sv-FI\" ? Translations_sv_FI.EditAll : Translations_en_US.EditAll);\r\n\t\tTranslations.RequestParameterNotFound = culture === \"fi\" ? Translations_fi.RequestParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.RequestParameterNotFound : Translations_en_US.RequestParameterNotFound);\r\n\t\tTranslations.EventTypeCParameterIsInUseInParameterEventsAndCannotBeDeleted = culture === \"fi\" ? Translations_fi.EventTypeCParameterIsInUseInParameterEventsAndCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.EventTypeCParameterIsInUseInParameterEventsAndCannotBeDeleted : Translations_en_US.EventTypeCParameterIsInUseInParameterEventsAndCannotBeDeleted);\r\n\t\tTranslations.LastParameterYears = culture === \"fi\" ? Translations_fi.LastParameterYears : (culture === \"sv-FI\" ? Translations_sv_FI.LastParameterYears : Translations_en_US.LastParameterYears);\r\n\t\tTranslations.FileParameterIsEmpty = culture === \"fi\" ? Translations_fi.FileParameterIsEmpty : (culture === \"sv-FI\" ? Translations_sv_FI.FileParameterIsEmpty : Translations_en_US.FileParameterIsEmpty);\r\n\t\tTranslations.SelectTaskRepetitionType = culture === \"fi\" ? Translations_fi.SelectTaskRepetitionType : (culture === \"sv-FI\" ? Translations_sv_FI.SelectTaskRepetitionType : Translations_en_US.SelectTaskRepetitionType);\r\n\t\tTranslations.SavingEventTypeCsWasSuccessful = culture === \"fi\" ? Translations_fi.SavingEventTypeCsWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventTypeCsWasSuccessful : Translations_en_US.SavingEventTypeCsWasSuccessful);\r\n\t\tTranslations.TrainingStartDate = culture === \"fi\" ? Translations_fi.TrainingStartDate : (culture === \"sv-FI\" ? Translations_sv_FI.TrainingStartDate : Translations_en_US.TrainingStartDate);\r\n\t\tTranslations.MovingFilesAndDocumentsToFolderParameterWasSuccessful = culture === \"fi\" ? Translations_fi.MovingFilesAndDocumentsToFolderParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.MovingFilesAndDocumentsToFolderParameterWasSuccessful : Translations_en_US.MovingFilesAndDocumentsToFolderParameterWasSuccessful);\r\n\t\tTranslations.ImageOrPdfUpToParameterMb = culture === \"fi\" ? Translations_fi.ImageOrPdfUpToParameterMb : (culture === \"sv-FI\" ? Translations_sv_FI.ImageOrPdfUpToParameterMb : Translations_en_US.ImageOrPdfUpToParameterMb);\r\n\t\tTranslations.StandardFiltersAndReports = culture === \"fi\" ? Translations_fi.StandardFiltersAndReports : (culture === \"sv-FI\" ? Translations_sv_FI.StandardFiltersAndReports : Translations_en_US.StandardFiltersAndReports);\r\n\t\tTranslations.CopyPermissionToAllSameLevelFolders = culture === \"fi\" ? Translations_fi.CopyPermissionToAllSameLevelFolders : (culture === \"sv-FI\" ? Translations_sv_FI.CopyPermissionToAllSameLevelFolders : Translations_en_US.CopyPermissionToAllSameLevelFolders);\r\n\t\tTranslations.PanelSize = culture === \"fi\" ? Translations_fi.PanelSize : (culture === \"sv-FI\" ? Translations_sv_FI.PanelSize : Translations_en_US.PanelSize);\r\n\t\tTranslations.ExpiredPlural = culture === \"fi\" ? Translations_fi.ExpiredPlural : (culture === \"sv-FI\" ? Translations_sv_FI.ExpiredPlural : Translations_en_US.ExpiredPlural);\r\n\t\tTranslations.DocumentRootPathMustBeDefined = culture === \"fi\" ? Translations_fi.DocumentRootPathMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentRootPathMustBeDefined : Translations_en_US.DocumentRootPathMustBeDefined);\r\n\t\tTranslations.DefaultFurtherEducations = culture === \"fi\" ? Translations_fi.DefaultFurtherEducations : (culture === \"sv-FI\" ? Translations_sv_FI.DefaultFurtherEducations : Translations_en_US.DefaultFurtherEducations);\r\n\t\tTranslations.TaskState = culture === \"fi\" ? Translations_fi.TaskState : (culture === \"sv-FI\" ? Translations_sv_FI.TaskState : Translations_en_US.TaskState);\r\n\t\tTranslations.AddCompanyTaskType = culture === \"fi\" ? Translations_fi.AddCompanyTaskType : (culture === \"sv-FI\" ? Translations_sv_FI.AddCompanyTaskType : Translations_en_US.AddCompanyTaskType);\r\n\t\tTranslations.DeletingMessageTypesParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingMessageTypesParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingMessageTypesParameterWasSuccessful : Translations_en_US.DeletingMessageTypesParameterWasSuccessful);\r\n\t\tTranslations.User = culture === \"fi\" ? Translations_fi.User : (culture === \"sv-FI\" ? Translations_sv_FI.User : Translations_en_US.User);\r\n\t\tTranslations.CalendarTaskRepetitionRepeatIntervalYearlySuffix = culture === \"fi\" ? Translations_fi.CalendarTaskRepetitionRepeatIntervalYearlySuffix : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskRepetitionRepeatIntervalYearlySuffix : Translations_en_US.CalendarTaskRepetitionRepeatIntervalYearlySuffix);\r\n\t\tTranslations.FieldParameterValueMustBeDefined = culture === \"fi\" ? Translations_fi.FieldParameterValueMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.FieldParameterValueMustBeDefined : Translations_en_US.FieldParameterValueMustBeDefined);\r\n\t\tTranslations.SavingChartWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingChartWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingChartWasNotSuccessfulConcurrencyError : Translations_en_US.SavingChartWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.FormField = culture === \"fi\" ? Translations_fi.FormField : (culture === \"sv-FI\" ? Translations_sv_FI.FormField : Translations_en_US.FormField);\r\n\t\tTranslations.AddInstantMessageUsersParameterWasSuccessful = culture === \"fi\" ? Translations_fi.AddInstantMessageUsersParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.AddInstantMessageUsersParameterWasSuccessful : Translations_en_US.AddInstantMessageUsersParameterWasSuccessful);\r\n\t\tTranslations.SavingTaskPriorityParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingTaskPriorityParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingTaskPriorityParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingTaskPriorityParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.DoYouReallyWantToRemoveDocumentsParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveDocumentsParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveDocumentsParameter : Translations_en_US.DoYouReallyWantToRemoveDocumentsParameter);\r\n\t\tTranslations.CopyingFilesAndDocumentsToFolderParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.CopyingFilesAndDocumentsToFolderParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.CopyingFilesAndDocumentsToFolderParameterWasNotSuccessfulErrorParameter : Translations_en_US.CopyingFilesAndDocumentsToFolderParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.MoneyIn = culture === \"fi\" ? Translations_fi.MoneyIn : (culture === \"sv-FI\" ? Translations_sv_FI.MoneyIn : Translations_en_US.MoneyIn);\r\n\t\tTranslations.Info = culture === \"fi\" ? Translations_fi.Info : (culture === \"sv-FI\" ? Translations_sv_FI.Info : Translations_en_US.Info);\r\n\t\tTranslations.RemoveCompanyFromCompanyGroup = culture === \"fi\" ? Translations_fi.RemoveCompanyFromCompanyGroup : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveCompanyFromCompanyGroup : Translations_en_US.RemoveCompanyFromCompanyGroup);\r\n\t\tTranslations.SharedFilters = culture === \"fi\" ? Translations_fi.SharedFilters : (culture === \"sv-FI\" ? Translations_sv_FI.SharedFilters : Translations_en_US.SharedFilters);\r\n\t\tTranslations.Monthly = culture === \"fi\" ? Translations_fi.Monthly : (culture === \"sv-FI\" ? Translations_sv_FI.Monthly : Translations_en_US.Monthly);\r\n\t\tTranslations.RecordParameterLockingFailed = culture === \"fi\" ? Translations_fi.RecordParameterLockingFailed : (culture === \"sv-FI\" ? Translations_sv_FI.RecordParameterLockingFailed : Translations_en_US.RecordParameterLockingFailed);\r\n\t\tTranslations.FormDecimalNumber = culture === \"fi\" ? Translations_fi.FormDecimalNumber : (culture === \"sv-FI\" ? Translations_sv_FI.FormDecimalNumber : Translations_en_US.FormDecimalNumber);\r\n\t\tTranslations.SavingRecordFurtherEducationGroupParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingRecordFurtherEducationGroupParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingRecordFurtherEducationGroupParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingRecordFurtherEducationGroupParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.UserRecordCards = culture === \"fi\" ? Translations_fi.UserRecordCards : (culture === \"sv-FI\" ? Translations_sv_FI.UserRecordCards : Translations_en_US.UserRecordCards);\r\n\t\tTranslations.RemoveDefaultFurtherEducation = culture === \"fi\" ? Translations_fi.RemoveDefaultFurtherEducation : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveDefaultFurtherEducation : Translations_en_US.RemoveDefaultFurtherEducation);\r\n\t\tTranslations.DeletingCompanyGroupParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingCompanyGroupParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingCompanyGroupParameterWasSuccessful : Translations_en_US.DeletingCompanyGroupParameterWasSuccessful);\r\n\t\tTranslations.ModifiedBy = culture === \"fi\" ? Translations_fi.ModifiedBy : (culture === \"sv-FI\" ? Translations_sv_FI.ModifiedBy : Translations_en_US.ModifiedBy);\r\n\t\tTranslations.DeletingRecordUserTransferredPropertiesParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingRecordUserTransferredPropertiesParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordUserTransferredPropertiesParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingRecordUserTransferredPropertiesParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.SendReadReceiptConfirmation = culture === \"fi\" ? Translations_fi.SendReadReceiptConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.SendReadReceiptConfirmation : Translations_en_US.SendReadReceiptConfirmation);\r\n\t\tTranslations.AccountNumberTkbInDebit = culture === \"fi\" ? Translations_fi.AccountNumberTkbInDebit : (culture === \"sv-FI\" ? Translations_sv_FI.AccountNumberTkbInDebit : Translations_en_US.AccountNumberTkbInDebit);\r\n\t\tTranslations.EventsFound = culture === \"fi\" ? Translations_fi.EventsFound : (culture === \"sv-FI\" ? Translations_sv_FI.EventsFound : Translations_en_US.EventsFound);\r\n\t\tTranslations.DefaultLanguageHasBeenChanged = culture === \"fi\" ? Translations_fi.DefaultLanguageHasBeenChanged : (culture === \"sv-FI\" ? Translations_sv_FI.DefaultLanguageHasBeenChanged : Translations_en_US.DefaultLanguageHasBeenChanged);\r\n\t\tTranslations.UserEndDate = culture === \"fi\" ? Translations_fi.UserEndDate : (culture === \"sv-FI\" ? Translations_sv_FI.UserEndDate : Translations_en_US.UserEndDate);\r\n\t\tTranslations.SaveMessage = culture === \"fi\" ? Translations_fi.SaveMessage : (culture === \"sv-FI\" ? Translations_sv_FI.SaveMessage : Translations_en_US.SaveMessage);\r\n\t\tTranslations.KeywordCodeMustBeDefined = culture === \"fi\" ? Translations_fi.KeywordCodeMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.KeywordCodeMustBeDefined : Translations_en_US.KeywordCodeMustBeDefined);\r\n\t\tTranslations.CurrentCalendarMonth = culture === \"fi\" ? Translations_fi.CurrentCalendarMonth : (culture === \"sv-FI\" ? Translations_sv_FI.CurrentCalendarMonth : Translations_en_US.CurrentCalendarMonth);\r\n\t\tTranslations.OldPasswordIsIncorrect = culture === \"fi\" ? Translations_fi.OldPasswordIsIncorrect : (culture === \"sv-FI\" ? Translations_sv_FI.OldPasswordIsIncorrect : Translations_en_US.OldPasswordIsIncorrect);\r\n\t\tTranslations.SendingPushNotificationsToParameter = culture === \"fi\" ? Translations_fi.SendingPushNotificationsToParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SendingPushNotificationsToParameter : Translations_en_US.SendingPushNotificationsToParameter);\r\n\t\tTranslations.SavingEventTypeParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingEventTypeParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventTypeParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingEventTypeParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.ClickToCancelAutomaticLogout = culture === \"fi\" ? Translations_fi.ClickToCancelAutomaticLogout : (culture === \"sv-FI\" ? Translations_sv_FI.ClickToCancelAutomaticLogout : Translations_en_US.ClickToCancelAutomaticLogout);\r\n\t\tTranslations.FormTitles = culture === \"fi\" ? Translations_fi.FormTitles : (culture === \"sv-FI\" ? Translations_sv_FI.FormTitles : Translations_en_US.FormTitles);\r\n\t\tTranslations.TransportCompanies = culture === \"fi\" ? Translations_fi.TransportCompanies : (culture === \"sv-FI\" ? Translations_sv_FI.TransportCompanies : Translations_en_US.TransportCompanies);\r\n\t\tTranslations.RecurringCalendarTaskMustHaveAtLeastOneOccurence = culture === \"fi\" ? Translations_fi.RecurringCalendarTaskMustHaveAtLeastOneOccurence : (culture === \"sv-FI\" ? Translations_sv_FI.RecurringCalendarTaskMustHaveAtLeastOneOccurence : Translations_en_US.RecurringCalendarTaskMustHaveAtLeastOneOccurence);\r\n\t\tTranslations.DoYouReallyWantToRemoveFormParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveFormParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveFormParameter : Translations_en_US.DoYouReallyWantToRemoveFormParameter);\r\n\t\tTranslations.WriteBelowFieldWordParameterToConfirmTheOperation = culture === \"fi\" ? Translations_fi.WriteBelowFieldWordParameterToConfirmTheOperation : (culture === \"sv-FI\" ? Translations_sv_FI.WriteBelowFieldWordParameterToConfirmTheOperation : Translations_en_US.WriteBelowFieldWordParameterToConfirmTheOperation);\r\n\t\tTranslations.AddPartnersParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.AddPartnersParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.AddPartnersParameterWasNotSuccessfulErrorParameter : Translations_en_US.AddPartnersParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.SortOrder = culture === \"fi\" ? Translations_fi.SortOrder : (culture === \"sv-FI\" ? Translations_sv_FI.SortOrder : Translations_en_US.SortOrder);\r\n\t\tTranslations.NewFamiliarizationMustBeSavedBeforeAttachmentsCanBeAdded = culture === \"fi\" ? Translations_fi.NewFamiliarizationMustBeSavedBeforeAttachmentsCanBeAdded : (culture === \"sv-FI\" ? Translations_sv_FI.NewFamiliarizationMustBeSavedBeforeAttachmentsCanBeAdded : Translations_en_US.NewFamiliarizationMustBeSavedBeforeAttachmentsCanBeAdded);\r\n\t\tTranslations.LockedDocumentParameterCannotBeMoved = culture === \"fi\" ? Translations_fi.LockedDocumentParameterCannotBeMoved : (culture === \"sv-FI\" ? Translations_sv_FI.LockedDocumentParameterCannotBeMoved : Translations_en_US.LockedDocumentParameterCannotBeMoved);\r\n\t\tTranslations.AccountNumberTkbOutDebit = culture === \"fi\" ? Translations_fi.AccountNumberTkbOutDebit : (culture === \"sv-FI\" ? Translations_sv_FI.AccountNumberTkbOutDebit : Translations_en_US.AccountNumberTkbOutDebit);\r\n\t\tTranslations.ForLastParameterDays = culture === \"fi\" ? Translations_fi.ForLastParameterDays : (culture === \"sv-FI\" ? Translations_sv_FI.ForLastParameterDays : Translations_en_US.ForLastParameterDays);\r\n\t\tTranslations.DeletingMessageParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingMessageParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingMessageParameterWasSuccessful : Translations_en_US.DeletingMessageParameterWasSuccessful);\r\n\t\tTranslations.DeletingRecordBasicEducationParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingRecordBasicEducationParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordBasicEducationParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingRecordBasicEducationParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.RemoveLogisticTransportCompany = culture === \"fi\" ? Translations_fi.RemoveLogisticTransportCompany : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveLogisticTransportCompany : Translations_en_US.RemoveLogisticTransportCompany);\r\n\t\tTranslations.WhistleBlowInformantDateAndTime = culture === \"fi\" ? Translations_fi.WhistleBlowInformantDateAndTime : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowInformantDateAndTime : Translations_en_US.WhistleBlowInformantDateAndTime);\r\n\t\tTranslations.RemoveRecordUser = culture === \"fi\" ? Translations_fi.RemoveRecordUser : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveRecordUser : Translations_en_US.RemoveRecordUser);\r\n\t\tTranslations.RemoveEventTypeB = culture === \"fi\" ? Translations_fi.RemoveEventTypeB : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveEventTypeB : Translations_en_US.RemoveEventTypeB);\r\n\t\tTranslations.PanelVisible = culture === \"fi\" ? Translations_fi.PanelVisible : (culture === \"sv-FI\" ? Translations_sv_FI.PanelVisible : Translations_en_US.PanelVisible);\r\n\t\tTranslations.KeywordsOrCondition = culture === \"fi\" ? Translations_fi.KeywordsOrCondition : (culture === \"sv-FI\" ? Translations_sv_FI.KeywordsOrCondition : Translations_en_US.KeywordsOrCondition);\r\n\t\tTranslations.FormulaDateAndTimeDiffInMinutes = culture === \"fi\" ? Translations_fi.FormulaDateAndTimeDiffInMinutes : (culture === \"sv-FI\" ? Translations_sv_FI.FormulaDateAndTimeDiffInMinutes : Translations_en_US.FormulaDateAndTimeDiffInMinutes);\r\n\t\tTranslations.TaskStateLocked = culture === \"fi\" ? Translations_fi.TaskStateLocked : (culture === \"sv-FI\" ? Translations_sv_FI.TaskStateLocked : Translations_en_US.TaskStateLocked);\r\n\t\tTranslations.LockingEditableDocumentParameterWasNotSuccessful = culture === \"fi\" ? Translations_fi.LockingEditableDocumentParameterWasNotSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.LockingEditableDocumentParameterWasNotSuccessful : Translations_en_US.LockingEditableDocumentParameterWasNotSuccessful);\r\n\t\tTranslations.AdditionalPermissionBEvents = culture === \"fi\" ? Translations_fi.AdditionalPermissionBEvents : (culture === \"sv-FI\" ? Translations_sv_FI.AdditionalPermissionBEvents : Translations_en_US.AdditionalPermissionBEvents);\r\n\t\tTranslations.ArgumentParameterIsNULL = culture === \"fi\" ? Translations_fi.ArgumentParameterIsNULL : (culture === \"sv-FI\" ? Translations_sv_FI.ArgumentParameterIsNULL : Translations_en_US.ArgumentParameterIsNULL);\r\n\t\tTranslations.QualificationIsInvalid = culture === \"fi\" ? Translations_fi.QualificationIsInvalid : (culture === \"sv-FI\" ? Translations_sv_FI.QualificationIsInvalid : Translations_en_US.QualificationIsInvalid);\r\n\t\tTranslations.WhistleBlowInformantMessages = culture === \"fi\" ? Translations_fi.WhistleBlowInformantMessages : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowInformantMessages : Translations_en_US.WhistleBlowInformantMessages);\r\n\t\tTranslations.FolderParameterNotFound = culture === \"fi\" ? Translations_fi.FolderParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.FolderParameterNotFound : Translations_en_US.FolderParameterNotFound);\r\n\t\tTranslations.SavingDirectoryItemFolderParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingDirectoryItemFolderParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingDirectoryItemFolderParameterWasSuccessful : Translations_en_US.SavingDirectoryItemFolderParameterWasSuccessful);\r\n\t\tTranslations.MoveToTrashBin = culture === \"fi\" ? Translations_fi.MoveToTrashBin : (culture === \"sv-FI\" ? Translations_sv_FI.MoveToTrashBin : Translations_en_US.MoveToTrashBin);\r\n\t\tTranslations.ArchivingRecordUserFurtherEducationsWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.ArchivingRecordUserFurtherEducationsWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.ArchivingRecordUserFurtherEducationsWasNotSuccessfulErrorParameter : Translations_en_US.ArchivingRecordUserFurtherEducationsWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.IHaveForgotMyPassword = culture === \"fi\" ? Translations_fi.IHaveForgotMyPassword : (culture === \"sv-FI\" ? Translations_sv_FI.IHaveForgotMyPassword : Translations_en_US.IHaveForgotMyPassword);\r\n\t\tTranslations.SavingWhistleBlowMessageWasSuccessful = culture === \"fi\" ? Translations_fi.SavingWhistleBlowMessageWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingWhistleBlowMessageWasSuccessful : Translations_en_US.SavingWhistleBlowMessageWasSuccessful);\r\n\t\tTranslations.UserGroupParameterNotFound = culture === \"fi\" ? Translations_fi.UserGroupParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.UserGroupParameterNotFound : Translations_en_US.UserGroupParameterNotFound);\r\n\t\tTranslations.Actions = culture === \"fi\" ? Translations_fi.Actions : (culture === \"sv-FI\" ? Translations_sv_FI.Actions : Translations_en_US.Actions);\r\n\t\tTranslations.UserGroupCodeIsAlreadyInUse = culture === \"fi\" ? Translations_fi.UserGroupCodeIsAlreadyInUse : (culture === \"sv-FI\" ? Translations_sv_FI.UserGroupCodeIsAlreadyInUse : Translations_en_US.UserGroupCodeIsAlreadyInUse);\r\n\t\tTranslations.NoFilesToAdd = culture === \"fi\" ? Translations_fi.NoFilesToAdd : (culture === \"sv-FI\" ? Translations_sv_FI.NoFilesToAdd : Translations_en_US.NoFilesToAdd);\r\n\t\tTranslations.EventTypeCTitle = culture === \"fi\" ? Translations_fi.EventTypeCTitle : (culture === \"sv-FI\" ? Translations_sv_FI.EventTypeCTitle : Translations_en_US.EventTypeCTitle);\r\n\t\tTranslations.Title = culture === \"fi\" ? Translations_fi.Title : (culture === \"sv-FI\" ? Translations_sv_FI.Title : Translations_en_US.Title);\r\n\t\tTranslations.Send = culture === \"fi\" ? Translations_fi.Send : (culture === \"sv-FI\" ? Translations_sv_FI.Send : Translations_en_US.Send);\r\n\t\tTranslations.TransferredPropertyType = culture === \"fi\" ? Translations_fi.TransferredPropertyType : (culture === \"sv-FI\" ? Translations_sv_FI.TransferredPropertyType : Translations_en_US.TransferredPropertyType);\r\n\t\tTranslations.PasswordMustContainUppercaseChar = culture === \"fi\" ? Translations_fi.PasswordMustContainUppercaseChar : (culture === \"sv-FI\" ? Translations_sv_FI.PasswordMustContainUppercaseChar : Translations_en_US.PasswordMustContainUppercaseChar);\r\n\t\tTranslations.OperationAborted = culture === \"fi\" ? Translations_fi.OperationAborted : (culture === \"sv-FI\" ? Translations_sv_FI.OperationAborted : Translations_en_US.OperationAborted);\r\n\t\tTranslations.InvalidPasswordChangeRequestParameter = culture === \"fi\" ? Translations_fi.InvalidPasswordChangeRequestParameter : (culture === \"sv-FI\" ? Translations_sv_FI.InvalidPasswordChangeRequestParameter : Translations_en_US.InvalidPasswordChangeRequestParameter);\r\n\t\tTranslations.DeletingRecordBasicEducationParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingRecordBasicEducationParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordBasicEducationParameterWasSuccessful : Translations_en_US.DeletingRecordBasicEducationParameterWasSuccessful);\r\n\t\tTranslations.AddRecordUserToUserAccount = culture === \"fi\" ? Translations_fi.AddRecordUserToUserAccount : (culture === \"sv-FI\" ? Translations_sv_FI.AddRecordUserToUserAccount : Translations_en_US.AddRecordUserToUserAccount);\r\n\t\tTranslations.Landscape = culture === \"fi\" ? Translations_fi.Landscape : (culture === \"sv-FI\" ? Translations_sv_FI.Landscape : Translations_en_US.Landscape);\r\n\t\tTranslations.StateOpenPlural = culture === \"fi\" ? Translations_fi.StateOpenPlural : (culture === \"sv-FI\" ? Translations_sv_FI.StateOpenPlural : Translations_en_US.StateOpenPlural);\r\n\t\tTranslations.Comment = culture === \"fi\" ? Translations_fi.Comment : (culture === \"sv-FI\" ? Translations_sv_FI.Comment : Translations_en_US.Comment);\r\n\t\tTranslations.UsersToBeImported = culture === \"fi\" ? Translations_fi.UsersToBeImported : (culture === \"sv-FI\" ? Translations_sv_FI.UsersToBeImported : Translations_en_US.UsersToBeImported);\r\n\t\tTranslations.UserInformation = culture === \"fi\" ? Translations_fi.UserInformation : (culture === \"sv-FI\" ? Translations_sv_FI.UserInformation : Translations_en_US.UserInformation);\r\n\t\tTranslations.AdditionalPermissionBWhistleBlow = culture === \"fi\" ? Translations_fi.AdditionalPermissionBWhistleBlow : (culture === \"sv-FI\" ? Translations_sv_FI.AdditionalPermissionBWhistleBlow : Translations_en_US.AdditionalPermissionBWhistleBlow);\r\n\t\tTranslations.TakePicture = culture === \"fi\" ? Translations_fi.TakePicture : (culture === \"sv-FI\" ? Translations_sv_FI.TakePicture : Translations_en_US.TakePicture);\r\n\t\tTranslations.AddCompanies = culture === \"fi\" ? Translations_fi.AddCompanies : (culture === \"sv-FI\" ? Translations_sv_FI.AddCompanies : Translations_en_US.AddCompanies);\r\n\t\tTranslations.Language = culture === \"fi\" ? Translations_fi.Language : (culture === \"sv-FI\" ? Translations_sv_FI.Language : Translations_en_US.Language);\r\n\t\tTranslations.LogModuleProperties = culture === \"fi\" ? Translations_fi.LogModuleProperties : (culture === \"sv-FI\" ? Translations_sv_FI.LogModuleProperties : Translations_en_US.LogModuleProperties);\r\n\t\tTranslations.RemoveCalendarTask = culture === \"fi\" ? Translations_fi.RemoveCalendarTask : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveCalendarTask : Translations_en_US.RemoveCalendarTask);\r\n\t\tTranslations.SavingEventPartnerParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingEventPartnerParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventPartnerParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingEventPartnerParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.PasteGroupPermissions = culture === \"fi\" ? Translations_fi.PasteGroupPermissions : (culture === \"sv-FI\" ? Translations_sv_FI.PasteGroupPermissions : Translations_en_US.PasteGroupPermissions);\r\n\t\tTranslations.WhistleBlowSourceMail = culture === \"fi\" ? Translations_fi.WhistleBlowSourceMail : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowSourceMail : Translations_en_US.WhistleBlowSourceMail);\r\n\t\tTranslations.DoYouReallyWantToRemoveCompanyGroupParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveCompanyGroupParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveCompanyGroupParameter : Translations_en_US.DoYouReallyWantToRemoveCompanyGroupParameter);\r\n\t\tTranslations.SelectDate = culture === \"fi\" ? Translations_fi.SelectDate : (culture === \"sv-FI\" ? Translations_sv_FI.SelectDate : Translations_en_US.SelectDate);\r\n\t\tTranslations.DeletingEventTypeBParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingEventTypeBParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingEventTypeBParameterWasSuccessful : Translations_en_US.DeletingEventTypeBParameterWasSuccessful);\r\n\t\tTranslations.WhistleBlowWasNotFound = culture === \"fi\" ? Translations_fi.WhistleBlowWasNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowWasNotFound : Translations_en_US.WhistleBlowWasNotFound);\r\n\t\tTranslations.DeletingRecordFurtherEducationsParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingRecordFurtherEducationsParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordFurtherEducationsParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingRecordFurtherEducationsParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.EventTypeCParameterNotFound = culture === \"fi\" ? Translations_fi.EventTypeCParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.EventTypeCParameterNotFound : Translations_en_US.EventTypeCParameterNotFound);\r\n\t\tTranslations.IndefinitelyNoLocalization = culture === \"fi\" ? Translations_fi.IndefinitelyNoLocalization : (culture === \"sv-FI\" ? Translations_sv_FI.IndefinitelyNoLocalization : Translations_en_US.IndefinitelyNoLocalization);\r\n\t\tTranslations.TaskHandler = culture === \"fi\" ? Translations_fi.TaskHandler : (culture === \"sv-FI\" ? Translations_sv_FI.TaskHandler : Translations_en_US.TaskHandler);\r\n\t\tTranslations.Reject = culture === \"fi\" ? Translations_fi.Reject : (culture === \"sv-FI\" ? Translations_sv_FI.Reject : Translations_en_US.Reject);\r\n\t\tTranslations.EventModuleProperties = culture === \"fi\" ? Translations_fi.EventModuleProperties : (culture === \"sv-FI\" ? Translations_sv_FI.EventModuleProperties : Translations_en_US.EventModuleProperties);\r\n\t\tTranslations.DefaultEventUrgencyClasses = culture === \"fi\" ? Translations_fi.DefaultEventUrgencyClasses : (culture === \"sv-FI\" ? Translations_sv_FI.DefaultEventUrgencyClasses : Translations_en_US.DefaultEventUrgencyClasses);\r\n\t\tTranslations.ACopy = culture === \"fi\" ? Translations_fi.ACopy : (culture === \"sv-FI\" ? Translations_sv_FI.ACopy : Translations_en_US.ACopy);\r\n\t\tTranslations.EditDefaultFurtherEducation = culture === \"fi\" ? Translations_fi.EditDefaultFurtherEducation : (culture === \"sv-FI\" ? Translations_sv_FI.EditDefaultFurtherEducation : Translations_en_US.EditDefaultFurtherEducation);\r\n\t\tTranslations.EditEventTypeCs = culture === \"fi\" ? Translations_fi.EditEventTypeCs : (culture === \"sv-FI\" ? Translations_sv_FI.EditEventTypeCs : Translations_en_US.EditEventTypeCs);\r\n\t\tTranslations.BasicInformation = culture === \"fi\" ? Translations_fi.BasicInformation : (culture === \"sv-FI\" ? Translations_sv_FI.BasicInformation : Translations_en_US.BasicInformation);\r\n\t\tTranslations.SavingFileFilterParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingFileFilterParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingFileFilterParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingFileFilterParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.Clear = culture === \"fi\" ? Translations_fi.Clear : (culture === \"sv-FI\" ? Translations_sv_FI.Clear : Translations_en_US.Clear);\r\n\t\tTranslations.FormPlaceholder = culture === \"fi\" ? Translations_fi.FormPlaceholder : (culture === \"sv-FI\" ? Translations_sv_FI.FormPlaceholder : Translations_en_US.FormPlaceholder);\r\n\t\tTranslations.AuthorizationLevelSystemAdmin = culture === \"fi\" ? Translations_fi.AuthorizationLevelSystemAdmin : (culture === \"sv-FI\" ? Translations_sv_FI.AuthorizationLevelSystemAdmin : Translations_en_US.AuthorizationLevelSystemAdmin);\r\n\t\tTranslations.FollowUp = culture === \"fi\" ? Translations_fi.FollowUp : (culture === \"sv-FI\" ? Translations_sv_FI.FollowUp : Translations_en_US.FollowUp);\r\n\t\tTranslations.RequestPasswordChangeMessage1 = culture === \"fi\" ? Translations_fi.RequestPasswordChangeMessage1 : (culture === \"sv-FI\" ? Translations_sv_FI.RequestPasswordChangeMessage1 : Translations_en_US.RequestPasswordChangeMessage1);\r\n\t\tTranslations.ResetDocumentVersion = culture === \"fi\" ? Translations_fi.ResetDocumentVersion : (culture === \"sv-FI\" ? Translations_sv_FI.ResetDocumentVersion : Translations_en_US.ResetDocumentVersion);\r\n\t\tTranslations.EventTypeBParameterIsInUseInParameterEventsAndCannotBeDeleted = culture === \"fi\" ? Translations_fi.EventTypeBParameterIsInUseInParameterEventsAndCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.EventTypeBParameterIsInUseInParameterEventsAndCannotBeDeleted : Translations_en_US.EventTypeBParameterIsInUseInParameterEventsAndCannotBeDeleted);\r\n\t\tTranslations.UserRecordStatisticsArchivedCards = culture === \"fi\" ? Translations_fi.UserRecordStatisticsArchivedCards : (culture === \"sv-FI\" ? Translations_sv_FI.UserRecordStatisticsArchivedCards : Translations_en_US.UserRecordStatisticsArchivedCards);\r\n\t\tTranslations.ReadReceipts = culture === \"fi\" ? Translations_fi.ReadReceipts : (culture === \"sv-FI\" ? Translations_sv_FI.ReadReceipts : Translations_en_US.ReadReceipts);\r\n\t\tTranslations.FormulaTan = culture === \"fi\" ? Translations_fi.FormulaTan : (culture === \"sv-FI\" ? Translations_sv_FI.FormulaTan : Translations_en_US.FormulaTan);\r\n\t\tTranslations.DeletingKeywordParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingKeywordParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingKeywordParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingKeywordParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.AdminMustBeDefinedForSectionParameter = culture === \"fi\" ? Translations_fi.AdminMustBeDefinedForSectionParameter : (culture === \"sv-FI\" ? Translations_sv_FI.AdminMustBeDefinedForSectionParameter : Translations_en_US.AdminMustBeDefinedForSectionParameter);\r\n\t\tTranslations.SavingFileFilterParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingFileFilterParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingFileFilterParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingFileFilterParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.Amount = culture === \"fi\" ? Translations_fi.Amount : (culture === \"sv-FI\" ? Translations_sv_FI.Amount : Translations_en_US.Amount);\r\n\t\tTranslations.FamiliarizationStartDateDateEnd = culture === \"fi\" ? Translations_fi.FamiliarizationStartDateDateEnd : (culture === \"sv-FI\" ? Translations_sv_FI.FamiliarizationStartDateDateEnd : Translations_en_US.FamiliarizationStartDateDateEnd);\r\n\t\tTranslations.Order = culture === \"fi\" ? Translations_fi.Order : (culture === \"sv-FI\" ? Translations_sv_FI.Order : Translations_en_US.Order);\r\n\t\tTranslations.LargeSize = culture === \"fi\" ? Translations_fi.LargeSize : (culture === \"sv-FI\" ? Translations_sv_FI.LargeSize : Translations_en_US.LargeSize);\r\n\t\tTranslations.AuthorizationLevelNone = culture === \"fi\" ? Translations_fi.AuthorizationLevelNone : (culture === \"sv-FI\" ? Translations_sv_FI.AuthorizationLevelNone : Translations_en_US.AuthorizationLevelNone);\r\n\t\tTranslations.ActionsAndRootCause = culture === \"fi\" ? Translations_fi.ActionsAndRootCause : (culture === \"sv-FI\" ? Translations_sv_FI.ActionsAndRootCause : Translations_en_US.ActionsAndRootCause);\r\n\t\tTranslations.Browse = culture === \"fi\" ? Translations_fi.Browse : (culture === \"sv-FI\" ? Translations_sv_FI.Browse : Translations_en_US.Browse);\r\n\t\tTranslations.EInvoiceOperator = culture === \"fi\" ? Translations_fi.EInvoiceOperator : (culture === \"sv-FI\" ? Translations_sv_FI.EInvoiceOperator : Translations_en_US.EInvoiceOperator);\r\n\t\tTranslations.AddInstantMessageUsersParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.AddInstantMessageUsersParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.AddInstantMessageUsersParameterWasNotSuccessfulErrorParameter : Translations_en_US.AddInstantMessageUsersParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.CopyingFolderDirectoryItemParameterToFolderParameterWasSuccessful = culture === \"fi\" ? Translations_fi.CopyingFolderDirectoryItemParameterToFolderParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.CopyingFolderDirectoryItemParameterToFolderParameterWasSuccessful : Translations_en_US.CopyingFolderDirectoryItemParameterToFolderParameterWasSuccessful);\r\n\t\tTranslations.TransferredProperties = culture === \"fi\" ? Translations_fi.TransferredProperties : (culture === \"sv-FI\" ? Translations_sv_FI.TransferredProperties : Translations_en_US.TransferredProperties);\r\n\t\tTranslations.TaskDataRowMustBeSavedBeforeAttachmentsCanBeAdded = culture === \"fi\" ? Translations_fi.TaskDataRowMustBeSavedBeforeAttachmentsCanBeAdded : (culture === \"sv-FI\" ? Translations_sv_FI.TaskDataRowMustBeSavedBeforeAttachmentsCanBeAdded : Translations_en_US.TaskDataRowMustBeSavedBeforeAttachmentsCanBeAdded);\r\n\t\tTranslations.WhistleBlowCreateTime = culture === \"fi\" ? Translations_fi.WhistleBlowCreateTime : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowCreateTime : Translations_en_US.WhistleBlowCreateTime);\r\n\t\tTranslations.Last180Days = culture === \"fi\" ? Translations_fi.Last180Days : (culture === \"sv-FI\" ? Translations_sv_FI.Last180Days : Translations_en_US.Last180Days);\r\n\t\tTranslations.AddDefaultTaskPriority = culture === \"fi\" ? Translations_fi.AddDefaultTaskPriority : (culture === \"sv-FI\" ? Translations_sv_FI.AddDefaultTaskPriority : Translations_en_US.AddDefaultTaskPriority);\r\n\t\tTranslations.DocumentNameParameterIsIllegal = culture === \"fi\" ? Translations_fi.DocumentNameParameterIsIllegal : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentNameParameterIsIllegal : Translations_en_US.DocumentNameParameterIsIllegal);\r\n\t\tTranslations.InstantMessageChannelArchivingType = culture === \"fi\" ? Translations_fi.InstantMessageChannelArchivingType : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageChannelArchivingType : Translations_en_US.InstantMessageChannelArchivingType);\r\n\t\tTranslations.PrintIsEmpty = culture === \"fi\" ? Translations_fi.PrintIsEmpty : (culture === \"sv-FI\" ? Translations_sv_FI.PrintIsEmpty : Translations_en_US.PrintIsEmpty);\r\n\t\tTranslations.Custom = culture === \"fi\" ? Translations_fi.Custom : (culture === \"sv-FI\" ? Translations_sv_FI.Custom : Translations_en_US.Custom);\r\n\t\tTranslations.AddEventTypeC = culture === \"fi\" ? Translations_fi.AddEventTypeC : (culture === \"sv-FI\" ? Translations_sv_FI.AddEventTypeC : Translations_en_US.AddEventTypeC);\r\n\t\tTranslations.AddEventTypeB = culture === \"fi\" ? Translations_fi.AddEventTypeB : (culture === \"sv-FI\" ? Translations_sv_FI.AddEventTypeB : Translations_en_US.AddEventTypeB);\r\n\t\tTranslations.SavingDirectoryItemDocumentParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingDirectoryItemDocumentParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingDirectoryItemDocumentParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingDirectoryItemDocumentParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.DoYouReallyWantToRemoveRecordUserEmploymentParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveRecordUserEmploymentParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveRecordUserEmploymentParameter : Translations_en_US.DoYouReallyWantToRemoveRecordUserEmploymentParameter);\r\n\t\tTranslations.AddEvent = culture === \"fi\" ? Translations_fi.AddEvent : (culture === \"sv-FI\" ? Translations_sv_FI.AddEvent : Translations_en_US.AddEvent);\r\n\t\tTranslations.HasAttachments = culture === \"fi\" ? Translations_fi.HasAttachments : (culture === \"sv-FI\" ? Translations_sv_FI.HasAttachments : Translations_en_US.HasAttachments);\r\n\t\tTranslations.ArchiveWhistleBlows = culture === \"fi\" ? Translations_fi.ArchiveWhistleBlows : (culture === \"sv-FI\" ? Translations_sv_FI.ArchiveWhistleBlows : Translations_en_US.ArchiveWhistleBlows);\r\n\t\tTranslations.LanguageParameterIsNotSupported = culture === \"fi\" ? Translations_fi.LanguageParameterIsNotSupported : (culture === \"sv-FI\" ? Translations_sv_FI.LanguageParameterIsNotSupported : Translations_en_US.LanguageParameterIsNotSupported);\r\n\t\tTranslations.Hour = culture === \"fi\" ? Translations_fi.Hour : (culture === \"sv-FI\" ? Translations_sv_FI.Hour : Translations_en_US.Hour);\r\n\t\tTranslations.AuthorizationLevel = culture === \"fi\" ? Translations_fi.AuthorizationLevel : (culture === \"sv-FI\" ? Translations_sv_FI.AuthorizationLevel : Translations_en_US.AuthorizationLevel);\r\n\t\tTranslations.DoYouReallyWantToRemoveSelectedRecordBasicEducations = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveSelectedRecordBasicEducations : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveSelectedRecordBasicEducations : Translations_en_US.DoYouReallyWantToRemoveSelectedRecordBasicEducations);\r\n\t\tTranslations.DeletingFileFilterParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingFileFilterParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingFileFilterParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingFileFilterParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.WhistleBlowNonAnonymousReportInfo = culture === \"fi\" ? Translations_fi.WhistleBlowNonAnonymousReportInfo : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowNonAnonymousReportInfo : Translations_en_US.WhistleBlowNonAnonymousReportInfo);\r\n\t\tTranslations.Minutes = culture === \"fi\" ? Translations_fi.Minutes : (culture === \"sv-FI\" ? Translations_sv_FI.Minutes : Translations_en_US.Minutes);\r\n\t\tTranslations.LockingTaskParameterWasNotSuccessful = culture === \"fi\" ? Translations_fi.LockingTaskParameterWasNotSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.LockingTaskParameterWasNotSuccessful : Translations_en_US.LockingTaskParameterWasNotSuccessful);\r\n\t\tTranslations.DeletingDefaultEventHandlerParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingDefaultEventHandlerParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingDefaultEventHandlerParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingDefaultEventHandlerParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.HandlersAndAttachments = culture === \"fi\" ? Translations_fi.HandlersAndAttachments : (culture === \"sv-FI\" ? Translations_sv_FI.HandlersAndAttachments : Translations_en_US.HandlersAndAttachments);\r\n\t\tTranslations.TaskTypeSchemaMustBeDefined = culture === \"fi\" ? Translations_fi.TaskTypeSchemaMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.TaskTypeSchemaMustBeDefined : Translations_en_US.TaskTypeSchemaMustBeDefined);\r\n\t\tTranslations.DeletingAttachmentParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingAttachmentParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingAttachmentParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingAttachmentParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.GetMore = culture === \"fi\" ? Translations_fi.GetMore : (culture === \"sv-FI\" ? Translations_sv_FI.GetMore : Translations_en_US.GetMore);\r\n\t\tTranslations.CompanyIdClaimNotFound = culture === \"fi\" ? Translations_fi.CompanyIdClaimNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyIdClaimNotFound : Translations_en_US.CompanyIdClaimNotFound);\r\n\t\tTranslations.TaskRepetitionType = culture === \"fi\" ? Translations_fi.TaskRepetitionType : (culture === \"sv-FI\" ? Translations_sv_FI.TaskRepetitionType : Translations_en_US.TaskRepetitionType);\r\n\t\tTranslations.PositionErrorTimeout = culture === \"fi\" ? Translations_fi.PositionErrorTimeout : (culture === \"sv-FI\" ? Translations_sv_FI.PositionErrorTimeout : Translations_en_US.PositionErrorTimeout);\r\n\t\tTranslations.RestoringInstantMessageWasSuccessful = culture === \"fi\" ? Translations_fi.RestoringInstantMessageWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.RestoringInstantMessageWasSuccessful : Translations_en_US.RestoringInstantMessageWasSuccessful);\r\n\t\tTranslations.EditCompanyGroup = culture === \"fi\" ? Translations_fi.EditCompanyGroup : (culture === \"sv-FI\" ? Translations_sv_FI.EditCompanyGroup : Translations_en_US.EditCompanyGroup);\r\n\t\tTranslations.FormulaCeil = culture === \"fi\" ? Translations_fi.FormulaCeil : (culture === \"sv-FI\" ? Translations_sv_FI.FormulaCeil : Translations_en_US.FormulaCeil);\r\n\t\tTranslations.CompanyWithSysAdminAuthorizationLevelNotFound = culture === \"fi\" ? Translations_fi.CompanyWithSysAdminAuthorizationLevelNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyWithSysAdminAuthorizationLevelNotFound : Translations_en_US.CompanyWithSysAdminAuthorizationLevelNotFound);\r\n\t\tTranslations.RemovingWhistleBlowHandlersWasSuccessful = culture === \"fi\" ? Translations_fi.RemovingWhistleBlowHandlersWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.RemovingWhistleBlowHandlersWasSuccessful : Translations_en_US.RemovingWhistleBlowHandlersWasSuccessful);\r\n\t\tTranslations.MovingTaskParameterToTrashBinWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.MovingTaskParameterToTrashBinWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.MovingTaskParameterToTrashBinWasNotSuccessfulConcurrencyError : Translations_en_US.MovingTaskParameterToTrashBinWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.FormulaCos = culture === \"fi\" ? Translations_fi.FormulaCos : (culture === \"sv-FI\" ? Translations_sv_FI.FormulaCos : Translations_en_US.FormulaCos);\r\n\t\tTranslations.AccountNumberTkbOutCredit = culture === \"fi\" ? Translations_fi.AccountNumberTkbOutCredit : (culture === \"sv-FI\" ? Translations_sv_FI.AccountNumberTkbOutCredit : Translations_en_US.AccountNumberTkbOutCredit);\r\n\t\tTranslations.Receiver = culture === \"fi\" ? Translations_fi.Receiver : (culture === \"sv-FI\" ? Translations_sv_FI.Receiver : Translations_en_US.Receiver);\r\n\t\tTranslations.PreviewMobile = culture === \"fi\" ? Translations_fi.PreviewMobile : (culture === \"sv-FI\" ? Translations_sv_FI.PreviewMobile : Translations_en_US.PreviewMobile);\r\n\t\tTranslations.ArchivingRecordUserFurtherEducationsWasSuccessful = culture === \"fi\" ? Translations_fi.ArchivingRecordUserFurtherEducationsWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.ArchivingRecordUserFurtherEducationsWasSuccessful : Translations_en_US.ArchivingRecordUserFurtherEducationsWasSuccessful);\r\n\t\tTranslations.RemoveKeyword = culture === \"fi\" ? Translations_fi.RemoveKeyword : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveKeyword : Translations_en_US.RemoveKeyword);\r\n\t\tTranslations.RemoveFolder = culture === \"fi\" ? Translations_fi.RemoveFolder : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveFolder : Translations_en_US.RemoveFolder);\r\n\t\tTranslations.WhistleBlowActiveReports = culture === \"fi\" ? Translations_fi.WhistleBlowActiveReports : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowActiveReports : Translations_en_US.WhistleBlowActiveReports);\r\n\t\tTranslations.DoYouReallyWantToEmailMessageParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToEmailMessageParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToEmailMessageParameter : Translations_en_US.DoYouReallyWantToEmailMessageParameter);\r\n\t\tTranslations.RemoveWhistleBlowCategory = culture === \"fi\" ? Translations_fi.RemoveWhistleBlowCategory : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveWhistleBlowCategory : Translations_en_US.RemoveWhistleBlowCategory);\r\n\t\tTranslations.Update = culture === \"fi\" ? Translations_fi.Update : (culture === \"sv-FI\" ? Translations_sv_FI.Update : Translations_en_US.Update);\r\n\t\tTranslations.CopyActiveUserRightsToAllSameLevelFolders = culture === \"fi\" ? Translations_fi.CopyActiveUserRightsToAllSameLevelFolders : (culture === \"sv-FI\" ? Translations_sv_FI.CopyActiveUserRightsToAllSameLevelFolders : Translations_en_US.CopyActiveUserRightsToAllSameLevelFolders);\r\n\t\tTranslations.FormShowModifyUser = culture === \"fi\" ? Translations_fi.FormShowModifyUser : (culture === \"sv-FI\" ? Translations_sv_FI.FormShowModifyUser : Translations_en_US.FormShowModifyUser);\r\n\t\tTranslations.EditEmployment = culture === \"fi\" ? Translations_fi.EditEmployment : (culture === \"sv-FI\" ? Translations_sv_FI.EditEmployment : Translations_en_US.EditEmployment);\r\n\t\tTranslations.UpdatingGroupCodeWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.UpdatingGroupCodeWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.UpdatingGroupCodeWasNotSuccessfulErrorParameter : Translations_en_US.UpdatingGroupCodeWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.FileFilterNameMustBeDefined = culture === \"fi\" ? Translations_fi.FileFilterNameMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.FileFilterNameMustBeDefined : Translations_en_US.FileFilterNameMustBeDefined);\r\n\t\tTranslations.SenderOrReceiver = culture === \"fi\" ? Translations_fi.SenderOrReceiver : (culture === \"sv-FI\" ? Translations_sv_FI.SenderOrReceiver : Translations_en_US.SenderOrReceiver);\r\n\t\tTranslations.DeletingRecordFamiliarizationParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingRecordFamiliarizationParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordFamiliarizationParameterWasSuccessful : Translations_en_US.DeletingRecordFamiliarizationParameterWasSuccessful);\r\n\t\tTranslations.SavingKeywordParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingKeywordParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingKeywordParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingKeywordParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.Action = culture === \"fi\" ? Translations_fi.Action : (culture === \"sv-FI\" ? Translations_sv_FI.Action : Translations_en_US.Action);\r\n\t\tTranslations.DoYouReallyWantToRemoveDocumentParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveDocumentParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveDocumentParameter : Translations_en_US.DoYouReallyWantToRemoveDocumentParameter);\r\n\t\tTranslations.SavingFilterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingFilterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingFilterWasSuccessful : Translations_en_US.SavingFilterWasSuccessful);\r\n\t\tTranslations.SavingTaskParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingTaskParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingTaskParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingTaskParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.DoYouReallyWantToRemoveWhistleBlowParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveWhistleBlowParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveWhistleBlowParameter : Translations_en_US.DoYouReallyWantToRemoveWhistleBlowParameter);\r\n\t\tTranslations.InstantMessageAttachmentFolderIsNotSpecified = culture === \"fi\" ? Translations_fi.InstantMessageAttachmentFolderIsNotSpecified : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageAttachmentFolderIsNotSpecified : Translations_en_US.InstantMessageAttachmentFolderIsNotSpecified);\r\n\t\tTranslations.YouHaveNotSavedChangesSaveChangesBeforePublishingTaskType = culture === \"fi\" ? Translations_fi.YouHaveNotSavedChangesSaveChangesBeforePublishingTaskType : (culture === \"sv-FI\" ? Translations_sv_FI.YouHaveNotSavedChangesSaveChangesBeforePublishingTaskType : Translations_en_US.YouHaveNotSavedChangesSaveChangesBeforePublishingTaskType);\r\n\t\tTranslations.NoFurtherEducationsToShow = culture === \"fi\" ? Translations_fi.NoFurtherEducationsToShow : (culture === \"sv-FI\" ? Translations_sv_FI.NoFurtherEducationsToShow : Translations_en_US.NoFurtherEducationsToShow);\r\n\t\tTranslations.SavingMessageTypeParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingMessageTypeParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingMessageTypeParameterWasNotSuccessfulConcurrencyError : Translations_en_US.SavingMessageTypeParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.UserToken = culture === \"fi\" ? Translations_fi.UserToken : (culture === \"sv-FI\" ? Translations_sv_FI.UserToken : Translations_en_US.UserToken);\r\n\t\tTranslations.CalendarTaskOccurrence = culture === \"fi\" ? Translations_fi.CalendarTaskOccurrence : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskOccurrence : Translations_en_US.CalendarTaskOccurrence);\r\n\t\tTranslations.CopyOrMoveFolderParameter = culture === \"fi\" ? Translations_fi.CopyOrMoveFolderParameter : (culture === \"sv-FI\" ? Translations_sv_FI.CopyOrMoveFolderParameter : Translations_en_US.CopyOrMoveFolderParameter);\r\n\t\tTranslations.AddEmployment = culture === \"fi\" ? Translations_fi.AddEmployment : (culture === \"sv-FI\" ? Translations_sv_FI.AddEmployment : Translations_en_US.AddEmployment);\r\n\t\tTranslations.MissingPlural = culture === \"fi\" ? Translations_fi.MissingPlural : (culture === \"sv-FI\" ? Translations_sv_FI.MissingPlural : Translations_en_US.MissingPlural);\r\n\t\tTranslations.SomeWhistleBlowHandlersHaveReadMessage = culture === \"fi\" ? Translations_fi.SomeWhistleBlowHandlersHaveReadMessage : (culture === \"sv-FI\" ? Translations_sv_FI.SomeWhistleBlowHandlersHaveReadMessage : Translations_en_US.SomeWhistleBlowHandlersHaveReadMessage);\r\n\t\tTranslations.TaskRemainderCheckingAndNotificationFinishedInParameterSeconds = culture === \"fi\" ? Translations_fi.TaskRemainderCheckingAndNotificationFinishedInParameterSeconds : (culture === \"sv-FI\" ? Translations_sv_FI.TaskRemainderCheckingAndNotificationFinishedInParameterSeconds : Translations_en_US.TaskRemainderCheckingAndNotificationFinishedInParameterSeconds);\r\n\t\tTranslations.RecordUserExcelUserList = culture === \"fi\" ? Translations_fi.RecordUserExcelUserList : (culture === \"sv-FI\" ? Translations_sv_FI.RecordUserExcelUserList : Translations_en_US.RecordUserExcelUserList);\r\n\t\tTranslations.DeletingUserParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingUserParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingUserParameterWasSuccessful : Translations_en_US.DeletingUserParameterWasSuccessful);\r\n\t\tTranslations.TemplateForms = culture === \"fi\" ? Translations_fi.TemplateForms : (culture === \"sv-FI\" ? Translations_sv_FI.TemplateForms : Translations_en_US.TemplateForms);\r\n\t\tTranslations.InstantMessageAttachmentFolderParameterNotFound = culture === \"fi\" ? Translations_fi.InstantMessageAttachmentFolderParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageAttachmentFolderParameterNotFound : Translations_en_US.InstantMessageAttachmentFolderParameterNotFound);\r\n\t\tTranslations.DeletingTaskPrioritiesParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingTaskPrioritiesParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingTaskPrioritiesParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingTaskPrioritiesParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.ChangeCompany = culture === \"fi\" ? Translations_fi.ChangeCompany : (culture === \"sv-FI\" ? Translations_sv_FI.ChangeCompany : Translations_en_US.ChangeCompany);\r\n\t\tTranslations.SearchCurrentTopics = culture === \"fi\" ? Translations_fi.SearchCurrentTopics : (culture === \"sv-FI\" ? Translations_sv_FI.SearchCurrentTopics : Translations_en_US.SearchCurrentTopics);\r\n\t\tTranslations.DoYouReallyWantToMoveTaskParameterToTrashBin = culture === \"fi\" ? Translations_fi.DoYouReallyWantToMoveTaskParameterToTrashBin : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToMoveTaskParameterToTrashBin : Translations_en_US.DoYouReallyWantToMoveTaskParameterToTrashBin);\r\n\t\tTranslations.WhistleBlowResolutionJunk = culture === \"fi\" ? Translations_fi.WhistleBlowResolutionJunk : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowResolutionJunk : Translations_en_US.WhistleBlowResolutionJunk);\r\n\t\tTranslations.EditMode = culture === \"fi\" ? Translations_fi.EditMode : (culture === \"sv-FI\" ? Translations_sv_FI.EditMode : Translations_en_US.EditMode);\r\n\t\tTranslations.EmploymentEndDateCannotPrecedeEmploymentStartDate = culture === \"fi\" ? Translations_fi.EmploymentEndDateCannotPrecedeEmploymentStartDate : (culture === \"sv-FI\" ? Translations_sv_FI.EmploymentEndDateCannotPrecedeEmploymentStartDate : Translations_en_US.EmploymentEndDateCannotPrecedeEmploymentStartDate);\r\n\t\tTranslations.EventApprovalWasSuccessful = culture === \"fi\" ? Translations_fi.EventApprovalWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.EventApprovalWasSuccessful : Translations_en_US.EventApprovalWasSuccessful);\r\n\t\tTranslations.UserClaimsNotFound = culture === \"fi\" ? Translations_fi.UserClaimsNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.UserClaimsNotFound : Translations_en_US.UserClaimsNotFound);\r\n\t\tTranslations.UserRecordsDashboard = culture === \"fi\" ? Translations_fi.UserRecordsDashboard : (culture === \"sv-FI\" ? Translations_sv_FI.UserRecordsDashboard : Translations_en_US.UserRecordsDashboard);\r\n\t\tTranslations.PublishTaskType = culture === \"fi\" ? Translations_fi.PublishTaskType : (culture === \"sv-FI\" ? Translations_sv_FI.PublishTaskType : Translations_en_US.PublishTaskType);\r\n\t\tTranslations.RemoveEditableDocument = culture === \"fi\" ? Translations_fi.RemoveEditableDocument : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveEditableDocument : Translations_en_US.RemoveEditableDocument);\r\n\t\tTranslations.PanelSize1 = culture === \"fi\" ? Translations_fi.PanelSize1 : (culture === \"sv-FI\" ? Translations_sv_FI.PanelSize1 : Translations_en_US.PanelSize1);\r\n\t\tTranslations.Yes = culture === \"fi\" ? Translations_fi.Yes : (culture === \"sv-FI\" ? Translations_sv_FI.Yes : Translations_en_US.Yes);\r\n\t\tTranslations.SearchStartDate = culture === \"fi\" ? Translations_fi.SearchStartDate : (culture === \"sv-FI\" ? Translations_sv_FI.SearchStartDate : Translations_en_US.SearchStartDate);\r\n\t\tTranslations.DeletingTaskPriorityParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingTaskPriorityParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingTaskPriorityParameterWasSuccessful : Translations_en_US.DeletingTaskPriorityParameterWasSuccessful);\r\n\t\tTranslations.TasksExcelByTasks = culture === \"fi\" ? Translations_fi.TasksExcelByTasks : (culture === \"sv-FI\" ? Translations_sv_FI.TasksExcelByTasks : Translations_en_US.TasksExcelByTasks);\r\n\t\tTranslations.InheritedUserRights = culture === \"fi\" ? Translations_fi.InheritedUserRights : (culture === \"sv-FI\" ? Translations_sv_FI.InheritedUserRights : Translations_en_US.InheritedUserRights);\r\n\t\tTranslations.SomeEventHandlersHaveReadMessage = culture === \"fi\" ? Translations_fi.SomeEventHandlersHaveReadMessage : (culture === \"sv-FI\" ? Translations_sv_FI.SomeEventHandlersHaveReadMessage : Translations_en_US.SomeEventHandlersHaveReadMessage);\r\n\t\tTranslations.EventTypeCCodeMustBeDefined = culture === \"fi\" ? Translations_fi.EventTypeCCodeMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.EventTypeCCodeMustBeDefined : Translations_en_US.EventTypeCCodeMustBeDefined);\r\n\t\tTranslations.EventSettings = culture === \"fi\" ? Translations_fi.EventSettings : (culture === \"sv-FI\" ? Translations_sv_FI.EventSettings : Translations_en_US.EventSettings);\r\n\t\tTranslations.MovingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.MovingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.MovingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulConcurrencyError : Translations_en_US.MovingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.DocumentZipFileName = culture === \"fi\" ? Translations_fi.DocumentZipFileName : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentZipFileName : Translations_en_US.DocumentZipFileName);\r\n\t\tTranslations.SavingWhistleBlowWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingWhistleBlowWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingWhistleBlowWasNotSuccessfulConcurrencyError : Translations_en_US.SavingWhistleBlowWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.Permission = culture === \"fi\" ? Translations_fi.Permission : (culture === \"sv-FI\" ? Translations_sv_FI.Permission : Translations_en_US.Permission);\r\n\t\tTranslations.NotifiedPersons = culture === \"fi\" ? Translations_fi.NotifiedPersons : (culture === \"sv-FI\" ? Translations_sv_FI.NotifiedPersons : Translations_en_US.NotifiedPersons);\r\n\t\tTranslations.RemoveCompanyGroup = culture === \"fi\" ? Translations_fi.RemoveCompanyGroup : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveCompanyGroup : Translations_en_US.RemoveCompanyGroup);\r\n\t\tTranslations.NoEventsToShow = culture === \"fi\" ? Translations_fi.NoEventsToShow : (culture === \"sv-FI\" ? Translations_sv_FI.NoEventsToShow : Translations_en_US.NoEventsToShow);\r\n\t\tTranslations.SavingInstantMessageWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingInstantMessageWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingInstantMessageWasNotSuccessfulErrorParameter : Translations_en_US.SavingInstantMessageWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.UserGroup = culture === \"fi\" ? Translations_fi.UserGroup : (culture === \"sv-FI\" ? Translations_sv_FI.UserGroup : Translations_en_US.UserGroup);\r\n\t\tTranslations.RemoveMessageType = culture === \"fi\" ? Translations_fi.RemoveMessageType : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveMessageType : Translations_en_US.RemoveMessageType);\r\n\t\tTranslations.WhistleBlowDoesNotContainAnyMessage = culture === \"fi\" ? Translations_fi.WhistleBlowDoesNotContainAnyMessage : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowDoesNotContainAnyMessage : Translations_en_US.WhistleBlowDoesNotContainAnyMessage);\r\n\t\tTranslations.ShowReportRowAmountInFrontPage = culture === \"fi\" ? Translations_fi.ShowReportRowAmountInFrontPage : (culture === \"sv-FI\" ? Translations_sv_FI.ShowReportRowAmountInFrontPage : Translations_en_US.ShowReportRowAmountInFrontPage);\r\n\t\tTranslations.SavingDocumentTemplateParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingDocumentTemplateParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingDocumentTemplateParameterWasSuccessful : Translations_en_US.SavingDocumentTemplateParameterWasSuccessful);\r\n\t\tTranslations.DeletingKeywordParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingKeywordParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingKeywordParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingKeywordParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.SelectCompanyGroup = culture === \"fi\" ? Translations_fi.SelectCompanyGroup : (culture === \"sv-FI\" ? Translations_sv_FI.SelectCompanyGroup : Translations_en_US.SelectCompanyGroup);\r\n\t\tTranslations.DeletingDirectoryItemFolderParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingDirectoryItemFolderParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingDirectoryItemFolderParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingDirectoryItemFolderParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.WhistleBlowAnonymityNonAnonymous = culture === \"fi\" ? Translations_fi.WhistleBlowAnonymityNonAnonymous : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowAnonymityNonAnonymous : Translations_en_US.WhistleBlowAnonymityNonAnonymous);\r\n\t\tTranslations.DoYouReallyWantToRemoveCompanyParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveCompanyParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveCompanyParameter : Translations_en_US.DoYouReallyWantToRemoveCompanyParameter);\r\n\t\tTranslations.WhistleBlowStateArchived = culture === \"fi\" ? Translations_fi.WhistleBlowStateArchived : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowStateArchived : Translations_en_US.WhistleBlowStateArchived);\r\n\t\tTranslations.SavingTaskTypeParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingTaskTypeParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingTaskTypeParameterWasSuccessful : Translations_en_US.SavingTaskTypeParameterWasSuccessful);\r\n\t\tTranslations.Identification = culture === \"fi\" ? Translations_fi.Identification : (culture === \"sv-FI\" ? Translations_sv_FI.Identification : Translations_en_US.Identification);\r\n\t\tTranslations.AddFormFromTemplate = culture === \"fi\" ? Translations_fi.AddFormFromTemplate : (culture === \"sv-FI\" ? Translations_sv_FI.AddFormFromTemplate : Translations_en_US.AddFormFromTemplate);\r\n\t\tTranslations.FormBooleans = culture === \"fi\" ? Translations_fi.FormBooleans : (culture === \"sv-FI\" ? Translations_sv_FI.FormBooleans : Translations_en_US.FormBooleans);\r\n\t\tTranslations.AddCompanyGroupsParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.AddCompanyGroupsParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.AddCompanyGroupsParameterWasNotSuccessfulConcurrencyError : Translations_en_US.AddCompanyGroupsParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.ShowDraftVersion = culture === \"fi\" ? Translations_fi.ShowDraftVersion : (culture === \"sv-FI\" ? Translations_sv_FI.ShowDraftVersion : Translations_en_US.ShowDraftVersion);\r\n\t\tTranslations.SavingWhistleBlowMessageWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingWhistleBlowMessageWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingWhistleBlowMessageWasNotSuccessfulErrorParameter : Translations_en_US.SavingWhistleBlowMessageWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.Draft = culture === \"fi\" ? Translations_fi.Draft : (culture === \"sv-FI\" ? Translations_sv_FI.Draft : Translations_en_US.Draft);\r\n\t\tTranslations.Operation = culture === \"fi\" ? Translations_fi.Operation : (culture === \"sv-FI\" ? Translations_sv_FI.Operation : Translations_en_US.Operation);\r\n\t\tTranslations.WhistleBlowDescription = culture === \"fi\" ? Translations_fi.WhistleBlowDescription : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowDescription : Translations_en_US.WhistleBlowDescription);\r\n\t\tTranslations.AddPanel = culture === \"fi\" ? Translations_fi.AddPanel : (culture === \"sv-FI\" ? Translations_sv_FI.AddPanel : Translations_en_US.AddPanel);\r\n\t\tTranslations.TaskPriorityParameterIsInUseInParameterTasksAndCannotBeDeleted = culture === \"fi\" ? Translations_fi.TaskPriorityParameterIsInUseInParameterTasksAndCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.TaskPriorityParameterIsInUseInParameterTasksAndCannotBeDeleted : Translations_en_US.TaskPriorityParameterIsInUseInParameterTasksAndCannotBeDeleted);\r\n\t\tTranslations.NoTasksToShow = culture === \"fi\" ? Translations_fi.NoTasksToShow : (culture === \"sv-FI\" ? Translations_sv_FI.NoTasksToShow : Translations_en_US.NoTasksToShow);\r\n\t\tTranslations.EventUrgencyClass = culture === \"fi\" ? Translations_fi.EventUrgencyClass : (culture === \"sv-FI\" ? Translations_sv_FI.EventUrgencyClass : Translations_en_US.EventUrgencyClass);\r\n\t\tTranslations.PreviousCalendarMonth = culture === \"fi\" ? Translations_fi.PreviousCalendarMonth : (culture === \"sv-FI\" ? Translations_sv_FI.PreviousCalendarMonth : Translations_en_US.PreviousCalendarMonth);\r\n\t\tTranslations.EventIsNotApprovedByUser = culture === \"fi\" ? Translations_fi.EventIsNotApprovedByUser : (culture === \"sv-FI\" ? Translations_sv_FI.EventIsNotApprovedByUser : Translations_en_US.EventIsNotApprovedByUser);\r\n\t\tTranslations.FormTime = culture === \"fi\" ? Translations_fi.FormTime : (culture === \"sv-FI\" ? Translations_sv_FI.FormTime : Translations_en_US.FormTime);\r\n\t\tTranslations.SavingEventTypeParameterWasSuccessful = culture === \"fi\" ? Translations_fi.SavingEventTypeParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventTypeParameterWasSuccessful : Translations_en_US.SavingEventTypeParameterWasSuccessful);\r\n\t\tTranslations.DeletingWhistleBlowParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingWhistleBlowParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingWhistleBlowParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingWhistleBlowParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.DeletingRecordUserEmploymentsParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingRecordUserEmploymentsParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingRecordUserEmploymentsParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingRecordUserEmploymentsParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.Message = culture === \"fi\" ? Translations_fi.Message : (culture === \"sv-FI\" ? Translations_sv_FI.Message : Translations_en_US.Message);\r\n\t\tTranslations.WhistleBlowSourcePhone = culture === \"fi\" ? Translations_fi.WhistleBlowSourcePhone : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowSourcePhone : Translations_en_US.WhistleBlowSourcePhone);\r\n\t\tTranslations.DeletingInstantMessageUsersParameterWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.DeletingInstantMessageUsersParameterWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingInstantMessageUsersParameterWasNotSuccessfulConcurrencyError : Translations_en_US.DeletingInstantMessageUsersParameterWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.RestoringInstantMessageWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.RestoringInstantMessageWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.RestoringInstantMessageWasNotSuccessfulConcurrencyError : Translations_en_US.RestoringInstantMessageWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.InstantMessagesMenuTitle = culture === \"fi\" ? Translations_fi.InstantMessagesMenuTitle : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessagesMenuTitle : Translations_en_US.InstantMessagesMenuTitle);\r\n\t\tTranslations.DoYouReallyWantToRemoveEventPartnerParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveEventPartnerParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveEventPartnerParameter : Translations_en_US.DoYouReallyWantToRemoveEventPartnerParameter);\r\n\t\tTranslations.DoYouReallyWantToRemoveDocumentTemplateParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveDocumentTemplateParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveDocumentTemplateParameter : Translations_en_US.DoYouReallyWantToRemoveDocumentTemplateParameter);\r\n\t\tTranslations.UserParameterHasInvitedYouToJoinInstantMessageChannelParameter = culture === \"fi\" ? Translations_fi.UserParameterHasInvitedYouToJoinInstantMessageChannelParameter : (culture === \"sv-FI\" ? Translations_sv_FI.UserParameterHasInvitedYouToJoinInstantMessageChannelParameter : Translations_en_US.UserParameterHasInvitedYouToJoinInstantMessageChannelParameter);\r\n\t\tTranslations.Entry = culture === \"fi\" ? Translations_fi.Entry : (culture === \"sv-FI\" ? Translations_sv_FI.Entry : Translations_en_US.Entry);\r\n\t\tTranslations.UserReport = culture === \"fi\" ? Translations_fi.UserReport : (culture === \"sv-FI\" ? Translations_sv_FI.UserReport : Translations_en_US.UserReport);\r\n\t\tTranslations.Events = culture === \"fi\" ? Translations_fi.Events : (culture === \"sv-FI\" ? Translations_sv_FI.Events : Translations_en_US.Events);\r\n\t\tTranslations.PicturesAreVisibleForAllCompanyUsers = culture === \"fi\" ? Translations_fi.PicturesAreVisibleForAllCompanyUsers : (culture === \"sv-FI\" ? Translations_sv_FI.PicturesAreVisibleForAllCompanyUsers : Translations_en_US.PicturesAreVisibleForAllCompanyUsers);\r\n\t\tTranslations.ArchivingRecordUserFamiliarizationsWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.ArchivingRecordUserFamiliarizationsWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.ArchivingRecordUserFamiliarizationsWasNotSuccessfulConcurrencyError : Translations_en_US.ArchivingRecordUserFamiliarizationsWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.Number = culture === \"fi\" ? Translations_fi.Number : (culture === \"sv-FI\" ? Translations_sv_FI.Number : Translations_en_US.Number);\r\n\t\tTranslations.SelectArchivingMethod = culture === \"fi\" ? Translations_fi.SelectArchivingMethod : (culture === \"sv-FI\" ? Translations_sv_FI.SelectArchivingMethod : Translations_en_US.SelectArchivingMethod);\r\n\t\tTranslations.DeletingWhistleBlowChannelAdminsParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingWhistleBlowChannelAdminsParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingWhistleBlowChannelAdminsParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingWhistleBlowChannelAdminsParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.SavingEditableDocumentParameterPublishWasSuccessful = culture === \"fi\" ? Translations_fi.SavingEditableDocumentParameterPublishWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEditableDocumentParameterPublishWasSuccessful : Translations_en_US.SavingEditableDocumentParameterPublishWasSuccessful);\r\n\t\tTranslations.SaveAndEmail = culture === \"fi\" ? Translations_fi.SaveAndEmail : (culture === \"sv-FI\" ? Translations_sv_FI.SaveAndEmail : Translations_en_US.SaveAndEmail);\r\n\t\tTranslations.EmptyTaskTrashBin = culture === \"fi\" ? Translations_fi.EmptyTaskTrashBin : (culture === \"sv-FI\" ? Translations_sv_FI.EmptyTaskTrashBin : Translations_en_US.EmptyTaskTrashBin);\r\n\t\tTranslations.MovingFolderParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.MovingFolderParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.MovingFolderParameterWasNotSuccessfulErrorParameter : Translations_en_US.MovingFolderParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.Channels = culture === \"fi\" ? Translations_fi.Channels : (culture === \"sv-FI\" ? Translations_sv_FI.Channels : Translations_en_US.Channels);\r\n\t\tTranslations.SelectInstantMessageChannelUsers = culture === \"fi\" ? Translations_fi.SelectInstantMessageChannelUsers : (culture === \"sv-FI\" ? Translations_sv_FI.SelectInstantMessageChannelUsers : Translations_en_US.SelectInstantMessageChannelUsers);\r\n\t\tTranslations.ApproveEvent = culture === \"fi\" ? Translations_fi.ApproveEvent : (culture === \"sv-FI\" ? Translations_sv_FI.ApproveEvent : Translations_en_US.ApproveEvent);\r\n\t\tTranslations.JobTypeEmail = culture === \"fi\" ? Translations_fi.JobTypeEmail : (culture === \"sv-FI\" ? Translations_sv_FI.JobTypeEmail : Translations_en_US.JobTypeEmail);\r\n\t\tTranslations.Effectiveness = culture === \"fi\" ? Translations_fi.Effectiveness : (culture === \"sv-FI\" ? Translations_sv_FI.Effectiveness : Translations_en_US.Effectiveness);\r\n\t\tTranslations.ReminderWeekBefore = culture === \"fi\" ? Translations_fi.ReminderWeekBefore : (culture === \"sv-FI\" ? Translations_sv_FI.ReminderWeekBefore : Translations_en_US.ReminderWeekBefore);\r\n\t\tTranslations.Private = culture === \"fi\" ? Translations_fi.Private : (culture === \"sv-FI\" ? Translations_sv_FI.Private : Translations_en_US.Private);\r\n\t\tTranslations.RemoveEmployment = culture === \"fi\" ? Translations_fi.RemoveEmployment : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveEmployment : Translations_en_US.RemoveEmployment);\r\n\t\tTranslations.AddAttachment = culture === \"fi\" ? Translations_fi.AddAttachment : (culture === \"sv-FI\" ? Translations_sv_FI.AddAttachment : Translations_en_US.AddAttachment);\r\n\t\tTranslations.SavingEventTypeParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingEventTypeParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEventTypeParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingEventTypeParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.SavingDirectoryItemPermissionsWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingDirectoryItemPermissionsWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingDirectoryItemPermissionsWasNotSuccessfulConcurrencyError : Translations_en_US.SavingDirectoryItemPermissionsWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.AddPhotosAndAttachementsToEvent = culture === \"fi\" ? Translations_fi.AddPhotosAndAttachementsToEvent : (culture === \"sv-FI\" ? Translations_sv_FI.AddPhotosAndAttachementsToEvent : Translations_en_US.AddPhotosAndAttachementsToEvent);\r\n\t\tTranslations.WhistleBlowReportHasBeenSavedTopText = culture === \"fi\" ? Translations_fi.WhistleBlowReportHasBeenSavedTopText : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowReportHasBeenSavedTopText : Translations_en_US.WhistleBlowReportHasBeenSavedTopText);\r\n\t\tTranslations.SavingUserParametersWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingUserParametersWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingUserParametersWasNotSuccessfulErrorParameter : Translations_en_US.SavingUserParametersWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.WhistleBlowStatisticsAnonymousRecords = culture === \"fi\" ? Translations_fi.WhistleBlowStatisticsAnonymousRecords : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowStatisticsAnonymousRecords : Translations_en_US.WhistleBlowStatisticsAnonymousRecords);\r\n\t\tTranslations.FormWeb = culture === \"fi\" ? Translations_fi.FormWeb : (culture === \"sv-FI\" ? Translations_sv_FI.FormWeb : Translations_en_US.FormWeb);\r\n\t\tTranslations.WhistleBlowEventTypeModified = culture === \"fi\" ? Translations_fi.WhistleBlowEventTypeModified : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowEventTypeModified : Translations_en_US.WhistleBlowEventTypeModified);\r\n\t\tTranslations.RecentlyUpdated = culture === \"fi\" ? Translations_fi.RecentlyUpdated : (culture === \"sv-FI\" ? Translations_sv_FI.RecentlyUpdated : Translations_en_US.RecentlyUpdated);\r\n\t\tTranslations.ExternalSystems = culture === \"fi\" ? Translations_fi.ExternalSystems : (culture === \"sv-FI\" ? Translations_sv_FI.ExternalSystems : Translations_en_US.ExternalSystems);\r\n\t\tTranslations.DoYouReallyWantToRemoveCalendarTaskCategoryParameter = culture === \"fi\" ? Translations_fi.DoYouReallyWantToRemoveCalendarTaskCategoryParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DoYouReallyWantToRemoveCalendarTaskCategoryParameter : Translations_en_US.DoYouReallyWantToRemoveCalendarTaskCategoryParameter);\r\n\t\tTranslations.Comments = culture === \"fi\" ? Translations_fi.Comments : (culture === \"sv-FI\" ? Translations_sv_FI.Comments : Translations_en_US.Comments);\r\n\t\tTranslations.OptionParameterNotFound = culture === \"fi\" ? Translations_fi.OptionParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.OptionParameterNotFound : Translations_en_US.OptionParameterNotFound);\r\n\t\tTranslations.NoPermission = culture === \"fi\" ? Translations_fi.NoPermission : (culture === \"sv-FI\" ? Translations_sv_FI.NoPermission : Translations_en_US.NoPermission);\r\n\t\tTranslations.SelectCalendarTaskHandlers = culture === \"fi\" ? Translations_fi.SelectCalendarTaskHandlers : (culture === \"sv-FI\" ? Translations_sv_FI.SelectCalendarTaskHandlers : Translations_en_US.SelectCalendarTaskHandlers);\r\n\t\tTranslations.AllCompanyGroups = culture === \"fi\" ? Translations_fi.AllCompanyGroups : (culture === \"sv-FI\" ? Translations_sv_FI.AllCompanyGroups : Translations_en_US.AllCompanyGroups);\r\n\t\tTranslations.SavingPrintWasNotSuccessfulConcurrencyError = culture === \"fi\" ? Translations_fi.SavingPrintWasNotSuccessfulConcurrencyError : (culture === \"sv-FI\" ? Translations_sv_FI.SavingPrintWasNotSuccessfulConcurrencyError : Translations_en_US.SavingPrintWasNotSuccessfulConcurrencyError);\r\n\t\tTranslations.FormCodeMustBeDefined = culture === \"fi\" ? Translations_fi.FormCodeMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.FormCodeMustBeDefined : Translations_en_US.FormCodeMustBeDefined);\r\n\t\tTranslations.ApproveEventResolution = culture === \"fi\" ? Translations_fi.ApproveEventResolution : (culture === \"sv-FI\" ? Translations_sv_FI.ApproveEventResolution : Translations_en_US.ApproveEventResolution);\r\n\t\tTranslations.TaskPriorityParameterNotFound = culture === \"fi\" ? Translations_fi.TaskPriorityParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.TaskPriorityParameterNotFound : Translations_en_US.TaskPriorityParameterNotFound);\r\n\t\tTranslations.SelectInstantMessageChannelType = culture === \"fi\" ? Translations_fi.SelectInstantMessageChannelType : (culture === \"sv-FI\" ? Translations_sv_FI.SelectInstantMessageChannelType : Translations_en_US.SelectInstantMessageChannelType);\r\n\t\tTranslations.Rows = culture === \"fi\" ? Translations_fi.Rows : (culture === \"sv-FI\" ? Translations_sv_FI.Rows : Translations_en_US.Rows);\r\n\t\tTranslations.FormulaRound = culture === \"fi\" ? Translations_fi.FormulaRound : (culture === \"sv-FI\" ? Translations_sv_FI.FormulaRound : Translations_en_US.FormulaRound);\r\n\t\tTranslations.DeletingInstantMessageUsersParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingInstantMessageUsersParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingInstantMessageUsersParameterWasSuccessful : Translations_en_US.DeletingInstantMessageUsersParameterWasSuccessful);\r\n\t\tTranslations.RestoringTaskParameterFromTrashBinWasSuccessful = culture === \"fi\" ? Translations_fi.RestoringTaskParameterFromTrashBinWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.RestoringTaskParameterFromTrashBinWasSuccessful : Translations_en_US.RestoringTaskParameterFromTrashBinWasSuccessful);\r\n\t\tTranslations.WriteMessage = culture === \"fi\" ? Translations_fi.WriteMessage : (culture === \"sv-FI\" ? Translations_sv_FI.WriteMessage : Translations_en_US.WriteMessage);\r\n\t\tTranslations.UnlockingTaskDataRowWasNotSuccessful = culture === \"fi\" ? Translations_fi.UnlockingTaskDataRowWasNotSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.UnlockingTaskDataRowWasNotSuccessful : Translations_en_US.UnlockingTaskDataRowWasNotSuccessful);\r\n\t\tTranslations.CreatingFolderParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.CreatingFolderParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.CreatingFolderParameterWasNotSuccessfulErrorParameter : Translations_en_US.CreatingFolderParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.AdminMessage = culture === \"fi\" ? Translations_fi.AdminMessage : (culture === \"sv-FI\" ? Translations_sv_FI.AdminMessage : Translations_en_US.AdminMessage);\r\n\t\tTranslations.SendTime = culture === \"fi\" ? Translations_fi.SendTime : (culture === \"sv-FI\" ? Translations_sv_FI.SendTime : Translations_en_US.SendTime);\r\n\t\tTranslations.EventSettingsParameterNotFound = culture === \"fi\" ? Translations_fi.EventSettingsParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.EventSettingsParameterNotFound : Translations_en_US.EventSettingsParameterNotFound);\r\n\t\tTranslations.RemoveUserGroupExternalSystemsWasSuccessful = culture === \"fi\" ? Translations_fi.RemoveUserGroupExternalSystemsWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.RemoveUserGroupExternalSystemsWasSuccessful : Translations_en_US.RemoveUserGroupExternalSystemsWasSuccessful);\r\n\t\tTranslations.WhistleBlowCategories = culture === \"fi\" ? Translations_fi.WhistleBlowCategories : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowCategories : Translations_en_US.WhistleBlowCategories);\r\n\t\tTranslations.AddingWhistleBlowHandlerWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.AddingWhistleBlowHandlerWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.AddingWhistleBlowHandlerWasNotSuccessfulErrorParameter : Translations_en_US.AddingWhistleBlowHandlerWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.AdditionalPermissions = culture === \"fi\" ? Translations_fi.AdditionalPermissions : (culture === \"sv-FI\" ? Translations_sv_FI.AdditionalPermissions : Translations_en_US.AdditionalPermissions);\r\n\t\tTranslations.SavingDirectoryItemFolderParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingDirectoryItemFolderParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingDirectoryItemFolderParameterWasNotSuccessfulErrorParameter : Translations_en_US.SavingDirectoryItemFolderParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.SavingEditableDocumentParameterApprovalWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingEditableDocumentParameterApprovalWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingEditableDocumentParameterApprovalWasNotSuccessfulErrorParameter : Translations_en_US.SavingEditableDocumentParameterApprovalWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.AccessRightWrite = culture === \"fi\" ? Translations_fi.AccessRightWrite : (culture === \"sv-FI\" ? Translations_sv_FI.AccessRightWrite : Translations_en_US.AccessRightWrite);\r\n\t\tTranslations.CalendarTaskCategoryParameterIsInUseInParameterCalendarTasksAndCannotBeDeleted = culture === \"fi\" ? Translations_fi.CalendarTaskCategoryParameterIsInUseInParameterCalendarTasksAndCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.CalendarTaskCategoryParameterIsInUseInParameterCalendarTasksAndCannotBeDeleted : Translations_en_US.CalendarTaskCategoryParameterIsInUseInParameterCalendarTasksAndCannotBeDeleted);\r\n\t\tTranslations.SavingUnitsWasSuccessful = culture === \"fi\" ? Translations_fi.SavingUnitsWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingUnitsWasSuccessful : Translations_en_US.SavingUnitsWasSuccessful);\r\n\t\tTranslations.UnitChangedFromParameterToParameter = culture === \"fi\" ? Translations_fi.UnitChangedFromParameterToParameter : (culture === \"sv-FI\" ? Translations_sv_FI.UnitChangedFromParameterToParameter : Translations_en_US.UnitChangedFromParameterToParameter);\r\n\t\tTranslations.FileParameterIsNotOpenXmlWorkbook = culture === \"fi\" ? Translations_fi.FileParameterIsNotOpenXmlWorkbook : (culture === \"sv-FI\" ? Translations_sv_FI.FileParameterIsNotOpenXmlWorkbook : Translations_en_US.FileParameterIsNotOpenXmlWorkbook);\r\n\t\tTranslations.NewVersionAvailable = culture === \"fi\" ? Translations_fi.NewVersionAvailable : (culture === \"sv-FI\" ? Translations_sv_FI.NewVersionAvailable : Translations_en_US.NewVersionAvailable);\r\n\t\tTranslations.ViewLogLine = culture === \"fi\" ? Translations_fi.ViewLogLine : (culture === \"sv-FI\" ? Translations_sv_FI.ViewLogLine : Translations_en_US.ViewLogLine);\r\n\t\tTranslations.WhistleBlowInformantTitle = culture === \"fi\" ? Translations_fi.WhistleBlowInformantTitle : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowInformantTitle : Translations_en_US.WhistleBlowInformantTitle);\r\n\t\tTranslations.IgnoreFilePatterns = culture === \"fi\" ? Translations_fi.IgnoreFilePatterns : (culture === \"sv-FI\" ? Translations_sv_FI.IgnoreFilePatterns : Translations_en_US.IgnoreFilePatterns);\r\n\t\tTranslations.TaskReport = culture === \"fi\" ? Translations_fi.TaskReport : (culture === \"sv-FI\" ? Translations_sv_FI.TaskReport : Translations_en_US.TaskReport);\r\n\t\tTranslations.EventUrgencyClasses = culture === \"fi\" ? Translations_fi.EventUrgencyClasses : (culture === \"sv-FI\" ? Translations_sv_FI.EventUrgencyClasses : Translations_en_US.EventUrgencyClasses);\r\n\t\tTranslations.EditUserGroup = culture === \"fi\" ? Translations_fi.EditUserGroup : (culture === \"sv-FI\" ? Translations_sv_FI.EditUserGroup : Translations_en_US.EditUserGroup);\r\n\t\tTranslations.Documents = culture === \"fi\" ? Translations_fi.Documents : (culture === \"sv-FI\" ? Translations_sv_FI.Documents : Translations_en_US.Documents);\r\n\t\tTranslations.MyReports = culture === \"fi\" ? Translations_fi.MyReports : (culture === \"sv-FI\" ? Translations_sv_FI.MyReports : Translations_en_US.MyReports);\r\n\t\tTranslations.NewPanel = culture === \"fi\" ? Translations_fi.NewPanel : (culture === \"sv-FI\" ? Translations_sv_FI.NewPanel : Translations_en_US.NewPanel);\r\n\t\tTranslations.SavingPrintWasSuccessful = culture === \"fi\" ? Translations_fi.SavingPrintWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.SavingPrintWasSuccessful : Translations_en_US.SavingPrintWasSuccessful);\r\n\t\tTranslations.DefaultHandlers = culture === \"fi\" ? Translations_fi.DefaultHandlers : (culture === \"sv-FI\" ? Translations_sv_FI.DefaultHandlers : Translations_en_US.DefaultHandlers);\r\n\t\tTranslations.EditCompany = culture === \"fi\" ? Translations_fi.EditCompany : (culture === \"sv-FI\" ? Translations_sv_FI.EditCompany : Translations_en_US.EditCompany);\r\n\t\tTranslations.UserPasswordMustBeValid = culture === \"fi\" ? Translations_fi.UserPasswordMustBeValid : (culture === \"sv-FI\" ? Translations_sv_FI.UserPasswordMustBeValid : Translations_en_US.UserPasswordMustBeValid);\r\n\t\tTranslations.CompetencyGroup = culture === \"fi\" ? Translations_fi.CompetencyGroup : (culture === \"sv-FI\" ? Translations_sv_FI.CompetencyGroup : Translations_en_US.CompetencyGroup);\r\n\t\tTranslations.LockedTaskDataRowCannotBeDeleted = culture === \"fi\" ? Translations_fi.LockedTaskDataRowCannotBeDeleted : (culture === \"sv-FI\" ? Translations_sv_FI.LockedTaskDataRowCannotBeDeleted : Translations_en_US.LockedTaskDataRowCannotBeDeleted);\r\n\t\tTranslations.PanelSize2 = culture === \"fi\" ? Translations_fi.PanelSize2 : (culture === \"sv-FI\" ? Translations_sv_FI.PanelSize2 : Translations_en_US.PanelSize2);\r\n\t\tTranslations.DeletingTaskTypeParameterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.DeletingTaskTypeParameterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingTaskTypeParameterWasNotSuccessfulErrorParameter : Translations_en_US.DeletingTaskTypeParameterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.DocumentTemplateParameterNotFound = culture === \"fi\" ? Translations_fi.DocumentTemplateParameterNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.DocumentTemplateParameterNotFound : Translations_en_US.DocumentTemplateParameterNotFound);\r\n\t\tTranslations.NoNotificationsToSend = culture === \"fi\" ? Translations_fi.NoNotificationsToSend : (culture === \"sv-FI\" ? Translations_sv_FI.NoNotificationsToSend : Translations_en_US.NoNotificationsToSend);\r\n\t\tTranslations.CompanyName = culture === \"fi\" ? Translations_fi.CompanyName : (culture === \"sv-FI\" ? Translations_sv_FI.CompanyName : Translations_en_US.CompanyName);\r\n\t\tTranslations.EditRow = culture === \"fi\" ? Translations_fi.EditRow : (culture === \"sv-FI\" ? Translations_sv_FI.EditRow : Translations_en_US.EditRow);\r\n\t\tTranslations.InviteInstantMessageChannelUser = culture === \"fi\" ? Translations_fi.InviteInstantMessageChannelUser : (culture === \"sv-FI\" ? Translations_sv_FI.InviteInstantMessageChannelUser : Translations_en_US.InviteInstantMessageChannelUser);\r\n\t\tTranslations.FormOptions = culture === \"fi\" ? Translations_fi.FormOptions : (culture === \"sv-FI\" ? Translations_sv_FI.FormOptions : Translations_en_US.FormOptions);\r\n\t\tTranslations.PrivacyPolicyUrl = culture === \"fi\" ? Translations_fi.PrivacyPolicyUrl : (culture === \"sv-FI\" ? Translations_sv_FI.PrivacyPolicyUrl : Translations_en_US.PrivacyPolicyUrl);\r\n\t\tTranslations.FileSynchronizationToDatabaseStarted = culture === \"fi\" ? Translations_fi.FileSynchronizationToDatabaseStarted : (culture === \"sv-FI\" ? Translations_sv_FI.FileSynchronizationToDatabaseStarted : Translations_en_US.FileSynchronizationToDatabaseStarted);\r\n\t\tTranslations.FormulaPI = culture === \"fi\" ? Translations_fi.FormulaPI : (culture === \"sv-FI\" ? Translations_sv_FI.FormulaPI : Translations_en_US.FormulaPI);\r\n\t\tTranslations.ShowOnlyUnitsThatAreInUse = culture === \"fi\" ? Translations_fi.ShowOnlyUnitsThatAreInUse : (culture === \"sv-FI\" ? Translations_sv_FI.ShowOnlyUnitsThatAreInUse : Translations_en_US.ShowOnlyUnitsThatAreInUse);\r\n\t\tTranslations.EditableDocumentUnpublishConfirmation = culture === \"fi\" ? Translations_fi.EditableDocumentUnpublishConfirmation : (culture === \"sv-FI\" ? Translations_sv_FI.EditableDocumentUnpublishConfirmation : Translations_en_US.EditableDocumentUnpublishConfirmation);\r\n\t\tTranslations.SavingFilterWasNotSuccessfulErrorParameter = culture === \"fi\" ? Translations_fi.SavingFilterWasNotSuccessfulErrorParameter : (culture === \"sv-FI\" ? Translations_sv_FI.SavingFilterWasNotSuccessfulErrorParameter : Translations_en_US.SavingFilterWasNotSuccessfulErrorParameter);\r\n\t\tTranslations.UnlockingTaskParameterWasNotSuccessful = culture === \"fi\" ? Translations_fi.UnlockingTaskParameterWasNotSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.UnlockingTaskParameterWasNotSuccessful : Translations_en_US.UnlockingTaskParameterWasNotSuccessful);\r\n\t\tTranslations.ExternalSystemCodeClaimNotFound = culture === \"fi\" ? Translations_fi.ExternalSystemCodeClaimNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.ExternalSystemCodeClaimNotFound : Translations_en_US.ExternalSystemCodeClaimNotFound);\r\n\t\tTranslations.SearchTasks = culture === \"fi\" ? Translations_fi.SearchTasks : (culture === \"sv-FI\" ? Translations_sv_FI.SearchTasks : Translations_en_US.SearchTasks);\r\n\t\tTranslations.FormDate = culture === \"fi\" ? Translations_fi.FormDate : (culture === \"sv-FI\" ? Translations_sv_FI.FormDate : Translations_en_US.FormDate);\r\n\t\tTranslations.TaskDashboard = culture === \"fi\" ? Translations_fi.TaskDashboard : (culture === \"sv-FI\" ? Translations_sv_FI.TaskDashboard : Translations_en_US.TaskDashboard);\r\n\t\tTranslations.SaveReportAs = culture === \"fi\" ? Translations_fi.SaveReportAs : (culture === \"sv-FI\" ? Translations_sv_FI.SaveReportAs : Translations_en_US.SaveReportAs);\r\n\t\tTranslations.EditFamiliarization = culture === \"fi\" ? Translations_fi.EditFamiliarization : (culture === \"sv-FI\" ? Translations_sv_FI.EditFamiliarization : Translations_en_US.EditFamiliarization);\r\n\t\tTranslations.AddUserGroups = culture === \"fi\" ? Translations_fi.AddUserGroups : (culture === \"sv-FI\" ? Translations_sv_FI.AddUserGroups : Translations_en_US.AddUserGroups);\r\n\t\tTranslations.AddUserGroupParameterWasSuccessful = culture === \"fi\" ? Translations_fi.AddUserGroupParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.AddUserGroupParameterWasSuccessful : Translations_en_US.AddUserGroupParameterWasSuccessful);\r\n\t\tTranslations.WhistleBlowInformation = culture === \"fi\" ? Translations_fi.WhistleBlowInformation : (culture === \"sv-FI\" ? Translations_sv_FI.WhistleBlowInformation : Translations_en_US.WhistleBlowInformation);\r\n\t\tTranslations.UserIsCompanyAdminClaimNotFound = culture === \"fi\" ? Translations_fi.UserIsCompanyAdminClaimNotFound : (culture === \"sv-FI\" ? Translations_sv_FI.UserIsCompanyAdminClaimNotFound : Translations_en_US.UserIsCompanyAdminClaimNotFound);\r\n\t\tTranslations.EditEventTypeBs = culture === \"fi\" ? Translations_fi.EditEventTypeBs : (culture === \"sv-FI\" ? Translations_sv_FI.EditEventTypeBs : Translations_en_US.EditEventTypeBs);\r\n\t\tTranslations.AddTaskType = culture === \"fi\" ? Translations_fi.AddTaskType : (culture === \"sv-FI\" ? Translations_sv_FI.AddTaskType : Translations_en_US.AddTaskType);\r\n\t\tTranslations.DefaultTaskStates = culture === \"fi\" ? Translations_fi.DefaultTaskStates : (culture === \"sv-FI\" ? Translations_sv_FI.DefaultTaskStates : Translations_en_US.DefaultTaskStates);\r\n\t\tTranslations.TaskPriorityCodeMustBeDefined = culture === \"fi\" ? Translations_fi.TaskPriorityCodeMustBeDefined : (culture === \"sv-FI\" ? Translations_sv_FI.TaskPriorityCodeMustBeDefined : Translations_en_US.TaskPriorityCodeMustBeDefined);\r\n\t\tTranslations.TaskRemainderCheckingAndNotificationStarted = culture === \"fi\" ? Translations_fi.TaskRemainderCheckingAndNotificationStarted : (culture === \"sv-FI\" ? Translations_sv_FI.TaskRemainderCheckingAndNotificationStarted : Translations_en_US.TaskRemainderCheckingAndNotificationStarted);\r\n\t\tTranslations.Reminder = culture === \"fi\" ? Translations_fi.Reminder : (culture === \"sv-FI\" ? Translations_sv_FI.Reminder : Translations_en_US.Reminder);\r\n\t\tTranslations.InstantMessageChannelUsers = culture === \"fi\" ? Translations_fi.InstantMessageChannelUsers : (culture === \"sv-FI\" ? Translations_sv_FI.InstantMessageChannelUsers : Translations_en_US.InstantMessageChannelUsers);\r\n\t\tTranslations.EditSharedDocumentTemplate = culture === \"fi\" ? Translations_fi.EditSharedDocumentTemplate : (culture === \"sv-FI\" ? Translations_sv_FI.EditSharedDocumentTemplate : Translations_en_US.EditSharedDocumentTemplate);\r\n\t\tTranslations.SharedFiltersAndReports = culture === \"fi\" ? Translations_fi.SharedFiltersAndReports : (culture === \"sv-FI\" ? Translations_sv_FI.SharedFiltersAndReports : Translations_en_US.SharedFiltersAndReports);\r\n\t\tTranslations.DeletingEventParameterWasSuccessful = culture === \"fi\" ? Translations_fi.DeletingEventParameterWasSuccessful : (culture === \"sv-FI\" ? Translations_sv_FI.DeletingEventParameterWasSuccessful : Translations_en_US.DeletingEventParameterWasSuccessful);\r\n\t\tTranslations.NoFavoritesToShow = culture === \"fi\" ? Translations_fi.NoFavoritesToShow : (culture === \"sv-FI\" ? Translations_sv_FI.NoFavoritesToShow : Translations_en_US.NoFavoritesToShow);\r\n\t\tTranslations.RelatedToDatabaseRecordType = culture === \"fi\" ? Translations_fi.RelatedToDatabaseRecordType : (culture === \"sv-FI\" ? Translations_sv_FI.RelatedToDatabaseRecordType : Translations_en_US.RelatedToDatabaseRecordType);\r\n\t\tTranslations.RemovePrint = culture === \"fi\" ? Translations_fi.RemovePrint : (culture === \"sv-FI\" ? Translations_sv_FI.RemovePrint : Translations_en_US.RemovePrint);\r\n\t}\r\n\r\n\t//Divided to multiple functions because of error - TS2563 The containing function or module body is too large for control flow analysis.\r\n\tstatic setCulture(culture: string) {\r\n\t this.setCulture1(culture);\r\n\t this.setCulture2(culture);\r\n\t this.setCulture3(culture);\r\n\t}\r\n}\r\n \r\n// ReSharper restore InconsistentNaming\r\n","import { alpha, createTheme } from \"@mui/material\";\r\n\r\ndeclare module \"@mui/material/styles\" {\r\n // eslint-disable-next-line no-unused-vars\r\n interface BreakpointOverrides {\r\n xs: true;\r\n sm: true;\r\n md: true;\r\n lg: true;\r\n xl: true;\r\n xxl: true;\r\n }\r\n}\r\n\r\nexport const muiTheme = createTheme({\r\n breakpoints: {\r\n values: {\r\n xs: 0,\r\n sm: 600,\r\n md: 900,\r\n lg: 1200,\r\n xl: 1536,\r\n xxl: 1736\r\n },\r\n },\r\n typography: {\r\n fontFamily: \"'Inter', sans-serif\",\r\n },\r\n palette: {\r\n // mode: \"dark\",\r\n // background: {\r\n // default: \"#040d19\",\r\n // paper: \"#071426\",\r\n // },\r\n primary: {\r\n main: \"#2856B7\",\r\n },\r\n secondary: {\r\n main: \"#156DEE\",\r\n },\r\n text: {\r\n disabled: \"rgba(0, 0, 0, .6)\",\r\n },\r\n action: {\r\n selected: alpha(\"#2856B7\", 0.12),\r\n selectedOpacity: 0.12,\r\n },\r\n background: {\r\n default: \"#e9ecf0\",\r\n },\r\n error: {\r\n main: \"#ff7878\",\r\n contrastText: \"#fff\",\r\n },\r\n success: {\r\n main: \"#4caf50\",\r\n },\r\n info: {\r\n main: \"#03a9f4\",\r\n },\r\n warning: {\r\n main: \"#ff9800\",\r\n }\r\n },\r\n components: {\r\n MuiCssBaseline: {\r\n styleOverrides: (theme) => ({\r\n \"body\": {\r\n boxSizing: \"border-box\",\r\n fontFamily: \"'Inter', sans-serif !important\",\r\n fontSize: \"14px\",\r\n height: \"100%\",\r\n lineHeight: \"1.42857143\",\r\n paddingTop: \"120px !important\",\r\n backgroundColor: `${theme.palette.background.default} !important`,\r\n },\r\n \"*\": {\r\n \"scrollbarWidth\": \"thin\",\r\n \"&::-webkit-scrollbar\": {\r\n width: \"8px\",\r\n },\r\n },\r\n }\r\n ),\r\n },\r\n MuiTypography: {\r\n defaultProps: {\r\n variant: \"body2\",\r\n },\r\n },\r\n MuiCard: {\r\n styleOverrides: {\r\n root: {\r\n borderRadius: \".5rem\",\r\n },\r\n },\r\n },\r\n MuiCardHeader: {\r\n styleOverrides: {\r\n root: ({ theme }) => ({\r\n background: theme.palette.action.hover,\r\n borderBottom: \"1px solid\",\r\n borderColor: theme.palette.divider,\r\n fontSize: \"1rem\",\r\n color: theme.palette.text.secondary,\r\n padding: \"9px 1.5rem\",\r\n }),\r\n },\r\n },\r\n MuiDialogTitle: {\r\n styleOverrides: {\r\n root: ({ theme }) => ({\r\n backgroundColor: theme.palette.action.hover,\r\n color: theme.palette.getContrastText(theme.palette.background.default),\r\n fontSize: \"1rem\",\r\n fontWeight: 600,\r\n }),\r\n },\r\n },\r\n MuiDialogContent: {\r\n styleOverrides: {\r\n root: {\r\n padding: \"1rem 1.5rem !important\",\r\n },\r\n },\r\n },\r\n MuiDialogActions: {\r\n styleOverrides: {\r\n root: {\r\n padding: \"16px 24px\",\r\n },\r\n },\r\n },\r\n MuiFormControlLabel: {\r\n styleOverrides: {\r\n root: {\r\n marginBottom: \"0px !important\",\r\n },\r\n },\r\n defaultProps: {\r\n slotProps: {\r\n typography: {\r\n variant: \"body2\",\r\n },\r\n },\r\n },\r\n },\r\n MuiAccordionSummary: {\r\n styleOverrides: {\r\n root: ({ theme }) => ({\r\n border: \"1px solid\",\r\n borderColor: theme.palette.divider,\r\n background: theme.palette.action.hover,\r\n }),\r\n content: {\r\n width: \"100%\",\r\n }\r\n },\r\n },\r\n MuiTab: {\r\n styleOverrides: {\r\n root: {\r\n \"textTransform\": \"none\",\r\n \"fontSize\": \".875rem\",\r\n \"minHeight\": \"44px\",\r\n \":focus\": {\r\n outline: \"none\",\r\n },\r\n },\r\n },\r\n },\r\n MuiButton: {\r\n styleOverrides: {\r\n outlined: ({ theme }) => ({\r\n backgroundColor: theme.palette.background.paper,\r\n }),\r\n root: {\r\n borderRadius: \"8px\",\r\n textTransform: \"none\",\r\n outline: \"none !important\",\r\n },\r\n sizeMedium: {\r\n padding: \"7px 16px\",\r\n }\r\n },\r\n },\r\n MuiToggleButton: {\r\n styleOverrides: {\r\n root: {\r\n \":focus\": {\r\n outline: \"none\",\r\n },\r\n },\r\n },\r\n },\r\n MuiOutlinedInput: {\r\n styleOverrides: {\r\n root: ({ theme }) => ({\r\n background: theme.palette.background.paper,\r\n }),\r\n },\r\n },\r\n MuiInputBase: {\r\n defaultProps: {\r\n size: \"small\",\r\n fullWidth: true,\r\n },\r\n },\r\n MuiSelect: {\r\n defaultProps: {\r\n displayEmpty: true,\r\n size: \"small\",\r\n fullWidth: true,\r\n MenuProps: {\r\n slotProps: {\r\n paper: {\r\n sx: {\r\n maxHeight: \"374px\",\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n MuiMenuItem: {\r\n styleOverrides: {\r\n root: {\r\n maxHeight: \"42px\",\r\n },\r\n },\r\n },\r\n MuiIconButton: {\r\n styleOverrides: {\r\n root: {\r\n \":focus\": {\r\n outline: \"none\",\r\n },\r\n },\r\n },\r\n },\r\n MuiListItemButton: {\r\n styleOverrides: {\r\n root: ({ theme }) => ({\r\n height: \"42px\",\r\n }),\r\n },\r\n defaultProps: {\r\n disableRipple: true,\r\n },\r\n },\r\n MuiLink: {\r\n defaultProps: {\r\n textAlign: \"left\",\r\n },\r\n styleOverrides: {\r\n button: {\r\n outline: \"none !important\",\r\n },\r\n },\r\n },\r\n MuiCircularProgress: {\r\n defaultProps: {\r\n color: \"primary\",\r\n },\r\n },\r\n },\r\n});\r\n","import { Base } from \"../../framework/base\";\r\nimport { UserType } from \"../enums\";\r\n\r\nexport interface ISortModifyUsersParams {\r\n column?: string;\r\n asc?: boolean;\r\n currentUserCode?: string;\r\n}\r\n\r\nexport interface IModifyUser {\r\n code: string;\r\n name: string;\r\n date: number;\r\n picture: string;\r\n userType: UserType;\r\n\r\n isRemoved(): boolean;\r\n}\r\n\r\nexport class ModifyUser implements IModifyUser {\r\n code: string;\r\n name: string;\r\n date: number;\r\n picture: string;\r\n userType: UserType;\r\n\r\n constructor();\r\n constructor(obj: IModifyUser);\r\n constructor(obj?: any) {\r\n this.code = obj && obj.code || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.date = obj && obj.date || 0;\r\n this.picture = obj && obj.picture || \"\";\r\n this.userType = obj && obj.userType || UserType.Normal;\r\n }\r\n\r\n isRemoved(): boolean {\r\n return this.userType === UserType.Removed;\r\n }\r\n\r\n static createModifyUser(code: string, name: string, date: number, picture: string): IModifyUser {\r\n const result = new ModifyUser();\r\n result.code = code;\r\n result.name = name;\r\n result.date = date;\r\n result.picture = picture;\r\n result.userType = UserType.Normal;\r\n return result;\r\n }\r\n\r\n static sortModifyUsers(items: IModifyUser[], { column = \"name\", asc = true, currentUserCode = null }: ISortModifyUsersParams = { column: \"name\", asc: true, currentUserCode: null }): IModifyUser[] {\r\n if (!items && items.length < 2) return items;\r\n let result: IModifyUser[];\r\n if (column === \"code\") {\r\n result = items.sort((a: IModifyUser, b: IModifyUser) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.code, b.code)); });\r\n } else if (column === \"date\") {\r\n result = items.sort((a: IModifyUser, b: IModifyUser) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.date, b.date)); });\r\n } else {\r\n result = items.sort((a: IModifyUser, b: IModifyUser) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.name, b.name)); });\r\n }\r\n if (currentUserCode) {\r\n result = Base.moveToFirst(result, result.findIndex(i => i.code === currentUserCode));\r\n }\r\n return result;\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { FileAttachment, IFileAttachment } from \"../common/fileAttachment\";\r\nimport { EnumHelper, InstantMessageReadState } from \"../enums\";\r\nimport { Translations } from \"../translations\";\r\nimport { IModifyUser, ModifyUser } from \"../user/modifyUser\";\r\n\r\nexport interface IInstantMessageListItemData {\r\n id: string;\r\n channelId: string;\r\n content: string;\r\n readState: InstantMessageReadState;\r\n rowId: string;\r\n modifyUser: IModifyUser;\r\n deleteUser: IModifyUser;\r\n attachments: IFileAttachment[];\r\n replyToInstantMessage: IInstantMessageListItemData;\r\n}\r\n\r\nexport interface IInstantMessageListItem extends IInstantMessageListItemData {\r\n isTitle: boolean;\r\n replyToInstantMessage: IInstantMessageListItem;\r\n\r\n isNew(): boolean;\r\n isDeleted(): boolean;\r\n isNotRead(): boolean;\r\n isSomeRead(): boolean;\r\n isAllRead(): boolean\r\n isUserRead(): boolean\r\n getHash(): string;\r\n getText(userCode: string): string;\r\n}\r\n\r\nexport class InstantMessageListItem implements IInstantMessageListItem {\r\n id: string;\r\n channelId: string;\r\n content: string;\r\n readState: InstantMessageReadState;\r\n rowId: string;\r\n modifyUser: ModifyUser;\r\n deleteUser: ModifyUser;\r\n attachments: IFileAttachment[];\r\n replyToInstantMessage: InstantMessageListItem;\r\n\r\n isTitle: boolean;\r\n\r\n constructor();\r\n constructor(obj: IInstantMessageListItem);\r\n constructor(obj: IInstantMessageListItemData);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.channelId = obj && obj.channelId || \"\";\r\n this.content = obj && obj.content || \"\";\r\n this.readState = obj && obj.readState || InstantMessageReadState.NotRead;\r\n this.rowId = obj && obj.rowId || \"\";\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n this.deleteUser = obj && obj.deleteUser ? new ModifyUser(obj.deleteUser) : null;\r\n this.attachments = Base.getTypedArray(obj ? obj.attachments : null, FileAttachment);\r\n this.replyToInstantMessage = null;\r\n if (obj && obj.replyToInstantMessage) {\r\n this.replyToInstantMessage = new InstantMessageListItem(obj.replyToInstantMessage);\r\n }\r\n this.isTitle = obj && obj.isTitle || false;\r\n }\r\n\r\n isNew(): boolean {\r\n return !this.rowId;\r\n }\r\n\r\n isDeleted(): boolean {\r\n return !!this.deleteUser;\r\n }\r\n\r\n isNotRead(): boolean {\r\n return EnumHelper.isEqual(this.readState, InstantMessageReadState.NotRead);\r\n }\r\n\r\n isSomeRead(): boolean {\r\n return EnumHelper.isEqual(this.readState, InstantMessageReadState.SomeRead);\r\n }\r\n\r\n isAllRead(): boolean {\r\n return EnumHelper.isEqual(this.readState, InstantMessageReadState.AllRead);\r\n }\r\n\r\n isUserRead(): boolean {\r\n return EnumHelper.isEqual(this.readState, InstantMessageReadState.UserRead);\r\n }\r\n\r\n getHash(): string {\r\n return this.id + \"#\" + this.rowId;\r\n }\r\n\r\n getText(userCode: string): string {\r\n return this.isDeleted()\r\n ? (this.deleteUser.code === userCode\r\n ? Translations.YouDeletedThisMessage\r\n : (this.modifyUser.code === this.deleteUser.code\r\n ? Translations.ThisMessageWasDeleted\r\n : String.format(Translations.ThisMessageWasDeletedByInstantMessageChannelAdministrator, this.deleteUser.name)\r\n )\r\n )\r\n : this.content;\r\n }\r\n \r\n static sortInstantMessageListItems(items: IInstantMessageListItem[], column: string, asc: boolean): IInstantMessageListItem[] {\r\n if (!items && items.length < 2) return items;\r\n return items.sort((a: IInstantMessageListItem, b: IInstantMessageListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.modifyUser.date, b.modifyUser.date)); });\r\n }\r\n\r\n static createTitleItem(title: string): IInstantMessageListItem {\r\n const result = new InstantMessageListItem();\r\n result.id = Base.getGuid();\r\n result.isTitle = true;\r\n result.content = title;\r\n return result;\r\n }\r\n}","import { IModifyUser, ModifyUser } from \"../user/modifyUser\";\r\n\r\nexport interface IInstantMessageChannelInvitation {\r\n id: string;\r\n sender: IModifyUser;\r\n getHash(): string;\r\n}\r\n\r\nexport class InstantMessageChannelInvitation implements IInstantMessageChannelInvitation {\r\n id: string;\r\n sender: ModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IInstantMessageChannelInvitation);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.sender = new ModifyUser(obj ? obj.sender : null);\r\n }\r\n\r\n getHash(): string {\r\n return this.id + \"#\" + this.sender.code;\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { IInstantMessageChannelInvitation, InstantMessageChannelInvitation } from \"./instantMessageChannelInvitation\";\r\nimport { IInstantMessageListItem, InstantMessageListItem } from \"./instantMessageListItem\";\r\n\r\nexport interface IInstantMessageChannelItemData {\r\n id: string;\r\n code: string;\r\n picture: string;\r\n comment: string;\r\n active: boolean;\r\n rowId: string;\r\n userIsAdmin: boolean;\r\n userIsOnlyAdmin: boolean;\r\n isGroup: boolean;\r\n otherUserCode: string;\r\n hasUnreadMessages: boolean;\r\n latestMessage: IInstantMessageListItem;\r\n invitation: IInstantMessageChannelInvitation;\r\n}\r\n\r\nexport interface IInstantMessageChannelItem extends IInstantMessageChannelItemData {\r\n getHash(): string;\r\n getPicture(): string;\r\n getPictureClass(): string;\r\n getLatestMessageDate(): number;\r\n}\r\n\r\nexport class InstantMessageChannelItem implements IInstantMessageChannelItem {\r\n id: string;\r\n code: string;\r\n picture: string;\r\n comment: string;\r\n active: boolean;\r\n rowId: string;\r\n userIsAdmin: boolean;\r\n userIsOnlyAdmin: boolean;\r\n isGroup: boolean;\r\n otherUserCode: string;\r\n hasUnreadMessages: boolean;\r\n latestMessage: InstantMessageListItem;\r\n invitation: InstantMessageChannelInvitation;\r\n\r\n constructor();\r\n constructor(obj: IInstantMessageChannelItem);\r\n constructor(obj: IInstantMessageChannelItemData);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.picture = obj && obj.picture || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.active = obj && obj.active || false;\r\n this.rowId = obj && obj.rowId || \"\";\r\n this.userIsAdmin = obj && obj.userIsAdmin || false;\r\n this.userIsOnlyAdmin = obj && obj.userIsOnlyAdmin || false;\r\n this.isGroup = obj && obj.isGroup || false;\r\n this.otherUserCode = obj && obj.otherUserCode || \"\";\r\n this.hasUnreadMessages = obj && obj.hasUnreadMessages || false;\r\n this.latestMessage = obj?.latestMessage ? new InstantMessageListItem(obj.latestMessage) : null;\r\n this.invitation = obj?.invitation ? new InstantMessageChannelInvitation(obj.invitation) : null;\r\n }\r\n\r\n getHash(): string {\r\n return this.id + \"#\" + this.rowId + \"#\" + (this.latestMessage ? this.latestMessage.getHash() : \"\") + \"#\" + (this.invitation ? this.invitation.getHash() : \"\") + \"#\" + (this.hasUnreadMessages ? \"1\" : \"0\");\r\n }\r\n\r\n getPicture(): string {\r\n if (this.picture) {\r\n return this.picture;\r\n }\r\n return \"\";\r\n };\r\n\r\n getPictureClass(): string {\r\n if (this.getPicture()) {\r\n return \"\";\r\n } else {\r\n return this.isGroup ? \"icon instantMessageGroup\" : \"\";\r\n }\r\n };\r\n\r\n getLatestMessageDate(): number {\r\n if (this.invitation) {\r\n return this.invitation.sender.date;\r\n }\r\n if (this.latestMessage) {\r\n return this.latestMessage.modifyUser.date;\r\n }\r\n return 0;\r\n }\r\n\r\n static getHash(items: IInstantMessageChannelItem[]): string {\r\n if (!items && items.length < 1) return \"\";\r\n return items.map(i => i.getHash()).join(\",\");\r\n }\r\n\r\n static sortInstantMessageListItems(items: IInstantMessageChannelItem[]): IInstantMessageChannelItem[] {\r\n if (!items && items.length < 2) return items;\r\n return items.sort((a: IInstantMessageChannelItem, b: IInstantMessageChannelItem) => {\r\n if (!a || !b) return 0;\r\n let result = Base.numCompare(a.active ? 0 : 1, b.active ? 0 : 1);\r\n if (result !== 0) return result;\r\n result = -1 * Base.numCompare(a.getLatestMessageDate(), b.getLatestMessageDate());\r\n if (result !== 0) return result;\r\n return Base.strCompare(a.code, b.code);\r\n });\r\n }\r\n}","import { SignalRModuleType, SignalRRecordType } from \"../enums\";\r\nimport { IModifyUser, ModifyUser } from \"../user/modifyUser\";\r\n\r\nexport interface ISignalrNotification {\r\n id: string;\r\n module: SignalRModuleType;\r\n subject: string;\r\n title: string;\r\n body: string;\r\n recordId: string;\r\n recordType: SignalRRecordType;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class SignalrNotification implements ISignalrNotification {\r\n id: string;\r\n module: SignalRModuleType;\r\n subject: string;\r\n title: string;\r\n body: string;\r\n recordId: string;\r\n recordType: SignalRRecordType;\r\n modifyUser: ModifyUser;\r\n\r\n constructor();\r\n constructor(obj: ISignalrNotification);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.module = obj && obj.module || SignalRModuleType.Unknown;\r\n this.subject = obj && obj.subject || \"\";\r\n this.title = obj && obj.title || \"\";\r\n this.body = obj && obj.body || \"\";\r\n this.recordId = obj && obj.recordId || \"\";\r\n this.recordType = obj && obj.recordType || SignalRRecordType.Unknown;\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { Connection, Proxy, hubConnection } from \"signalr-no-jquery\";\r\nimport { IInstantMessageListItem, IInstantMessageListItemData, InstantMessageListItem } from \"../instantMessage/instantMessageListItem\";\r\nimport { IInstantMessageChannelItemData, InstantMessageChannelItem, IInstantMessageChannelItem } from \"../instantMessage/instantMessageChannelItem\";\r\nimport { ISignalrNotification, SignalrNotification } from \"../common/signalrNotification\";\r\n\r\nexport interface ISignalROperations {\r\n onUpdateInstantMessageListLine?: (item: IInstantMessageListItem) => void;\r\n onRemoveInstantMessageChannel?: (instantMessageChannelId: string) => void;\r\n onUpdateInstantMessageChannel?: (channel: IInstantMessageChannelItem) => void;\r\n onShowNotification?: (notification: ISignalrNotification) => void;\r\n}\r\n\r\nexport class SignalRConnectionManager {\r\n private connection: Connection;\r\n private hub: Proxy;\r\n private openingConnection: boolean;\r\n\r\n //appConfig.rootUrl\r\n openConnection = (rootUrl: string, operations: ISignalROperations, signalRToken: string = null) => {\r\n if (this.openingConnection || this.connection) return;\r\n this.openingConnection = true;\r\n this.connection = hubConnection(rootUrl.substr(0, rootUrl.length - 1), { qs: \"st=\" + signalRToken ?? \"\" });\r\n this.hub = this.connection.createHubProxy(\"SignalRHub\");\r\n if (operations.onUpdateInstantMessageListLine) {\r\n this.hub\r\n .off(\"updateInstantMessageListLine\")\r\n .on(\"updateInstantMessageListLine\", (item: IInstantMessageListItemData) => {\r\n if (!item) return;\r\n operations.onUpdateInstantMessageListLine(new InstantMessageListItem(item));\r\n });\r\n }\r\n if (operations.onRemoveInstantMessageChannel) {\r\n this.hub\r\n .off(\"removeInstantMessageChannel\")\r\n .on(\"removeInstantMessageChannel\", (instantMessageChannelId: string) => {\r\n if (!instantMessageChannelId) return;\r\n operations.onRemoveInstantMessageChannel(instantMessageChannelId);\r\n });\r\n }\r\n if (operations.onUpdateInstantMessageChannel) {\r\n this.hub\r\n .off(\"updateInstantMessageChannel\")\r\n .on(\"updateInstantMessageChannel\", (channel: IInstantMessageChannelItemData) => {\r\n if (!channel) return;\r\n operations.onUpdateInstantMessageChannel(new InstantMessageChannelItem(channel));\r\n });\r\n }\r\n if (operations.onShowNotification) {\r\n this.hub\r\n .off(\"showNotification\")\r\n .on(\"showNotification\", (item: ISignalrNotification) => {\r\n if (!item) return;\r\n operations.onShowNotification(new SignalrNotification(item));\r\n });\r\n }\r\n this.connection.start()\r\n .done(() => {\r\n this.openingConnection = false;\r\n console.log(\"[App] SignalR connected, id = \" + this.connection.id);\r\n }).fail((error) => {\r\n this.openingConnection = false;\r\n this.connection = null;\r\n this.hub = null;\r\n console.log(\"[App] SignalR connection error = \" + error);\r\n });\r\n };\r\n\r\n closeConnection = () => {\r\n if (!this.connection) return;\r\n this.connection.stop(true, true);\r\n this.connection = null;\r\n this.hub = null;\r\n };\r\n}","import { DatabaseRecordType } from \"../enums\";\r\nimport { IModifyUser } from \"../user/modifyUser\";\r\n\r\nexport interface ILockedRecord {\r\n companyId: string;\r\n id: string;\r\n userCode: string;\r\n recordType: DatabaseRecordType;\r\n}\r\n\r\nexport class LockedRecord implements ILockedRecord {\r\n companyId: string;\r\n id: string;\r\n userCode: string;\r\n recordType: DatabaseRecordType;\r\n\r\n constructor();\r\n constructor(obj: ILockedRecord);\r\n constructor(obj?: any) {\r\n this.companyId = obj && obj.companyId || \"\";\r\n this.id = obj && obj.id || \"\";\r\n this.userCode = obj && obj.userCode || \"\";\r\n this.recordType = obj && obj.recordType || DatabaseRecordType.Message;\r\n }\r\n\r\n static isLockedToUser(lockedUser: IModifyUser, userCode: string): boolean {\r\n return lockedUser?.code && userCode.equalIgnoreCase(lockedUser.code);\r\n }\r\n\r\n static createLockedRecord(companyId: string, id: string, userCode: string, recordType: DatabaseRecordType): ILockedRecord {\r\n const result = new LockedRecord();\r\n result.companyId = companyId;\r\n result.id = id;\r\n result.userCode = userCode;\r\n result.recordType = recordType;\r\n return result;\r\n }\r\n}","import { ISessionState, SessionState } from \"../session/sessionState\";\r\nimport { ILockedRecord, LockedRecord } from \"ui/Scripts/source/models/common/lockedRecord\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\ninterface IPushSubscription {\r\n userCode: string;\r\n}\r\n\r\nexport class IndexedDbManager {\r\n private static sessionStore = \"sessionState\";\r\n private static sessionKey = \"session\";\r\n private static lockedRecordsKey = \"lockedRecords\";\r\n private static pushSubscriptionStore = \"pushSubscription\";\r\n\r\n private static isNullOrEmpty(test: string): boolean {\r\n return test === null || test === undefined || test === \"\";\r\n }\r\n\r\n private static isEmptyArray(test: string[]): boolean {\r\n return test === null || test === undefined || test.length < 1;\r\n }\r\n\r\n private static openDb(): Promise {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n const request = indexedDB.open(appConfig.clientDatabaseName, 2);\r\n request.onsuccess = () => {\r\n return resolve(request.result);\r\n };\r\n request.onerror = (event) => {\r\n console.log(event);\r\n return reject(new Error(\"Opening IndexedDb failed!\"));\r\n };\r\n request.onupgradeneeded = (event: IDBVersionChangeEvent) => {\r\n const db = (event).target.result;\r\n if (event.oldVersion < 1) {\r\n db.createObjectStore(IndexedDbManager.sessionStore);\r\n }\r\n if (event.oldVersion < 2) {\r\n const pushSubscriptionStore = db.createObjectStore(IndexedDbManager.pushSubscriptionStore);\r\n pushSubscriptionStore.createIndex(\"iUserCode\", \"userCode\");\r\n }\r\n const tx = (event).target.transaction;\r\n tx.oncomplete = () => {\r\n return resolve(db);\r\n };\r\n };\r\n } catch (e) {\r\n console.error(e, appConfig.clientDatabaseName, 2);\r\n return reject(e);\r\n }\r\n });\r\n }\r\n\r\n private static getAllKeysFromIndex(db: IDBDatabase, storeName: string, indexName: string, indexValue: string): Promise {\r\n return new Promise((resolve, reject) => {\r\n const result: string[] = [];\r\n try {\r\n const tx = db.transaction([storeName], \"readonly\");\r\n const store = tx.objectStore(storeName);\r\n const index = store.index(indexName);\r\n const keyRange = IDBKeyRange.only(indexValue);\r\n const request = index.openCursor(keyRange);\r\n request.onsuccess = e => {\r\n const cursor = (e).target.result;\r\n if (cursor) {\r\n // number | string | Date | BufferSource | IDBArrayKey\r\n result.push(cursor.primaryKey);\r\n cursor.continue();\r\n } else {\r\n resolve(result);\r\n }\r\n };\r\n request.onerror = (event) => {\r\n console.log(event);\r\n return reject(new Error(\"IndexedDb openCursor failed!\"));\r\n };\r\n } catch (e) {\r\n console.error(e, [storeName], \"readonly\");\r\n return reject(e);\r\n }\r\n });\r\n }\r\n\r\n private static get(db: IDBDatabase, storeName: string, key: string): Promise {\r\n if (this.isNullOrEmpty(key)) return new Promise((resolve) => { resolve(null); });\r\n return new Promise((resolve, reject) => {\r\n try {\r\n const tx = db.transaction(storeName, \"readonly\");\r\n tx.onerror = (event) => {\r\n console.log(\"IndexedDb get transaction failed!\", event);\r\n };\r\n const store = tx.objectStore(storeName);\r\n const request = store.get(key);\r\n request.onerror = (event) => {\r\n console.log(event);\r\n return reject(new Error(\"IndexedDb get failed!\"));\r\n };\r\n request.onsuccess = () => {\r\n return resolve(request.result);\r\n };\r\n } catch (e) {\r\n console.error(e, storeName, \"readonly\");\r\n return reject(e);\r\n }\r\n });\r\n }\r\n\r\n private static put(db: IDBDatabase, storeName: string, value: T, key: string): Promise {\r\n if (this.isNullOrEmpty(key)) return new Promise((resolve) => { resolve(); });\r\n return new Promise((resolve, reject) => {\r\n try {\r\n const tx = db.transaction(storeName, \"readwrite\");\r\n tx.oncomplete = () => {\r\n return resolve();\r\n };\r\n tx.onerror = (event) => {\r\n console.log(event);\r\n return reject(new Error(\"IndexedDb put transaction failed!\"));\r\n };\r\n const store = tx.objectStore(storeName);\r\n const request = store.put(value, key);\r\n request.onerror = (event) => {\r\n console.log(\"IndexedDb put failed!\", event);\r\n };\r\n } catch (e) {\r\n console.error(e, storeName, \"readwrite\");\r\n return reject(e);\r\n }\r\n });\r\n }\r\n\r\n private static remove(db: IDBDatabase, storeName: string, key: string): Promise {\r\n if (this.isNullOrEmpty(key)) return new Promise((resolve) => { resolve(); });\r\n return new Promise((resolve, reject) => {\r\n try {\r\n const tx = db.transaction(storeName, \"readwrite\");\r\n tx.oncomplete = () => {\r\n return resolve();\r\n };\r\n tx.onerror = (event) => {\r\n console.log(event);\r\n return reject(new Error(\"IndexedDb remove transaction failed!\"));\r\n };\r\n const store = tx.objectStore(storeName);\r\n const request = store.delete(key);\r\n request.onerror = (event) => {\r\n console.log(event);\r\n return reject(new Error(\"IndexedDb remove failed!\"));\r\n };\r\n request.onsuccess = () => {\r\n return resolve(request.result);\r\n };\r\n } catch (e) {\r\n console.error(e, storeName, \"readwrite\");\r\n return reject(e);\r\n }\r\n });\r\n }\r\n\r\n static async storeSessionState(sessionState: ISessionState): Promise {\r\n try {\r\n const db = await IndexedDbManager.openDb();\r\n await IndexedDbManager.put(db, IndexedDbManager.sessionStore, sessionState, IndexedDbManager.sessionKey);\r\n } catch (e) {\r\n console.error(\"storeSessionState\", e);\r\n }\r\n }\r\n\r\n static async getSessionState(): Promise {\r\n try {\r\n const db = await IndexedDbManager.openDb();\r\n const sessionState = await IndexedDbManager.get(db, IndexedDbManager.sessionStore, IndexedDbManager.sessionKey);\r\n return sessionState !== null && sessionState !== undefined ? new SessionState(sessionState) : null;\r\n } catch (e) {\r\n console.error(\"getSessionState\", e);\r\n return null;\r\n }\r\n }\r\n\r\n static async storePushSubscription(pushSubscriptionId: string, userCode: string): Promise {\r\n try {\r\n const db = await IndexedDbManager.openDb();\r\n await IndexedDbManager.put(db, IndexedDbManager.pushSubscriptionStore, { userCode }, pushSubscriptionId);\r\n } catch (e) {\r\n console.error(\"storePushSubscription\", e);\r\n }\r\n }\r\n\r\n static async getPushSubscriptionIds(userCode: string): Promise {\r\n if (!userCode) return new Promise((resolve) => { resolve([]); });\r\n try {\r\n const db = await IndexedDbManager.openDb();\r\n return await IndexedDbManager.getAllKeysFromIndex(db, IndexedDbManager.pushSubscriptionStore, \"iUserCode\", userCode);\r\n } catch (e) {\r\n console.error(\"getPushSubscriptionIds\", e);\r\n return [];\r\n }\r\n }\r\n\r\n private static removePushSubscriptionsFromDbByIds(db: IDBDatabase, subscriptionIds: string[]): Promise {\r\n if (this.isEmptyArray(subscriptionIds)) return new Promise((resolve) => { resolve(); });\r\n return new Promise((resolve, reject) => {\r\n try {\r\n const tx = db.transaction(IndexedDbManager.pushSubscriptionStore, \"readwrite\");\r\n tx.oncomplete = () => {\r\n return resolve();\r\n };\r\n tx.onerror = (event) => {\r\n console.log(event);\r\n return reject(new Error(\"Removing subscriptions failed!\"));\r\n };\r\n const store = tx.objectStore(IndexedDbManager.pushSubscriptionStore);\r\n for (let i = 0; i < subscriptionIds.length; i++) {\r\n const subscriptionId = subscriptionIds[i];\r\n const request = store.delete(IDBKeyRange.only(subscriptionId));\r\n request.onerror = (event) => {\r\n console.log(\"Removing subscription '\" + subscriptionId + \"' failed!\", event);\r\n };\r\n }\r\n } catch (e) {\r\n console.log(e);\r\n return reject(e);\r\n }\r\n });\r\n }\r\n\r\n static async removePushSubscriptions(subscriptionIds: string[]): Promise {\r\n if (this.isEmptyArray(subscriptionIds)) return new Promise((resolve) => { resolve(); });\r\n try {\r\n const db = await IndexedDbManager.openDb();\r\n await IndexedDbManager.removePushSubscriptionsFromDbByIds(db, subscriptionIds);\r\n } catch (e) {\r\n console.error(\"removePushSubscriptions\", e);\r\n }\r\n }\r\n\r\n static async removeUserPushSubscriptions(userCode: string): Promise {\r\n if (this.isNullOrEmpty(userCode)) return new Promise((resolve) => { resolve([]); });\r\n try {\r\n const db = await IndexedDbManager.openDb();\r\n const keys = await IndexedDbManager.getAllKeysFromIndex(db, IndexedDbManager.pushSubscriptionStore, \"iUserCode\", userCode);\r\n await IndexedDbManager.removePushSubscriptionsFromDbByIds(db, keys);\r\n db.close();\r\n return new Promise((resolve) => { resolve(keys); });\r\n } catch (e) {\r\n console.error(\"removePushSubscriptions\", e);\r\n }\r\n }\r\n\r\n static async addLockedRecords(addLockedRecords: ILockedRecord[]): Promise {\r\n if (!addLockedRecords || addLockedRecords.length < 1) return;\r\n try {\r\n const db = await IndexedDbManager.openDb();\r\n const dbLockedRecords = await IndexedDbManager.get(db, IndexedDbManager.sessionStore, IndexedDbManager.lockedRecordsKey);\r\n const addIds = addLockedRecords.map(i => i.id);\r\n const lockedRecords = Base.getTypedArray(dbLockedRecords, LockedRecord).filter(i => addIds.indexOf(i.id) < 0).concat(addLockedRecords);\r\n await IndexedDbManager.put(db, IndexedDbManager.sessionStore, lockedRecords, IndexedDbManager.lockedRecordsKey);\r\n } catch (e) {\r\n console.error(\"storeLockedRecord\", e);\r\n }\r\n }\r\n\r\n static async removeLockedRecords(ids: string[]): Promise {\r\n if (!ids || ids.length < 1) return;\r\n try {\r\n const db = await IndexedDbManager.openDb();\r\n const dbLockedRecords = await IndexedDbManager.get(db, IndexedDbManager.sessionStore, IndexedDbManager.lockedRecordsKey);\r\n const lockedRecords = Base.getTypedArray(dbLockedRecords, LockedRecord).filter(i => ids.indexOf(i.id) < 0);\r\n await IndexedDbManager.put(db, IndexedDbManager.sessionStore, lockedRecords, IndexedDbManager.lockedRecordsKey);\r\n } catch (e) {\r\n console.error(\"removeLockedRecords\", e);\r\n }\r\n }\r\n\r\n static async getLockedRecords(): Promise {\r\n try {\r\n const db = await IndexedDbManager.openDb();\r\n const dbLockedRecords = await IndexedDbManager.get(db, IndexedDbManager.sessionStore, IndexedDbManager.lockedRecordsKey);\r\n return Base.getTypedArray(dbLockedRecords, LockedRecord);\r\n } catch (e) {\r\n console.error(\"getLockedRecords\", e);\r\n return null;\r\n }\r\n }\r\n}","import { SessionState, ISessionState } from \"./sessionState\";\r\nimport { IndexedDbManager } from \"../indexedDb/indexedDbManager\";\r\n\r\n// Session and SessionState is used in client and service worker, so do not import anything extra\r\nexport class Session {\r\n private static indexedDbAvailable: boolean = null;\r\n private static localStorageAvailable: boolean = null;\r\n\r\n private static getSessionKey(): string {\r\n return appConfig.clientDatabaseName + \"_session\";\r\n }\r\n\r\n private static isNullOrUndefined(test: any): boolean {\r\n return test === null || test === undefined;\r\n }\r\n\r\n private static isNullOrEmpty(test: string): boolean {\r\n return test === null || test === undefined || test === \"\";\r\n }\r\n\r\n static setIndexedDbAvailable(value: boolean) {\r\n Session.indexedDbAvailable = value;\r\n if (!value) {\r\n console.log(\"indexedDB IS NOT available\");\r\n }\r\n }\r\n\r\n private static getIndexedDbAvailable(): boolean {\r\n if (!Session.isNullOrUndefined(Session.indexedDbAvailable)) return Session.indexedDbAvailable;\r\n try {\r\n Session.indexedDbAvailable = window !== null && window !== undefined && window.indexedDB !== null && window.indexedDB !== undefined;\r\n } catch (e) {\r\n Session.indexedDbAvailable = false;\r\n }\r\n return Session.indexedDbAvailable;\r\n }\r\n\r\n private static getLocalStorageAvailable(): boolean {\r\n if (!Session.isNullOrUndefined(Session.localStorageAvailable)) return Session.localStorageAvailable;\r\n try {\r\n Session.localStorageAvailable = localStorage !== null && localStorage !== undefined;\r\n } catch (e) {\r\n Session.localStorageAvailable = false;\r\n }\r\n return Session.localStorageAvailable;\r\n }\r\n\r\n static setSessionState(sessionState: SessionState): Promise {\r\n if (!Session.isNullOrUndefined(sessionState)) {\r\n sessionState.refreshTime = (new Date()).getTime();\r\n }\r\n if (Session.getIndexedDbAvailable()) {\r\n return IndexedDbManager.storeSessionState(sessionState);\r\n } else if (Session.getLocalStorageAvailable()) {\r\n localStorage.setItem(Session.getSessionKey(), !Session.isNullOrUndefined(sessionState) ? JSON.stringify(sessionState) : null);\r\n return new Promise((resolve) => { resolve(); });\r\n } else {\r\n return new Promise((resolve) => { resolve(); });\r\n }\r\n }\r\n\r\n static getSessionState(): Promise {\r\n if (Session.getIndexedDbAvailable()) {\r\n return IndexedDbManager.getSessionState();\r\n } else if (Session.getLocalStorageAvailable()) {\r\n const str = localStorage.getItem(Session.getSessionKey());\r\n const result = !Session.isNullOrEmpty(str) ? new SessionState(JSON.parse(str)) : null;\r\n return new Promise((resolve) => { resolve(result); });\r\n }\r\n return new Promise((resolve) => { resolve(null); });\r\n }\r\n}","import { handleResponse, handleError, handleFileResponse, handleFileBlobResponse, getJsonRequestInit, getFormDataRequestInit } from \"./baseService\";\r\nimport { Session } from \"../session/session\";\r\nimport { IEndlessList, EndlessList } from \"ui/Scripts/source/models/common/endlessList\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\nclass AbortItem {\r\n id: string;\r\n controller: AbortController;\r\n\r\n constructor() {\r\n this.id = Base.getGuid();\r\n this.controller = new AbortController();\r\n }\r\n}\r\n\r\nclass AbortManager {\r\n items: AbortItem[];\r\n\r\n constructor() {\r\n this.items = [];\r\n }\r\n \r\n get(): AbortItem {\r\n const result = new AbortItem();\r\n this.items.push(result);\r\n return result;\r\n }\r\n\r\n remove(id: string) {\r\n this.items = this.items.filter(i => i.id !== id);\r\n }\r\n\r\n abort(id: string) {\r\n if (!id) return;\r\n const item = this.items.find(i => i.id === id);\r\n if (!item) return;\r\n item.controller.abort();\r\n }\r\n\r\n abortAll() {\r\n for (const item of this.items) {\r\n item.controller.abort();\r\n }\r\n }\r\n\r\n clean() {\r\n this.items = [];\r\n }\r\n}\r\n\r\nexport const abortManager = new AbortManager();\r\n\r\nexport class AbortDictionary {\r\n abortIds: { [id: string]: string };\r\n\r\n constructor() {\r\n this.abortIds = {};\r\n }\r\n \r\n add(id: string, abortId: string) {\r\n if (!id) return;\r\n this.abortIds[id] = abortId;\r\n }\r\n \r\n remove(id: string) {\r\n if (!id) return;\r\n if (Object.prototype.hasOwnProperty.call(this.abortIds, id)) {\r\n delete this.abortIds[id];\r\n }\r\n }\r\n\r\n abort(id: string) {\r\n if (!id) return;\r\n if (Object.prototype.hasOwnProperty.call(this.abortIds, id)) {\r\n abortManager.abort(this.abortIds[id]);\r\n delete this.abortIds[id];\r\n }\r\n }\r\n\r\n abortAll() {\r\n try {\r\n for (const id in this.abortIds) {\r\n this.abort(id);\r\n }\r\n } catch (e) {\r\n console.log(\"abortAll\", e);\r\n }\r\n }\r\n}\r\n\r\nexport const logout = async () : Promise => {\r\n await Session.setSessionState(null);\r\n window.document.write('');\r\n window.location.href = appConfig.logoutUrl;\r\n return new Promise((resolve) => { resolve(); });\r\n};\r\n\r\nexport const navigateTo = (url: string) => {\r\n abortManager.abortAll();\r\n abortManager.clean();\r\n window.location.href = appConfig.rootUrl + url;\r\n};\r\n\r\nexport const getApiCall = async (url: string, type: (new (...args: any[]) => T), setAbortItem?: (id: string) => void): Promise => {\r\n const item = abortManager.get();\r\n if (setAbortItem) {\r\n setAbortItem(item.id);\r\n }\r\n try {\r\n const json = await handleResponse(await fetch(appConfig.rootUrl + url, getJsonRequestInit(item.controller.signal)));\r\n /* eslint-disable new-cap */\r\n return type\r\n ? !json ? new type() : new type(json)\r\n : !json ? 0 : (json.result);\r\n /* eslint-enable new-cap */\r\n } catch (e) {\r\n return handleError(e);\r\n } finally {\r\n abortManager.remove(item.id);\r\n }\r\n};\r\n\r\nexport const getFileApiCall = async (url: string, setAbortItem?: (id: string) => void): Promise => {\r\n const item = abortManager.get();\r\n if (setAbortItem) {\r\n setAbortItem(item.id);\r\n }\r\n try {\r\n return await handleFileResponse(await fetch(appConfig.rootUrl + url, getJsonRequestInit(item.controller.signal)));\r\n } catch (e) {\r\n return handleError(e);\r\n } finally {\r\n abortManager.remove(item.id);\r\n }\r\n};\r\n\r\nexport const postFileApiCall = async (url: string, body?: string, setAbortItem?: (id: string) => void): Promise => {\r\n const item = abortManager.get();\r\n if (setAbortItem) {\r\n setAbortItem(item.id);\r\n }\r\n try {\r\n return await handleFileResponse(await fetch(appConfig.rootUrl + url, getJsonRequestInit(item.controller.signal, \"POST\", body)));\r\n } catch (e) {\r\n return handleError(e);\r\n } finally {\r\n abortManager.remove(item.id);\r\n }\r\n};\r\n\r\nexport const postFormDataFileApiCall = async (url: string, data: FormData, setAbortItem?: (id: string) => void): Promise => {\r\n const item = abortManager.get();\r\n if (setAbortItem) {\r\n setAbortItem(item.id);\r\n }\r\n try {\r\n return await handleFileResponse(await fetch(appConfig.rootUrl + url, getFormDataRequestInit(item.controller.signal, \"POST\", data)));\r\n } catch (e) {\r\n return handleError(e);\r\n } finally {\r\n abortManager.remove(item.id);\r\n }\r\n};\r\n\r\nexport const getFileBlobApiCall = async (url: string, setAbortItem?: (id: string) => void): Promise => {\r\n const item = abortManager.get();\r\n if (setAbortItem) {\r\n setAbortItem(item.id);\r\n }\r\n try {\r\n return await handleFileBlobResponse(await fetch(appConfig.rootUrl + url, getJsonRequestInit(item.controller.signal)));\r\n } catch (e) {\r\n return handleError(e);\r\n } finally {\r\n abortManager.remove(item.id);\r\n }\r\n};\r\n\r\nexport const postFileBlobApiCall = async (url: string, body?: string, setAbortItem?: (id: string) => void): Promise => {\r\n const item = abortManager.get();\r\n if (setAbortItem) {\r\n setAbortItem(item.id);\r\n }\r\n try {\r\n return await handleFileBlobResponse(await fetch(appConfig.rootUrl + url, getJsonRequestInit(item.controller.signal, \"POST\", body)));\r\n } catch (e) {\r\n return handleError(e);\r\n } finally {\r\n abortManager.remove(item.id);\r\n }\r\n};\r\n\r\nexport const postApiCall = async (url: string, type: (new (...args: any[]) => T), body?: string, setAbortItem?: (id: string) => void): Promise => {\r\n const item = abortManager.get();\r\n if (setAbortItem) {\r\n setAbortItem(item.id);\r\n }\r\n try {\r\n const json = await handleResponse(await fetch(appConfig.rootUrl + url, getJsonRequestInit(item.controller.signal, \"POST\", body)));\r\n /* eslint-disable new-cap */\r\n return type\r\n ? !json ? new type() : new type(json)\r\n : !json ? 0 : (json.result);\r\n /* eslint-enable new-cap */\r\n } catch (e) {\r\n return handleError(e);\r\n } finally {\r\n abortManager.remove(item.id);\r\n }\r\n};\r\n\r\n//export const creatorPostApiCall = async (url: string, creator: (...args: any[]) => T, body?: string): Promise => {\r\n// const item = abortManager.get();\r\n// try {\r\n// const json = await handleResponse(await fetch(appConfig.rootUrl + url, getJsonRequestInit(item.controller.signal, \"POST\", body)));\r\n// /* eslint-disable new-cap */\r\n// return creator\r\n// ? !json ? creator() : creator(json)\r\n// : !json ? 0 : (json.result);\r\n// /* eslint-enable new-cap */\r\n// } catch (e) {\r\n// return handleError(e);\r\n// } finally {\r\n// abortManager.remove(item.id);\r\n// }\r\n//};\r\n\r\nexport const postFormApiCall = async (url: string, data: FormData, type: (new (...args: any[]) => T), setAbortItem?: (id: string) => void): Promise => {\r\n const item = abortManager.get();\r\n if (setAbortItem) {\r\n setAbortItem(item.id);\r\n }\r\n try {\r\n const json = await handleResponse(await fetch(appConfig.rootUrl + url, getFormDataRequestInit(item.controller.signal, \"POST\", data)));\r\n /* eslint-disable new-cap */\r\n return type\r\n ? !json ? new type() : new type(json)\r\n : !json ? 0 : (json.result);\r\n /* eslint-enable new-cap */\r\n } catch (e) {\r\n return handleError(e);\r\n } finally {\r\n abortManager.remove(item.id);\r\n }\r\n};\r\n\r\nexport const postEndlessListApiCall = async (url: string, type: (new (...args: any[]) => T), body?: string, setAbortItem?: (id: string) => void): Promise> => {\r\n const item = abortManager.get();\r\n if (setAbortItem) {\r\n setAbortItem(item.id);\r\n }\r\n try {\r\n const json = await handleResponse(await fetch(appConfig.rootUrl + url, getJsonRequestInit(item.controller.signal, \"POST\", body)));\r\n /* eslint-disable new-cap */\r\n return !json ? new EndlessList(null, type) : new EndlessList(json, type);\r\n /* eslint-enable new-cap */\r\n } catch (e) {\r\n return handleError(e);\r\n } finally {\r\n abortManager.remove(item.id);\r\n }\r\n};","import { IApiError } from \"./apiError\";\r\n\r\nexport interface IApiSuccess {\r\n message: string;\r\n errorMessage: string;\r\n}\r\n\r\nexport class ApiSuccess implements IApiSuccess {\r\n message: string;\r\n errorMessage: string;\r\n\r\n constructor();\r\n constructor(obj: IApiError);\r\n constructor(obj?: any) {\r\n this.message = obj && obj.message || \"\";\r\n this.errorMessage = obj && obj.errorMessage || \"\";\r\n }\r\n}","export const infiniteListPageSize = 60;\r\nexport const infiniteListDetailsViewPageSize = 10;\r\n//UserParameterCodes\r\nexport const userParameterCodeShowDocumentPreview = \"ShowDocumentPreview\";","import { DatabaseRecordType, EnumHelper } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\n\r\nexport interface IModifiedRecordListItem {\r\n id: string;\r\n companyId: string;\r\n title: string;\r\n userCode: string;\r\n userName: string;\r\n userPicture: string;\r\n modifyDate: number;\r\n fileType: number;\r\n recordType: number;\r\n\r\n getRecordTypeImageClass(): string;\r\n getRecordTypeIntraUrl(): string;\r\n getRecordTypeTitle(): string;\r\n isFile(): boolean;\r\n}\r\n\r\nexport class ModifiedRecordListItem implements IModifiedRecordListItem {\r\n id: string;\r\n companyId: string;\r\n title: string;\r\n userCode: string;\r\n userName: string;\r\n userPicture: string;\r\n modifyDate: number;\r\n fileType: number;\r\n recordType: number;\r\n\r\n constructor();\r\n constructor(obj: IModifiedRecordListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.companyId = obj && obj.companyId || \"\";\r\n this.title = obj && obj.title || \"\";\r\n this.userCode = obj && obj.userCode || \"\";\r\n this.userName = obj && obj.userName || \"\";\r\n this.userPicture = obj && obj.userPicture || \"\";\r\n this.modifyDate = obj && obj.modifyDate || 0;\r\n this.fileType = obj && obj.fileType || 0;\r\n this.recordType = obj && obj.recordType || 0;\r\n }\r\n\r\n getRecordTypeImageClass(): string {\r\n switch (this.recordType) {\r\n case DatabaseRecordType.Message:\r\n return \"message\";\r\n case DatabaseRecordType.Document:\r\n return \"file_type_20\";\r\n case DatabaseRecordType.File:\r\n return \"file_type_\" + this.fileType.toString(10);\r\n case DatabaseRecordType.Event:\r\n return \"event\";\r\n case DatabaseRecordType.Task:\r\n return \"task\";\r\n case DatabaseRecordType.RecordUser:\r\n return \"record\";\r\n case DatabaseRecordType.CompanyGroup:\r\n return \"companyGroup\";\r\n case DatabaseRecordType.Company:\r\n return \"company\";\r\n case DatabaseRecordType.UserGroup:\r\n return \"userGroup\";\r\n case DatabaseRecordType.User:\r\n return \"user\";\r\n case DatabaseRecordType.InstantMessage:\r\n return \"instantMessage\";\r\n default:\r\n return \"\";\r\n }\r\n }\r\n\r\n static getIntraUrlByRecordType(recordType: number): string {\r\n switch (recordType) {\r\n case DatabaseRecordType.Message:\r\n return \"new/message\";\r\n case DatabaseRecordType.Document:\r\n return \"new/document\";\r\n case DatabaseRecordType.File:\r\n return \"new/document\";\r\n case DatabaseRecordType.Event:\r\n return \"new/event\";\r\n case DatabaseRecordType.Task:\r\n return \"new/task\";\r\n case DatabaseRecordType.RecordUser:\r\n return \"new/record\";\r\n case DatabaseRecordType.CompanyGroup:\r\n return \"companygroup\";\r\n case DatabaseRecordType.Company:\r\n return \"new/company\";\r\n case DatabaseRecordType.UserGroup:\r\n return \"new/usergroup\";\r\n case DatabaseRecordType.User:\r\n return \"new/user?companyId\";\r\n case DatabaseRecordType.InstantMessage:\r\n return \"new/instantmessage\";\r\n case DatabaseRecordType.WhistleBlow:\r\n return \"new/whistleblow\";\r\n default:\r\n return \"\";\r\n }\r\n }\r\n\r\n getRecordTypeIntraUrl(): string {\r\n return ModifiedRecordListItem.getIntraUrlByRecordType(this.recordType);\r\n }\r\n\r\n static getTitleByRecordType(recordType: number): string {\r\n switch (recordType) {\r\n case DatabaseRecordType.Message:\r\n return Translations.Message;\r\n case DatabaseRecordType.Document:\r\n return Translations.EditableDocument;\r\n case DatabaseRecordType.File:\r\n return Translations.File;\r\n case DatabaseRecordType.Event:\r\n return Translations.Event;\r\n case DatabaseRecordType.Task:\r\n return Translations.Task;\r\n case DatabaseRecordType.RecordUser:\r\n return Translations.RecordUser;\r\n case DatabaseRecordType.CompanyGroup:\r\n return Translations.CompanyGroup;\r\n case DatabaseRecordType.Company:\r\n return Translations.Company;\r\n case DatabaseRecordType.UserGroup:\r\n return Translations.UserGroup;\r\n case DatabaseRecordType.User:\r\n return Translations.User;\r\n case DatabaseRecordType.InstantMessage:\r\n return Translations.InstantMessage;\r\n case DatabaseRecordType.WhistleBlow:\r\n return Translations.WhistleBlow;\r\n default:\r\n return \"\";\r\n }\r\n }\r\n\r\n getRecordTypeTitle(): string {\r\n return ModifiedRecordListItem.getTitleByRecordType(this.recordType);\r\n }\r\n\r\n static getPluralTitleByRecordType(recordType: number): string {\r\n switch (recordType) {\r\n case DatabaseRecordType.Message:\r\n return Translations.Messages;\r\n case DatabaseRecordType.Document:\r\n return Translations.Documents;\r\n case DatabaseRecordType.File:\r\n return Translations.Files;\r\n case DatabaseRecordType.Event:\r\n return Translations.Events;\r\n case DatabaseRecordType.Task:\r\n return Translations.Tasks;\r\n case DatabaseRecordType.RecordUser:\r\n return Translations.Resources;\r\n case DatabaseRecordType.CompanyGroup:\r\n return Translations.CompanyGroups;\r\n case DatabaseRecordType.Company:\r\n return Translations.Companies;\r\n case DatabaseRecordType.UserGroup:\r\n return Translations.UserGroups;\r\n case DatabaseRecordType.User:\r\n return Translations.Users;\r\n case DatabaseRecordType.InstantMessage:\r\n return Translations.InstantMessagesMenuTitle;\r\n case DatabaseRecordType.WhistleBlow:\r\n return Translations.WhistleBlow;\r\n default:\r\n return \"\";\r\n }\r\n }\r\n\r\n isFile(): boolean {\r\n return EnumHelper.isEqual(this.recordType, DatabaseRecordType.File);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { infiniteListPageSize } from \"../common/webConsts\";\r\nimport { IModifiedRecordListItem, ModifiedRecordListItem } from \"./modifiedRecordListItem\";\r\n\r\nexport interface IModifiedRecordListItems {\r\n items: IModifiedRecordListItem[];\r\n hasMore: boolean;\r\n page: number;\r\n //For preloaded data\r\n pageSize: number;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n}\r\n\r\nexport class ModifiedRecordListItems implements IModifiedRecordListItems {\r\n items: ModifiedRecordListItem[];\r\n hasMore: boolean;\r\n page: number;\r\n //For preloaded data\r\n pageSize: number;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n\r\n constructor();\r\n constructor(obj: IModifiedRecordListItems);\r\n constructor(obj?: any) {\r\n this.hasMore = obj && obj.hasMore || false;\r\n this.page = obj && obj.page || 1;\r\n this.pageSize = obj && obj.pageSize || infiniteListPageSize;\r\n this.sortColumn = obj && obj.sortColumn || \"\";\r\n this.sortOrderIsAsc = obj && obj.sortOrderIsAsc || true;\r\n this.items = Base.getTypedArray(obj ? obj.items : null, ModifiedRecordListItem);\r\n }\r\n}","export interface IFrontToDoItem {\r\n title: string;\r\n amount: number;\r\n important: boolean;\r\n}\r\n\r\nexport class FrontToDoItem implements IFrontToDoItem {\r\n title: string;\r\n amount: number;\r\n important: boolean;\r\n\r\n constructor();\r\n constructor(obj: IFrontToDoItem);\r\n constructor(obj?: any) {\r\n this.title = obj && obj.title || \"\";\r\n this.amount = obj && obj.amount || 0;\r\n this.important = obj && obj.important || false;\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { FrontToDoItem, IFrontToDoItem } from \"./frontToDoItem\";\r\nimport { ModifiedRecordListItem } from \"./modifiedRecordListItem\";\r\nimport { DatabaseRecordType } from \"ui/Scripts/source/models/enums\";\r\n\r\nexport interface IFrontToDoItemGroup {\r\n recordType: number;\r\n items: IFrontToDoItem[];\r\n\r\n getRecordTypeIntraUrl(): string;\r\n getRecordTypeTitle(): string;\r\n}\r\n\r\nexport class FrontToDoItemGroup implements IFrontToDoItemGroup {\r\n recordType: number;\r\n items: FrontToDoItem[];\r\n\r\n constructor();\r\n constructor(obj: IFrontToDoItemGroup);\r\n constructor(obj?: any) {\r\n this.recordType = obj && obj.recordType || 0;\r\n this.items = Base.getTypedArray(obj ? obj.items : null, FrontToDoItem);\r\n }\r\n\r\n getRecordTypeIntraUrl(): string {\r\n return ModifiedRecordListItem.getIntraUrlByRecordType(this.recordType) + (this.recordType === DatabaseRecordType.Event ? \"/list\" : \"\");\r\n }\r\n\r\n getRecordTypeTitle(): string {\r\n return ModifiedRecordListItem.getPluralTitleByRecordType(this.recordType);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { FrontToDoItemGroup, IFrontToDoItemGroup } from \"./frontToDoItemGroup\";\r\n\r\nexport interface IFrontToDoItemGroups {\r\n groups: IFrontToDoItemGroup[];\r\n}\r\n\r\nexport class FrontToDoItemGroups implements IFrontToDoItemGroups {\r\n groups: FrontToDoItemGroup[];\r\n\r\n constructor();\r\n constructor(obj: IFrontToDoItemGroup);\r\n constructor(obj?: any) {\r\n this.groups = Base.getTypedArray(obj ? obj.groups : null, FrontToDoItemGroup);\r\n }\r\n}","import { FrontPage } from \"../front/frontPage\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { AbortDictionary, getApiCall, postApiCall } from \"./tokenService\";\r\nimport { ModifiedRecordListItems } from \"../front/modifiedRecordListItems\";\r\nimport { FrontToDoItemGroups } from \"../front/frontToDoItemGroups\";\r\nimport { SessionState } from \"../session/sessionState\";\r\nimport { ITypedOption, TypedOptionSave } from \"../common/typedOption\";\r\nimport { IPagePanel } from \"../common/pagePanel\";\r\n\r\nexport interface IOtpSuccess {\r\n otp: string;\r\n}\r\n\r\nexport class OtpSuccess implements IOtpSuccess {\r\n otp: string;\r\n\r\n constructor();\r\n constructor(obj: IOtpSuccess);\r\n constructor(obj?: any) {\r\n this.otp = obj && obj.otp || \"\";\r\n }\r\n}\r\n\r\n//Abort\r\nconst frontAborts = new AbortDictionary();\r\n\r\nexport const getFrontPage = (): Promise => {\r\n return getApiCall(\"api/front\", FrontPage);\r\n};\r\n\r\nexport const getTime = (): Promise => {\r\n return getApiCall(\"api/front/gettime\", null);\r\n};\r\n\r\nexport const setCulture = (culture: string): Promise => {\r\n return postApiCall(\"api/front/setculture\", ApiSuccess, JSON.stringify({\r\n culture\r\n }));\r\n};\r\n\r\nexport const getOtp = (code: string): Promise => {\r\n return getApiCall(\"api/front/getotp?id=\" + code, OtpSuccess);\r\n};\r\n\r\nexport const getSessionState = (): Promise => {\r\n return getApiCall(\"api/front/getsessionstate\", SessionState);\r\n};\r\n\r\nexport const setActiveCompany = (companyId: string): Promise => {\r\n return postApiCall(\"api/front/setactivecompany?id=\" + companyId, SessionState);\r\n};\r\n\r\nexport const getModifiedRecordListItems = (userModified: boolean): Promise => {\r\n const operationId = \"getModifiedRecordListItems\" + (userModified ? \"_U\" : \"_C\");\r\n frontAborts.abort(operationId);\r\n return postApiCall(\"api/front/\" + (userModified ? \"usermodifiedrecords\" : \"companymodifiedrecords\"), ModifiedRecordListItems, null, (abortId: string) => {\r\n frontAborts.add(operationId, abortId);\r\n }).finally(() => {\r\n frontAborts.remove(operationId);\r\n });\r\n};\r\n\r\nexport const getFrontToDoItemGroups = (): Promise => {\r\n const operationId = \"frontToDo\";\r\n frontAborts.abort(operationId);\r\n return postApiCall(\"api/front/todoitemgroups\", FrontToDoItemGroups, null, (abortId: string) => {\r\n frontAborts.add(operationId, abortId);\r\n }).finally(() => {\r\n frontAborts.remove(operationId);\r\n });\r\n};\r\n\r\nexport const saveImages = (obj: any): Promise => {\r\n return postApiCall(\"api/front/savepictures\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const saveModifiedRecords = (obj: any): Promise => {\r\n return postApiCall(\"api/front/savemodifiedrecords\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const saveMessages = (obj: any): Promise => {\r\n return postApiCall(\"api/front/savemessages\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const saveBanner = (obj: any): Promise => {\r\n return postApiCall(\"api/front/savebanner\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const saveFrontPanels = (panels: IPagePanel[]): Promise => {\r\n return postApiCall(\"api/front/savepanels\", ApiSuccess, JSON.stringify({ panels }));\r\n};\r\n\r\nexport const saveUserParameters = (parameters: ITypedOption[]): Promise => {\r\n return postApiCall(\"api/front/saveuserparameters\", ApiSuccess, JSON.stringify({ parameters: parameters.map(i => new TypedOptionSave(i)) }));\r\n};","export interface ISaveSuccess {\r\n message: string;\r\n errorMessage: string;\r\n id: string;\r\n rowId: string;\r\n}\r\n\r\nexport class SaveSuccess implements ISaveSuccess {\r\n message: string;\r\n errorMessage: string;\r\n id: string;\r\n rowId: string;\r\n\r\n constructor();\r\n constructor(obj: ISaveSuccess);\r\n constructor(obj?: any) {\r\n this.message = obj && obj.message || \"\";\r\n this.errorMessage = obj && obj.errorMessage || \"\";\r\n this.id = obj && obj.id || \"\";\r\n this.rowId = obj && obj.rowId || \"\";\r\n }\r\n}","import { infiniteListPageSize } from \"../models/consts\";\r\nimport { Base } from \"./base\";\r\n\r\nexport interface IListItems {\r\n items: T[];\r\n hasMore: boolean;\r\n page: number;\r\n //For preloaded data\r\n pageSize: number;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n}\r\n\r\nexport class ListItems implements IListItems {\r\n items: I[];\r\n hasMore: boolean;\r\n page: number;\r\n //For preloaded data\r\n pageSize: number;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n\r\n constructor();\r\n constructor(obj: IListItems);\r\n constructor(obj?: any) {\r\n this.hasMore = obj && obj.hasMore || false;\r\n this.page = obj && obj.page || 1;\r\n this.pageSize = obj && obj.pageSize || infiniteListPageSize;\r\n this.sortColumn = obj && obj.sortColumn || \"\";\r\n this.sortOrderIsAsc = obj && obj.sortOrderIsAsc || false;\r\n this.items = [];\r\n }\r\n \r\n static create(type: (new (...args: any[]) => T), ...obj: any): ListItems {\r\n const result = new ListItems(obj);\r\n result.items = Base.getTypedArray(obj ? obj.items : null, type);\r\n return result;\r\n };\r\n}","import { Base } from \"../../framework/base\";\r\nimport { ListItems } from \"../../framework/listItems\";\r\nimport { IInstantMessageChannelItem, InstantMessageChannelItem } from \"./instantMessageChannelItem\";\r\nimport { IInstantMessageListItem, InstantMessageListItem } from \"./instantMessageListItem\";\r\n\r\nexport interface IInstantMessageListItems extends ListItems {\r\n //Used in Mobile\r\n channel: IInstantMessageChannelItem;\r\n maxInstantMessageAttachmentSize: number;\r\n}\r\n\r\nexport class InstantMessageListItems extends ListItems implements IInstantMessageListItems {\r\n //Used in Mobile\r\n channel: InstantMessageChannelItem;\r\n maxInstantMessageAttachmentSize: number;\r\n\r\n constructor();\r\n constructor(obj: IInstantMessageListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, InstantMessageListItem);\r\n //Used in Mobile\r\n this.channel = obj && obj.channel ? new InstantMessageChannelItem(obj.channel) : null;\r\n this.maxInstantMessageAttachmentSize = obj && obj.maxInstantMessageAttachmentSize || 0;\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\n\r\nexport interface INumberTitle {\r\n number: number;\r\n title: string;\r\n}\r\n\r\nexport class NumberTitle implements INumberTitle {\r\n number: number;\r\n title: string;\r\n\r\n constructor();\r\n constructor(obj: INumberTitle);\r\n constructor(obj?: any) {\r\n this.number = obj && obj.number || 0;\r\n this.title = obj && obj.title || \"\";\r\n }\r\n\r\n static createNumberTitle(number: number, title: string): INumberTitle {\r\n const result = new NumberTitle();\r\n result.number = number;\r\n result.title = title;\r\n return result;\r\n }\r\n\r\n static getTitleByNumber(num: number, items: INumberTitle[]): string {\r\n if (Base.isNullOrUndefined(num) || !items || items.length < 1) return \"\";\r\n const item = items.find(i => Base.equalInt(i.number, num));\r\n return item ? item.title : \"\";\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { INumberTitle, NumberTitle } from \"ui/Scripts/source/models/common/numberTitle\";\r\nimport { CompanyMenuItem, ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { IInstantMessageChannelItem, InstantMessageChannelItem } from \"ui/Scripts/source/models/instantMessage/instantMessageChannelItem\";\r\nimport { IInstantMessageListItems, InstantMessageListItems } from \"ui/Scripts/source/models/instantMessage/instantMessageListItems\";\r\n\r\nexport interface IInstantMessagePage {\r\n maxInstantMessageAttachmentSize: number;\r\n companies: ICompanyMenuItem[];\r\n authorizationLevels: INumberTitle[];\r\n channels: IInstantMessageChannelItem[];\r\n list: IInstantMessageListItems;\r\n validAdditionalPermissions: number[];\r\n}\r\n\r\nexport class InstantMessagePage implements IInstantMessagePage {\r\n maxInstantMessageAttachmentSize: number;\r\n companies: CompanyMenuItem[];\r\n authorizationLevels: NumberTitle[];\r\n channels: InstantMessageChannelItem[];\r\n list: InstantMessageListItems;\r\n validAdditionalPermissions: number[];\r\n\r\n constructor();\r\n constructor(obj: IInstantMessagePage);\r\n constructor(obj?: any) {\r\n this.maxInstantMessageAttachmentSize = obj && obj.maxInstantMessageAttachmentSize || 0;\r\n this.companies = Base.getTypedArray(obj ? obj.companies : null, CompanyMenuItem);\r\n this.authorizationLevels = Base.getTypedArray(obj ? obj.authorizationLevels : null, NumberTitle);\r\n this.channels = Base.getTypedArray(obj ? obj.channels : null, InstantMessageChannelItem);\r\n this.list = new InstantMessageListItems(obj && obj.list || null);\r\n this.validAdditionalPermissions = obj && obj.validAdditionalPermissions || [];\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { CompanyActiveState, EnumHelper } from \"ui/Scripts/source/models/enums\";\r\n\r\nexport interface ICompanyListItem {\r\n id: string;\r\n code: string;\r\n name: string;\r\n logo: string;\r\n activeState: number;\r\n fileStorageQuota: number;\r\n usedStoragePercent: number;\r\n usedFileStorageQuota: number;\r\n companyGroups: string[];\r\n\r\n activeStateStr: string;\r\n companyGroupsStr: string;\r\n}\r\n\r\nexport class CompanyListItem implements ICompanyListItem {\r\n id: string;\r\n code: string;\r\n name: string;\r\n logo: string;\r\n activeState: number;\r\n fileStorageQuota: number;\r\n usedStoragePercent: number;\r\n usedFileStorageQuota: number;\r\n companyGroups: string[];\r\n\r\n activeStateStr: string;\r\n companyGroupsStr: string;\r\n\r\n constructor();\r\n constructor(obj: ICompanyListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.logo = obj && obj.logo || \"\";\r\n this.activeState = obj && obj.activeState || 0;\r\n this.fileStorageQuota = obj && obj.fileStorageQuota || 0;\r\n this.usedStoragePercent = obj && obj.usedStoragePercent || 0;\r\n this.usedFileStorageQuota = obj && obj.usedFileStorageQuota || 0;\r\n this.companyGroups = obj && obj.companyGroups || [];\r\n this.activeStateStr = CompanyListItem.getActiveStateToStr(this.activeState);\r\n this.companyGroupsStr = Base.getStringWithSeparators(this.companyGroups, \", \");\r\n }\r\n\r\n static getActiveStateToStr(activeState: number): string {\r\n if (EnumHelper.isEqual(activeState, CompanyActiveState.InUse)) return Translations.InUse;\r\n if (EnumHelper.isEqual(activeState, CompanyActiveState.InTesting)) return Translations.InTesting;\r\n return Translations.NotInUse;\r\n }\r\n\r\n static sortCompanyListItems(items: ICompanyListItem[], column: string, asc: boolean): ICompanyListItem[] {\r\n if (!items && items.length < 2) return items;\r\n if (column === \"name\") {\r\n return items.sort((a: ICompanyListItem, b: ICompanyListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.name, b.name)); });\r\n } else if (column === \"code\") {\r\n return items.sort((a: ICompanyListItem, b: ICompanyListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.code, b.code)); });\r\n } else if (column === \"activeState\") {\r\n return items.sort((a: ICompanyListItem, b: ICompanyListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.activeState, b.activeState)); });\r\n } else if (column === \"usedStoragePercent\") {\r\n return items.sort((a: ICompanyListItem, b: ICompanyListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.usedStoragePercent, b.usedStoragePercent)); });\r\n } else {\r\n return items.sort((a: ICompanyListItem, b: ICompanyListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.companyGroupsStr, b.companyGroupsStr)); });\r\n }\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IListItems, ListItems } from \"ui/Scripts/source/framework/listItems\";\r\nimport { CompanyListItem, ICompanyListItem } from \"./companyListItem\";\r\n\r\nexport interface ICompanyListItems extends IListItems {}\r\n\r\nexport class CompanyListItems extends ListItems implements ICompanyListItems {\r\n constructor();\r\n constructor(obj: ICompanyListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, CompanyListItem);\r\n }\r\n}","export interface IEffectiveUnitNodeCompanyIds {\r\n companyIds: string[];\r\n isExplicitPermission: boolean;\r\n}\r\n\r\nexport class EffectiveUnitNodeCompanyIds implements IEffectiveUnitNodeCompanyIds {\r\n companyIds: string[];\r\n isExplicitPermission: boolean;\r\n\r\n constructor();\r\n constructor(obj: IEffectiveUnitNodeCompanyIds);\r\n constructor(obj?: any) {\r\n this.companyIds = obj && obj.companyIds || [];\r\n this.isExplicitPermission = obj && obj.isExplicitPermission || false;\r\n }\r\n}","export interface IUnitNodePermission {\r\n code: string;\r\n level: number;\r\n levelA: number; //Additional permission A\r\n levelB: number; //Additional permission B\r\n levelC: number; //Additional permission C\r\n type: number;\r\n groupType: number;\r\n companyIds: string[]; //Partner Company Ids\r\n}\r\n\r\nexport class UnitNodePermission implements IUnitNodePermission {\r\n code: string;\r\n level: number;\r\n levelA: number; //Additional permission A\r\n levelB: number; //Additional permission B\r\n levelC: number; //Additional permission C\r\n type: number;\r\n groupType: number;\r\n companyIds: string[]; //Partner Company Ids\r\n\r\n constructor();\r\n constructor(obj: IUnitNodePermission);\r\n constructor(obj?: any) {\r\n this.code = obj && obj.code || \"\";\r\n this.level = obj && obj.level || 0;\r\n this.levelA = obj && obj.levelA || 0;\r\n this.levelB = obj && obj.levelB || 0;\r\n this.levelC = obj && obj.levelC || 0;\r\n this.type = obj && obj.type || 0;\r\n this.groupType = obj && obj.groupType || 0;\r\n this.companyIds = obj && obj.companyIds || [];\r\n }\r\n\r\n static getTotalPermission(level: number, levelA: number, levelB: number, levelC: number): number {\r\n return level * 1000 + levelA * 100 + levelB * 10 + levelC;\r\n }\r\n\r\n getLevelTotal(): number {\r\n return UnitNodePermission.getTotalPermission(this.level, this.levelA, this.levelB, this.levelC);\r\n }\r\n}","import { GroupPermissionLevel } from \"ui/Scripts/source/models/enums\";\r\nimport { UnitNodePermission } from \"./unitNodePermission\";\r\n\r\nexport interface IUnitNodePermissionCompanyGroupPermission {\r\n permission: number;\r\n additionalPermissionA: number;\r\n additionalPermissionB: number;\r\n additionalPermissionC: number;\r\n companyGroupPermission: number;\r\n companyGroupAdditionalPermissionA: number;\r\n companyGroupAdditionalPermissionB: number;\r\n companyGroupAdditionalPermissionC: number;\r\n isExplicitPermission: boolean;\r\n\r\n getTotalUserGroupPermission(): number;\r\n}\r\n\r\nexport class UnitNodePermissionCompanyGroupPermission implements IUnitNodePermissionCompanyGroupPermission {\r\n permission: number;\r\n additionalPermissionA: number;\r\n additionalPermissionB: number;\r\n additionalPermissionC: number;\r\n companyGroupPermission: number;\r\n companyGroupAdditionalPermissionA: number;\r\n companyGroupAdditionalPermissionB: number;\r\n companyGroupAdditionalPermissionC: number;\r\n isExplicitPermission: boolean;\r\n\r\n constructor();\r\n constructor(obj: IUnitNodePermissionCompanyGroupPermission);\r\n constructor(obj?: any) {\r\n this.permission = obj && obj.permission || GroupPermissionLevel.None;\r\n this.additionalPermissionA = obj && obj.additionalPermissionA || 0;\r\n this.additionalPermissionB = obj && obj.additionalPermissionB || 0;\r\n this.additionalPermissionC = obj && obj.additionalPermissionC || 0;\r\n this.companyGroupPermission = obj && obj.companyGroupPermission || GroupPermissionLevel.None;\r\n this.companyGroupAdditionalPermissionA = obj && obj.companyGroupAdditionalPermissionA || 0;\r\n this.companyGroupAdditionalPermissionB = obj && obj.companyGroupAdditionalPermissionB || 0;\r\n this.companyGroupAdditionalPermissionC = obj && obj.companyGroupAdditionalPermissionC || 0;\r\n }\r\n\r\n setUserGroupPermissions(permission: number, additionalPermissionA: number, additionalPermissionB: number, additionalPermissionC: number) {\r\n this.permission = permission;\r\n this.additionalPermissionA = additionalPermissionA;\r\n this.additionalPermissionB = additionalPermissionB;\r\n this.additionalPermissionC = additionalPermissionC;\r\n }\r\n\r\n setUserGroupPermissionsFromUnitNodePermission(unitNodePermission: UnitNodePermission) {\r\n this.setUserGroupPermissions(unitNodePermission.level, unitNodePermission.levelA, unitNodePermission.levelB, unitNodePermission.levelC);\r\n }\r\n\r\n setCompanyGroupPermissions(companyGroupPermission: number, companyGroupAdditionalPermissionA: number, companyGroupAdditionalPermissionB: number, companyGroupAdditionalPermissionC: number) {\r\n this.companyGroupPermission = companyGroupPermission;\r\n this.companyGroupAdditionalPermissionA = companyGroupAdditionalPermissionA;\r\n this.companyGroupAdditionalPermissionB = companyGroupAdditionalPermissionB;\r\n this.companyGroupAdditionalPermissionC = companyGroupAdditionalPermissionC;\r\n }\r\n\r\n getTotalUserGroupPermission(): number {\r\n return UnitNodePermission.getTotalPermission(this.permission, this.additionalPermissionA, this.additionalPermissionB, this.additionalPermissionC);\r\n }\r\n}","import { IUnitNodePermissionCompanyGroupPermission, UnitNodePermissionCompanyGroupPermission } from \"./unitNodePermissionCompanyGroupPermission\";\r\n\r\nexport interface IUnitNodeGetChildPermissionsResult {\r\n permissions: { [id: string]: IUnitNodePermissionCompanyGroupPermission; };\r\n}\r\n\r\nexport class UnitNodeGetChildPermissionsResult implements IUnitNodeGetChildPermissionsResult {\r\n permissions: { [id: string]: UnitNodePermissionCompanyGroupPermission; };\r\n\r\n /* eslint-disable no-prototype-builtins */\r\n constructor();\r\n constructor(obj: IUnitNodeGetChildPermissionsResult);\r\n constructor(obj?: any) {\r\n this.permissions = {};\r\n if (obj && obj.permissions) {\r\n for (const key in obj.permissions) {\r\n if (obj.hasOwnProperty(key)) {\r\n this.permissions[key] = new UnitNodePermissionCompanyGroupPermission(obj.permissions[key]);\r\n }\r\n }\r\n }\r\n }\r\n /* eslint-enable no-prototype-builtins */\r\n}","export interface IUnitNodeSavePermission {\r\n code: string;\r\n level: number;\r\n levelA: number; //Additional permission A\r\n levelB: number; //Additional permission B\r\n levelC: number; //Additional permission C\r\n type: number;\r\n companyIds: string[]; //Partner Company Ids\r\n}\r\n\r\nexport class UnitNodeSavePermission implements IUnitNodeSavePermission {\r\n code: string;\r\n level: number;\r\n levelA: number; //Additional permission A\r\n levelB: number; //Additional permission B\r\n levelC: number; //Additional permission C\r\n type: number;\r\n companyIds: string[]; //Partner Company Ids\r\n\r\n constructor();\r\n constructor(obj: IUnitNodeSavePermission);\r\n constructor(obj?: any) {\r\n this.code = obj && obj.code || \"\";\r\n this.level = obj && obj.level || 0;\r\n this.levelA = obj && obj.levelA || 0;\r\n this.levelB = obj && obj.levelB || 0;\r\n this.levelC = obj && obj.levelC || 0;\r\n this.type = obj && obj.type || 0;\r\n this.companyIds = obj && obj.companyIds || [];\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IUnitNodeSavePermission, UnitNodeSavePermission } from \"./unitNodeSavePermission\";\r\n\r\nexport interface IUnitNodeSave {\r\n id: string;\r\n permissions: IUnitNodeSavePermission[];\r\n}\r\n\r\nexport class UnitNodeSave implements IUnitNodeSave {\r\n id: string;\r\n permissions: UnitNodeSavePermission[];\r\n\r\n constructor();\r\n constructor(obj: IUnitNodeSave);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.permissions = Base.getTypedArray(obj ? obj.permissions : null, UnitNodeSavePermission);\r\n }\r\n\r\n static getSortedJsonUnitNodeSaves(src: IUnitNodeSave[]): IUnitNodeSave[] {\r\n const result = src.slice(0);\r\n result.sort((a: IUnitNodeSave, b: IUnitNodeSave) => {\r\n if ((a === null || a === undefined) && (b === null || b === undefined)) return 0;\r\n if (a === null || a === undefined) return 1;\r\n if (b === null || b === undefined) return -1;\r\n if ((a.id === null || a.id === undefined) && (b.id === null || b.id === undefined)) return 0;\r\n if (a.id < b.id) return -1;\r\n if (a.id > b.id) return 1;\r\n return 0;\r\n });\r\n return result;\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { allPartnersCompanyGroupCode } from \"ui/Scripts/source/models/consts\";\r\nimport { CompanyGroupType, EnumHelper, GroupPermissionLevel, GroupType, UserGroupType } from \"ui/Scripts/source/models/enums\";\r\nimport { IUnitPermissionUserGroup } from \"../userGroup/unitPermissionUserGroup\";\r\nimport { EffectiveUnitNodeCompanyIds } from \"./effectiveUnitNodeCompanyIds\";\r\nimport { UnitNodeGetChildPermissionsResult } from \"./unitNodeGetChildPermissionsResult\";\r\nimport { IUnitNodePermission, UnitNodePermission } from \"./unitNodePermission\";\r\nimport { IUnitNodePermissionCompanyGroupPermission, UnitNodePermissionCompanyGroupPermission } from \"./unitNodePermissionCompanyGroupPermission\";\r\nimport { IUnitNodeSave, UnitNodeSave } from \"./unitNodeSave\";\r\nimport { UnitNodeSavePermission } from \"./unitNodeSavePermission\";\r\n\r\nexport interface IUnitNode {\r\n systemPermissionLevel: number;\r\n maxPermissionLevel: number;\r\n maxPermissionLevelA: number;\r\n maxPermissionLevelB: number;\r\n maxPermissionLevelC: number;\r\n id: string;\r\n name: string;\r\n explicitPermissions: UnitNodePermission[];\r\n children: UnitNode[];\r\n partnerCompanyIds: string[];\r\n parent: UnitNode;\r\n permission: IUnitNodePermissionCompanyGroupPermission;\r\n\r\n getIsRoot(): boolean;\r\n getIsDisabled(): boolean;\r\n hasChildren(): boolean;\r\n hasSiblings(): boolean;\r\n getUnitNodeById(id: string): UnitNode;\r\n hasExplicitPermission(companyGroupCode: string, userGroupCode: string): boolean;\r\n getEffectiveNonExplicitPermission(companyGroup: IUnitPermissionUserGroup, userGroup: IUnitPermissionUserGroup): UnitNodePermissionCompanyGroupPermission;\r\n getNodePermissions(companyGroupCode: string, userGroupCode: string, list: { [id: string]: IUnitNodePermission; }): { [id: string]: IUnitNodePermission; };\r\n setGroupPermissions(companyGroup: IUnitPermissionUserGroup, userGroup: IUnitPermissionUserGroup, permissions: { [id: string]: IUnitNodePermission; });\r\n getEffectiveUnitNodeCompanyIds(userGroup: IUnitPermissionUserGroup): EffectiveUnitNodeCompanyIds;\r\n getJsonUnitNodeSaves(list: IUnitNodeSave[], groupCode: string, groupType: number): IUnitNodeSave[];\r\n}\r\n\r\nexport class UnitNode implements IUnitNode {\r\n systemPermissionLevel: number;\r\n maxPermissionLevel: number;\r\n maxPermissionLevelA: number;\r\n maxPermissionLevelB: number;\r\n maxPermissionLevelC: number;\r\n id: string;\r\n name: string;\r\n explicitPermissions: UnitNodePermission[];\r\n children: UnitNode[];\r\n partnerCompanyIds: string[];\r\n parent: UnitNode;\r\n permission: UnitNodePermissionCompanyGroupPermission;\r\n\r\n constructor();\r\n constructor(obj: IUnitNode);\r\n constructor(obj?: any) {\r\n this.systemPermissionLevel = obj && obj.systemPermissionLevel || 0;\r\n this.maxPermissionLevel = obj && obj.maxPermissionLevel || 0;\r\n this.maxPermissionLevelA = obj && obj.maxPermissionLevelA || 0;\r\n this.maxPermissionLevelB = obj && obj.maxPermissionLevelB || 0;\r\n this.maxPermissionLevelC = obj && obj.maxPermissionLevelC || 0;\r\n this.id = obj && obj.id || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.explicitPermissions = null;\r\n if (obj && obj.explicitPermissions) {\r\n this.explicitPermissions = Base.getTypedArray(obj ? obj.explicitPermissions : null, UnitNodePermission);\r\n }\r\n this.children = [];\r\n this.parent = null;\r\n if (obj && obj.children) {\r\n this.children = Base.getTypedArray(obj.children, UnitNode);\r\n for (const child of this.children) {\r\n child.parent = this;\r\n }\r\n }\r\n this.partnerCompanyIds = obj && obj.partnerCompanyIds || [];\r\n this.permission = obj && obj.permission || new UnitNodePermissionCompanyGroupPermission();\r\n }\r\n\r\n getIsRoot(): boolean {\r\n return !this.parent;\r\n }\r\n\r\n getRoot(): UnitNode {\r\n return this.getIsRoot() ? this : this.parent.getRoot();\r\n }\r\n\r\n getSiblings(): UnitNode[] {\r\n if (this.getIsRoot()) return [];\r\n return this.parent.children.filter(i => i.id !== this.id);\r\n }\r\n\r\n getPathNodes(): UnitNode[] {\r\n if (this.getIsRoot()) return [this];\r\n const result: UnitNode[] = this.parent.getPathNodes();\r\n result.push(this);\r\n return result;\r\n }\r\n\r\n getTotalMaxPermission(): number {\r\n return UnitNodePermission.getTotalPermission(this.maxPermissionLevel, this.maxPermissionLevelA, this.maxPermissionLevelB, this.maxPermissionLevelC);\r\n }\r\n\r\n getIsDisabled(): boolean {\r\n const totalMaxPermission = this.getTotalMaxPermission();\r\n const totalPermission = this.permission.getTotalUserGroupPermission();\r\n return totalMaxPermission === 0 || totalMaxPermission < totalPermission;\r\n }\r\n\r\n hasChildren(): boolean {\r\n return this.children.length > 0;\r\n }\r\n\r\n hasSiblings(): boolean {\r\n if (this.getIsRoot()) return false;\r\n return this.parent.children.length > 1;\r\n }\r\n\r\n getUnitNodeById(id: string): UnitNode {\r\n if (!id) return null;\r\n if (this.id.equalIgnoreCase(id)) return this;\r\n for (const child of this.children) {\r\n const childResult = child.getUnitNodeById(id);\r\n if (childResult) return childResult;\r\n }\r\n return null;\r\n }\r\n\r\n removeGroupPermission(groupType: number, groupCode: string) {\r\n if (this.explicitPermissions === null || this.explicitPermissions.length === 0 || this.getIsDisabled()) return;\r\n const index = this.explicitPermissions.findIndex(i => i.type === groupType && i.code.equalIgnoreCase(groupCode));\r\n if (index >= 0) {\r\n this.explicitPermissions.splice(index, 1);\r\n }\r\n }\r\n\r\n removeGroupPermissions(groupType: number, groupCode: string) {\r\n if (this.explicitPermissions !== null && this.explicitPermissions.length > 0 && !this.getIsDisabled()) {\r\n const index = this.explicitPermissions.findIndex(i => i.type === groupType && i.code.equalIgnoreCase(groupCode));\r\n if (index >= 0) {\r\n this.explicitPermissions.splice(index, 1);\r\n }\r\n }\r\n if (this.children.length < 1) return;\r\n for (const child of this.children) {\r\n child.removeGroupPermissions(groupType, groupCode);\r\n }\r\n }\r\n\r\n setGroupPermission(companyGroup: IUnitPermissionUserGroup, userGroup: IUnitPermissionUserGroup, permission: number, additionalPermissionA: number, additionalPermissionB: number, additionalPermissionC: number, clearSubFolders: boolean) {\r\n if (this.getIsDisabled()) return;\r\n permission = Math.min(permission, GroupPermissionLevel.Write);\r\n additionalPermissionA = Math.min(additionalPermissionA, 1);\r\n additionalPermissionB = Math.min(additionalPermissionB, 1);\r\n additionalPermissionC = Math.min(additionalPermissionC, 1);\r\n //UserGroup / CompanyGroup selection\r\n let groupType: number, groupSubType: number, groupCode: string;\r\n if (userGroup) {\r\n groupType = GroupType.UserGroup;\r\n groupCode = userGroup.code;\r\n groupSubType = userGroup.type;\r\n } else {\r\n groupType = GroupType.CompanyGroup;\r\n groupCode = companyGroup.code;\r\n groupSubType = companyGroup.type;\r\n }\r\n //Clear subfolder permissions\r\n if (clearSubFolders && this.hasChildren()) {\r\n for (const child of this.children) {\r\n child.removeGroupPermissions(groupType, groupCode);\r\n }\r\n }\r\n //Add or Modify permission\r\n let currentPermission: UnitNodePermission = null;\r\n if (this.explicitPermissions === null) {\r\n this.explicitPermissions = [];\r\n } else {\r\n currentPermission = this.explicitPermissions.find(j => j.type === groupType && j.code.equalIgnoreCase(groupCode));\r\n }\r\n if (currentPermission === null || currentPermission === undefined) {\r\n currentPermission = new UnitNodePermission();\r\n currentPermission.type = groupType;\r\n currentPermission.groupType = groupSubType;\r\n currentPermission.code = groupCode;\r\n this.explicitPermissions.push(currentPermission);\r\n }\r\n currentPermission.level = permission;\r\n currentPermission.levelA = additionalPermissionA;\r\n currentPermission.levelB = additionalPermissionB;\r\n currentPermission.levelC = additionalPermissionC;\r\n }\r\n\r\n setGroupPermissions(companyGroup: IUnitPermissionUserGroup, userGroup: IUnitPermissionUserGroup, permissions: { [id: string]: IUnitNodePermission; }) {\r\n //Remove old permission\r\n if (this.explicitPermissions !== null && this.explicitPermissions.length > 0 && !this.getIsDisabled()) {\r\n const index = userGroup\r\n ? this.explicitPermissions.findIndex(i => i.code.equalIgnoreCase(userGroup.code) && i.type === GroupType.UserGroup)\r\n : this.explicitPermissions.findIndex(i => i.code.equalIgnoreCase(companyGroup.code) && i.type === GroupType.CompanyGroup);\r\n if (index >= 0) {\r\n this.explicitPermissions.splice(index, 1);\r\n }\r\n }\r\n //Add new permission if exist\r\n /* eslint-disable no-prototype-builtins */\r\n if (permissions.hasOwnProperty(this.id)) {\r\n this.setGroupPermission(companyGroup, userGroup, permissions[this.id].level, permissions[this.id].levelA, permissions[this.id].levelB, permissions[this.id].levelC, false);\r\n }\r\n /* eslint-enable no-prototype-builtins */\r\n if (this.children.length < 1) return;\r\n for (const child of this.children) {\r\n child.setGroupPermissions(companyGroup, userGroup, permissions);\r\n }\r\n }\r\n\r\n getPermissionsBase(explicitPermissions: UnitNodePermission[]): UnitNodePermission[] {\r\n if (this.getIsRoot()) {\r\n return explicitPermissions;\r\n }\r\n let result = this.parent.getPermissions();\r\n if (explicitPermissions != null) {\r\n result = result.slice(0);\r\n let index: number;\r\n //'All'-permissions replaces all same type inherited permissions, normal permission replaces only same code inherited permission if not in ROOT\r\n const allPermissions = explicitPermissions.filter(i => !i.code);\r\n for (const allPermission of allPermissions) {\r\n const parentPermissions = result.filter(j => j.type === allPermission.type);\r\n for (const parentPermission of parentPermissions) {\r\n index = result.findIndex(k => k.type === parentPermission.type);\r\n if (index < 0) continue;\r\n result.splice(index, 1);\r\n }\r\n }\r\n //Group permissions\r\n for (const explicitPermission of explicitPermissions) {\r\n //Remove inherited permission if not in ROOT\r\n index = result.findIndex(k => k.type === explicitPermission.type && k.code.equalIgnoreCase(explicitPermission.code));\r\n if (index > -1) {\r\n result.splice(index, 1);\r\n }\r\n //Add group permission\r\n result.push(explicitPermission);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n getPermissions(): UnitNodePermission[] {\r\n return this.getPermissionsBase(this.explicitPermissions);\r\n }\r\n\r\n getEffectivePermissionBase(permissions: UnitNodePermission[], companyGroup: IUnitPermissionUserGroup, userGroup: IUnitPermissionUserGroup): UnitNodePermissionCompanyGroupPermission {\r\n const result = new UnitNodePermissionCompanyGroupPermission();\r\n if (!this.getIsDisabled()) {\r\n result.setUserGroupPermissions(this.maxPermissionLevel, this.maxPermissionLevelA, this.maxPermissionLevelB, this.maxPermissionLevelC);\r\n result.setCompanyGroupPermissions(this.maxPermissionLevel, this.maxPermissionLevelA, this.maxPermissionLevelB, this.maxPermissionLevelC);\r\n } else {\r\n result.setUserGroupPermissions(this.systemPermissionLevel, 1, 1, 1);\r\n result.setCompanyGroupPermissions(this.systemPermissionLevel, 1, 1, 1);\r\n }\r\n result.isExplicitPermission = false;\r\n //#1 Company group permissions are relevant only for users that do not belong to resource owning company\r\n //- Company of user that does not belong to resource owning company must always belong to normal company group in order to access folders\r\n //- Highest permissions considering all groups that user belongs to\r\n //- 'All group' permissions are used only if normal group permission does not exist in the same level\r\n if (companyGroup) {\r\n let companyGroupPermission: UnitNodePermission = null;\r\n let allCompanyGroupPermission: UnitNodePermission = null;\r\n let allPartnersCompanyGroupPermission: UnitNodePermission = null;\r\n let oneCompanyGroupPermission: UnitNodePermission = null;\r\n const relevantCompanyGroupPermissions = permissions.filter(k => EnumHelper.isEqual(k.type, GroupType.CompanyGroup));\r\n const companyGroupCodes = companyGroup.groupCodes.slice(0);\r\n companyGroupCodes.push(companyGroup.code);\r\n for (const permission of relevantCompanyGroupPermissions) {\r\n if (!permission.code) { //'All companies' group\r\n allCompanyGroupPermission = permission;\r\n } else if (permission.code.equalIgnoreCase(allPartnersCompanyGroupCode)) { //'All partners' group\r\n allPartnersCompanyGroupPermission = permission;\r\n } else {\r\n for (const companyGroupCode of companyGroupCodes) {\r\n if (!permission.code.equalIgnoreCase(companyGroupCode)) continue;\r\n if (EnumHelper.isEqual(permission.groupType, CompanyGroupType.Fixed)) { //One company company group\r\n oneCompanyGroupPermission = permission;\r\n } else { //Normal company groups\r\n if (companyGroupPermission === null || permission.getLevelTotal() > companyGroupPermission.getLevelTotal()) {\r\n companyGroupPermission = permission;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n const resultTotal = UnitNodePermission.getTotalPermission(result.permission, result.additionalPermissionA, result.additionalPermissionB, result.additionalPermissionC);\r\n if (oneCompanyGroupPermission !== null) {\r\n if (oneCompanyGroupPermission.getLevelTotal() < resultTotal) {\r\n result.setUserGroupPermissionsFromUnitNodePermission(oneCompanyGroupPermission);\r\n }\r\n } else if (companyGroupPermission !== null) {\r\n if (companyGroupPermission.getLevelTotal() < resultTotal) {\r\n result.setUserGroupPermissionsFromUnitNodePermission(companyGroupPermission);\r\n }\r\n } else if (allPartnersCompanyGroupPermission !== null) {\r\n if (allPartnersCompanyGroupPermission.getLevelTotal() < resultTotal) {\r\n result.setUserGroupPermissionsFromUnitNodePermission(allPartnersCompanyGroupPermission);\r\n }\r\n } else if (allCompanyGroupPermission !== null) {\r\n if (allCompanyGroupPermission.getLevelTotal() < resultTotal) {\r\n result.setUserGroupPermissionsFromUnitNodePermission(allCompanyGroupPermission);\r\n }\r\n }\r\n }\r\n result.setCompanyGroupPermissions(result.permission, result.additionalPermissionA, result.additionalPermissionB, result.additionalPermissionC);\r\n //console.log(this.name, userGroup.code, result.permission);\r\n if (EnumHelper.isEqual(result.permission, GroupPermissionLevel.None)) return result;\r\n //#2 User group permissions are relevant for all users\r\n //- Highest permissions considering all groups that user belongs to\r\n //- 'All group' permissions are used only if normal group permission does not exist\r\n if (userGroup) {\r\n let userGroupPermission: UnitNodePermission = null;\r\n let allUserGroupPermission: UnitNodePermission = null;\r\n let oneUserGroupPermission: UnitNodePermission = null;\r\n const relevantUserGroupPermissions = permissions.filter(k => EnumHelper.isEqual(k.type, GroupType.UserGroup));\r\n const userGroupCodes = userGroup.groupCodes.slice(0);\r\n userGroupCodes.push(userGroup.code);\r\n for (const permission of relevantUserGroupPermissions) {\r\n if (!permission.code) { //'All users' group\r\n allUserGroupPermission = permission;\r\n } else {\r\n for (const userGroupCode of userGroupCodes) {\r\n if (!permission.code.equalIgnoreCase(userGroupCode)) continue;\r\n if (EnumHelper.isEqual(permission.groupType, UserGroupType.Fixed)) { //One user user group\r\n oneUserGroupPermission = permission;\r\n } else { //Normal user groups\r\n if (userGroupPermission === null || permission.getLevelTotal() > userGroupPermission.getLevelTotal()) {\r\n userGroupPermission = permission;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n const resultTotal = UnitNodePermission.getTotalPermission(result.permission, result.additionalPermissionA, result.additionalPermissionB, result.additionalPermissionC);\r\n if (oneUserGroupPermission !== null) {\r\n if (oneUserGroupPermission.getLevelTotal() < resultTotal) {\r\n result.setUserGroupPermissionsFromUnitNodePermission(oneUserGroupPermission);\r\n }\r\n } else if (userGroupPermission !== null) {\r\n if (userGroupPermission.getLevelTotal() < resultTotal) {\r\n result.setUserGroupPermissionsFromUnitNodePermission(userGroupPermission);\r\n }\r\n } else if (allUserGroupPermission !== null) {\r\n if (allUserGroupPermission.getLevelTotal() < resultTotal) {\r\n result.setUserGroupPermissionsFromUnitNodePermission(allUserGroupPermission);\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n getEffectivePermission(companyGroup: IUnitPermissionUserGroup, userGroup: IUnitPermissionUserGroup): UnitNodePermissionCompanyGroupPermission {\r\n const result = this.getEffectivePermissionBase(this.getPermissions(), companyGroup, userGroup);\r\n result.isExplicitPermission = this.hasExplicitPermission(companyGroup ? companyGroup.code : null, userGroup ? userGroup.code : null);\r\n return result;\r\n }\r\n\r\n getEffectiveNonExplicitPermission(companyGroup: IUnitPermissionUserGroup, userGroup: IUnitPermissionUserGroup): UnitNodePermissionCompanyGroupPermission {\r\n const explicitPermissions = this.explicitPermissions != null ? this.explicitPermissions.slice(0) : null;\r\n if (explicitPermissions) {\r\n const index = userGroup\r\n ? explicitPermissions.findIndex(i => i.code.equalIgnoreCase(userGroup.code) && EnumHelper.isEqual(i.type, GroupType.UserGroup))\r\n : explicitPermissions.findIndex(i => i.code.equalIgnoreCase(companyGroup.code) && EnumHelper.isEqual(i.type, GroupType.CompanyGroup));\r\n if (index >= 0) {\r\n explicitPermissions.splice(index, 1);\r\n }\r\n }\r\n const result = this.getEffectivePermissionBase(this.getPermissionsBase(explicitPermissions), companyGroup, userGroup);\r\n result.isExplicitPermission = false;\r\n return result;\r\n }\r\n\r\n getChildPermissions(companyGroup: IUnitPermissionUserGroup, userGroup: IUnitPermissionUserGroup): UnitNodeGetChildPermissionsResult {\r\n const result = new UnitNodeGetChildPermissionsResult();\r\n for (const child of this.children) {\r\n const permission = child.getEffectivePermission(companyGroup, userGroup);\r\n result.permissions[child.id] = permission;\r\n }\r\n return result;\r\n }\r\n\r\n getExplicitUnitNodePermission(companyGroupCode: string, userGroupCode: string): UnitNodePermission {\r\n let result: UnitNodePermission = null;\r\n if (this.explicitPermissions !== null && this.explicitPermissions.length > 0) {\r\n result = !Base.isNullOrUndefined(userGroupCode)\r\n ? this.explicitPermissions.find(i => i.code.equalIgnoreCase(userGroupCode) && EnumHelper.isEqual(i.type, GroupType.UserGroup))\r\n : this.explicitPermissions.find(i => i.code.equalIgnoreCase(companyGroupCode) && EnumHelper.isEqual(i.type, GroupType.CompanyGroup));\r\n }\r\n return result;\r\n }\r\n\r\n getExplicitPermission(companyGroupCode: string, userGroupCode: string): number {\r\n const permission = this.getExplicitUnitNodePermission(companyGroupCode, userGroupCode);\r\n return permission ? permission.level : -1;\r\n }\r\n\r\n hasExplicitPermission(companyGroupCode: string, userGroupCode: string): boolean {\r\n return this.getExplicitPermission(companyGroupCode, userGroupCode) > -0.5;\r\n }\r\n\r\n setEffectivePermissions(companyGroup: IUnitPermissionUserGroup, userGroup: IUnitPermissionUserGroup, preCalculatedPermission: UnitNodePermissionCompanyGroupPermission = null) {\r\n const permission = preCalculatedPermission ?? this.getEffectivePermission(companyGroup, userGroup);\r\n this.permission = permission;\r\n //console.log(this.name + \": \" + permission.permission, userGroup);\r\n const permissionsOfChildren = this.getChildPermissions(companyGroup, userGroup);\r\n for (const child of this.children) {\r\n child.setEffectivePermissions(companyGroup, userGroup, permissionsOfChildren.permissions[child.id]);\r\n }\r\n }\r\n\r\n getAsList(list: UnitNode[]): UnitNode[] {\r\n list.push(this);\r\n if (this.children.length < 1) return list;\r\n for (const child of this.children) {\r\n child.getAsList(list);\r\n }\r\n return list;\r\n }\r\n \r\n getJsonUnitNodeSaves(list: IUnitNodeSave[], groupCode: string = null, groupType: number = null): IUnitNodeSave[] {\r\n if (!this.getIsDisabled()) {\r\n let permissions: UnitNodePermission[] = [];\r\n if (this.explicitPermissions !== null && this.explicitPermissions.length > 0) {\r\n if (!groupCode || !groupType) {\r\n permissions = this.explicitPermissions.slice(0);\r\n } else {\r\n permissions = this.explicitPermissions.filter(j => j.type === groupType && j.code.equalIgnoreCase(groupCode));\r\n }\r\n }\r\n let saveUnitNode = list.find(j => j.id === this.id);\r\n if (!saveUnitNode) {\r\n saveUnitNode = new UnitNodeSave();\r\n saveUnitNode.id = this.id;\r\n list.push(saveUnitNode);\r\n }\r\n for (const permission of permissions) {\r\n if (saveUnitNode.permissions.findIndex(j => j.type === permission.type && j.code.equalIgnoreCase(permission.code)) >= 0) continue;\r\n const savePermission = new UnitNodeSavePermission();\r\n savePermission.type = permission.type;\r\n savePermission.code = permission.code;\r\n savePermission.level = permission.level;\r\n savePermission.levelA = permission.levelA;\r\n savePermission.levelB = permission.levelB;\r\n savePermission.levelC = permission.levelC;\r\n savePermission.companyIds = permission.companyIds.slice(0);\r\n saveUnitNode.permissions.push(savePermission);\r\n }\r\n }\r\n if (this.children.length < 1) return list;\r\n for (const child of this.children) {\r\n child.getJsonUnitNodeSaves(list, groupCode, groupType);\r\n }\r\n return list;\r\n }\r\n\r\n getNodePermissions(companyGroupCode: string, userGroupCode: string, list: { [id: string]: IUnitNodePermission; }): { [id: string]: IUnitNodePermission; } {\r\n const permission = this.getExplicitUnitNodePermission(companyGroupCode, userGroupCode);\r\n if (permission) {\r\n list[this.id] = new UnitNodePermission(permission);\r\n }\r\n if (this.children.length < 1) return list;\r\n for (const child of this.children) {\r\n child.getNodePermissions(companyGroupCode, userGroupCode, list);\r\n }\r\n return list;\r\n }\r\n\r\n getAllExplicitUserGroupCodesInUnitNodes(unitNodes: UnitNode[]): string[] {\r\n const result: string[] = [];\r\n for (const unitNode of unitNodes) {\r\n if (unitNode.explicitPermissions === null || unitNode.explicitPermissions.length < 1) continue;\r\n for (const explicitPermission of unitNode.explicitPermissions) {\r\n if (!EnumHelper.isEqual(explicitPermission.type, GroupType.UserGroup)) continue;\r\n if (result.indexOf(explicitPermission.code) >= 0) continue;\r\n result.push(explicitPermission.code);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n setEffectivePermissionsToPathNodes(pathNodes: UnitNode[], userGroup: IUnitPermissionUserGroup) {\r\n for (const pathNode of pathNodes) {\r\n pathNode.permission = pathNode.getEffectivePermission(null, userGroup);\r\n }\r\n }\r\n\r\n getMinPermissionUserGroups(userGroups: IUnitPermissionUserGroup[], minPermission: number, minAdditionalPermissionA: number, minAdditionalPermissionB: number, minAdditionalPermissionC: number, expandFixed: boolean): string[] {\r\n const minPermissionTotal = UnitNodePermission.getTotalPermission(minPermission, minAdditionalPermissionA, minAdditionalPermissionB, minAdditionalPermissionC);\r\n const result: string[] = [];\r\n const pathNodes = this.getPathNodes();\r\n const userGroupCodes = this.getAllExplicitUserGroupCodesInUnitNodes(pathNodes);\r\n for (const userGroupCode of userGroupCodes) {\r\n const userGroup = userGroups.find(j => j.code.equalIgnoreCase(userGroupCode));\r\n if (!userGroup) continue;\r\n this.setEffectivePermissionsToPathNodes(pathNodes, userGroup);\r\n if (this.permission.getTotalUserGroupPermission() < minPermissionTotal) continue;\r\n result.push(userGroupCode);\r\n }\r\n //Check if fixed user group has right base on normal user group\r\n if (expandFixed) {\r\n for (const userGroup of userGroups) {\r\n if (!EnumHelper.isEqual(userGroup.type, UserGroupType.Fixed)) continue;\r\n if (result.indexOf(userGroup.code) >= 0) continue;\r\n for (const userGroupCode of userGroup.groupCodes) {\r\n if (result.indexOf(userGroupCode) < 0) continue;\r\n result.push(userGroup.code);\r\n break;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n getMinPermissionUserGroupCodes(userGroups: IUnitPermissionUserGroup[], unitId: string, minPermission: number, minAdditionalPermissionA: number, minAdditionalPermissionB: number, minAdditionalPermissionC: number, expandFixed: boolean): string[] {\r\n const cloneUnitNode = new UnitNode(this);\r\n const resultUnitNode = cloneUnitNode.getUnitNodeById(unitId);\r\n if (!resultUnitNode) return [];\r\n return resultUnitNode.getMinPermissionUserGroups(userGroups, minPermission, minAdditionalPermissionA, minAdditionalPermissionB, minAdditionalPermissionC, expandFixed);\r\n }\r\n\r\n getMinPermissionUserGroupCodesInTree(userGroups: IUnitPermissionUserGroup[], minPermission: number, minAdditionalPermissionA: number, minAdditionalPermissionB: number, minAdditionalPermissionC: number, expandFixed: boolean): string[] {\r\n const minPermissionTotal = UnitNodePermission.getTotalPermission(minPermission, minAdditionalPermissionA, minAdditionalPermissionB, minAdditionalPermissionC);\r\n const result: string[] = [];\r\n const cloneUnitNode = new UnitNode(this);\r\n const unitNodes = cloneUnitNode.getAsList([]);\r\n const userGroupCodes = this.getAllExplicitUserGroupCodesInUnitNodes(unitNodes);\r\n for (const userGroupCode of userGroupCodes) {\r\n const userGroup = userGroups.find(j => j.code.equalIgnoreCase(userGroupCode));\r\n if (!userGroup) continue;\r\n cloneUnitNode.setEffectivePermissions(null, userGroup, null);\r\n for (const unitNode of unitNodes) {\r\n if (unitNode.permission.getTotalUserGroupPermission() < minPermissionTotal) continue;\r\n result.push(userGroupCode);\r\n break;\r\n }\r\n }\r\n //Check if fixed user group has right base on normal user group\r\n if (expandFixed) {\r\n for (const userGroup of userGroups) {\r\n if (!EnumHelper.isEqual(userGroup.type, UserGroupType.Fixed)) continue;\r\n if (result.indexOf(userGroup.code) >= 0) continue;\r\n for (const userGroupCode of userGroup.groupCodes) {\r\n if (result.indexOf(userGroupCode) < 0) continue;\r\n result.push(userGroup.code);\r\n break;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n getTreeHasPartnerCompanies(): boolean {\r\n if (this.partnerCompanyIds.length > 0) return true;\r\n for (const child of this.children) {\r\n const childResult = child.getTreeHasPartnerCompanies();\r\n if (childResult) return true;\r\n }\r\n return false;\r\n }\r\n\r\n addPartnerCompanyToUnit(unitId: string, partnerCompanyId: string) {\r\n if (!unitId || !partnerCompanyId) return;\r\n const node = this.getUnitNodeById(unitId);\r\n if (!node) return;\r\n if (node.partnerCompanyIds.indexOf(partnerCompanyId) > -1) return;\r\n node.partnerCompanyIds.push(partnerCompanyId);\r\n }\r\n\r\n removePartnerCompanyFromTree(unitId: string, partnerCompanyId: string) {\r\n if (!unitId || !partnerCompanyId) return;\r\n const node = this.getUnitNodeById(unitId);\r\n if (!node) return;\r\n const index = node.partnerCompanyIds.indexOf(partnerCompanyId);\r\n if (index < 0) return;\r\n node.partnerCompanyIds.splice(index, 1);\r\n if (!node.explicitPermissions || node.explicitPermissions.length < 1) return;\r\n for (const permission of node.explicitPermissions) {\r\n const index2 = permission.companyIds.indexOf(partnerCompanyId);\r\n if (index2 < 0) continue;\r\n permission.companyIds.splice(index2, 1);\r\n }\r\n }\r\n\r\n getPartnerCompanyIdsFromTree(unitId: string): string[] {\r\n if (!unitId) return [];\r\n const node = this.getUnitNodeById(unitId);\r\n if (!node) return [];\r\n return node.partnerCompanyIds.slice(0);\r\n }\r\n\r\n //Permission CompanyIds\r\n //#region Permission CompanyIds\r\n setGroupPermissionCompanyIds(userGroup: IUnitPermissionUserGroup, companyIds: string[]) {\r\n if (this.getIsDisabled() || !companyIds) return;\r\n //UserGroup / CompanyGroup selection\r\n if (userGroup) {\r\n const groupType = GroupType.UserGroup;\r\n const groupCode = userGroup.code;\r\n //Set companyIds\r\n const currentPermission = this.explicitPermissions.find(j => EnumHelper.isEqual(j.type, groupType) && j.code.equalIgnoreCase(groupCode));\r\n if (!currentPermission) return;\r\n currentPermission.companyIds = companyIds.slice(0);\r\n }\r\n }\r\n\r\n //getGroupPermissionCompanyIds(userGroup: UnitNodeCodeTitleTypeCompanyId): string[] {\r\n // if (this.getIsDisabled()) return [];\r\n // if (!isNullOrUndefined(userGroup)) {\r\n // const groupType = Permission.typeUserGroup;\r\n // const groupCode = userGroup.code;\r\n // //Get companyIds\r\n // const currentPermission = this.explicitPermissions.find(j => j.type === groupType && j.code.ciEqual(groupCode));\r\n // if (isNullOrUndefined(currentPermission)) return[];\r\n // return currentPermission.companyIds.slice(0);\r\n // }\r\n // return [];\r\n //}\r\n\r\n getEffectiveUnitNodeCompanyIds(userGroup: IUnitPermissionUserGroup): EffectiveUnitNodeCompanyIds {\r\n const result = new EffectiveUnitNodeCompanyIds();\r\n result.isExplicitPermission = false;\r\n if (!this.explicitPermissions || this.explicitPermissions.length < 1) return result;\r\n const permissions = this.explicitPermissions.slice(0);\r\n //#2 User group permissions are relevant for all users\r\n //- Highest permissions considering all groups that user belongs to\r\n //- 'All group' permissions are used only if normal group permission does not exist\r\n if (userGroup) {\r\n let userGroupPermission: UnitNodePermission = null;\r\n let allUserGroupPermission: UnitNodePermission = null;\r\n let oneUserGroupPermission: UnitNodePermission = null;\r\n const relevantUserGroupPermissions = permissions.filter(k => EnumHelper.isEqual(k.type, GroupType.UserGroup));\r\n const userGroupCodes = userGroup.groupCodes.slice(0);\r\n userGroupCodes.push(userGroup.code);\r\n for (const permission of relevantUserGroupPermissions) {\r\n if (!permission.code) { //'All users' group\r\n allUserGroupPermission = permission;\r\n } else {\r\n for (const userGroupCode of userGroupCodes) {\r\n if (!permission.code.equalIgnoreCase(userGroupCode)) continue;\r\n if (EnumHelper.isEqual(permission.groupType, UserGroupType.Fixed)) { //One user user group\r\n oneUserGroupPermission = permission;\r\n } else { //Normal user groups\r\n if (userGroupPermission === null || permission.getLevelTotal() > userGroupPermission.getLevelTotal()) {\r\n userGroupPermission = permission;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n if (oneUserGroupPermission !== null) {\r\n result.companyIds = oneUserGroupPermission.companyIds ? oneUserGroupPermission.companyIds.slice(0) : [];\r\n result.isExplicitPermission = oneUserGroupPermission.code === userGroup.code;\r\n } else if (userGroupPermission !== null) {\r\n result.companyIds = userGroupPermission.companyIds ? userGroupPermission.companyIds.slice(0) : [];\r\n result.isExplicitPermission = userGroupPermission.code === userGroup.code;\r\n } else if (allUserGroupPermission !== null) {\r\n result.companyIds = allUserGroupPermission.companyIds ? allUserGroupPermission.companyIds.slice(0) : [];\r\n result.isExplicitPermission = allUserGroupPermission.code === userGroup.code;\r\n }\r\n }\r\n return result;\r\n }\r\n //#endregion Permission CompanyIds\r\n}","export interface IUnitPermissionUserGroup {\r\n code: string;\r\n name: string;\r\n type: number;\r\n groupCodes: string[];\r\n groupNames: string[];\r\n}\r\n\r\nexport class UnitPermissionUserGroup implements IUnitPermissionUserGroup {\r\n code: string;\r\n name: string;\r\n type: number;\r\n groupCodes: string[];\r\n groupNames: string[];\r\n\r\n constructor();\r\n constructor(obj: IUnitPermissionUserGroup);\r\n constructor(obj?: any) {\r\n this.code = obj && obj.code || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.type = obj && obj.type || 0;\r\n this.groupCodes = obj && obj.groupCodes || [];\r\n this.groupNames = obj && obj.groupNames || [];\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { CompanyListItem, ICompanyListItem } from \"../company/companyListItem\";\r\nimport { IUnitNode, UnitNode } from \"../unit/unitNode\";\r\nimport { IUnitPermissionUserGroup, UnitPermissionUserGroup } from \"../userGroup/unitPermissionUserGroup\";\r\n\r\nexport interface IUnitNodePermissions {\r\n userGroups: IUnitPermissionUserGroup[];\r\n unitNode: IUnitNode;\r\n partnerCompanies: ICompanyListItem[];\r\n}\r\n\r\nexport class UnitNodePermissions implements IUnitNodePermissions {\r\n userGroups: UnitPermissionUserGroup[];\r\n unitNode: UnitNode;\r\n partnerCompanies: CompanyListItem[];\r\n\r\n constructor();\r\n constructor(obj: IUnitNodePermissions);\r\n constructor(obj?: any) {\r\n this.userGroups = Base.getTypedArray(obj ? obj.userGroups : null, UnitPermissionUserGroup);\r\n this.unitNode = new UnitNode(obj && obj.unitNode ? obj.unitNode : null);\r\n this.partnerCompanies = Base.getTypedArray(obj ? obj.partnerCompanies : null, CompanyListItem);\r\n }\r\n}","import { IUnitNodePermissions, UnitNodePermissions } from \"../unit/unitNodePermissions\";\r\n\r\nexport interface IInstantMessagePermission {\r\n hasPartners: boolean;\r\n unitNodePermissions: IUnitNodePermissions;\r\n}\r\n\r\nexport class InstantMessagePermission implements IInstantMessagePermission {\r\n hasPartners: boolean;\r\n unitNodePermissions: UnitNodePermissions;\r\n\r\n constructor();\r\n constructor(obj: IInstantMessagePermission);\r\n constructor(obj?: any) {\r\n this.hasPartners = obj && obj.hasPartners || false;\r\n this.unitNodePermissions = new UnitNodePermissions(obj ? obj.unitNodePermissions : null);\r\n }\r\n}","import { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { InstantMessageListItems } from \"ui/Scripts/source/models/instantMessage/instantMessageListItems\";\r\nimport { getApiCall, postApiCall } from \"./tokenService\";\r\nimport { InstantMessagePage } from \"../instantMessage/instantMessagePage\";\r\nimport { CompanyListItems } from \"../company/companyListItems\";\r\nimport { InstantMessagePermission } from \"../instantMessage/instantMessagePermission\";\r\n\r\n// #region InstantMessagePage\r\nexport const getInstantMessagePage = (): Promise => {\r\n return getApiCall(\"api/instantmessage\", InstantMessagePage);\r\n};\r\n\r\nexport const getInstantMessageListItems = (companyId: string, channelId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/instantmessage/list\", InstantMessageListItems, JSON.stringify({\r\n companyId,\r\n channelId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\"\r\n }));\r\n};\r\n\r\nexport const saveInstantMessage = (obj: any): Promise => {\r\n return postApiCall(\"api/instantmessage/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeInstantMessage = (id: string): Promise => {\r\n return postApiCall(\"api/instantmessage/remove?id=\" + id, ApiSuccess);\r\n};\r\n\r\nexport const restoreInstantMessage = (id: string): Promise => {\r\n return postApiCall(\"api/instantmessage/restore?id=\" + id, ApiSuccess);\r\n};\r\n\r\nexport const sendInstantMessageReadReceipts = (ids: string[]): Promise => {\r\n return postApiCall(\"api/instantmessage/sendreadreceipts\", ApiSuccess, JSON.stringify(ids));\r\n};\r\n// #endregion InstantMessagePage\r\n\r\n// #region Partners\r\nexport const getInstantMessagePartners = (companyId: string): Promise => {\r\n return getApiCall(\"api/instantmessage/module/partners?id=\" + companyId, CompanyListItems);\r\n};\r\n\r\nexport const removeInstantMessagePartners = (obj: any): Promise => {\r\n return postApiCall(\"api/instantmessage/module/removepartners\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const addInstantMessagePartners = (obj: any): Promise => {\r\n return postApiCall(\"api/instantmessage/module/addpartners\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const getInstantMessageCompanyListItems = (pageSize: number, page: number, filter: string, companyGroupIds: string[], activityState: number, sortColumn: string, sortOrderIsAsc: boolean, ignoreCompanyGroupId: string, ignoreCompanyIds: string[]): Promise => {\r\n return postApiCall(\"api/instantmessage/module/selectpartnercompanieslist\", CompanyListItems, JSON.stringify({\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\",\r\n companyGroupIds,\r\n activityState,\r\n ignoreCompanyGroupId,\r\n ignoreCompanyIds\r\n }));\r\n};\r\n// #endregion Partners\r\n\r\n// #region Permissions\r\nexport const getInstantMessagePermissions = (companyId: string): Promise => {\r\n return getApiCall(\"api/instantmessage/module/permissions?id=\" + companyId, InstantMessagePermission);\r\n};\r\n\r\nexport const saveUnitNodePermissions = (obj: any): Promise => {\r\n return postApiCall(\"api/instantmessage/module/savepermissions\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Permissions\r\n","import { IdTitle, IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { ApplicationPermissionType } from \"ui/Scripts/source/models/enums\";\r\n\r\nexport interface ISavedListFilter extends IIdTitle {\r\n applicationPermissionType: ApplicationPermissionType;\r\n generalFilter: any;\r\n sortOrder: number;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n\r\n getHash(): string;\r\n}\r\n\r\nexport class SavedListFilter extends IdTitle implements ISavedListFilter {\r\n applicationPermissionType: number;\r\n generalFilter: any;\r\n sortOrder: number;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n\r\n constructor();\r\n constructor(obj: ISavedListFilter);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.applicationPermissionType = obj && obj.applicationPermissionType || ApplicationPermissionType.Message;\r\n this.sortOrder = obj && obj.sortOrder || 0;\r\n this.sortColumn = obj && obj.sortColumn || \"\";\r\n this.sortOrderIsAsc = obj && obj.sortOrderIsAsc || false;\r\n this.generalFilter = {};\r\n if (obj && obj.generalFilter) {\r\n this.generalFilter = obj.generalFilter;\r\n }\r\n }\r\n\r\n getHash(): string {\r\n return super.getHash() + \"#\" + this.applicationPermissionType.toString(10) + \"#\" + this.sortColumn + \"#\" + this.sortOrderIsAsc.toString() + \"#\" + JSON.stringify(this.generalFilter);\r\n }\r\n}","import { CalendarTaskState, DatabaseRecordType } from \"../enums\";\r\nimport { IModifyUser, ModifyUser } from \"../user/modifyUser\";\r\n\r\nexport interface ICalendarTaskItem {\r\n id: string;\r\n parentId: string; //nullable\r\n companyId: string;\r\n recordId: string; //nullable\r\n startDate: number;\r\n endDate: number; //nullable\r\n allDay: boolean;\r\n title: string;\r\n state: CalendarTaskState;\r\n isPrivate: boolean;\r\n databaseRecordType: DatabaseRecordType; //nullable\r\n locationText: string;\r\n description: string;\r\n categoryId: string;\r\n categoryCode: string;\r\n categoryColor: string;\r\n createUser: IModifyUser;\r\n modifyUser: IModifyUser;\r\n\r\n stateStr: string;\r\n}\r\n\r\nexport class CalendarTaskItem implements ICalendarTaskItem {\r\n id: string;\r\n parentId: string;\r\n companyId: string;\r\n recordId: string;\r\n startDate: number;\r\n endDate: number;\r\n allDay: boolean;\r\n title: string;\r\n state: CalendarTaskState;\r\n isPrivate: boolean;\r\n databaseRecordType: DatabaseRecordType;\r\n locationText: string;\r\n description: string;\r\n categoryId: string;\r\n categoryCode: string;\r\n categoryColor: string;\r\n createUser: IModifyUser;\r\n modifyUser: IModifyUser;\r\n\r\n stateStr: string;\r\n\r\n constructor();\r\n constructor(obj: ICalendarTaskItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.parentId = obj?.parentId;\r\n this.companyId = obj && obj.companyId || \"\";\r\n this.recordId = obj?.recordId;\r\n this.startDate = obj && obj.startDate || 0;\r\n this.endDate = obj?.endDate;\r\n this.allDay = obj && obj.allDay || false;\r\n this.title = obj && obj.title || \"\";\r\n this.state = obj && obj.state || CalendarTaskState.NotStarted;\r\n this.isPrivate = obj && obj.isPrivate || false;\r\n this.databaseRecordType = obj?.databaseRecordType;\r\n this.locationText = obj && obj.locationText || \"\";\r\n this.description = obj && obj.description || \"\";\r\n this.categoryId = obj && obj.categoryId || \"\";\r\n this.categoryCode = obj && obj.categoryCode || \"\";\r\n this.categoryColor = obj && obj.categoryColor || \"\";\r\n this.createUser = new ModifyUser(obj ? obj.createUser : null);\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { ListItems } from \"../../framework/listItems\";\r\nimport { CalendarTaskItem, ICalendarTaskItem } from \"./calendarTaskItem\";\r\n\r\nexport interface ICalendarTaskItems extends ListItems {\r\n startDate: number;\r\n endDate: number;\r\n prevItem: ICalendarTaskItem;\r\n nextItem: ICalendarTaskItem;\r\n}\r\n\r\nexport class CalendarTaskItems extends ListItems implements ICalendarTaskItems {\r\n startDate: number;\r\n endDate: number;\r\n prevItem: CalendarTaskItem;\r\n nextItem: CalendarTaskItem;\r\n\r\n constructor();\r\n constructor(obj: ICalendarTaskItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.startDate = obj && obj.startDate || 0;\r\n this.endDate = obj && obj.endDate || 0;\r\n this.items = Base.getTypedArray(obj ? obj.items : null, CalendarTaskItem);\r\n this.prevItem = obj && obj.prevItem ? new CalendarTaskItem(obj.prevItem) : null;\r\n this.nextItem = obj && obj.nextItem ? new CalendarTaskItem(obj.nextItem) : null;\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { DatabaseRecordType } from \"../enums\";\r\n\r\nexport interface ICalendarTaskCategoryListItem {\r\n id: string;\r\n companyId: string;\r\n databaseRecordType: DatabaseRecordType;\r\n code: string;\r\n color: string;\r\n comment: string;\r\n sortOrder: number;\r\n activeState: number;\r\n\r\n isRemovable: boolean;\r\n getHash(): string;\r\n}\r\n\r\nexport class CalendarTaskCategoryListItem implements ICalendarTaskCategoryListItem {\r\n id: string;\r\n companyId: string;\r\n databaseRecordType: DatabaseRecordType;\r\n code: string;\r\n color: string;\r\n comment: string;\r\n sortOrder: number;\r\n activeState: number;\r\n\r\n isRemovable: boolean;\r\n\r\n constructor();\r\n constructor(obj: ICalendarTaskCategoryListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.companyId = obj && obj.companyId || \"\";\r\n this.databaseRecordType = obj?.databaseRecordType;\r\n this.code = obj && obj.code || \"\";\r\n this.color = obj && obj.color || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.sortOrder = obj && obj.sortOrder || 0;\r\n this.activeState = obj && obj.activeState || 0;\r\n this.isRemovable = Base.isNullOrUndefined(this.databaseRecordType);\r\n }\r\n\r\n getHash(): string {\r\n return this.id + \"#\" + this.code + \"#\" + this.color + \"#\" + this.activeState.toString(10);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\nexport interface ICodeTitle {\r\n code: string;\r\n title: string;\r\n\r\n getTitle(): string;\r\n getHash(): string;\r\n}\r\n\r\nexport class CodeTitle implements ICodeTitle {\r\n code: string;\r\n title: string;\r\n\r\n constructor();\r\n constructor(obj: ICodeTitle);\r\n constructor(obj?: any) {\r\n this.code = obj && obj.code || \"\";\r\n this.title = obj && obj.title || \"\";\r\n }\r\n\r\n getTitle(): string {\r\n return this.title;\r\n }\r\n\r\n getHash(): string {\r\n return this.code + \"#\" + this.title;\r\n }\r\n\r\n static createCodeTitle(code: string, title: string): ICodeTitle {\r\n const result = new CodeTitle();\r\n result.code = code;\r\n result.title = title;\r\n return result;\r\n }\r\n\r\n static getTitleByCode(code: string, items: ICodeTitle[]): string {\r\n if (Base.isNullOrUndefined(code) || !items || items.length < 1) return \"\";\r\n const item = items.find(i => i.code === code);\r\n return item ? item.title : \"\";\r\n }\r\n\r\n static sortCodeTitles(items: ICodeTitle[], column: string, asc: boolean): ICodeTitle[] {\r\n if (!items && items.length < 2) return items;\r\n if (column === \"title\") {\r\n return items.sort((a: ICodeTitle, b: ICodeTitle) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.title, b.title)); });\r\n } else {\r\n return items.sort((a: ICodeTitle, b: ICodeTitle) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.code, b.code)); });\r\n }\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { CalendarTaskCategoryListItem, ICalendarTaskCategoryListItem } from \"ui/Scripts/source/models/calendarTaskCategory/calendarTaskCategoryListItem\";\r\nimport { CodeTitle, ICodeTitle } from \"../common/codeTitle\";\r\n\r\nexport interface ICalendarTaskPageData {\r\n categories: ICalendarTaskCategoryListItem[];\r\n handlers: ICodeTitle[];\r\n creators: ICodeTitle[];\r\n}\r\n\r\nexport class CalendarTaskPageData implements ICalendarTaskPageData {\r\n categories: CalendarTaskCategoryListItem[];\r\n handlers: CodeTitle[];\r\n creators: CodeTitle[];\r\n\r\n constructor();\r\n constructor(obj: ICalendarTaskPageData);\r\n constructor(obj?: any) {\r\n this.categories = Base.getTypedArray(obj ? obj.categories : null, CalendarTaskCategoryListItem);\r\n this.handlers = Base.getTypedArray(obj ? obj.handlers : null, CodeTitle);\r\n this.creators = Base.getTypedArray(obj ? obj.creators : null, CodeTitle);\r\n }\r\n}\r\n","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { CompanyMenuItem, ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { ISavedListFilter, SavedListFilter } from \"../common/savedListFilter\";\r\nimport { CalendarTaskItems, ICalendarTaskItems } from \"ui/Scripts/source/models/calendarTask/calendarTaskItems\";\r\nimport { CalendarTaskPageData, ICalendarTaskPageData } from \"./calendarTaskPageData\";\r\n\r\nexport interface ICalendarTaskPage extends ICalendarTaskPageData {\r\n companies: ICompanyMenuItem[];\r\n calendar: ICalendarTaskItems;\r\n companyFilters: ISavedListFilter[];\r\n userFilters: ISavedListFilter[];\r\n showDocumentPreview: boolean;\r\n}\r\n\r\nexport class CalendarTaskPage extends CalendarTaskPageData implements ICalendarTaskPage {\r\n companies: CompanyMenuItem[];\r\n calendar: CalendarTaskItems;\r\n companyFilters: SavedListFilter[];\r\n userFilters: SavedListFilter[];\r\n showDocumentPreview: boolean;\r\n \r\n constructor();\r\n constructor(obj: ICalendarTaskPage);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.companies = Base.getTypedArray(obj ? obj.companies : null, CompanyMenuItem);\r\n this.calendar = new CalendarTaskItems(obj && obj.calendar || null);\r\n this.companyFilters = Base.getTypedArray(obj ? obj.companyFilters : null, SavedListFilter);\r\n this.userFilters = Base.getTypedArray(obj ? obj.userFilters : null, SavedListFilter);\r\n this.showDocumentPreview = obj && obj.showDocumentPreview || false;\r\n }\r\n}\r\n","import { Base } from \"../../framework/base\";\r\nimport { ListItems } from \"../../framework/listItems\";\r\nimport { CalendarTaskCategoryListItem, ICalendarTaskCategoryListItem } from \"./calendarTaskCategoryListItem\";\r\n\r\nexport interface ICalendarTaskCategoryListItems extends ListItems {\r\n}\r\n\r\nexport class CalendarTaskCategoryListItems extends ListItems implements ICalendarTaskCategoryListItems {\r\n constructor();\r\n constructor(obj: ICalendarTaskCategoryListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, CalendarTaskCategoryListItem);\r\n }\r\n}","import { EditItem, IEditItem } from \"../common/editItem\";\r\nimport { DatabaseRecordType } from \"../enums\";\r\nimport { IModifyUser, ModifyUser } from \"../user/modifyUser\";\r\n\r\nexport interface ICalendarTaskCategoryEditItem extends IEditItem {\r\n code: string;\r\n comment: string;\r\n color: string;\r\n sortOrder: number;\r\n databaseRecordType: DatabaseRecordType;\r\n activeState: number;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class CalendarTaskCategoryEditItem extends EditItem implements ICalendarTaskCategoryEditItem {\r\n code: string;\r\n comment: string;\r\n color: string;\r\n sortOrder: number;\r\n databaseRecordType: DatabaseRecordType;\r\n activeState: number;\r\n modifyUser: ModifyUser;\r\n\r\n constructor();\r\n constructor(obj: ICalendarTaskCategoryEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.color = obj && obj.color || \"\";\r\n this.sortOrder = obj && obj.sortOrder || 0;\r\n this.databaseRecordType = obj?.databaseRecordType;\r\n this.activeState = obj && obj.activeState || 0;\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { CalendarTaskCategoryEditItem, ICalendarTaskCategoryEditItem } from \"./calendarTaskCategoryEditItem\";\r\n\r\nexport interface ICalendarTaskCategoryEdit {\r\n item: ICalendarTaskCategoryEditItem;\r\n}\r\n\r\nexport class CalendarTaskCategoryEdit implements ICalendarTaskCategoryEdit {\r\n item: CalendarTaskCategoryEditItem;\r\n\r\n constructor();\r\n constructor(obj: ICalendarTaskCategoryEdit);\r\n constructor(obj?: any) {\r\n this.item = new CalendarTaskCategoryEditItem(obj ? obj.item : null);\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { EditItem, IEditItem } from \"../common/editItem\";\r\nimport { FileAttachment, IFileAttachment } from \"../common/fileAttachment\";\r\nimport { CalendarTaskRepetitionType, CalendarTaskState, DatabaseRecordType } from \"../enums\";\r\nimport { IModifyUser, ModifyUser } from \"../user/modifyUser\";\r\n\r\nexport interface ICalendarTaskEditItem extends IEditItem {\r\n parentId: string; //nullable\r\n companyId: string;\r\n categoryId: string;\r\n recordId: string;\r\n databaseRecordType: DatabaseRecordType; //nullable\r\n state: CalendarTaskState;\r\n title: string;\r\n locationText: string;\r\n description: string;\r\n startDate: number;\r\n endDate: number; //nullable\r\n allDay: boolean;\r\n isPrivate: boolean;\r\n isRead: boolean;\r\n hasChildren: boolean;\r\n remainder: number; //-1 = No in use, 0 => n = minutes before start time\r\n repetitionIntervalType: CalendarTaskRepetitionType;\r\n repetitionInterval: number; // n = Every n week/month/year\r\n repetitionIntervalSub: number; //1010001 = Mon, Wed, Sun, 23 = 23rd of Month, 1224 = 24th of December\r\n repetitionEndRepeatCount: number; //n = End after n repeats (null/0 = use repetition end date)\r\n repetitionEndDate: number; //d = End after date d (null = use repetition end repeat count)\r\n createUser: IModifyUser;\r\n modifyUser: IModifyUser;\r\n lockedUser: IModifyUser;\r\n handlers: IModifyUser[];\r\n attachments: IFileAttachment[];\r\n\r\n isLockedToOtherUser(userCode: string): boolean;\r\n}\r\n\r\nexport class CalendarTaskEditItem extends EditItem implements ICalendarTaskEditItem {\r\n parentId: string; //nullable\r\n companyId: string;\r\n categoryId: string;\r\n recordId: string;\r\n databaseRecordType: DatabaseRecordType; //nullable\r\n state: CalendarTaskState;\r\n title: string;\r\n locationText: string;\r\n description: string;\r\n startDate: number;\r\n endDate: number; //nullable\r\n allDay: boolean;\r\n isPrivate: boolean;\r\n isRead: boolean;\r\n hasChildren: boolean;\r\n remainder: number; //-1 = No in use, 0 => n = minutes before start time\r\n repetitionIntervalType: CalendarTaskRepetitionType;\r\n repetitionInterval: number; // n = Every n week/month/year\r\n repetitionIntervalSub: number; //1010001 = Mon, Wed, Sun, 23 = 23rd of Month, 1224 = 24th of December\r\n repetitionEndRepeatCount: number; //n = End after n repeats (null/0 = use repetition end date)\r\n repetitionEndDate: number; //d = End after date d (null = use repetition end repeat count)\r\n createUser: ModifyUser;\r\n modifyUser: ModifyUser;\r\n lockedUser: ModifyUser;\r\n handlers: ModifyUser[];\r\n attachments: FileAttachment[];\r\n\r\n constructor();\r\n constructor(obj: ICalendarTaskEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.parentId = obj && obj.parentId || \"\";\r\n this.companyId = obj && obj.companyId || \"\";\r\n this.categoryId = obj && obj.categoryId || \"\";\r\n this.recordId = obj && obj.recordId || \"\";\r\n this.databaseRecordType = obj?.databaseRecordType;\r\n this.state = obj && obj.state || CalendarTaskState.NotStarted;\r\n this.title = obj && obj.title || \"\";\r\n this.locationText = obj && obj.locationText || \"\";\r\n this.description = obj && obj.description || \"\";\r\n this.startDate = obj && obj.startDate || 0;\r\n this.endDate = obj?.endDate;\r\n this.allDay = obj && obj.allDay || false;\r\n this.isPrivate = obj && obj.isPrivate || false;\r\n this.isRead = obj && obj.isRead || false;\r\n this.hasChildren = obj && obj.hasChildren || false;\r\n this.remainder = -1;\r\n if (!Base.isNullOrUndefined(obj?.remainder)) {\r\n this.remainder = obj.remainder;\r\n }\r\n this.repetitionIntervalType = obj && obj.repetitionIntervalType || CalendarTaskRepetitionType.NotRepeated;\r\n this.repetitionInterval = obj && obj.repetitionInterval || 0;\r\n this.repetitionIntervalSub = this.repetitionIntervalType === CalendarTaskRepetitionType.Weekly\r\n ? 1000000\r\n : (this.repetitionIntervalType === CalendarTaskRepetitionType.Monthly\r\n ? 1\r\n : 101\r\n );\r\n if (!Base.isNullOrUndefined(obj?.repetitionIntervalSub)) {\r\n this.repetitionIntervalSub = obj.repetitionIntervalSub;\r\n }\r\n this.repetitionEndRepeatCount = obj && obj.repetitionEndRepeatCount || 0;\r\n this.repetitionEndDate = obj && obj.repetitionEndDate || 0;\r\n if (!this.repetitionEndDate && !this.repetitionEndRepeatCount && this.repetitionIntervalType !== CalendarTaskRepetitionType.NotRepeated) {\r\n this.repetitionEndRepeatCount = 1;\r\n }\r\n this.createUser = new ModifyUser(obj ? obj.createUser : null);\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n this.lockedUser = obj?.lockedUser ? new ModifyUser(obj.lockedUser) : null;\r\n this.handlers = Base.getTypedArray(obj ? obj.handlers : null, ModifyUser);\r\n this.attachments = Base.getTypedArray(obj ? obj.attachments : null, FileAttachment);\r\n }\r\n\r\n isLockedToOtherUser(userCode: string): boolean {\r\n return this.lockedUser?.code && !userCode.equalIgnoreCase(this.lockedUser.code);\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { CalendarTaskCategoryListItem, ICalendarTaskCategoryListItem } from \"../calendarTaskCategory/calendarTaskCategoryListItem\";\r\nimport { CalendarTaskEditItem, ICalendarTaskEditItem } from \"./calendarTaskEditItem\";\r\n\r\nexport interface ICalendarTaskEdit {\r\n item: ICalendarTaskEditItem;\r\n categories: ICalendarTaskCategoryListItem[];\r\n canSaveCalendarTask: boolean;\r\n canRemoveCalendarTask: boolean;\r\n canShareCalendarTasks: boolean;\r\n userIsIsSystemAdmin: boolean;\r\n}\r\n\r\nexport class CalendarTaskEdit implements ICalendarTaskEdit {\r\n item: CalendarTaskEditItem;\r\n categories: CalendarTaskCategoryListItem[];\r\n canSaveCalendarTask: boolean;\r\n canRemoveCalendarTask: boolean;\r\n canShareCalendarTasks: boolean;\r\n userIsIsSystemAdmin: boolean;\r\n\r\n constructor();\r\n constructor(obj: ICalendarTaskEdit);\r\n constructor(obj?: any) {\r\n this.item = new CalendarTaskEditItem(obj ? obj.item : null);\r\n this.categories = Base.getTypedArray(obj ? obj.categories : null, CalendarTaskCategoryListItem);\r\n this.canSaveCalendarTask = obj && obj.canSaveCalendarTask || false;\r\n this.canRemoveCalendarTask = obj && obj.canRemoveCalendarTask || false;\r\n this.canShareCalendarTasks = obj && obj.canShareCalendarTasks || false;\r\n this.userIsIsSystemAdmin = obj && obj.userIsIsSystemAdmin || false;\r\n }\r\n}","export interface ISaveSuccessItems {\r\n message: string;\r\n ids: string[];\r\n rowIds: string[];\r\n}\r\n\r\nexport class SaveSuccessItems implements ISaveSuccessItems {\r\n message: string;\r\n ids: string[];\r\n rowIds: string[];\r\n\r\n constructor();\r\n constructor(obj: ISaveSuccessItems);\r\n constructor(obj?: any) {\r\n this.message = obj && obj.message || \"\";\r\n this.ids = obj && obj.ids || [];\r\n this.rowIds = obj && obj.rowIds || [];\r\n }\r\n}","export interface IUserGroupListItemUser {\r\n id: string;\r\n name: string;\r\n disabled: boolean;\r\n}\r\n\r\nexport class UserGroupListItemUser implements IUserGroupListItemUser {\r\n id: string;\r\n name: string;\r\n disabled: boolean;\r\n\r\n constructor();\r\n constructor(obj: IUserGroupListItemUser);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.disabled = obj && obj.disabled || false;\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { EnumHelper } from \"../enums\";\r\nimport { IUserGroupListItemUser, UserGroupListItemUser } from \"./userGroupListItemUser\";\r\n\r\nexport interface IUserGroupListItem {\r\n id: string;\r\n companyCode: string;\r\n code: string;\r\n name: string;\r\n comment: string;\r\n picture: string;\r\n level: number;\r\n users: IUserGroupListItemUser[];\r\n\r\n levelStr: string;\r\n getTitle(): string;\r\n}\r\n\r\nexport class UserGroupListItem implements IUserGroupListItem {\r\n id: string;\r\n companyCode: string;\r\n code: string;\r\n name: string;\r\n comment: string;\r\n picture: string;\r\n level: number;\r\n users: UserGroupListItemUser[];\r\n \r\n levelStr: string;\r\n\r\n constructor();\r\n constructor(obj: IUserGroupListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.companyCode = obj && obj.companyCode || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.picture = obj && obj.picture || \"\";\r\n this.level = obj && obj.level || 0;\r\n this.levelStr = EnumHelper.UserGroupAuthorizationLevelToStr(this.level);\r\n this.users = Base.getTypedArray(obj ? obj.users : null, UserGroupListItemUser);\r\n }\r\n\r\n getTitle(): string {\r\n return this.name;\r\n }\r\n \r\n static sortUserGroupListItems(items: IUserGroupListItem[], column: string, asc: boolean): IUserGroupListItem[] {\r\n if (!items && items.length < 2) return items;\r\n if (column === \"name\") {\r\n return items.sort((a: IUserGroupListItem, b: IUserGroupListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.name, b.name)); });\r\n } else if (column === \"comment\") {\r\n return items.sort((a: IUserGroupListItem, b: IUserGroupListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.comment, b.comment)); });\r\n } else {\r\n return items.sort((a: IUserGroupListItem, b: IUserGroupListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.level, b.level)); });\r\n }\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { IListItems, ListItems } from \"../../framework/listItems\";\r\nimport { IUserGroupListItem, UserGroupListItem } from \"./userGroupListItem\";\r\n\r\nexport interface IUserGroupListItems extends IListItems {}\r\n\r\nexport class UserGroupListItems extends ListItems implements IUserGroupListItems {\r\n constructor();\r\n constructor(obj: IUserGroupListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, UserGroupListItem);\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { ListItems } from \"../../framework/listItems\";\r\nimport { CalendarTaskItem, ICalendarTaskItem } from \"./calendarTaskItem\";\r\n\r\nexport interface ICalendarTaskListItems extends ListItems {\r\n totalItemCount: number;\r\n}\r\n\r\nexport class CalendarTaskListItems extends ListItems implements ICalendarTaskListItems {\r\n totalItemCount: number;\r\n\r\n constructor();\r\n constructor(obj: ICalendarTaskListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.totalItemCount = obj && obj.totalItemCount || 0;\r\n this.items = Base.getTypedArray(obj ? obj.items : null, CalendarTaskItem);\r\n }\r\n}","export interface ICalendarTaskAmount {\r\n amount: number;\r\n}\r\n\r\nexport class CalendarTaskAmount implements ICalendarTaskAmount {\r\n amount: number;\r\n\r\n constructor();\r\n constructor(obj: ICalendarTaskAmount);\r\n constructor(obj?: any) {\r\n this.amount = obj && obj.amount || 0;\r\n }\r\n}","export interface ICalendarTaskPermissions {\r\n canSaveCalendarTask: boolean;\r\n canRemoveCalendarTask: boolean;\r\n}\r\n\r\nexport class CalendarTaskPermissions implements ICalendarTaskPermissions {\r\n canSaveCalendarTask: boolean;\r\n canRemoveCalendarTask: boolean;\r\n\r\n constructor();\r\n constructor(obj: ICalendarTaskPermissions);\r\n constructor(obj?: any) {\r\n this.canSaveCalendarTask = obj && obj.canSaveCalendarTask || false;\r\n this.canRemoveCalendarTask = obj && obj.canRemoveCalendarTask || false;\r\n }\r\n}","import { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { UnitNodePermissions } from \"../unit/unitNodePermissions\";\r\nimport { getApiCall, postApiCall } from \"./tokenService\";\r\nimport { CalendarTaskPage } from \"../calendarTask/calendarTaskPage\";\r\nimport { CalendarTaskItems } from \"ui/Scripts/source/models/calendarTask/calendarTaskItems\";\r\nimport { CalendarTaskCategoryListItems } from \"ui/Scripts/source/models/calendarTaskCategory/calendarTaskCategoryListItems\";\r\nimport { CalendarTaskCategoryEdit } from \"ui/Scripts/source/models/calendarTaskCategory/calendarTaskCategoryEdit\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { CalendarTaskEdit } from \"ui/Scripts/source/models/calendarTask/calendarTaskEdit\";\r\nimport { CalendarTaskPrivacyFilter, DatabaseRecordType } from \"ui/Scripts/source/models/enums\";\r\nimport { ICalendarTaskHandlerSave } from \"ui/Scripts/source/models/calendarTaskHandler/calendarTaskHandlerSave\";\r\nimport { SaveSuccessItems } from \"ui/Scripts/source/models/common/saveSuccessItems\";\r\nimport { UserGroupListItems } from \"ui/Scripts/source/models/userGroup/userGroupListItems\";\r\nimport { CalendarTaskPageData } from \"../calendarTask/calendarTaskPageData\";\r\nimport { CalendarTaskListItems } from \"ui/Scripts/source/models/calendarTask/calendarTaskListItems\";\r\nimport { CalendarTaskAmount } from \"ui/Scripts/source/models/calendarTask/calendarTaskAmount\";\r\nimport { CalendarTaskPermissions } from \"ui/Scripts/source/models/calendarTask/calendarTaskPermissions\";\r\n\r\n// #region CalendarTask\r\nexport const getCalendarTaskPage = (): Promise => {\r\n return getApiCall(\"api/calendartask\", CalendarTaskPage);\r\n};\r\n\r\nexport const getCalendarTaskPageData = (companyId: string): Promise => {\r\n return getApiCall(\"api/calendartask/pagedata?id=\" + companyId, CalendarTaskPageData);\r\n};\r\n\r\nexport const getCalendarTaskItems = (companyId: string, startDate: number, endDate: number,\r\n filter: string, states: number[], categoryIds: string[], handlerUserGroupCodes: string[], privacy: number, createUserCodes: string[]): Promise => {\r\n return postApiCall(\"api/calendartask/items\", CalendarTaskItems, JSON.stringify({\r\n companyId,\r\n startDate,\r\n endDate,\r\n filter: filter || \"\",\r\n states,\r\n categoryIds,\r\n handlerUserGroupCodes,\r\n isPrivate: privacy < CalendarTaskPrivacyFilter.Private ? null : privacy === CalendarTaskPrivacyFilter.Private,\r\n createUserCodes\r\n }));\r\n};\r\n\r\nexport const getCalendarTaskListItems = (companyId: string, databaseRecordType: number, recordId: string, pageSize: number, page: number): Promise => {\r\n return postApiCall(\"api/calendartask/list\", CalendarTaskListItems, JSON.stringify({\r\n companyId,\r\n databaseRecordType,\r\n recordId,\r\n pageSize,\r\n page,\r\n }));\r\n};\r\n\r\nexport const getCalendarTaskAmount = (companyId: string, databaseRecordType: number, recordId: string, states: number[]): Promise => {\r\n return postApiCall(\"api/calendartask/amount\", CalendarTaskAmount, JSON.stringify({\r\n companyId,\r\n databaseRecordType,\r\n recordId,\r\n states\r\n }));\r\n};\r\n\r\nexport const getCalendarTaskPermissions = (companyId: string, calendarTaskId: string, recordId: string, databaseRecordType: DatabaseRecordType): Promise => {\r\n return getApiCall(\"api/calendartask/permissions?id=\" + calendarTaskId + \"&companyId=\" + companyId + \"&recordId=\" + (recordId ?? null) + \"&databaseRecordType=\" + databaseRecordType, CalendarTaskPermissions);\r\n};\r\n// #endregion CalendarTask\r\n\r\n// #region Edit\r\nexport const getCalendarTaskEdit = (companyId: string, calendarTaskId: string, recordId: string, databaseRecordType: DatabaseRecordType): Promise => {\r\n return getApiCall(\"api/calendartask/edit?id=\" + calendarTaskId + \"&companyId=\" + companyId + \"&recordId=\" + (recordId ?? null) + \"&databaseRecordType=\" + databaseRecordType, CalendarTaskEdit);\r\n};\r\n\r\nexport const saveCalendarTaskEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/calendartask/editsave\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeCalendarTask = (companyId: string, calendarTaskId: string): Promise => {\r\n return postApiCall(\"api/calendartask/remove?id=\" + calendarTaskId + \"&companyId=\" + companyId, ApiSuccess);\r\n};\r\n\r\nexport const setCalendarTaskStartDate = (companyId: string, calendarTaskId: string, startDate: number): Promise => {\r\n return postApiCall(\"api/calendartask/setstartdate?id=\" + calendarTaskId + \"&companyId=\" + companyId + \"&startDate=\" + startDate, ApiSuccess);\r\n};\r\n// #endregion Edit\r\n\r\n// #region Edit Handlers\r\nexport const calendarTaskEditAddHandlers = (companyId: string, calendarTaskId: string, handlers: ICalendarTaskHandlerSave[]): Promise => {\r\n return postApiCall(\"api/calendartask/editaddhandlers\", ApiSuccess, JSON.stringify({\r\n companyId,\r\n id: calendarTaskId,\r\n handlers\r\n }));\r\n};\r\n\r\nexport const calendarTaskEditRemoveHandlers = (companyId: string, calendarTaskId: string, handlers: ICalendarTaskHandlerSave[]): Promise => {\r\n return postApiCall(\"api/calendartask/editremovehandlers\", ApiSuccess, JSON.stringify({\r\n companyId,\r\n id: calendarTaskId,\r\n handlers\r\n }));\r\n};\r\n// #endregion Edit Handlers\r\n\r\n// #region Edit Attachment\r\nexport const calendarTaskEditRemoveAttachments = (data: any): Promise => {\r\n return postApiCall(\"api/calendartask/editremoveattachments\", ApiSuccess, JSON.stringify(data));\r\n};\r\n\r\nexport const calendarTaskEditAddAttachments = (data: any): Promise => {\r\n return postApiCall(\"api/calendartask/editaddattachments\", SaveSuccessItems, JSON.stringify(data));\r\n};\r\n// #endregion Edit Attachment\r\n\r\n// #region Module properties\r\nexport const getUnitNodePermissions = (companyId: string): Promise => {\r\n return getApiCall(\"api/calendartask/module/permissions?id=\" + companyId, UnitNodePermissions);\r\n};\r\n\r\nexport const saveUnitNodePermissions = (obj: any): Promise => {\r\n return postApiCall(\"api/calendartask/module/savepermissions\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Module properties\r\n\r\n// #region Module calendar task categories\r\nexport const getCalendarTaskCategoryListItems = (companyId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/calendartask/module/category/list\", CalendarTaskCategoryListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\"\r\n }));\r\n};\r\n\r\nexport const getCalendarTaskCategoryEdit = (companyId: string, id: string): Promise => {\r\n return getApiCall(\"api/calendartask/module/category/edit?id=\" + id + \"&companyId=\" + companyId, CalendarTaskCategoryEdit);\r\n};\r\n\r\nexport const saveCalendarTaskCategoryEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/calendartask/module/category/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeCalendarTaskCategories = (obj: any): Promise => {\r\n return postApiCall(\"api/calendartask/module/category/remove\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Module calendar task categories\r\n\r\n// #region Select user groups\r\nexport const getUserGroupListItems = (companyId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, groupType: number,\r\n ignoreUserGroupCodes: string[], requireUserGroupCodes: string[]): Promise => {\r\n return postApiCall(\"api/calendartask/getusergrouplistitems\", UserGroupListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\",\r\n groupType: groupType || 0,\r\n ignoreUserGroupCodes: ignoreUserGroupCodes || [],\r\n requireUserGroupCodes: requireUserGroupCodes || []\r\n }));\r\n};\r\n// #endregion Select user groups\r\n","export interface IApplicationPermission {\r\n code: string;\r\n level: number;\r\n type: number;\r\n}\r\n\r\nexport class ApplicationPermission implements IApplicationPermission {\r\n code: string;\r\n level: number;\r\n type: number;\r\n\r\n constructor();\r\n constructor(obj: IApplicationPermission);\r\n constructor(obj?: any) {\r\n this.code = obj && obj.code || \"\";\r\n this.level = obj && obj.level || 0;\r\n this.type = obj && obj.type || 0;\r\n }\r\n}\r\n\r\nexport class ApplicationPermissionSave {\r\n code: string;\r\n level: string;\r\n\r\n constructor();\r\n constructor(obj: IApplicationPermission);\r\n constructor(obj?: any) {\r\n this.code = obj && obj.code || \"\";\r\n this.level = obj && obj.level || 0;\r\n }\r\n}","export interface ICompanyGroupListItemCompany {\r\n id: string;\r\n name: string;\r\n disabled: boolean;\r\n}\r\n\r\nexport class CompanyGroupListItemCompany implements ICompanyGroupListItemCompany {\r\n id: string;\r\n name: string;\r\n disabled: boolean;\r\n\r\n constructor();\r\n constructor(obj: ICompanyGroupListItemCompany);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.disabled = obj && obj.disabled || false;\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { CompanyGroupListItemCompany, ICompanyGroupListItemCompany } from \"./companyGroupListItemCompany\";\r\n\r\nexport interface ICompanyGroupListItem {\r\n id: string;\r\n code: string;\r\n name: string;\r\n comment: string;\r\n companies: ICompanyGroupListItemCompany[];\r\n}\r\n\r\nexport class CompanyGroupListItem implements ICompanyGroupListItem {\r\n id: string;\r\n code: string;\r\n name: string;\r\n comment: string;\r\n companies: CompanyGroupListItemCompany[];\r\n\r\n constructor();\r\n constructor(obj: ICompanyGroupListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.companies = Base.getTypedArray(obj ? obj.companies : null, CompanyGroupListItemCompany);\r\n }\r\n \r\n static sortCompanyGroupListItems(items: ICompanyGroupListItem[], column: string, asc: boolean): ICompanyGroupListItem[] {\r\n if (!items && items.length < 2) return items;\r\n if (column === \"name\") {\r\n return items.sort((a: ICompanyGroupListItem, b: ICompanyGroupListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.name, b.name)); });\r\n } else if (column === \"comment\") {\r\n return items.sort((a: ICompanyGroupListItem, b: ICompanyGroupListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.comment, b.comment)); });\r\n } else {\r\n return items.sort((a: ICompanyGroupListItem, b: ICompanyGroupListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.code, b.code)); });\r\n }\r\n }\r\n}","export interface IUserExternalSystem {\r\n code: string;\r\n name: string;\r\n externalCode: string;\r\n inUse: boolean;\r\n}\r\n\r\nexport class UserExternalSystem implements IUserExternalSystem {\r\n code: string;\r\n name: string;\r\n externalCode: string;\r\n inUse: boolean;\r\n\r\n constructor();\r\n constructor(obj: IUserExternalSystem);\r\n constructor(obj?: any) {\r\n this.code = obj && obj.code || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.externalCode = obj && obj.externalCode || \"\";\r\n this.inUse = obj && obj.inUse || false;\r\n }\r\n}\r\n\r\nexport class UserSaveExternalSystem {\r\n code: string;\r\n externalCode: string;\r\n\r\n constructor();\r\n constructor(obj: IUserExternalSystem);\r\n constructor(obj?: any) {\r\n this.code = obj && obj.code || \"\";\r\n this.externalCode = obj && obj.externalCode || \"\";\r\n }\r\n}","export interface IFileFilterListItem {\r\n id: string;\r\n code: string;\r\n name: string;\r\n}\r\n\r\nexport class FileFilterListItem implements IFileFilterListItem {\r\n id: string;\r\n code: string;\r\n name: string;\r\n\r\n constructor();\r\n constructor(obj: IFileFilterListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.name = obj && obj.name || \"\";\r\n }\r\n}","export interface ICompanyIntraModule {\r\n code: string;\r\n name: string;\r\n externalCode: string;\r\n inUse: boolean;\r\n usesExternalCode: boolean;\r\n}\r\n\r\nexport class CompanyIntraModule implements ICompanyIntraModule {\r\n code: string;\r\n name: string;\r\n externalCode: string;\r\n inUse: boolean;\r\n usesExternalCode: boolean;\r\n\r\n constructor();\r\n constructor(obj: ICompanyIntraModule);\r\n constructor(obj?: any) {\r\n this.code = obj && obj.code || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.externalCode = obj && obj.externalCode || \"\";\r\n this.inUse = obj && obj.inUse || false;\r\n this.usesExternalCode = obj && obj.usesExternalCode || false;\r\n }\r\n}\r\n\r\nexport class CompanySaveIntraModule {\r\n code: string;\r\n externalCode: string;\r\n\r\n constructor();\r\n constructor(obj: ICompanyIntraModule);\r\n constructor(obj?: any) {\r\n this.code = obj && obj.code || \"\";\r\n this.externalCode = obj && obj.externalCode || \"\";\r\n }\r\n}","export interface IMessageTypeListItem {\r\n id: string;\r\n code: string;\r\n name: string;\r\n typeClass: number;\r\n image: string;\r\n}\r\n\r\nexport class MessageTypeListItem implements IMessageTypeListItem {\r\n id: string;\r\n code: string;\r\n name: string;\r\n typeClass: number;\r\n image: string;\r\n\r\n constructor();\r\n constructor(obj: IMessageTypeListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.typeClass = obj && obj.typeClass || 0;\r\n this.image = obj && obj.image || \"\";\r\n }\r\n}","import { ApplicationPermissionType, EnumHelper } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\n\r\nexport interface IUnitModuleNodeUsage {\r\n applicationPermissionType: ApplicationPermissionType;\r\n inUse: boolean;\r\n enabled: boolean;\r\n visible: boolean;\r\n\r\n getImageClass(): string;\r\n getTitle(isSuperAdmin: boolean, canUseRecords: boolean): string;\r\n}\r\n\r\nexport class UnitModuleNodeUsage implements IUnitModuleNodeUsage {\r\n applicationPermissionType: ApplicationPermissionType;\r\n inUse: boolean;\r\n enabled: boolean;\r\n visible: boolean;\r\n\r\n constructor();\r\n constructor(obj: IUnitModuleNodeUsage);\r\n constructor(obj?: any) {\r\n this.applicationPermissionType = obj && obj.applicationPermissionType || 0;\r\n this.inUse = obj && obj.inUse || false;\r\n this.enabled = obj && obj.enabled || false;\r\n this.visible = obj && obj.visible || false;\r\n }\r\n\r\n getImageClass(): string {\r\n return EnumHelper.ApplicationPermissionTypeToImageClass(this.applicationPermissionType);\r\n }\r\n\r\n getTitle(isSuperAdmin: boolean, canUseRecords: boolean): string {\r\n switch (this.applicationPermissionType) {\r\n case ApplicationPermissionType.Message:\r\n return Translations.CurrentTopics;\r\n case ApplicationPermissionType.Document:\r\n return Translations.Documents;\r\n case ApplicationPermissionType.Event:\r\n return Translations.Events;\r\n case ApplicationPermissionType.Task:\r\n return Translations.Tasks;\r\n case ApplicationPermissionType.Record:\r\n return canUseRecords ? Translations.UserRecords : Translations.RecordUser;\r\n case ApplicationPermissionType.CompanyGroup:\r\n return Translations.CompanyGroups;\r\n case ApplicationPermissionType.Company:\r\n return isSuperAdmin ? Translations.Companies : Translations.Company;\r\n case ApplicationPermissionType.UserGroup:\r\n return Translations.UserGroups;\r\n case ApplicationPermissionType.User:\r\n return Translations.Users;\r\n case ApplicationPermissionType.Log:\r\n return Translations.Log;\r\n case ApplicationPermissionType.WhistleBlow:\r\n return Translations.WhistleBlow;\r\n default:\r\n return \"\";\r\n }\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { EnumHelper } from \"ui/Scripts/source/models/enums\";\r\nimport { IUnitModuleNodeUsage, UnitModuleNodeUsage } from \"./unitModuleNodeUsage\";\r\n\r\nexport interface IUnitModuleNode extends IEditItem {\r\n name: string;\r\n comment: string;\r\n children: IUnitModuleNode[];\r\n usages: IUnitModuleNodeUsage[];\r\n parent: IUnitModuleNode;\r\n level: number;\r\n hidden: boolean;\r\n collapsed: boolean;\r\n\r\n getIsRoot(): boolean;\r\n getHasChildren(): boolean;\r\n getParentIsRoot(): boolean;\r\n getIsHidden(): boolean;\r\n getAncesterIsCollapsed(): boolean;\r\n getIsDisabled(): boolean;\r\n getSiblings(): IUnitModuleNode[];\r\n getSiblingNames(lowerCase: boolean): string[];\r\n getUnitModuleNodeById(id: string): IUnitModuleNode;\r\n getAsList(list: IUnitModuleNode[], level: number): IUnitModuleNode[];\r\n getDescendantIdsForRemoveSub(ids: string[]);\r\n getDescendantIdsForRemove(): string[];\r\n setUsagesSub(ids: string[], usages: IUnitModuleNodeUsage[]): string[];\r\n setUsages(usages: IUnitModuleNodeUsage[]): string[];\r\n setCollapsed(value: boolean);\r\n addUnitModuleNode(node: IUnitModuleNode);\r\n removeUnitModuleNodeById(id: string): string[];\r\n setApplicationPermissionTypeVisible(applicationPermissionType: number, value: boolean);\r\n setNotInUseNodesHidden(applicationPermissionType: number, value: boolean);\r\n}\r\n\r\nexport class UnitModuleNode extends EditItem implements IUnitModuleNode {\r\n name: string;\r\n comment: string;\r\n children: UnitModuleNode[];\r\n usages: UnitModuleNodeUsage[];\r\n parent: UnitModuleNode;\r\n level: number;\r\n hidden: boolean;\r\n collapsed: boolean;\r\n\r\n constructor();\r\n constructor(obj: IUnitModuleNode);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.name = obj && obj.name || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.level = obj && obj.level || 0;\r\n this.hidden = obj && obj.hidden || false;\r\n this.collapsed = obj && obj.collapsed || false;\r\n this.children = [];\r\n this.parent = null;\r\n if (obj && obj.children) {\r\n this.children = Base.getTypedArray(obj.children, UnitModuleNode);\r\n for (const child of this.children) {\r\n child.parent = this;\r\n }\r\n }\r\n this.usages = [];\r\n if (obj && obj.usages) {\r\n this.usages = Base.getTypedArray(obj ? obj.usages : null, UnitModuleNodeUsage);\r\n }\r\n }\r\n\r\n getIsRoot(): boolean {\r\n return !this.parent;\r\n }\r\n\r\n getHasChildren(): boolean {\r\n return this.children.length > 0;\r\n }\r\n\r\n getParentIsRoot(): boolean {\r\n if (!this.parent) return false;\r\n return this.parent.getIsRoot();\r\n }\r\n\r\n getAncesterIsCollapsed(): boolean {\r\n if (!this.parent) return false;\r\n if (this.parent.collapsed) return true;\r\n return this.parent.getAncesterIsCollapsed();\r\n }\r\n\r\n getIsHidden(): boolean {\r\n if (this.hidden) return true;\r\n if (!this.parent) return false;\r\n return this.parent.getIsHidden();\r\n }\r\n\r\n getSiblings(): IUnitModuleNode[] {\r\n if (this.getIsRoot()) return [];\r\n return this.parent.children.filter(i => i.id !== this.id);\r\n }\r\n\r\n getUnitModuleNodeById(id: string): IUnitModuleNode {\r\n if (!id) return null;\r\n if (this.id.equalIgnoreCase(id)) return this;\r\n for (const child of this.children) {\r\n const childResult = child.getUnitModuleNodeById(id);\r\n if (childResult) return childResult;\r\n }\r\n return null;\r\n }\r\n\r\n getIsDisabled(): boolean {\r\n return this.usages.filter(i => i.visible && i.inUse).length < 1;\r\n }\r\n\r\n getSiblingNames(lowerCase: boolean): string[] {\r\n if (!this.parent) return [];\r\n return this.parent.children.filter(i => i.id !== this.id).map(i => lowerCase ? i.name.toLowerCase() : i.name);\r\n }\r\n\r\n getDescendantIdsForRemoveSub(ids: string[]): string[] {\r\n if (this.children.length < 1) return ids;\r\n for (const child of this.children) {\r\n child.getDescendantIdsForRemoveSub(ids);\r\n }\r\n for (const child of this.children) {\r\n ids.push(child.id);\r\n }\r\n return ids;\r\n }\r\n\r\n getDescendantIdsForRemove(): string[] {\r\n return this.getDescendantIdsForRemoveSub([]);\r\n }\r\n\r\n getAsList(list: IUnitModuleNode[], level: number = 0): IUnitModuleNode[] {\r\n list.push(this);\r\n this.level = level;\r\n if (this.children.length < 1) return list;\r\n for (const child of this.children) {\r\n child.getAsList(list, level + 1);\r\n }\r\n return list;\r\n }\r\n\r\n setCollapsed(value: boolean) {\r\n this.collapsed = value;\r\n }\r\n\r\n setUsagesSub(ids: string[], usages: IUnitModuleNodeUsage[]): string[] {\r\n let usageSet = false;\r\n for (const newUsage of usages) {\r\n const usage = this.usages.find(i => EnumHelper.isEqual(i.applicationPermissionType, newUsage.applicationPermissionType));\r\n if (!usage) continue;\r\n usage.inUse = newUsage.inUse;\r\n usageSet = true;\r\n }\r\n if (usageSet) {\r\n ids.push(this.id);\r\n }\r\n for (const child of this.children) {\r\n child.setUsagesSub(ids, usages);\r\n }\r\n return ids;\r\n }\r\n\r\n setUsages(usages: IUnitModuleNodeUsage[]): string[] {\r\n return this.setUsagesSub([], usages);\r\n }\r\n\r\n addUnitModuleNode(node: IUnitModuleNode) {\r\n if (!node) return;\r\n node.parent = this;\r\n const index = this.children.findIndex(i => i.name && i.name.localeCompare(node.name, appConfig.culture) > 0);\r\n if (index < 0) {\r\n this.children.push(node);\r\n } else {\r\n this.children.splice(index, 0, node);\r\n }\r\n }\r\n\r\n removeUnitModuleNodeById(id: string): string[] {\r\n const unitModuleNode = this.getUnitModuleNodeById(id);\r\n if (!unitModuleNode || !unitModuleNode.parent) return [];\r\n const result = unitModuleNode.getDescendantIdsForRemove().concat([unitModuleNode.id]);\r\n unitModuleNode.parent.children = unitModuleNode.parent.children.filter(i => i.id !== unitModuleNode.id);\r\n return result;\r\n }\r\n \r\n setApplicationPermissionTypeVisible(applicationPermissionType: number, value: boolean) {\r\n for (const usage of this.usages) {\r\n if (!EnumHelper.isEqual(applicationPermissionType, usage.applicationPermissionType)) continue;\r\n usage.visible = value;\r\n }\r\n for (const child of this.children) {\r\n child.setApplicationPermissionTypeVisible(applicationPermissionType, value);\r\n }\r\n }\r\n \r\n setNotInUseNodesHidden(applicationPermissionType: number, value: boolean) {\r\n for (const usage of this.usages) {\r\n if (!EnumHelper.isEqual(applicationPermissionType, usage.applicationPermissionType)) continue;\r\n this.hidden = !usage.inUse && value;\r\n }\r\n for (const child of this.children) {\r\n child.setNotInUseNodesHidden(applicationPermissionType, value);\r\n }\r\n }\r\n}","import { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface ICompanyEditItem extends IEditItem {\r\n code: string;\r\n name: string;\r\n postalAddress: string;\r\n postalCode: string;\r\n city: string;\r\n phone: string;\r\n email: string;\r\n internet: string;\r\n pageFooterText: string;\r\n businessIdentityCode: string;\r\n contactPerson: string;\r\n logo: string;\r\n logoSquare: string;\r\n styleClass: string;\r\n fileStorageQuota: number;\r\n loginUrl: string;\r\n customStyleClass: string;\r\n tiedostoturvaUseType: number;\r\n activeState: number;\r\n documentRootPath: string;\r\n bannerPath: string;\r\n documentPreviewLogType: number;\r\n eInvoiceAddress: string;\r\n eInvoiceOperator: string;\r\n minPasswordLength: number;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class CompanyEditItem extends EditItem implements ICompanyEditItem {\r\n code: string;\r\n name: string;\r\n postalAddress: string;\r\n postalCode: string;\r\n city: string;\r\n phone: string;\r\n email: string;\r\n internet: string;\r\n pageFooterText: string;\r\n businessIdentityCode: string;\r\n contactPerson: string;\r\n logo: string;\r\n logoSquare: string;\r\n styleClass: string;\r\n customStyleClass: string;\r\n fileStorageQuota: number;\r\n loginUrl: string;\r\n tiedostoturvaUseType: number;\r\n activeState: number;\r\n documentRootPath: string;\r\n bannerPath: string;\r\n documentPreviewLogType: number;\r\n eInvoiceAddress: string;\r\n eInvoiceOperator: string;\r\n minPasswordLength: number;\r\n modifyUser: ModifyUser;\r\n\r\n constructor();\r\n constructor(obj: ICompanyEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.code = obj && obj.code || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.postalAddress = obj && obj.postalAddress || \"\";\r\n this.postalCode = obj && obj.postalCode || \"\";\r\n this.city = obj && obj.city || \"\";\r\n this.phone = obj && obj.phone || \"\";\r\n this.email = obj && obj.email || \"\";\r\n this.internet = obj && obj.internet || \"\";\r\n this.pageFooterText = obj && obj.pageFooterText || \"\";\r\n this.businessIdentityCode = obj && obj.businessIdentityCode || \"\";\r\n this.contactPerson = obj && obj.contactPerson || \"\";\r\n this.logo = obj && obj.logo || \"\";\r\n this.logoSquare = obj && obj.logoSquare || \"\";\r\n this.styleClass = obj && obj.styleClass || \"\";\r\n this.customStyleClass = obj && obj.customStyleClass || \"\";\r\n this.fileStorageQuota = obj && obj.fileStorageQuota || 0;\r\n this.loginUrl = obj && obj.loginUrl || \"\";\r\n this.tiedostoturvaUseType = obj && obj.tiedostoturvaUseType || 0;\r\n this.activeState = obj && obj.activeState || 0;\r\n this.documentRootPath = obj && obj.documentRootPath || \"\";\r\n this.bannerPath = obj && obj.bannerPath || \"\";\r\n this.documentPreviewLogType = obj && obj.documentPreviewLogType || 0;\r\n this.eInvoiceAddress = obj && obj.eInvoiceAddress || \"\";\r\n this.eInvoiceOperator = obj && obj.eInvoiceOperator || \"\";\r\n this.minPasswordLength = obj && obj.minPasswordLength || 0;\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApplicationPermission, IApplicationPermission } from \"../common/applicationPermission\";\r\nimport { CodeTitle, ICodeTitle } from \"../common/codeTitle\";\r\nimport { CompanyGroupListItem, ICompanyGroupListItem } from \"../companyGroup/companyGroupListItem\";\r\nimport { IUserExternalSystem, UserExternalSystem } from \"../externalSystem/userExternalSystem\";\r\nimport { FileFilterListItem, IFileFilterListItem } from \"../fileFilter/fileFilterListItem\";\r\nimport { CompanyIntraModule, ICompanyIntraModule } from \"../intraModule/companyIntraModule\";\r\nimport { IMessageTypeListItem, MessageTypeListItem } from \"../messageType/messageTypeListItem\";\r\nimport { IUnitModuleNode, UnitModuleNode } from \"../unit/unitModuleNode\";\r\nimport { CompanyEditItem, ICompanyEditItem } from \"./companyEditItem\";\r\nimport { CompanyListItem, ICompanyListItem } from \"./companyListItem\";\r\n\r\nexport interface ICompanyEdit {\r\n company: ICompanyEditItem;\r\n unitModuleNode: IUnitModuleNode;\r\n defaultLogo: string;\r\n defaultLogoInUse: boolean;\r\n usedFileStorageQuota: number;\r\n companyGroupsEnabled: boolean;\r\n partnerCompaniesEnabled: boolean;\r\n allPartnersCompanyGroupId: string;\r\n canEditWhistleBlowSettings: boolean;\r\n customStyles: ICodeTitle[];\r\n applicationPermissions: IApplicationPermission[];\r\n externalSystems: IUserExternalSystem[];\r\n intraModules: ICompanyIntraModule[];\r\n companyGroups: ICompanyGroupListItem[];\r\n partnerCompanies: ICompanyListItem[];\r\n fileFilters: IFileFilterListItem[];\r\n messageTypes: IMessageTypeListItem[];\r\n}\r\n\r\nexport class CompanyEdit implements ICompanyEdit {\r\n company: CompanyEditItem;\r\n unitModuleNode: UnitModuleNode;\r\n defaultLogo: string;\r\n defaultLogoInUse: boolean;\r\n usedFileStorageQuota: number;\r\n companyGroupsEnabled: boolean;\r\n partnerCompaniesEnabled: boolean;\r\n allPartnersCompanyGroupId: string;\r\n canEditWhistleBlowSettings: boolean;\r\n customStyles: CodeTitle[];\r\n applicationPermissions: ApplicationPermission[];\r\n externalSystems: UserExternalSystem[];\r\n intraModules: CompanyIntraModule[];\r\n companyGroups: CompanyGroupListItem[];\r\n partnerCompanies: CompanyListItem[];\r\n fileFilters: FileFilterListItem[];\r\n messageTypes: MessageTypeListItem[];\r\n\r\n constructor();\r\n constructor(obj: ICompanyEdit);\r\n constructor(obj?: any) {\r\n this.company = new CompanyEditItem(obj ? obj.company : null);\r\n this.unitModuleNode = new UnitModuleNode(obj ? obj.unitModuleNode : null);\r\n this.defaultLogo = obj && obj.defaultLogo || \"\";\r\n this.defaultLogoInUse = obj && obj.defaultLogoInUse || false;\r\n this.usedFileStorageQuota = obj && obj.usedFileStorageQuota || 0;\r\n this.companyGroupsEnabled = obj && obj.companyGroupsEnabled || false;\r\n this.partnerCompaniesEnabled = obj && obj.partnerCompaniesEnabled || false;\r\n this.allPartnersCompanyGroupId = obj && obj.allPartnersCompanyGroupId || \"\";\r\n this.canEditWhistleBlowSettings = obj && obj.canEditWhistleBlowSettings || false;\r\n this.customStyles = Base.getTypedArray(obj ? obj.customStyles : null, CodeTitle);\r\n this.applicationPermissions = Base.getTypedArray(obj ? obj.applicationPermissions : null, ApplicationPermission);\r\n this.externalSystems = Base.getTypedArray(obj ? obj.externalSystems : null, UserExternalSystem);\r\n this.intraModules = Base.getTypedArray(obj ? obj.intraModules : null, CompanyIntraModule);\r\n this.companyGroups = Base.getTypedArray(obj ? obj.companyGroups : null, CompanyGroupListItem);\r\n this.partnerCompanies = Base.getTypedArray(obj ? obj.partnerCompanies : null, CompanyListItem);\r\n this.fileFilters = Base.getTypedArray(obj ? obj.fileFilters : null, FileFilterListItem);\r\n this.messageTypes = Base.getTypedArray(obj ? obj.messageTypes : null, MessageTypeListItem);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IdTitle, IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { ISavedListFilter, SavedListFilter } from \"../common/savedListFilter\";\r\nimport { CompanyListItems, ICompanyListItems } from \"./companyListItems\";\r\n\r\nexport interface ICompanyPageList {\r\n companyGroups: IIdTitle[];\r\n list: ICompanyListItems;\r\n companyFilters: ISavedListFilter[];\r\n userFilters: ISavedListFilter[];\r\n}\r\n\r\nexport class CompanyPageList implements ICompanyPageList {\r\n companyGroups: IdTitle[];\r\n list: CompanyListItems;\r\n companyFilters: SavedListFilter[];\r\n userFilters: SavedListFilter[];\r\n\r\n constructor();\r\n constructor(obj: ICompanyPageList);\r\n constructor(obj?: any) {\r\n this.list = new CompanyListItems(obj && obj.list || null);\r\n this.companyGroups = Base.getTypedArray(obj ? obj.companyGroups : null, IdTitle);\r\n this.companyFilters = Base.getTypedArray(obj ? obj.companyFilters : null, SavedListFilter);\r\n this.userFilters = Base.getTypedArray(obj ? obj.userFilters : null, SavedListFilter);\r\n }\r\n}","import { CompanyEdit, ICompanyEdit } from \"./companyEdit\";\r\nimport { ICompanyPageList, CompanyPageList } from \"./companyPageList\";\r\n\r\nexport interface ICompanyPage {\r\n list: ICompanyPageList;\r\n edit: ICompanyEdit;\r\n}\r\n\r\nexport class CompanyPage implements ICompanyPage {\r\n list: CompanyPageList;\r\n edit: CompanyEdit;\r\n\r\n constructor();\r\n constructor(obj: ICompanyPage);\r\n constructor(obj?: any) {\r\n this.list = new CompanyPageList(obj && obj.list || null);\r\n this.edit = new CompanyEdit(obj && obj.edit || null);\r\n }\r\n}","export interface ICompanyEditSaveAdminSuccess {\r\n id: string;\r\n rowId: string;\r\n message: string;\r\n refreshSessionState: boolean;\r\n styleChanged: boolean;\r\n}\r\n\r\nexport class CompanyEditSaveAdminSuccess implements ICompanyEditSaveAdminSuccess {\r\n id: string;\r\n rowId: string;\r\n message: string;\r\n refreshSessionState: boolean;\r\n styleChanged: boolean;\r\n\r\n constructor();\r\n constructor(obj: ICompanyEditSaveAdminSuccess);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.rowId = obj && obj.rowId || \"\";\r\n this.message = obj && obj.message || \"\";\r\n this.refreshSessionState = obj && obj.refreshSessionState || false;\r\n this.styleChanged = obj && obj.styleChanged || false;\r\n }\r\n}","export interface ICompanyEditSaveSuccess {\r\n id: string;\r\n rowId: string;\r\n message: string;\r\n styleChanged: boolean;\r\n}\r\n\r\nexport class CompanyEditSaveSuccess implements ICompanyEditSaveSuccess {\r\n id: string;\r\n rowId: string;\r\n message: string;\r\n styleChanged: boolean;\r\n\r\n constructor();\r\n constructor(obj: ICompanyEditSaveSuccess);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.rowId = obj && obj.rowId || \"\";\r\n this.message = obj && obj.message || \"\";\r\n this.styleChanged = obj && obj.styleChanged || false;\r\n }\r\n}","import { CompanyPage } from \"../company/companyPage\";\r\nimport { CompanyListItems } from \"../company/companyListItems\";\r\nimport { getApiCall, postApiCall } from \"./tokenService\";\r\nimport { UnitNodePermissions } from \"../unit/unitNodePermissions\";\r\nimport { CompanyEdit } from \"../company/companyEdit\";\r\nimport { CompanyEditSaveAdminSuccess } from \"../company/companyEditSaveAdminSuccess\";\r\nimport { CompanyEditSaveSuccess } from \"../company/companyEditSaveSuccess\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\n\r\n// #region CompanyPage\r\nexport const getCompanyPage = (): Promise => {\r\n return getApiCall(\"api/company\", CompanyPage);\r\n};\r\n\r\nexport const getCompanyListItems = (pageSize: number, page: number, filter: string, companyGroupIds: string[], activityState: number, sortColumn: string, sortOrderIsAsc: boolean, ignoreCompanyGroupId: string, ignoreCompanyIds: string[]): Promise => {\r\n return postApiCall(\"api/company/list\", CompanyListItems, JSON.stringify({\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\",\r\n companyGroupIds,\r\n activityState,\r\n ignoreCompanyGroupId,\r\n ignoreCompanyIds\r\n }));\r\n};\r\n\r\nexport const getCompanyEdit = (companyId: string): Promise => {\r\n return getApiCall(\"api/company/edit?id=\" + companyId, CompanyEdit);\r\n};\r\n\r\nexport const saveCompanyEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/company/editsave\", CompanyEditSaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const saveCompanyEditAdmin = (obj: any): Promise => {\r\n return postApiCall(\"api/company/editsaveadmin\", CompanyEditSaveAdminSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeCompany = (companyId: string): Promise => {\r\n return postApiCall(\"api/company/remove?id=\" + companyId, ApiSuccess);\r\n};\r\n\r\nexport const companyEditRemoveCompanyGroups = (obj: any): Promise => {\r\n return postApiCall(\"api/company/editremovecompanygroups\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const companyEditAddCompanyGroups = (obj: any): Promise => {\r\n return postApiCall(\"api/company/editaddcompanygroups\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const companyEditRemovePartnerCompanies = (obj: any): Promise => {\r\n return postApiCall(\"api/company/editremovepartnercompanies\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const companyEditAddPartnerCompanies = (obj: any): Promise => {\r\n return postApiCall(\"api/company/editaddpartnercompanies\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion CompanyPage\r\n\r\n// #region Module properties\r\nexport const getUnitNodePermissions = (companyId: string): Promise => {\r\n return getApiCall(\"api/company/module/permissions?id=\" + companyId, UnitNodePermissions);\r\n};\r\n\r\nexport const saveUnitNodePermissions = (obj: any): Promise => {\r\n return postApiCall(\"api/company/module/savepermissions\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Module properties\r\n","\r\nexport interface ICompanyGroupForPermissionListItem {\r\n id: string;\r\n code: string;\r\n name: string;\r\n comment: string;\r\n logo: string;\r\n}\r\n\r\nexport class CompanyGroupForPermissionListItem implements ICompanyGroupForPermissionListItem {\r\n id: string;\r\n code: string;\r\n name: string;\r\n comment: string;\r\n logo: string;\r\n\r\n constructor();\r\n constructor(obj: ICompanyGroupForPermissionListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.logo = obj && obj.logo || \"\";\r\n }\r\n\r\n static createCompanyGroupForPermissionListItem(id: string, code: string, name: string): ICompanyGroupForPermissionListItem {\r\n const result = new CompanyGroupForPermissionListItem();\r\n result.id = id;\r\n result.code = code;\r\n result.name = name;\r\n return result;\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IListItems, ListItems } from \"ui/Scripts/source/framework/listItems\";\r\nimport { CompanyGroupForPermissionListItem, ICompanyGroupForPermissionListItem } from \"./companyGroupForPermissionListItem\";\r\n\r\nexport interface ICompanyGroupForPermissionListItems extends IListItems {}\r\n\r\nexport class CompanyGroupForPermissionListItems extends ListItems implements ICompanyGroupForPermissionListItems {\r\n constructor();\r\n constructor(obj: ICompanyGroupForPermissionListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, CompanyGroupForPermissionListItem);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IListItems, ListItems } from \"ui/Scripts/source/framework/listItems\";\r\nimport { CompanyGroupListItem, ICompanyGroupListItem } from \"./companyGroupListItem\";\r\n\r\nexport interface ICompanyGroupListItems extends IListItems {}\r\n\r\nexport class CompanyGroupListItems extends ListItems implements ICompanyGroupListItems {\r\n constructor();\r\n constructor(obj: ICompanyGroupListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, CompanyGroupListItem);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ISavedListFilter, SavedListFilter } from \"../common/savedListFilter\";\r\nimport { CompanyGroupListItems, ICompanyGroupListItems } from \"./companyGroupListItems\";\r\n\r\nexport interface ICompanyGroupPage {\r\n list: ICompanyGroupListItems;\r\n companyFilters: ISavedListFilter[];\r\n userFilters: ISavedListFilter[];\r\n}\r\n\r\nexport class CompanyGroupPage implements ICompanyGroupPage {\r\n list: CompanyGroupListItems;\r\n companyFilters: SavedListFilter[];\r\n userFilters: SavedListFilter[];\r\n\r\n constructor();\r\n constructor(obj: ICompanyGroupPage);\r\n constructor(obj?: any) {\r\n this.list = new CompanyGroupListItems(obj && obj.list || null);\r\n this.companyFilters = Base.getTypedArray(obj ? obj.companyFilters : null, SavedListFilter);\r\n this.userFilters = Base.getTypedArray(obj ? obj.userFilters : null, SavedListFilter);\r\n }\r\n}","import { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface ICompanyGroupEditItem extends IEditItem {\r\n code: string;\r\n name: string;\r\n comment: string;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class CompanyGroupEditItem extends EditItem implements ICompanyGroupEditItem {\r\n code: string;\r\n name: string;\r\n comment: string;\r\n modifyUser: ModifyUser;\r\n\r\n constructor();\r\n constructor(obj: ICompanyGroupEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.code = obj && obj.code || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { CompanyListItem, ICompanyListItem } from \"../company/companyListItem\";\r\nimport { CompanyGroupEditItem, ICompanyGroupEditItem } from \"./companyGroupEditItem\";\r\n\r\nexport interface ICompanyGroupEdit {\r\n companyGroup: ICompanyGroupEditItem;\r\n companies: ICompanyListItem[];\r\n}\r\n\r\nexport class CompanyGroupEdit implements ICompanyGroupEdit {\r\n companyGroup: CompanyGroupEditItem;\r\n companies: CompanyListItem[];\r\n\r\n constructor();\r\n constructor(obj: ICompanyGroupEdit);\r\n constructor(obj?: any) {\r\n this.companyGroup = new CompanyGroupEditItem(obj ? obj.companyGroup : null);\r\n this.companies = Base.getTypedArray(obj ? obj.companies : null, CompanyListItem);\r\n }\r\n}","import { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { CompanyGroupForPermissionListItems } from \"../companyGroup/companyGroupForPermissionListItems\";\r\nimport { CompanyGroupListItems } from \"../companyGroup/companyGroupListItems\";\r\nimport { CompanyGroupPage } from \"../companyGroup/companyGroupPage\";\r\nimport { UnitNodePermissions } from \"../unit/unitNodePermissions\";\r\nimport { getApiCall, postApiCall } from \"./tokenService\";\r\nimport { CompanyGroupEdit } from \"../companyGroup/companyGroupEdit\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\n\r\n// #region CompanyGroupPage\r\nexport const getCompanyGroupPage = (): Promise => {\r\n return getApiCall(\"api/companygroup\", CompanyGroupPage);\r\n};\r\n\r\nexport const getCompanyGroupListItems = (pageSize: number, page: number, filter: string, ignoreCompanyGroupIds: string[], sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/companygroup/list\", CompanyGroupListItems, JSON.stringify({\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\",\r\n ignoreCompanyGroupIds\r\n }));\r\n};\r\n\r\nexport const getCompanyGroupEdit = (companyGroupId: string): Promise => {\r\n return getApiCall(\"api/companygroup/edit?id=\" + companyGroupId, CompanyGroupEdit);\r\n};\r\n\r\nexport const saveCompanyGroupEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/companygroup/editsave\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeCompanyGroup = (id: string): Promise => {\r\n return postApiCall(\"api/companygroup/remove?id=\" + id, ApiSuccess);\r\n};\r\n\r\nexport const companyGroupEditRemoveCompanies = (obj: any): Promise => {\r\n return postApiCall(\"api/companygroup/editremovecompanies\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const companyGroupEditAddCompanies = (obj: any): Promise => {\r\n return postApiCall(\"api/companygroup/editaddcompanies\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion CompanyGroupPage\r\n\r\n// #region Module properties\r\nexport const getUnitNodePermissions = (): Promise => {\r\n return getApiCall(\"api/companygroup/module/permissions\", UnitNodePermissions);\r\n};\r\n\r\nexport const saveUnitNodePermissions = (obj: any): Promise => {\r\n return postApiCall(\"api/companygroup/module/savepermissions\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Module properties\r\n\r\nexport const getCompanyGroupForPermissionListItems = (companyId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, groupType: number,\r\n ignoreCompanyGroupCodes: string[], messageTargetMode: boolean): Promise => {\r\n return postApiCall(\"api/companygroup/listforpermissions\", CompanyGroupForPermissionListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\",\r\n groupType: groupType || 0,\r\n ignoreCompanyGroupCodes,\r\n messageTargetMode: messageTargetMode || false\r\n }));\r\n};\r\n","export interface ILogListItem {\r\n id: string;\r\n type: number;\r\n typeStr: string;\r\n version: string;\r\n callerIp: string;\r\n companyCode: string;\r\n userCode: string;\r\n operation: string;\r\n action: string;\r\n parameters: string;\r\n message: string;\r\n modifyDate: number;\r\n browserInfo: string;\r\n}\r\n\r\nexport class LogListItem implements ILogListItem {\r\n id: string;\r\n type: number;\r\n typeStr: string;\r\n version: string;\r\n callerIp: string;\r\n companyCode: string;\r\n userCode: string;\r\n operation: string;\r\n action: string;\r\n parameters: string;\r\n message: string;\r\n modifyDate: number;\r\n browserInfo: string;\r\n\r\n constructor();\r\n constructor(obj: ILogListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.type = obj && obj.type || 1;\r\n this.typeStr = obj && obj.typeStr || \"\";\r\n this.version = obj && obj.version || \"\";\r\n this.callerIp = obj && obj.callerIp || \"\";\r\n this.companyCode = obj && obj.companyCode || \"\";\r\n this.userCode = obj && obj.userCode || \"\";\r\n this.operation = obj && obj.operation || \"\";\r\n this.action = obj && obj.action || \"\";\r\n this.parameters = obj && obj.parameters || \"\";\r\n this.message = obj && obj.message || \"\";\r\n this.modifyDate = obj && obj.modifyDate || 0;\r\n this.browserInfo = obj && obj.browserInfo || \"\";\r\n }\r\n}","import { ILogListItem, LogListItem } from \"./logListItem\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IListItems, ListItems } from \"ui/Scripts/source/framework/listItems\";\r\n\r\nexport interface ILogListItems extends IListItems {}\r\n\r\nexport class LogListItems extends ListItems implements ILogListItems {\r\n constructor();\r\n constructor(obj: ILogListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, LogListItem);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { CompanyMenuItem, ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { ISavedListFilter, SavedListFilter } from \"../common/savedListFilter\";\r\nimport { ILogListItems, LogListItems } from \"./logListItems\";\r\n\r\nexport interface ILogPage {\r\n companies: ICompanyMenuItem[];\r\n list: ILogListItems;\r\n companyFilters: ISavedListFilter[];\r\n userFilters: ISavedListFilter[];\r\n}\r\n\r\nexport class LogPage implements ILogPage {\r\n companies: CompanyMenuItem[];\r\n list: LogListItems;\r\n companyFilters: SavedListFilter[];\r\n userFilters: SavedListFilter[];\r\n\r\n constructor();\r\n constructor(obj: ILogPage);\r\n constructor(obj?: any) {\r\n this.list = new LogListItems(obj && obj.list || null);\r\n this.companies = Base.getTypedArray(obj ? obj.companies : null, CompanyMenuItem);\r\n this.companyFilters = Base.getTypedArray(obj ? obj.companyFilters : null, SavedListFilter);\r\n this.userFilters = Base.getTypedArray(obj ? obj.userFilters : null, SavedListFilter);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IUnitNode, UnitNode } from \"../unit/unitNode\";\r\nimport { IUnitPermissionUserGroup, UnitPermissionUserGroup } from \"../userGroup/unitPermissionUserGroup\";\r\n\r\nexport interface ILogProperties {\r\n logSizeInDays: number;\r\n userGroups: IUnitPermissionUserGroup[];\r\n unitNode: IUnitNode;\r\n \r\n}\r\n\r\nexport class LogProperties implements ILogProperties {\r\n logSizeInDays: number;\r\n userGroups: UnitPermissionUserGroup[];\r\n unitNode: UnitNode;\r\n\r\n constructor();\r\n constructor(obj: ILogProperties);\r\n constructor(obj?: any) {\r\n this.logSizeInDays = obj && obj.logSizeInDays || 0;\r\n this.userGroups = Base.getTypedArray(obj ? obj.userGroups : null, UnitPermissionUserGroup);\r\n this.unitNode = new UnitNode(obj && obj.unitNode ? obj.unitNode : null);\r\n }\r\n}","import { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IDocumentContentPreview {\r\n content: string;\r\n createUser: IModifyUser;\r\n modifyUser: IModifyUser;\r\n errorMessage: string;\r\n}\r\n\r\nexport class DocumentContentPreview implements IDocumentContentPreview {\r\n content: string;\r\n createUser: ModifyUser;\r\n modifyUser: ModifyUser;\r\n errorMessage: string;\r\n\r\n constructor();\r\n constructor(obj: IDocumentContentPreview);\r\n constructor(obj?: any) {\r\n this.content = obj && obj.content || \"\";\r\n this.createUser = null;\r\n if (obj?.createUser) {\r\n this.createUser = new ModifyUser(obj.createUser);\r\n }\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n this.errorMessage = obj && obj.errorMessage || \"\";\r\n }\r\n}\r\n","import { FileType } from \"ui/Scripts/source/models/enums\";\r\n\r\nexport interface IDocumentFilePreview {\r\n fileType: FileType;\r\n path: string;\r\n text: string;\r\n html: string;\r\n errorMessage: string;\r\n}\r\n\r\nexport class DocumentFilePreview implements IDocumentFilePreview {\r\n fileType: FileType;\r\n path: string;\r\n text: string;\r\n html: string;\r\n errorMessage: string;\r\n\r\n constructor();\r\n constructor(obj: IDocumentFilePreview);\r\n constructor(obj?: any) {\r\n this.fileType = obj && obj.fileType || FileType.Unknown;\r\n this.path = obj && obj.path || \"\";\r\n this.text = obj && obj.text || \"\";\r\n this.html = obj && obj.html || \"\";\r\n this.errorMessage = obj && obj.errorMessage || \"\";\r\n }\r\n}\r\n","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Permission } from \"ui/Scripts/source/models/enums\";\r\n\r\nexport interface IFolderTreeNode {\r\n id: string;\r\n name: string;\r\n comment: string;\r\n image: string;\r\n permission: Permission;\r\n children: IFolderTreeNode[];\r\n parent: IFolderTreeNode;\r\n level: number;\r\n expanded: boolean;\r\n \r\n getIsRoot(): boolean;\r\n getAncesterIsCollapsed(): boolean;\r\n getAsList(list: IFolderTreeNode[], level: number): IFolderTreeNode[];\r\n removeReadOnlyBranches();\r\n getFullPath(): string;\r\n expandToRoot();\r\n}\r\n\r\nexport class FolderTreeNode implements IFolderTreeNode {\r\n id: string;\r\n name: string;\r\n comment: string;\r\n image: string;\r\n permission: Permission;\r\n children: IFolderTreeNode[];\r\n parent: IFolderTreeNode;\r\n level: number;\r\n expanded: boolean;\r\n\r\n constructor();\r\n constructor(obj: IFolderTreeNode);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.image = obj && obj.image || \"\";\r\n this.permission = obj && obj.permission || Permission.None;\r\n this.level = obj && obj.level || 0;\r\n this.expanded = obj && obj.expanded || false;\r\n this.children = [];\r\n this.parent = null;\r\n if (obj && obj.children) {\r\n this.children = Base.getTypedArray(obj.children, FolderTreeNode);\r\n for (const child of this.children) {\r\n child.parent = this;\r\n }\r\n }\r\n }\r\n\r\n getAsList(list: IFolderTreeNode[], level: number = 0): IFolderTreeNode[] {\r\n list.push(this);\r\n this.level = level;\r\n if (this.children.length < 1) return list;\r\n for (const child of this.children) {\r\n child.getAsList(list, level + 1);\r\n }\r\n return list;\r\n }\r\n\r\n getIsRoot(): boolean {\r\n return !this.parent;\r\n }\r\n\r\n getAncesterIsCollapsed(): boolean {\r\n if (!this.parent) return false;\r\n if (!this.parent.expanded) return true;\r\n return this.parent.getAncesterIsCollapsed();\r\n }\r\n\r\n removeReadOnlyBranches() {\r\n for (const child of this.children) {\r\n child.removeReadOnlyBranches();\r\n }\r\n if (this.parent) {\r\n if (this.permission < Permission.Edit && this.children.length < 1) {\r\n this.parent.children = this.parent.children.filter(i => i.id !== this.id);\r\n }\r\n }\r\n }\r\n\r\n getFullPath(): string {\r\n return this.parent\r\n ? this.parent.getFullPath() + \"\\\\\" + this.name\r\n : this.name;\r\n }\r\n\r\n expandToRoot() {\r\n if (!this.parent) return;\r\n this.parent.expanded = true;\r\n this.parent.expandToRoot();\r\n }\r\n}","import { FolderTreeNode, IFolderTreeNode } from \"./folderTreeNode\";\r\n\r\nexport interface IDocumentFolders {\r\n folderTree: IFolderTreeNode;\r\n}\r\n\r\nexport class DocumentFolders implements IDocumentFolders {\r\n folderTree: FolderTreeNode;\r\n\r\n constructor();\r\n constructor(obj: IDocumentFolders);\r\n constructor(obj?: any) {\r\n this.folderTree = new FolderTreeNode(obj && obj.folderTree || null);\r\n this.folderTree.expanded = true;\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { FileType } from \"ui/Scripts/source/models/enums\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IDocumentListItem {\r\n id: string;\r\n code: string;\r\n comment: string;\r\n image: string;\r\n modifyUser: IModifyUser;\r\n fileType: FileType;\r\n locked: boolean;\r\n publishedId: string;\r\n publishedFileType: FileType;\r\n publishedImage: string;\r\n publishedApproved: boolean;\r\n documentVersionId: string;\r\n}\r\n\r\nexport class DocumentListItem implements IDocumentListItem {\r\n id: string;\r\n code: string;\r\n comment: string;\r\n image: string;\r\n modifyUser: IModifyUser;\r\n fileType: FileType;\r\n locked: boolean;\r\n publishedId: string;\r\n publishedFileType: FileType;\r\n publishedImage: string;\r\n publishedApproved: boolean;\r\n documentVersionId: string;\r\n\r\n constructor();\r\n constructor(obj: IDocumentListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.image = obj && obj.image || \"\";\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n this.fileType = obj && obj.fileType || FileType.Unknown;\r\n this.locked = obj && obj.locked || false;\r\n this.publishedId = obj && obj.publishedId || \"\";\r\n this.publishedFileType = obj && obj.publishedFileType || FileType.Unknown;\r\n this.publishedImage = obj && obj.publishedImage || \"\";\r\n this.publishedApproved = obj && obj.publishedApproved || false;\r\n this.documentVersionId = obj && obj.documentVersionId || \"\";\r\n }\r\n\r\n static sortDocumentListItems(items: IDocumentListItem[], column = \"modifyDate\", asc = false): IDocumentListItem[] {\r\n if (!items && items.length < 2) return items;\r\n const collator = new Intl.Collator(Base.getCultureSimple(appConfig.culture));\r\n let result: IDocumentListItem[];\r\n if (column.equalIgnoreCase(\"modifyDate\")) {\r\n result = items.sort((a: IDocumentListItem, b: IDocumentListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.modifyUser.date, b.modifyUser.date)); });\r\n } else if (column.equalIgnoreCase(\"comment\")) {\r\n result = items.sort((a: IDocumentListItem, b: IDocumentListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.comment, b.comment)); });\r\n } else {\r\n result = items.sort((a: IDocumentListItem, b: IDocumentListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.fileNameCompare(a.code, b.code, collator)); });\r\n }\r\n return result;\r\n }\r\n}\r\n","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IListItems, ListItems } from \"ui/Scripts/source/framework/listItems\";\r\nimport { DocumentListItem, IDocumentListItem } from \"./documentListItem\";\r\n\r\nexport interface IDocumentListItems extends IListItems {}\r\n\r\nexport class DocumentListItems extends ListItems implements IDocumentListItems {\r\n constructor();\r\n constructor(obj: IDocumentListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, DocumentListItem);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IdTitle, IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\n\r\nexport interface IDocumentPageData {\r\n canEditDocuments: boolean;\r\n canEditProperties: boolean;\r\n canEditRootFolderProperties: boolean;\r\n keywords: IIdTitle[];\r\n}\r\n\r\nexport class DocumentPageData implements IDocumentPageData {\r\n canEditDocuments: boolean;\r\n canEditProperties: boolean;\r\n canEditRootFolderProperties: boolean;\r\n keywords: IdTitle[];\r\n\r\n constructor();\r\n constructor(obj: IDocumentPageData);\r\n constructor(obj?: any) {\r\n this.canEditDocuments = obj && obj.canEditDocuments || false;\r\n this.canEditProperties = obj && obj.canEditProperties || false;\r\n this.canEditRootFolderProperties = obj && obj.canEditRootFolderProperties || false;\r\n this.keywords = Base.getTypedArray(obj ? obj.keywords : null, IdTitle);\r\n }\r\n}\r\n","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { CompanyMenuItem, ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { ISavedListFilter, SavedListFilter } from \"../common/savedListFilter\";\r\nimport { DocumentPageData, IDocumentPageData } from \"./documentPageData\";\r\n\r\nexport interface IDocumentPage extends IDocumentPageData {\r\n companyId: string;\r\n companies: ICompanyMenuItem[];\r\n companyFilters: ISavedListFilter[];\r\n userFilters: ISavedListFilter[];\r\n showDocumentPreview: boolean;\r\n}\r\n\r\nexport class DocumentPage extends DocumentPageData implements IDocumentPage {\r\n companyId: string;\r\n companies: CompanyMenuItem[];\r\n companyFilters: SavedListFilter[];\r\n userFilters: SavedListFilter[];\r\n showDocumentPreview: boolean;\r\n\r\n constructor();\r\n constructor(obj: IDocumentPage);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.companyId = obj && obj.companyId || \"\";\r\n this.companies = Base.getTypedArray(obj ? obj.companies : null, CompanyMenuItem);\r\n this.companyFilters = Base.getTypedArray(obj ? obj.companyFilters : null, SavedListFilter);\r\n this.userFilters = Base.getTypedArray(obj ? obj.userFilters : null, SavedListFilter);\r\n this.showDocumentPreview = obj && obj.showDocumentPreview || false;\r\n }\r\n}\r\n","import { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IDocumentVersionPreview {\r\n id: string;\r\n directoryItemId: string;\r\n code: string;\r\n content: string;\r\n createUser: IModifyUser;\r\n modifyUser: IModifyUser;\r\n errorMessage: string;\r\n}\r\n\r\nexport class DocumentVersionPreview implements IDocumentVersionPreview {\r\n id: string;\r\n directoryItemId: string;\r\n code: string;\r\n content: string;\r\n createUser: ModifyUser;\r\n modifyUser: ModifyUser;\r\n errorMessage: string;\r\n\r\n constructor();\r\n constructor(obj: IDocumentVersionPreview);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.directoryItemId = obj && obj.directoryItemId || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.content = obj && obj.content || \"\";\r\n this.createUser = new ModifyUser(obj ? obj.createUser : null);\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n this.errorMessage = obj && obj.errorMessage || \"\";\r\n }\r\n}\r\n","import { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { FileType } from \"ui/Scripts/source/models/enums\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IDocumentFileEditItem extends IEditItem {\r\n code: string;\r\n comment: string;\r\n fileType: FileType;\r\n image: string;\r\n keywordIds: string[];\r\n createUser: IModifyUser;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class DocumentFileEditItem extends EditItem implements IDocumentFileEditItem {\r\n code: string;\r\n comment: string;\r\n fileType: FileType;\r\n image: string;\r\n keywordIds: string[];\r\n createUser: IModifyUser;\r\n modifyUser: IModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IDocumentFileEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.fileType = obj && obj.fileType || FileType.Unknown;\r\n this.image = obj && obj.image || \"\";\r\n this.keywordIds = obj && obj.keywordIds || [];\r\n this.createUser = new ModifyUser(obj ? obj.createUser : null);\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { IIdTitle, IdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { DocumentFileEditItem, IDocumentFileEditItem } from \"./documentFileEditItem\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\nexport interface IDocumentFileEdit {\r\n path: string;\r\n keywords: IIdTitle[];\r\n item: IDocumentFileEditItem;\r\n}\r\n\r\nexport class DocumentFileEdit implements IDocumentFileEdit {\r\n path: string;\r\n keywords: IdTitle[];\r\n item: DocumentFileEditItem;\r\n\r\n constructor();\r\n constructor(obj: IDocumentFileEdit);\r\n constructor(obj?: any) {\r\n this.path = obj && obj.path || \"\";\r\n this.keywords = Base.getTypedArray(obj ? obj.keywords : null, IdTitle);\r\n this.item = new DocumentFileEditItem(obj ? obj.item : null);\r\n }\r\n}","export interface IKeywordListItem {\r\n id: string;\r\n code: string;\r\n comment: string;\r\n}\r\n\r\nexport class KeywordListItem implements IKeywordListItem {\r\n id: string;\r\n code: string;\r\n comment: string;\r\n\r\n constructor();\r\n constructor(obj: IKeywordListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n }\r\n}\r\n","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IListItems, ListItems } from \"ui/Scripts/source/framework/listItems\";\r\nimport { IKeywordListItem, KeywordListItem } from \"./keywordListItem\";\r\n\r\nexport interface IKeywordListItems extends IListItems {}\r\n\r\nexport class KeywordListItems extends ListItems implements IKeywordListItems {\r\n constructor();\r\n constructor(obj: IKeywordListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, KeywordListItem);\r\n }\r\n}","import { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IKeywordEditItem extends IEditItem {\r\n code: string;\r\n comment: string;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class KeywordEditItem extends EditItem implements IKeywordEditItem {\r\n code: string;\r\n comment: string;\r\n modifyUser: IModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IKeywordEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { IKeywordEditItem, KeywordEditItem } from \"./keywordEditItem\";\r\n\r\nexport interface IKeywordEdit {\r\n item: IKeywordEditItem;\r\n}\r\n\r\nexport class KeywordEdit implements IKeywordEdit {\r\n item: KeywordEditItem;\r\n\r\n constructor();\r\n constructor(obj: IKeywordEdit);\r\n constructor(obj?: any) {\r\n this.item = new KeywordEditItem(obj ? obj.item : null);\r\n }\r\n}","export interface IDocumentTemplateListItem {\r\n id: string;\r\n code: string;\r\n comment: string;\r\n companyId: string;\r\n}\r\n\r\nexport class DocumentTemplateListItem implements IDocumentTemplateListItem {\r\n id: string;\r\n code: string;\r\n comment: string;\r\n companyId: string;\r\n\r\n constructor();\r\n constructor(obj: IDocumentTemplateListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.companyId = obj && obj.companyId || \"\";\r\n }\r\n}\r\n","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IListItems, ListItems } from \"ui/Scripts/source/framework/listItems\";\r\nimport { DocumentTemplateListItem, IDocumentTemplateListItem } from \"./documentTemplateListItem\";\r\n\r\nexport interface IDocumentTemplateListItems extends IListItems {}\r\n\r\nexport class DocumentTemplateListItems extends ListItems implements IDocumentTemplateListItems {\r\n constructor();\r\n constructor(obj: IDocumentTemplateListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, DocumentTemplateListItem);\r\n }\r\n}","import { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IDocumentTemplateEditItem extends IEditItem {\r\n code: string;\r\n comment: string;\r\n content: string;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class DocumentTemplateEditItem extends EditItem implements IDocumentTemplateEditItem {\r\n code: string;\r\n comment: string;\r\n content: string;\r\n modifyUser: IModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IDocumentTemplateEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.content = obj && obj.content || \"\";\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { DocumentTemplateEditItem, IDocumentTemplateEditItem } from \"./documentTemplateEditItem\";\r\n\r\nexport interface IDocumentTemplateEdit {\r\n item: IDocumentTemplateEditItem;\r\n}\r\n\r\nexport class DocumentTemplateEdit implements IDocumentTemplateEdit {\r\n item: DocumentTemplateEditItem;\r\n\r\n constructor();\r\n constructor(obj: IDocumentTemplateEdit);\r\n constructor(obj?: any) {\r\n this.item = new DocumentTemplateEditItem(obj ? obj.item : null);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IListItems, ListItems } from \"ui/Scripts/source/framework/listItems\";\r\nimport { FileFilterListItem, IFileFilterListItem } from \"./fileFilterListItem\";\r\n\r\nexport interface IFileFilterListItems extends IListItems {}\r\n\r\nexport class FileFilterListItems extends ListItems implements IFileFilterListItems {\r\n constructor();\r\n constructor(obj: IFileFilterListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, FileFilterListItem);\r\n }\r\n}","import { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IFileFilterEditItem extends IEditItem {\r\n code: string;\r\n name: string;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class FileFilterEditItem extends EditItem implements IFileFilterEditItem {\r\n code: string;\r\n name: string;\r\n modifyUser: IModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IFileFilterEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.code = obj && obj.code || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { FileFilterEditItem, IFileFilterEditItem } from \"./fileFilterEditItem\";\r\n\r\nexport interface IFileFilterEdit {\r\n item: IFileFilterEditItem;\r\n}\r\n\r\nexport class FileFilterEdit implements IFileFilterEdit {\r\n item: FileFilterEditItem;\r\n\r\n constructor();\r\n constructor(obj: IFileFilterEdit);\r\n constructor(obj?: any) {\r\n this.item = new FileFilterEditItem(obj ? obj.item : null);\r\n }\r\n}","export interface IDocumentSettings {\r\n ignoreFolderPatterns: string;\r\n ignoreFilePatterns: string;\r\n documentVersionAutoSaveHistorySize: number;\r\n documentVersionPublishHistorySize: number;\r\n}\r\n\r\nexport class DocumentSettings implements IDocumentSettings {\r\n ignoreFolderPatterns: string;\r\n ignoreFilePatterns: string;\r\n documentVersionAutoSaveHistorySize: number;\r\n documentVersionPublishHistorySize: number;\r\n\r\n constructor();\r\n constructor(obj: IDocumentSettings);\r\n constructor(obj?: any) {\r\n this.ignoreFolderPatterns = obj && obj.ignoreFolderPatterns || \"\";\r\n this.ignoreFilePatterns = obj && obj.ignoreFilePatterns || \"\";\r\n this.documentVersionAutoSaveHistorySize = obj && obj.documentVersionAutoSaveHistorySize || 0;\r\n this.documentVersionPublishHistorySize = obj && obj.documentVersionPublishHistorySize || 0;\r\n }\r\n}","export interface IDocumentSettingsSave {\r\n message: string;\r\n refreshFolders: boolean;\r\n}\r\n\r\nexport class DocumentSettingsSave implements IDocumentSettingsSave {\r\n message: string;\r\n refreshFolders: boolean;\r\n\r\n constructor();\r\n constructor(obj: IDocumentSettingsSave);\r\n constructor(obj?: any) {\r\n this.message = obj && obj.message || \"\";\r\n this.refreshFolders = obj && obj.refreshFolders || false;\r\n }\r\n}","export interface IUserListItemUserGroup {\r\n name: string;\r\n companyName: string;\r\n}\r\n\r\nexport class UserListItemUserGroup implements IUserListItemUserGroup {\r\n name: string;\r\n companyName: string;\r\n\r\n constructor();\r\n constructor(obj: IUserListItemUserGroup);\r\n constructor(obj?: any) {\r\n this.name = obj && obj.name || \"\";\r\n this.companyName = obj && obj.companyName || \"\";\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IUserListItemUserGroup, UserListItemUserGroup } from \"./userListItemUserGroup\";\r\n\r\nexport interface IUserListItem {\r\n id: string;\r\n code: string;\r\n firstName: string;\r\n lastName: string;\r\n picture: string;\r\n defaultPictureInUse: boolean;\r\n email: string;\r\n comment: string;\r\n endDate: number;\r\n defaultCulture: string;\r\n pushNotificationType: number;\r\n emailNotificationType: number;\r\n recordEmailNotificationType: number;\r\n recordEmailNotificationShowExpired: boolean;\r\n instantMessageUserInvitationAcceptType: number;\r\n hasRecordUser: boolean;\r\n mobileInUse: boolean;\r\n mobileActive: boolean;\r\n webActive: boolean;\r\n disabled: boolean;\r\n userGroups: IUserListItemUserGroup[];\r\n\r\n userGroupsStr: string;\r\n getName(): string;\r\n}\r\n\r\nexport class UserListItem implements IUserListItem {\r\n id: string;\r\n code: string;\r\n firstName: string;\r\n lastName: string;\r\n picture: string;\r\n defaultPictureInUse: boolean;\r\n email: string;\r\n comment: string;\r\n endDate: number;\r\n defaultCulture: string;\r\n pushNotificationType: number;\r\n emailNotificationType: number;\r\n recordEmailNotificationType: number;\r\n recordEmailNotificationShowExpired: boolean;\r\n instantMessageUserInvitationAcceptType: number;\r\n hasRecordUser: boolean;\r\n mobileInUse: boolean;\r\n mobileActive: boolean;\r\n webActive: boolean;\r\n disabled: boolean;\r\n userGroups: UserListItemUserGroup[];\r\n \r\n userGroupsStr: string;\r\n\r\n constructor();\r\n constructor(obj: IUserListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.firstName = obj && obj.firstName || \"\";\r\n this.lastName = obj && obj.lastName || \"\";\r\n this.picture = obj && obj.picture || \"\";\r\n this.defaultPictureInUse = obj && obj.defaultPictureInUse || false;\r\n this.email = obj && obj.email || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.endDate = obj && obj.endDate || 0;\r\n this.defaultCulture = obj && obj.defaultCulture || \"\";\r\n this.pushNotificationType = obj && obj.pushNotificationType || 0;\r\n this.emailNotificationType = obj && obj.emailNotificationType || 0;\r\n this.recordEmailNotificationType = obj && obj.recordEmailNotificationType || 0;\r\n this.recordEmailNotificationShowExpired = obj && obj.recordEmailNotificationShowExpired || false;\r\n this.instantMessageUserInvitationAcceptType = obj && obj.instantMessageUserInvitationAcceptType || 0;\r\n this.hasRecordUser = obj && obj.hasRecordUser || false;\r\n this.mobileInUse = obj && obj.mobileInUse || false;\r\n this.mobileActive = obj && obj.mobileActive || false;\r\n this.webActive = obj && obj.webActive || false;\r\n this.disabled = obj && obj.disabled || false;\r\n this.userGroups = Base.getTypedArray(obj ? obj.userGroups : null, UserListItemUserGroup);\r\n this.userGroupsStr = Base.getStringWithSeparators(this.userGroups.map(i => i.name + (i.companyName ? ` (${i.companyName})` : \"\")), \", \");\r\n }\r\n\r\n getName(): string {\r\n return ((this.lastName ?? \"\") + \" \" + (this.firstName ?? \"\")).trim();\r\n }\r\n \r\n static sortUserListItems(items: IUserListItem[], column: string, asc: boolean): IUserListItem[] {\r\n if (!items && items.length < 2) return items;\r\n if (column === \"name\") {\r\n return items.sort((a: IUserListItem, b: IUserListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.getName(), b.getName())); });\r\n } else if (column === \"code\") {\r\n return items.sort((a: IUserListItem, b: IUserListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.code, b.code)); });\r\n } else if (column === \"comment\") {\r\n return items.sort((a: IUserListItem, b: IUserListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.comment, b.comment)); });\r\n } else {\r\n return items.sort((a: IUserListItem, b: IUserListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.userGroupsStr, b.userGroupsStr)); });\r\n }\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ListItems } from \"ui/Scripts/source/framework/listItems\";\r\nimport { IUserListItem, UserListItem } from \"./userListItem\";\r\n\r\nexport interface IUserListItems extends ListItems {\r\n companyCanUseInstantMessages: boolean;\r\n}\r\n\r\nexport class UserListItems extends ListItems implements IUserListItems {\r\n companyCanUseInstantMessages: boolean;\r\n\r\n constructor();\r\n constructor(obj: IUserListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, UserListItem);\r\n this.companyCanUseInstantMessages = obj && obj.companyCanUseInstantMessages || false;\r\n }\r\n}","import { GroupType, Permission, UserGroupType } from \"../enums\";\r\n\r\nexport interface IFolderNodePermission {\r\n code: string;\r\n level: Permission;\r\n type: GroupType;\r\n groupType: UserGroupType; //OR CompanyGroupType\r\n}\r\n\r\nexport class FolderNodePermission implements IFolderNodePermission {\r\n code: string;\r\n level: Permission;\r\n type: GroupType;\r\n groupType: UserGroupType; //OR CompanyGroupType\r\n\r\n constructor();\r\n constructor(obj: IFolderNodePermission);\r\n constructor(obj?: any) {\r\n this.code = obj && obj.code || \"\";\r\n this.level = obj && obj.level || Permission.None;\r\n this.type = obj && obj.type || GroupType.None;\r\n this.groupType = obj && obj.groupType || UserGroupType.Normal;\r\n }\r\n}\r\n\r\nexport interface IFolderNodeSavePermission {\r\n code: string;\r\n level: Permission;\r\n type: GroupType;\r\n}\r\n\r\nexport class FolderNodeSavePermission implements IFolderNodeSavePermission {\r\n code: string;\r\n level: Permission;\r\n type: GroupType;\r\n\r\n constructor();\r\n constructor(obj: IFolderNodeSavePermission);\r\n constructor(obj?: any) {\r\n this.code = obj && obj.code || \"\";\r\n this.level = obj && obj.level || Permission.None;\r\n this.type = obj && obj.type || GroupType.None;\r\n }\r\n}","import { FolderNodeSavePermission, IFolderNodeSavePermission } from \"./folderNodePermission\";\r\n\r\nexport interface IFolderNodeSave {\r\n id: string;\r\n permissions: IFolderNodeSavePermission[];\r\n}\r\n\r\nexport class FolderNodeSave implements IFolderNodeSave {\r\n id: string;\r\n permissions: FolderNodeSavePermission[];\r\n\r\n constructor();\r\n constructor(obj: IFolderNodeSave);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.permissions = [];\r\n if (obj && obj.permissions) {\r\n for (let i = 0; i < obj.permissions.length; i++) {\r\n this.permissions.push(new FolderNodeSavePermission(obj.permissions[i]));\r\n }\r\n }\r\n }\r\n\r\n static getSortedJsonFolderNodeSaves(src: IFolderNodeSave[]): IFolderNodeSave[] {\r\n const result = src.slice(0);\r\n result.sort((a: IFolderNodeSave, b: IFolderNodeSave) => {\r\n if ((a === null || a === undefined) && (b === null || b === undefined)) return 0;\r\n if (a === null || a === undefined) return 1;\r\n if (b === null || b === undefined) return -1;\r\n if ((a.id === null || a.id === undefined) && (b.id === null || b.id === undefined)) return 0;\r\n if (a.id < b.id) return -1;\r\n if (a.id > b.id) return 1;\r\n return 0;\r\n });\r\n return result;\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { allPartnersCompanyGroupCode } from \"../consts\";\r\nimport { GroupType, Permission, UserGroupType } from \"../enums\";\r\nimport { FolderNodePermission, FolderNodeSavePermission, IFolderNodePermission } from \"./folderNodePermission\";\r\nimport { FolderNodeSave, IFolderNodeSave } from \"./folderNodeSave\";\r\nimport { IFolderPermissionGroup } from \"./folderPermissionGroup\";\r\n\r\ninterface IPermissionCompanyGroupPermission {\r\n permission: Permission;\r\n companyGroupPermission: Permission;\r\n isExplicitPermission: boolean;\r\n}\r\n\r\ninterface IGetChildPermissionsResult {\r\n permissions: { [id: string]: IPermissionCompanyGroupPermission; };\r\n maxPermission: number;\r\n}\r\n\r\nexport interface IFolderNode {\r\n maxPermissionLevel: number;\r\n id: string;\r\n name: string;\r\n image: string;\r\n explicitPermissions: FolderNodePermission[];\r\n children: FolderNode[];\r\n parent: FolderNode;\r\n permission: IPermissionCompanyGroupPermission;\r\n expanded: boolean;\r\n\r\n hasChildren(): boolean;\r\n hasSiblings(): boolean;\r\n getIsRoot(): boolean;\r\n getAncesterIsCollapsed(): boolean;\r\n getFolderNodeById(id: string): IFolderNode;\r\n getSiblings(): IFolderNode[];\r\n hasExplicitPermission(companyGroupCode: string, userGroupCode: string): boolean;\r\n getNodePermissions(companyGroupCode: string, userGroupCode: string, list: { [id: string]: IFolderNodePermission; }): { [id: string]: IFolderNodePermission; };\r\n setGroupPermission(companyGroup: IFolderPermissionGroup, userGroup: IFolderPermissionGroup, permission: Permission, clearSubFolders: boolean);\r\n getEffectiveNonExplicitPermission(companyGroup: IFolderPermissionGroup, userGroup: IFolderPermissionGroup): IPermissionCompanyGroupPermission;\r\n setEffectivePermissions(companyGroup: IFolderPermissionGroup, userGroup: IFolderPermissionGroup, preCalculatedPermission: IPermissionCompanyGroupPermission);\r\n getJsonFolderNodeSaves(list: IFolderNodeSave[]): IFolderNodeSave[];\r\n}\r\n\r\nexport class FolderNode implements IFolderNode {\r\n maxPermissionLevel: number;\r\n id: string;\r\n name: string;\r\n image: string;\r\n explicitPermissions: FolderNodePermission[];\r\n children: FolderNode[];\r\n parent: FolderNode;\r\n permission: IPermissionCompanyGroupPermission;\r\n expanded: boolean;\r\n\r\n constructor();\r\n constructor(obj: IFolderNode);\r\n constructor(obj?: any) {\r\n this.maxPermissionLevel = obj && obj.maxPermissionLevel || 0;\r\n this.id = obj && obj.id || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.image = obj && obj.image || \"\";\r\n this.explicitPermissions = null;\r\n if (!Base.isNullOrUndefined(obj) && !Base.isNullOrUndefined(obj.explicitPermissions)) {\r\n this.explicitPermissions = [];\r\n for (const explicitPermission of obj.explicitPermissions) {\r\n this.explicitPermissions.push(new FolderNodePermission(explicitPermission));\r\n }\r\n }\r\n this.children = [];\r\n this.parent = null;\r\n if (!Base.isNullOrUndefined(obj) && !Base.isNullOrUndefined(obj.children)) {\r\n for (const tempChild of obj.children) {\r\n const child = new FolderNode(tempChild);\r\n child.parent = this;\r\n this.children.push(child);\r\n }\r\n }\r\n this.permission = obj && obj.permission || { permission: Permission.None, companyGroupPermission: Permission.None };\r\n this.expanded = obj && obj.expanded || false;\r\n }\r\n\r\n getIsRoot(): boolean {\r\n return !this.parent;\r\n }\r\n\r\n getAncesterIsCollapsed(): boolean {\r\n if (!this.parent) return false;\r\n if (!this.parent.expanded) return true;\r\n return this.parent.getAncesterIsCollapsed();\r\n }\r\n\r\n getSiblings(): FolderNode[] {\r\n if (this.getIsRoot()) return [];\r\n return this.parent.children.filter(i => i.id !== this.id);\r\n }\r\n\r\n hasChildren(): boolean {\r\n return this.children.length > 0;\r\n }\r\n\r\n hasSiblings(): boolean {\r\n if (this.getIsRoot()) return false;\r\n return this.parent.children.length > 1;\r\n }\r\n\r\n getFolderNodeById(id: string): FolderNode {\r\n if (Base.isNullOrEmpty(id)) return null;\r\n if (this.id.equalIgnoreCase(id)) return this;\r\n for (let i = 0; i < this.children.length; i++) {\r\n const childResult = this.children[i].getFolderNodeById(id);\r\n if (childResult != null) return childResult;\r\n }\r\n return null;\r\n }\r\n\r\n removeGroupPermission(groupType: number, groupCode: string) {\r\n if (this.explicitPermissions === null || this.explicitPermissions.length === 0) return;\r\n const index = this.explicitPermissions.findIndex(i => i.type === groupType && i.code.equalIgnoreCase(groupCode));\r\n if (index >= 0) {\r\n this.explicitPermissions.splice(index, 1);\r\n }\r\n }\r\n\r\n removeGroupPermissions(groupType: number, groupCode: string) {\r\n if (this.explicitPermissions !== null && this.explicitPermissions.length > 0) {\r\n const index = this.explicitPermissions.findIndex(i => i.type === groupType && i.code.equalIgnoreCase(groupCode));\r\n if (index >= 0) {\r\n this.explicitPermissions.splice(index, 1);\r\n }\r\n }\r\n if (this.children.length < 1) return;\r\n for (const child of this.children) {\r\n child.removeGroupPermissions(groupType, groupCode);\r\n }\r\n }\r\n\r\n setGroupPermission(companyGroup: IFolderPermissionGroup, userGroup: IFolderPermissionGroup, permission: Permission, clearSubFolders: boolean) {\r\n permission = Math.min(permission, Permission.Edit);\r\n //UserGroup / CompanyGroup selection\r\n let groupType: GroupType, groupSubType: UserGroupType, groupCode: string;\r\n if (!Base.isNullOrUndefined(userGroup)) {\r\n groupType = GroupType.UserGroup;\r\n groupCode = userGroup.code;\r\n groupSubType = userGroup.type;\r\n } else {\r\n groupType = GroupType.CompanyGroup;\r\n groupCode = companyGroup.code;\r\n groupSubType = companyGroup.type;\r\n }\r\n //Clear subfolder permissions\r\n if (clearSubFolders && this.hasChildren()) {\r\n for (let i = 0; i < this.children.length; i++) {\r\n this.children[i].removeGroupPermissions(groupType, groupCode);\r\n }\r\n }\r\n //Remove if equal to nonexplicit permission\r\n //if (doNotSetIfEqualsToNonExplicitPermission) {\r\n // var nonExplicitPermission = this.getEffectiveNonExplicitPermission(companyGroup, userGroup);\r\n // if (Math.min(nonExplicitPermission.permission, Permission.levelWrite) === permission) {\r\n // if (this.explicitPermissions !== null && this.explicitPermissions.length > 0) {\r\n // var index = this.explicitPermissions.findIndex(j => j.type === groupType && j.code.ciEqual(groupCode));\r\n // if (index >= 0) {\r\n // this.explicitPermissions.splice(index, 1);\r\n // }\r\n // }\r\n // return;\r\n // }\r\n //}\r\n //Add or Modify permission\r\n let currentPermission: FolderNodePermission = null;\r\n if (this.explicitPermissions === null) {\r\n this.explicitPermissions = [];\r\n } else {\r\n currentPermission = this.explicitPermissions.find(j => j.type === groupType && j.code.equalIgnoreCase(groupCode));\r\n }\r\n if (currentPermission === null || currentPermission === undefined) {\r\n currentPermission = new FolderNodePermission();\r\n currentPermission.type = groupType;\r\n currentPermission.groupType = groupSubType;\r\n currentPermission.code = groupCode;\r\n this.explicitPermissions.push(currentPermission);\r\n }\r\n currentPermission.level = permission;\r\n }\r\n\r\n setGroupPermissions(companyGroup: IFolderPermissionGroup, userGroup: IFolderPermissionGroup, permissions: { [id: string]: IFolderNodePermission; }) {\r\n //Remove old permission\r\n if (this.explicitPermissions !== null && this.explicitPermissions.length > 0) {\r\n const index = !Base.isNullOrUndefined(userGroup)\r\n ? this.explicitPermissions.findIndex(i => i.code.equalIgnoreCase(userGroup.code) && i.type === GroupType.UserGroup)\r\n : this.explicitPermissions.findIndex(i => i.code.equalIgnoreCase(companyGroup.code) && i.type === GroupType.CompanyGroup);\r\n if (index >= 0) {\r\n this.explicitPermissions.splice(index, 1);\r\n }\r\n }\r\n //Add new permission if exist\r\n if (Object.prototype.hasOwnProperty.call(permissions, this.id)) {\r\n this.setGroupPermission(companyGroup, userGroup, permissions[this.id].level, false);\r\n }\r\n if (this.children.length < 1) return;\r\n for (let j = 0; j < this.children.length; j++) {\r\n this.children[j].setGroupPermissions(companyGroup, userGroup, permissions);\r\n }\r\n }\r\n\r\n getPermissionsBase(explicitPermissions: FolderNodePermission[]): FolderNodePermission[] {\r\n if (this.getIsRoot()) {\r\n return explicitPermissions;\r\n }\r\n let result = this.parent.getPermissions();\r\n if (explicitPermissions != null) {\r\n result = result.slice(0);\r\n let i: number;\r\n //'All' permissions replaces all same type inherited permissions\r\n const allPermissions = explicitPermissions.filter(k => Base.isNullOrEmpty(k.code));\r\n for (i = 0; i < allPermissions.length; i++) {\r\n const allPermission = allPermissions[i];\r\n result = result.filter(k => k.type !== allPermission.type);\r\n }\r\n //Normal permissions replaces only same type and code inherited permission\r\n for (i = 0; i < explicitPermissions.length; i++) {\r\n const explicitPermission = explicitPermissions[i];\r\n result = result.filter(k => !(k.type === explicitPermission.type && k.code.equalIgnoreCase(explicitPermission.code)));\r\n result.push(explicitPermission);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n getPermissions(): FolderNodePermission[] {\r\n return this.getPermissionsBase(this.explicitPermissions);\r\n }\r\n\r\n getEffectivePermissionBase(permissions: FolderNodePermission[], companyGroup: IFolderPermissionGroup, userGroup: IFolderPermissionGroup): IPermissionCompanyGroupPermission {\r\n const result: IPermissionCompanyGroupPermission = {\r\n permission: this.maxPermissionLevel,\r\n companyGroupPermission: this.maxPermissionLevel,\r\n isExplicitPermission: false\r\n };\r\n let permission: FolderNodePermission;\r\n let i: number, j: number;\r\n //#1 Company group permissions are relevant only for users that do not belong to resource owning company\r\n //- Company of user that does not belong to resource owning company must always belong to normal company group in order to access folders\r\n //- Highest permissions considering all groups that user belongs to\r\n //- 'All group' permissions are used only if normal group permission does not exist in the same level\r\n if (!Base.isNullOrUndefined(companyGroup)) {\r\n let companyGroupPermissionsFound = false;\r\n let companyGroupPermission = Permission.None;\r\n let allCompanyGroupPermission: FolderNodePermission = null;\r\n let allPartnersCompanyGroupPermission: FolderNodePermission = null;\r\n let oneCompanyGroupPermission: FolderNodePermission = null;\r\n const relevantCompanyGroupPermissions = permissions.filter(k => k.type === GroupType.CompanyGroup);\r\n const companyGroups = companyGroup.groupCodes.slice(0);\r\n companyGroups.push(companyGroup.code);\r\n for (i = 0; i < relevantCompanyGroupPermissions.length; i++) {\r\n permission = relevantCompanyGroupPermissions[i];\r\n if (Base.isNullOrEmpty(permission.code)) { //'All companies' group\r\n allCompanyGroupPermission = permission;\r\n } else if (permission.code.equalIgnoreCase(allPartnersCompanyGroupCode)) { //'All partners' group\r\n allPartnersCompanyGroupPermission = permission;\r\n } else {\r\n for (j = 0; j < companyGroups.length; j++) {\r\n if (!permission.code.equalIgnoreCase(companyGroups[j])) continue;\r\n if (permission.groupType === UserGroupType.Fixed) { //One company company group\r\n oneCompanyGroupPermission = permission;\r\n } else { //Normal company groups\r\n companyGroupPermission = Math.max(companyGroupPermission, permission.level);\r\n companyGroupPermissionsFound = true;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n if (oneCompanyGroupPermission != null) {\r\n result.permission = Math.min(result.permission, oneCompanyGroupPermission.level);\r\n } else if (companyGroupPermissionsFound) {\r\n result.permission = Math.min(result.permission, companyGroupPermission);\r\n } else if (allPartnersCompanyGroupPermission != null) {\r\n result.permission = Math.min(result.permission, allPartnersCompanyGroupPermission.level);\r\n } else if (allCompanyGroupPermission != null) {\r\n result.permission = Math.min(result.permission, allCompanyGroupPermission.level);\r\n }\r\n }\r\n result.companyGroupPermission = result.permission;\r\n if (result.permission === Permission.None) return result;\r\n //#2 User group permissions are relevant for all users\r\n //- Highest permissions considering all groups that user belongs to\r\n //- 'All group' permissions are used only if normal group permission does not exist\r\n if (!Base.isNullOrUndefined(userGroup)) {\r\n let userGroupPermissionsFound = false;\r\n let userGroupPermission = Permission.None;\r\n let allUserGroupPermission: FolderNodePermission = null;\r\n let oneUserGroupPermission: FolderNodePermission = null;\r\n const relevantUserGroupPermissions = permissions.filter(k => k.type === GroupType.UserGroup);\r\n const userGroups = userGroup.groupCodes.slice(0);\r\n userGroups.push(userGroup.code);\r\n for (i = 0; i < relevantUserGroupPermissions.length; i++) {\r\n permission = relevantUserGroupPermissions[i];\r\n if (Base.isNullOrEmpty(permission.code)) { //'All users' group\r\n allUserGroupPermission = permission;\r\n } else {\r\n for (j = 0; j < userGroups.length; j++) {\r\n if (!permission.code.equalIgnoreCase(userGroups[j])) continue;\r\n if (permission.groupType === UserGroupType.Fixed) { //One user user group\r\n oneUserGroupPermission = permission;\r\n } else { //Normal user groups\r\n userGroupPermission = Math.max(userGroupPermission, permission.level);\r\n userGroupPermissionsFound = true;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n if (oneUserGroupPermission != null) {\r\n result.permission = Math.min(result.permission, oneUserGroupPermission.level);\r\n } else if (userGroupPermissionsFound) {\r\n result.permission = Math.min(result.permission, userGroupPermission);\r\n } else if (allUserGroupPermission != null) {\r\n result.permission = Math.min(result.permission, allUserGroupPermission.level);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n getEffectivePermission(companyGroup: IFolderPermissionGroup, userGroup: IFolderPermissionGroup): IPermissionCompanyGroupPermission {\r\n const result = this.getEffectivePermissionBase(this.getPermissions(), companyGroup, userGroup);\r\n result.isExplicitPermission = this.getExplicitPermission(!Base.isNullOrUndefined(companyGroup) ? companyGroup.code : null, !Base.isNullOrUndefined(userGroup) ? userGroup.code : null) > -1;\r\n return result;\r\n }\r\n\r\n getEffectiveNonExplicitPermission(companyGroup: IFolderPermissionGroup, userGroup: IFolderPermissionGroup): IPermissionCompanyGroupPermission {\r\n const explicitPermissions = this.explicitPermissions != null ? this.explicitPermissions.slice(0) : null;\r\n if (!Base.isNullOrUndefined(explicitPermissions)) {\r\n const index = !Base.isNullOrUndefined(userGroup)\r\n ? explicitPermissions.findIndex(i => i.code.equalIgnoreCase(userGroup.code) && i.type === GroupType.UserGroup)\r\n : explicitPermissions.findIndex(i => i.code.equalIgnoreCase(companyGroup.code) && i.type === GroupType.CompanyGroup);\r\n if (index >= 0) {\r\n explicitPermissions.splice(index, 1);\r\n }\r\n }\r\n const result = this.getEffectivePermissionBase(this.getPermissionsBase(explicitPermissions), companyGroup, userGroup);\r\n result.isExplicitPermission = false;\r\n return result;\r\n }\r\n\r\n getChildPermissions(companyGroup: IFolderPermissionGroup, userGroup: IFolderPermissionGroup): IGetChildPermissionsResult {\r\n const result: IGetChildPermissionsResult = { permissions: {}, maxPermission: Permission.None };\r\n for (let i = 0; i < this.children.length; i++) {\r\n const child = this.children[i];\r\n const permission = child.getEffectivePermission(companyGroup, userGroup);\r\n result.permissions[child.id] = permission;\r\n result.maxPermission = Math.max(result.maxPermission, permission.permission);\r\n }\r\n return result;\r\n }\r\n\r\n getExplicitFolderNodePermission(companyGroupCode: string, userGroupCode: string): FolderNodePermission {\r\n let result: FolderNodePermission = null;\r\n if (this.explicitPermissions !== null && this.explicitPermissions.length > 0) {\r\n result = !Base.isNullOrUndefined(userGroupCode)\r\n ? this.explicitPermissions.find(i => i.code.equalIgnoreCase(userGroupCode) && i.type === GroupType.UserGroup)\r\n : this.explicitPermissions.find(i => i.code.equalIgnoreCase(companyGroupCode) && i.type === GroupType.CompanyGroup);\r\n }\r\n return result;\r\n }\r\n\r\n getExplicitPermission(companyGroupCode: string, userGroupCode: string): number {\r\n const permission = this.getExplicitFolderNodePermission(companyGroupCode, userGroupCode);\r\n return !Base.isNullOrUndefined(permission) ? permission.level : -1;\r\n }\r\n\r\n hasExplicitPermission(companyGroupCode: string, userGroupCode: string): boolean {\r\n return this.getExplicitPermission(companyGroupCode, userGroupCode) > -1;\r\n }\r\n\r\n // getPermissionHtmlContent(isExplicitPermission: boolean, accessRightNoneTitle: string, accessRightReadTitle: string, accessRightWriteTitle: string): string {\r\n // return (isExplicitPermission ? \"\" : \"\") +\r\n // (this.permission.permission >= Permission.Edit\r\n // ? accessRightWriteTitle\r\n // : (this.permission.permission === Permission.Read ? accessRightReadTitle : accessRightNoneTitle));\r\n // }\r\n\r\n // getFolderPermissionHtml(): string {\r\n // return \"\";\r\n // }\r\n\r\n // getAsHtml(accessRightNoneTitle: string, accessRightReadTitle: string, accessRightWriteTitle: string, isFirstNode: boolean, selectedId: string = null) {\r\n // const hasChildren = this.children.length > 0;\r\n // const hasVisibleChildren = hasChildren;\r\n // const isRoot = this.getIsRoot();\r\n // if (Base.isNullOrEmpty(selectedId) && isRoot) {\r\n // selectedId = this.id;\r\n // }\r\n // const liClass = ((!Base.isNullOrEmpty(selectedId) && selectedId === this.id ? \"selected\" : \"\") + (!hasChildren ? \" noChilds\" : \"\") + (isRoot ? \" root\" : \"\")).trim();\r\n // let result = \"
    \";\r\n // result = result + \"
  • \";\r\n // if (!isRoot && !isFirstNode) {\r\n // result = result + \"\";\r\n // }\r\n // const imageExists = !Base.isNullOrEmpty(this.image);\r\n // const folderPermissionHtml = this.getFolderPermissionHtml();\r\n // result = result + \"\";\r\n // result = result + \"folder\";\r\n // result = result + \"
    \" + folderPermissionHtml + \"
    \";\r\n // const permissionHtml = \"\" + this.getPermissionHtmlContent(this.permission.isExplicitPermission, accessRightNoneTitle, accessRightReadTitle, accessRightWriteTitle) + \"\";\r\n // result = result + \"\" + this.name + \"\";\r\n // result = result + permissionHtml;\r\n // //console.log(permissionHtml);\r\n // result = result + \"
  • \";\r\n // if (hasVisibleChildren) {\r\n // for (let i = 0; i < this.children.length; i++) {\r\n // const child = this.children[i];\r\n // const childTreeHtml = child.getAsHtml(accessRightNoneTitle, accessRightReadTitle, accessRightWriteTitle, false, selectedId);\r\n // if (!Base.isNullOrEmpty(childTreeHtml)) {\r\n // result = result + childTreeHtml;\r\n // }\r\n // }\r\n // }\r\n // result = result + \"
\";\r\n // return result;\r\n // }\r\n\r\n setEffectivePermissions(companyGroup: IFolderPermissionGroup, userGroup: IFolderPermissionGroup, preCalculatedPermission: IPermissionCompanyGroupPermission = null) {\r\n const permission = preCalculatedPermission === null\r\n ? this.getEffectivePermission(companyGroup, userGroup)\r\n : preCalculatedPermission;\r\n this.permission = permission;\r\n //console.log(this.name + \": \" + permission.permission);\r\n const permissionsOfChildren = this.getChildPermissions(companyGroup, userGroup);\r\n for (let i = 0; i < this.children.length; i++) {\r\n const child = this.children[i];\r\n child.setEffectivePermissions(companyGroup, userGroup, permissionsOfChildren.permissions[child.id]);\r\n }\r\n }\r\n\r\n getAsList(list: FolderNode[]): FolderNode[] {\r\n list.push(this);\r\n if (this.children.length < 1) return list;\r\n for (const child of this.children) {\r\n child.getAsList(list);\r\n }\r\n return list;\r\n }\r\n\r\n getJsonFolderNodeSaves(list: IFolderNodeSave[]): IFolderNodeSave[] {\r\n let permissions: FolderNodePermission[] = [];\r\n if (this.explicitPermissions !== null && this.explicitPermissions.length > 0) {\r\n permissions = this.explicitPermissions.slice(0);\r\n }\r\n let saveFolderNode = list.find(j => j.id === this.id);\r\n if (Base.isNullOrUndefined(saveFolderNode)) {\r\n saveFolderNode = new FolderNodeSave();\r\n saveFolderNode.id = this.id;\r\n list.push(saveFolderNode);\r\n }\r\n for (const permission of permissions) {\r\n if (saveFolderNode.permissions.findIndex(j => j.type === permission.type && j.code.equalIgnoreCase(permission.code)) >= 0) continue;\r\n const savePermission = new FolderNodeSavePermission();\r\n savePermission.type = permission.type;\r\n savePermission.code = permission.code;\r\n savePermission.level = permission.level;\r\n saveFolderNode.permissions.push(savePermission);\r\n }\r\n if (this.children.length < 1) return list;\r\n for (const child of this.children) {\r\n child.getJsonFolderNodeSaves(list);\r\n }\r\n return list;\r\n }\r\n\r\n getNodePermissions(companyGroupCode: string, userGroupCode: string, list: { [id: string]: IFolderNodePermission; }): { [id: string]: IFolderNodePermission; } {\r\n const permission = this.getExplicitFolderNodePermission(companyGroupCode, userGroupCode);\r\n if (!Base.isNullOrUndefined(permission)) {\r\n list[this.id] = new FolderNodePermission(permission);\r\n }\r\n if (this.children.length < 1) return list;\r\n for (const child of this.children) {\r\n child.getNodePermissions(companyGroupCode, userGroupCode, list);\r\n }\r\n return list;\r\n }\r\n\r\n // updatePermissionsToTree(htmlTree: JQuery, accessRightNoneTitle: string, accessRightReadTitle: string, accessRightWriteTitle: string) {\r\n // const liElements = htmlTree.find(\"li\");\r\n // const folderNodes = this.getAsList([]);\r\n // liElements.each(function () {\r\n // const li = $(this);\r\n // const id = li.attr(\"data-id\");\r\n // const folderNode = folderNodes.find(i => i.id === id);\r\n // if (!isNullOrUndefined(folderNode)) {\r\n // const folderPermissionHtml = folderNode.getFolderPermissionHtml();\r\n // const folderElement = li.find(\".fol\");\r\n // if (folderElement.length) {\r\n // folderElement.html(folderPermissionHtml);\r\n // }\r\n // const permissionElement = li.find(\".permission\");\r\n // if (!folderNode.permission.isExplicitPermission) {\r\n // permissionElement.addClass(\"inherited\");\r\n // } else {\r\n // permissionElement.removeClass(\"inherited\");\r\n // }\r\n // permissionElement.html(folderNode.getPermissionHtmlContent(folderNode.permission.isExplicitPermission, accessRightNoneTitle, accessRightReadTitle, accessRightWriteTitle));\r\n // }\r\n // });\r\n // }\r\n}","import { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IDocumentFolderEditItem extends IEditItem {\r\n code: string;\r\n path: string;\r\n comment: string;\r\n image: string;\r\n createUser: IModifyUser;\r\n modifyUser: IModifyUser;\r\n inheritedFileFilterIds: string[];\r\n fileFilterIds: string[];\r\n}\r\n\r\nexport class DocumentFolderEditItem extends EditItem implements IDocumentFolderEditItem {\r\n code: string;\r\n path: string;\r\n comment: string;\r\n image: string;\r\n createUser: IModifyUser;\r\n modifyUser: IModifyUser;\r\n inheritedFileFilterIds: string[];\r\n fileFilterIds: string[];\r\n\r\n constructor();\r\n constructor(obj: IDocumentFolderEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.code = obj && obj.code || \"\";\r\n this.path = obj && obj.path || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.image = obj && obj.image || \"\";\r\n this.createUser = null;\r\n if (obj.createUser) {\r\n this.createUser = new ModifyUser(obj ? obj.createUser : null);\r\n }\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n this.inheritedFileFilterIds = obj && obj.inheritedFileFilterIds || [];\r\n this.fileFilterIds = obj && obj.fileFilterIds || [];\r\n }\r\n}","import { IIdTitle, IdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IFolderNode, FolderNode } from \"ui/Scripts/source/models/document/folderNode\";\r\nimport { DocumentFolderEditItem, IDocumentFolderEditItem } from \"./documentFolderItem\";\r\nimport { IUnitPermissionUserGroup, UnitPermissionUserGroup } from \"../userGroup/unitPermissionUserGroup\";\r\n\r\nexport interface IDocumentFolderEdit {\r\n path: string;\r\n canUseAllCompanyGroup: boolean;\r\n maxFolderNameLength: number;\r\n folderNode: IFolderNode;\r\n userGroups: IUnitPermissionUserGroup[];\r\n companyGroups: IUnitPermissionUserGroup[];\r\n fileFilters: IIdTitle[];\r\n item: IDocumentFolderEditItem;\r\n}\r\n\r\nexport class DocumentFolderEdit implements IDocumentFolderEdit {\r\n path: string;\r\n canUseAllCompanyGroup: boolean;\r\n maxFolderNameLength: number;\r\n folderNode: FolderNode;\r\n userGroups: UnitPermissionUserGroup[];\r\n companyGroups: UnitPermissionUserGroup[];\r\n fileFilters: IdTitle[];\r\n item: DocumentFolderEditItem;\r\n\r\n constructor();\r\n constructor(obj: IDocumentFolderEdit);\r\n constructor(obj?: any) {\r\n this.path = obj && obj.path || \"\";\r\n this.canUseAllCompanyGroup = obj && obj.canUseAllCompanyGroup || false;\r\n this.maxFolderNameLength = obj && obj.maxFolderNameLength || 0;\r\n this.folderNode = null;\r\n if (obj?.folderNode) {\r\n this.folderNode = new FolderNode(obj.folderNode);\r\n }\r\n this.userGroups = Base.getTypedArray(obj ? obj.userGroups : null, UnitPermissionUserGroup);\r\n this.companyGroups = Base.getTypedArray(obj ? obj.companyGroups : null, UnitPermissionUserGroup);\r\n this.fileFilters = Base.getTypedArray(obj ? obj.fileFilters : null, IdTitle);\r\n this.item = new DocumentFolderEditItem(obj ? obj.item : null);\r\n }\r\n}","import { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IDocumentDocumentEditItem extends IEditItem {\r\n code: string;\r\n comment: string;\r\n content: string;\r\n version: number;\r\n contentVersion: number;\r\n publishVersion: number;\r\n publishedId: string;\r\n endDate: number;\r\n landscapeOrientation: boolean;\r\n keywordIds: string[];\r\n\r\n createUser: IModifyUser;\r\n modifyUser: IModifyUser;\r\n approveUser: IModifyUser;\r\n publishUser: IModifyUser;\r\n lockedUser: IModifyUser;\r\n\r\n isLockedToOtherUser(userCode: string): boolean;\r\n}\r\n\r\nexport class DocumentDocumentEditItem extends EditItem implements IDocumentDocumentEditItem {\r\n code: string;\r\n comment: string;\r\n content: string;\r\n version: number;\r\n contentVersion: number;\r\n publishVersion: number;\r\n publishedId: string;\r\n endDate: number;\r\n landscapeOrientation: boolean;\r\n keywordIds: string[];\r\n\r\n createUser: ModifyUser;\r\n modifyUser: ModifyUser;\r\n approveUser: ModifyUser;\r\n publishUser: ModifyUser;\r\n lockedUser: ModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IDocumentDocumentEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.content = obj && obj.content || \"\";\r\n this.version = obj && obj.version || 0;\r\n this.contentVersion = obj && obj.contentVersion || 0;\r\n this.publishVersion = obj && obj.publishVersion || 0;\r\n this.publishedId = obj && obj.publishedId || \"\";\r\n this.endDate = obj && obj.endDate || null;\r\n this.landscapeOrientation = obj && obj.landscapeOrientation || false;\r\n this.keywordIds = obj && obj.keywordIds || [];\r\n this.createUser = new ModifyUser(obj ? obj.createUser : null);\r\n this.modifyUser = null;\r\n if (obj.modifyUser) {\r\n this.modifyUser = new ModifyUser(obj.modifyUser);\r\n }\r\n this.approveUser = null;\r\n if (obj.approveUser) {\r\n this.approveUser = new ModifyUser(obj.approveUser);\r\n }\r\n this.publishUser = null;\r\n if (obj.publishUser) {\r\n this.publishUser = new ModifyUser(obj.publishUser);\r\n }\r\n this.lockedUser = null;\r\n if (obj.lockedUser) {\r\n this.lockedUser = new ModifyUser(obj.lockedUser);\r\n }\r\n }\r\n \r\n isLockedToOtherUser(userCode: string): boolean {\r\n return this.lockedUser?.code && !userCode.equalIgnoreCase(this.lockedUser.code);\r\n }\r\n}","import { IIdTitle, IdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { DocumentDocumentEditItem, IDocumentDocumentEditItem } from \"./documentDocumentEditItem\";\r\n\r\nexport interface IDocumentDcoumentEdit {\r\n path: string;\r\n keywords: IIdTitle[];\r\n item: IDocumentDocumentEditItem;\r\n}\r\n\r\nexport class DocumentDcoumentEdit implements IDocumentDcoumentEdit {\r\n path: string;\r\n keywords: IdTitle[];\r\n item: DocumentDocumentEditItem;\r\n\r\n constructor();\r\n constructor(obj: IDocumentDcoumentEdit);\r\n constructor(obj?: any) {\r\n this.path = obj && obj.path || \"\";\r\n this.keywords = Base.getTypedArray(obj ? obj.keywords : null, IdTitle);\r\n this.item = new DocumentDocumentEditItem(obj ? obj.item : null);\r\n }\r\n}","export interface IDocumentPublishResult {\r\n message: string;\r\n rowId: string;\r\n publishedId: string;\r\n publishVersion: number;\r\n}\r\n\r\nexport class DocumentPublishResult implements IDocumentPublishResult {\r\n message: string;\r\n rowId: string;\r\n publishedId: string;\r\n publishVersion: number;\r\n\r\n constructor();\r\n constructor(obj: IDocumentPublishResult);\r\n constructor(obj?: any) {\r\n this.message = obj && obj.message || \"\";\r\n this.rowId = obj && obj.rowId || \"\";\r\n this.publishVersion = obj && obj.publishVersion || 0;\r\n this.publishedId = obj && obj.publishedId || \"\";\r\n }\r\n}","import { DocumentVersionType } from \"ui/Scripts/source/models/enums\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IDocumentVersionListItem {\r\n id: string;\r\n version: number;\r\n contentVersion: number;\r\n type: DocumentVersionType;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class DocumentVersionListItem implements IDocumentVersionListItem {\r\n id: string;\r\n version: number;\r\n contentVersion: number;\r\n type: DocumentVersionType;\r\n modifyUser: IModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IDocumentVersionListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.version = obj && obj.version || 0;\r\n this.contentVersion = obj && obj.contentVersion || 0;\r\n this.type = obj && obj.type || DocumentVersionType.AutoSave;\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}\r\n","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IListItems, ListItems } from \"ui/Scripts/source/framework/listItems\";\r\nimport { DocumentVersionListItem, IDocumentVersionListItem } from \"./documentVersionListItem\";\r\n\r\nexport interface IDocumentVersionListItems extends IListItems {}\r\n\r\nexport class DocumentVersionListItems extends ListItems implements IDocumentVersionListItems {\r\n constructor();\r\n constructor(obj: IDocumentVersionListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, DocumentVersionListItem);\r\n }\r\n}","import { DocumentVersionType } from \"ui/Scripts/source/models/enums\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IDocumentVersionEditItem {\r\n id: string;\r\n version: number;\r\n contentVersion: number;\r\n type: DocumentVersionType;\r\n content: string;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class DocumentVersionEditItem implements IDocumentVersionEditItem {\r\n id: string;\r\n version: number;\r\n contentVersion: number;\r\n type: DocumentVersionType;\r\n content: string;\r\n modifyUser: IModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IDocumentVersionEditItem);\r\n constructor(obj?: any) {\r\n this.content = obj && obj.content || \"\";\r\n this.id = obj && obj.id || \"\";\r\n this.version = obj && obj.version || 0;\r\n this.contentVersion = obj && obj.contentVersion || 0;\r\n this.type = obj && obj.type || DocumentVersionType.AutoSave;\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { IDocumentVersionEditItem, DocumentVersionEditItem } from \"./documentVersionEditItem\";\r\n\r\nexport interface IDocumentVersionEdit {\r\n item: IDocumentVersionEditItem;\r\n}\r\n\r\nexport class DocumentVersionEdit implements IDocumentVersionEdit {\r\n item: DocumentVersionEditItem;\r\n\r\n constructor();\r\n constructor(obj: IDocumentVersionEdit);\r\n constructor(obj?: any) {\r\n this.item = new DocumentVersionEditItem(obj ? obj.item : null);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { DocumentTemplateListItem, IDocumentTemplateListItem } from \"../documentTemplate/documentTemplateListItem\";\r\n\r\nexport interface IDocumentDocumentNew {\r\n items: IDocumentTemplateListItem[];\r\n}\r\n\r\nexport class DocumentDocumentNew implements IDocumentDocumentNew {\r\n items: DocumentTemplateListItem[];\r\n\r\n constructor();\r\n constructor(obj: IDocumentDocumentNew);\r\n constructor(obj?: any) {\r\n this.items = Base.getTypedArray(obj ? obj.items : null, DocumentTemplateListItem);\r\n }\r\n}","export interface IDocumentDocumentTemplateContent {\r\n content: string;\r\n}\r\n\r\nexport class DocumentDocumentTemplateContent implements IDocumentDocumentTemplateContent {\r\n content: string;\r\n\r\n constructor();\r\n constructor(obj: IDocumentDocumentTemplateContent);\r\n constructor(obj?: any) {\r\n this.content = obj && obj.content || \"\";\r\n }\r\n}","export interface IUploadFilesCheckResult {\r\n message: string;\r\n fileNamesInUse: string[];\r\n}\r\n\r\nexport class UploadFilesCheckResult implements IUploadFilesCheckResult {\r\n message: string;\r\n fileNamesInUse: string[];\r\n\r\n constructor();\r\n constructor(obj: IUploadFilesCheckResult);\r\n constructor(obj?: any) {\r\n this.message = obj && obj.message || \"\";\r\n this.fileNamesInUse = obj && obj.fileNamesInUse || [];\r\n }\r\n}","import { SaveSuccessItems } from \"ui/Scripts/source/models/common/saveSuccessItems\";\r\nimport { DocumentContentPreview } from \"../document/documentContentPreview\";\r\nimport { DocumentFilePreview } from \"../document/documentFilePreview\";\r\nimport { DocumentFolders } from \"../document/documentFolders\";\r\nimport { DocumentListItems } from \"../document/documentListItems\";\r\nimport { DocumentPage } from \"../document/documentPage\";\r\nimport { DocumentPageData } from \"../document/documentPageData\";\r\nimport { DocumentVersionPreview } from \"../document/documentVersionPreview\";\r\nimport { getApiCall, getFileApiCall, postApiCall, postFileApiCall } from \"./tokenService\";\r\nimport { IDocumentRemoveItem } from \"../document/documentRemoveItem\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { DocumentFileEdit } from \"../documentFile/documentFileEdit\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { KeywordListItems } from \"../keyword/keywordListItems\";\r\nimport { KeywordEdit } from \"../keyword/keywordEdit\";\r\nimport { DocumentTemplateListItems } from \"../documentTemplate/documentTemplateListItems\";\r\nimport { DocumentTemplateEdit } from \"../documentTemplate/documentTemplateEdit\";\r\nimport { FileFilterListItems } from \"../fileFilter/fileFilterListItems\";\r\nimport { FileFilterEdit } from \"../fileFilter/fileFilterEdit\";\r\nimport { DocumentSettings } from \"../documentSettings/documentSettings\";\r\nimport { DocumentSettingsSave } from \"../documentSettings/documentSettingsSave\";\r\nimport { UserListItems } from \"../user/userListItems\";\r\nimport { DocumentFolderEdit } from \"../documentFolder/documentFolderEdit\";\r\nimport { DocumentDcoumentEdit } from \"../documentDocument/documentDocumentEdit\";\r\nimport { DocumentPublishResult } from \"../documentDocument/documentPublishResult\";\r\nimport { DocumentVersionListItems } from \"../documentVersion/documentVersionListItems\";\r\nimport { DocumentVersionEdit } from \"../documentVersion/documentVersionEdit\";\r\nimport { DocumentDocumentNew } from \"../documentDocument/documentDocumentNew\";\r\nimport { DocumentDocumentTemplateContent } from \"../documentDocument/documentDocumentTemplateContent\";\r\nimport { UploadFilesCheckResult } from \"../document/uploadFilesCheckResult\";\r\n\r\n// #region DocumentPage\r\nexport const getDocumentPage = (): Promise => {\r\n return getApiCall(\"api/document\", DocumentPage);\r\n};\r\n\r\nexport const getDocumentPageData = (companyId: string): Promise => {\r\n return getApiCall(\"api/document/pagedata?id=\" + companyId, DocumentPageData);\r\n};\r\n// #endregion DocumentPage\r\n\r\n// #region Folders\r\nexport const getDocumentFolders = (companyId: string): Promise => {\r\n return getApiCall(\"api/document/folders?id=\" + companyId, DocumentFolders);\r\n};\r\n\r\nexport const removeFolder = (companyId: string, id: string): Promise => {\r\n return postApiCall(\"api/document/folder/remove?id=\" + id + \"&companyId=\" + companyId, ApiSuccess);\r\n};\r\n\r\nexport const addFolder = (obj: any): Promise => {\r\n return postApiCall(\"api/document/folder/add\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const copyFolder = (obj: any): Promise => {\r\n return postApiCall(\"api/document/folder/copy\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const getDocumentFolderEdit = (companyId: string, folderId: string, isRoot: boolean): Promise => {\r\n return getApiCall(\"api/document/folder/edit?id=\" + folderId + \"&companyId=\" + companyId + \"&isRoot=\" + isRoot.toString(), DocumentFolderEdit);\r\n};\r\n\r\nexport const saveDocumentFolderEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/document/folder/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const getDocumentSharedFolderEdit = (companyId: string, folderId: string, isRoot: boolean): Promise => {\r\n return getApiCall(\"api/document/folder/shared/edit?id=\" + folderId + \"&companyId=\" + companyId + \"&isRoot=\" + isRoot.toString(), DocumentFolderEdit);\r\n};\r\n\r\nexport const saveDocumentSharedFolderEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/document/folder/shared/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Folders\r\n\r\n// #region Documents\r\nexport const getDocumentListItems = (companyId: string, folderId: string): Promise => {\r\n return getApiCall(\"api/document/documents?id=\" + folderId + \"&companyId=\" + companyId, DocumentListItems);\r\n};\r\n\r\nexport const searchDocumentListItems = (companyId: string, folderId: string, filter: string,\r\n startDate: number, endDate: number, dynamicTime: number,\r\n documentEndDateStartDate: number, documentEndDateEndDate: number, dynamicDocumentEndDate: number,\r\n keywordIds: string[], keywordOperator: number, documentApproval: number, documentContentSearch: number, maxResultsCount: number,\r\n sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/document/search\", DocumentListItems, JSON.stringify({\r\n companyId,\r\n folderId,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n startDate: startDate || null,\r\n endDate: endDate || null,\r\n dynamicTime,\r\n documentEndDateStartDate: documentEndDateStartDate || null,\r\n documentEndDateEndDate: documentEndDateEndDate || null,\r\n dynamicDocumentEndDate,\r\n filter: filter || \"\",\r\n keywordIds,\r\n keywordOperator,\r\n documentApproval,\r\n documentContentSearch,\r\n maxResultsCount\r\n }));\r\n};\r\n\r\nexport const getDocumentVersionPreview = (companyId: string, documentVersionId: string): Promise => {\r\n return getApiCall(\"api/document/versionpreview?id=\" + documentVersionId + \"&companyId=\" + companyId, DocumentVersionPreview);\r\n};\r\n\r\nexport const getDocumentContentPreview = (companyId: string, documentId: string): Promise => {\r\n return getApiCall(\"api/document/contentpreview?id=\" + documentId + \"&companyId=\" + companyId, DocumentContentPreview);\r\n};\r\n\r\nexport const getFileContentPreview = (companyId: string, documentId: string, fileType: number): Promise => {\r\n return getApiCall(\"api/document/filepreview?id=\" + documentId + \"&companyId=\" + companyId + \"&fileType=\" + fileType.toString(10), DocumentFilePreview);\r\n};\r\n\r\nexport const downloadFile = (companyId: string, id: string): Promise => {\r\n return getFileApiCall(\"api/document/download?id=\" + id + \"&companyId=\" + companyId);\r\n};\r\n\r\nexport const downloadMultipleFiles = (companyId: string, ids: string[]): Promise => {\r\n return postFileApiCall(\"api/document/downloadmultple\", JSON.stringify({\r\n companyId,\r\n ids\r\n }));\r\n};\r\n\r\nexport const uploadFilesCheck = (data: any): Promise => {\r\n return postApiCall(\"api/document/checkupload\", UploadFilesCheckResult, JSON.stringify(data));\r\n};\r\n\r\nexport const uploadFiles = (data: any): Promise => {\r\n return postApiCall(\"api/document/upload\", SaveSuccessItems, JSON.stringify(data));\r\n};\r\n\r\nexport const removeDocuments = (companyId: string, id: string, items: IDocumentRemoveItem[]): Promise => {\r\n return postApiCall(\"api/document/remove\", ApiSuccess, JSON.stringify({\r\n companyId,\r\n id,\r\n items\r\n }));\r\n};\r\n\r\nexport const copyDocuments = (obj: any): Promise => {\r\n return postApiCall(\"api/document/copy\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Documents\r\n\r\n// #region Document File\r\nexport const getDocumentFileEdit = (companyId: string, folderId: string, id: string): Promise => {\r\n return getApiCall(\"api/document/file/edit?id=\" + id + \"&companyId=\" + companyId + \"&folderId=\" + folderId, DocumentFileEdit);\r\n};\r\n\r\nexport const saveDocumentFileEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/document/file/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Document File\r\n\r\n// #region Document\r\nexport const printDocuments = (companyId: string, ids: string[]): Promise => {\r\n return postFileApiCall(\"api/document/print\", JSON.stringify({\r\n companyId,\r\n ids\r\n }));\r\n};\r\n\r\nexport const printDocument = (obj: any): Promise => {\r\n return postFileApiCall(\"api/document/document/print\", JSON.stringify(obj));\r\n};\r\n\r\nexport const getDocumentDocumentNew = (companyId: string, folderId: string): Promise => {\r\n return getApiCall(\"api/document/document/new?id=\" + companyId + \"&folderId=\" + folderId, DocumentDocumentNew);\r\n};\r\n\r\nexport const getDocumentDocumentTemplateContent = (companyId: string, folderId: string, id: string, type: number): Promise => {\r\n return getApiCall(\"api/document/document/template/content?id=\" + id + \"&companyId=\" + companyId + \"&folderId=\" + folderId + \"&type=\" + type, DocumentDocumentTemplateContent);\r\n};\r\n\r\nexport const getDocumentDocumentEdit = (companyId: string, folderId: string, id: string): Promise => {\r\n return getApiCall(\"api/document/document/edit?id=\" + id + \"&companyId=\" + companyId + \"&folderId=\" + folderId, DocumentDcoumentEdit);\r\n};\r\n\r\nexport const saveDocumentDocumentEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/document/document/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const approveDocument = (companyId: string, folderId: string, id: string): Promise => {\r\n return postApiCall(\"api/document/document/approve?id=\" + id + \"&companyId=\" + companyId + \"&folderId=\" + folderId, SaveSuccess);\r\n};\r\n\r\nexport const publishDocument = (companyId: string, folderId: string, id: string): Promise => {\r\n return postApiCall(\"api/document/document/publish?id=\" + id + \"&companyId=\" + companyId + \"&folderId=\" + folderId, DocumentPublishResult);\r\n};\r\n\r\nexport const unPublishDocument = (companyId: string, folderId: string, id: string, publishedId: string): Promise => {\r\n return postApiCall(\"api/document/document/unpublish?id=\" + id + \"&companyId=\" + companyId + \"&folderId=\" + folderId + \"&publishedId=\" + publishedId, DocumentPublishResult);\r\n};\r\n// #endregion Document\r\n\r\n// #region Document Version\r\nexport const getDocumentVersionListItems = (companyId: string, folderId: string, id: string): Promise => {\r\n return getApiCall(\"api/document/versionhistory/list?id=\" + id + \"&companyId=\" + companyId + \"&folderId=\" + folderId, DocumentVersionListItems);\r\n};\r\n\r\nexport const getDocumentVersionEdit = (companyId: string, folderId: string, id: string): Promise => {\r\n return getApiCall(\"api/document/versionhistory/edit?id=\" + id + \"&companyId=\" + companyId + \"&folderId=\" + folderId, DocumentVersionEdit);\r\n};\r\n// #endregion Document Version\r\n\r\n// #region Copy Documents and Folders\r\nexport const getTargetCompanyDocumentFolders = (companyId: string): Promise => {\r\n return getApiCall(\"api/document/targetcompanyfolders?id=\" + companyId, DocumentFolders);\r\n};\r\n\r\nexport const getTargetCompanyUserListItems = (companyId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/document/targetcompanyusers\", UserListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\",\r\n activityState: 0\r\n }));\r\n};\r\n// #endregion Copy Documents and Folders\r\n\r\n// #region Module Document Templates\r\nexport const getDocumentTemplateListItems = (companyId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/document/module/documenttemplate/list\", DocumentTemplateListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\"\r\n }));\r\n};\r\n\r\nexport const getDocumentTemplateEdit = (companyId: string, id: string): Promise => {\r\n return getApiCall(\"api/document/module/documenttemplate/edit?id=\" + id + \"&companyId=\" + (companyId ?? \"\"), DocumentTemplateEdit);\r\n};\r\n\r\nexport const saveDocumentTemplateEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/document/module/documenttemplate/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeDocumentTemplates = (obj: any): Promise => {\r\n return postApiCall(\"api/document/module/documenttemplate/remove\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Module Document Templates\r\n\r\n// #region Module File Filters\r\nexport const getFileFilterListItems = (companyId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/document/module/filefilter/list\", FileFilterListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\"\r\n }));\r\n};\r\n\r\nexport const getFileFilterEdit = (companyId: string, id: string): Promise => {\r\n return getApiCall(\"api/document/module/filefilter/edit?id=\" + id + \"&companyId=\" + companyId, FileFilterEdit);\r\n};\r\n\r\nexport const saveFileFilterEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/document/module/filefilter/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeFileFilters = (obj: any): Promise => {\r\n return postApiCall(\"api/document/module/filefilter/remove\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Module File Filters\r\n\r\n// #region Module Keywords\r\nexport const getKeywordListItems = (companyId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/document/module/keyword/list\", KeywordListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\"\r\n }));\r\n};\r\n\r\nexport const getKeywordEdit = (companyId: string, id: string): Promise => {\r\n return getApiCall(\"api/document/module/keyword/edit?id=\" + id + \"&companyId=\" + companyId, KeywordEdit);\r\n};\r\n\r\nexport const saveKeywordEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/document/module/keyword/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeKeywords = (obj: any): Promise => {\r\n return postApiCall(\"api/document/module/keyword/remove\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Module Keywords\r\n\r\n// #region Module Other Settings\r\nexport const getDocumentSettings = (companyId: string): Promise => {\r\n return getApiCall(\"api/document/module/settings/edit?id=\" + companyId, DocumentSettings);\r\n};\r\n\r\nexport const saveDocumentSettings = (obj: any): Promise => {\r\n return postApiCall(\"api/document/module/settings/save\", DocumentSettingsSave, JSON.stringify(obj));\r\n};\r\n// #endregion Module Other Settings","export interface IEventUrgencyClassListItem {\r\n id: string;\r\n companyId: string;\r\n code: string;\r\n comment: string;\r\n sortOrder: number;\r\n color: string;\r\n defaultUrgencyClass: boolean;\r\n activeState: number;\r\n}\r\n\r\nexport class EventUrgencyClassListItem implements IEventUrgencyClassListItem {\r\n id: string;\r\n companyId: string;\r\n code: string;\r\n comment: string;\r\n sortOrder: number;\r\n color: string;\r\n defaultUrgencyClass: boolean;\r\n activeState: number;\r\n\r\n constructor();\r\n constructor(obj: IEventUrgencyClassListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.companyId = obj && obj.companyId || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.sortOrder = obj && obj.sortOrder || 0;\r\n this.color = obj && obj.color || \"\";\r\n this.defaultUrgencyClass = obj && obj.defaultUrgencyClass || false;\r\n this.activeState = obj && obj.activeState || 0;\r\n }\r\n}","import { Base } from \"./../../framework/base\";\r\nimport { ListItems } from \"./../../framework/listItems\";\r\nimport { EventUrgencyClassListItem, IEventUrgencyClassListItem } from \"./eventUrgencyClassListItem\";\r\n\r\nexport interface IEventUrgencyClassListItems extends ListItems { }\r\n\r\nexport class EventUrgencyClassListItems extends ListItems implements IEventUrgencyClassListItems {\r\n constructor();\r\n constructor(obj: IEventUrgencyClassListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, EventUrgencyClassListItem);\r\n }\r\n}","import { EditItem, IEditItem } from \"./../common/editItem\";\r\nimport { IModifyUser, ModifyUser } from \"./../user/modifyUser\";\r\n\r\nexport interface IEventUrgencyClassEditItem extends IEditItem {\r\n code: string;\r\n comment: string;\r\n sortOrder: number;\r\n color: string;\r\n defaultUrgencyClass: boolean;\r\n activeState: number;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class EventUrgencyClassEditItem extends EditItem implements IEventUrgencyClassEditItem {\r\n code: string;\r\n comment: string;\r\n sortOrder: number;\r\n color: string;\r\n defaultUrgencyClass: boolean;\r\n activeState: number;\r\n modifyUser: IModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IEventUrgencyClassEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.sortOrder = obj && obj.sortOrder || 0;\r\n this.color = obj && obj.color || \"\";\r\n this.defaultUrgencyClass = obj && obj.defaultUrgencyClass || false;\r\n this.activeState = obj && obj.activeState || 0;\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { EventUrgencyClassEditItem, IEventUrgencyClassEditItem } from \"./eventUrgencyClassEditItem\";\r\n\r\nexport interface IEventUrgencyClassEdit {\r\n item: IEventUrgencyClassEditItem;\r\n}\r\n\r\nexport class EventUrgencyClassEdit implements IEventUrgencyClassEdit {\r\n item: EventUrgencyClassEditItem;\r\n\r\n constructor();\r\n constructor(obj: IEventUrgencyClassEdit);\r\n constructor(obj?: any) {\r\n this.item = new EventUrgencyClassEditItem(obj ? obj.item : null);\r\n }\r\n}","export interface IEventChartOptions {\r\n selectedEventTypeIds: string[];\r\n selectedGroupingType: string;\r\n selectedTimeSpan: string;\r\n}\r\n\r\nexport class EventChartOptions implements IEventChartOptions {\r\n selectedEventTypeIds: string[];\r\n selectedGroupingType: string;\r\n selectedTimeSpan: string;\r\n\r\n constructor();\r\n constructor(obj: IEventChartOptions);\r\n constructor(obj?: any) {\r\n this.selectedEventTypeIds = obj && obj.selectedEventTypeIds || [];\r\n this.selectedGroupingType = obj && obj.selectedGroupingType || \"0\";\r\n this.selectedTimeSpan = obj && obj.selectedTimeSpan || \"3\";\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IdTitle, IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { EventChartOptions, IEventChartOptions } from \"./eventChartOptions\";\r\nimport { IdTitleNode, IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\n\r\nexport interface IEventChartPropertiesDialogData {\r\n eventTypes: IIdTitleNode[];\r\n groupingTypes: IIdTitle[];\r\n timeSpans: IIdTitle[];\r\n chartOptions: IEventChartOptions;\r\n}\r\n\r\nexport class EventChartPropertiesDialogData implements IEventChartPropertiesDialogData {\r\n eventTypes: IdTitleNode[];\r\n groupingTypes: IdTitle[];\r\n timeSpans: IdTitle[];\r\n chartOptions: EventChartOptions;\r\n\r\n constructor();\r\n constructor(obj: IEventChartPropertiesDialogData);\r\n constructor(obj?: any) {\r\n this.chartOptions = new EventChartOptions(obj ? obj.chartOptions : null);\r\n this.eventTypes = Base.getTypedArray(obj ? obj.eventTypes : null, IdTitleNode);\r\n this.groupingTypes = Base.getTypedArray(obj ? obj.groupingTypes : null, IdTitle);\r\n this.timeSpans = Base.getTypedArray(obj ? obj.timeSpans : null, IdTitle);\r\n }\r\n}","import { AttachmentImageSize, EventLocationUseType, EventObserverActionUseType } from \"../enums\";\r\n\r\nexport interface IEventSettingSimple {\r\n attachmentImageSize: AttachmentImageSize;\r\n observerActionUseType: EventObserverActionUseType;\r\n locationUseType: EventLocationUseType;\r\n\r\n observerActionIsInUse(): boolean;\r\n observerActionIsRequired(): boolean;\r\n locationIsInUse(): boolean;\r\n}\r\n\r\nexport class EventSettingSimple implements IEventSettingSimple {\r\n attachmentImageSize: AttachmentImageSize;\r\n observerActionUseType: EventObserverActionUseType;\r\n locationUseType: EventLocationUseType;\r\n\r\n constructor();\r\n constructor(obj: IEventSettingSimple);\r\n constructor(obj?: any) {\r\n this.attachmentImageSize = obj && obj.attachmentImageSize || AttachmentImageSize.Large;\r\n this.observerActionUseType = obj && obj.observerActionUseType || EventObserverActionUseType.NotInUse;\r\n this.locationUseType = obj && obj.locationUseType || EventLocationUseType.NotInUse;\r\n }\r\n\r\n observerActionIsInUse(): boolean {\r\n return this.observerActionUseType > EventObserverActionUseType.NotInUse;\r\n };\r\n\r\n observerActionIsRequired(): boolean {\r\n return this.observerActionUseType > EventObserverActionUseType.InUse;\r\n };\r\n\r\n locationIsInUse(): boolean {\r\n return this.locationUseType > EventLocationUseType.NotInUse;\r\n };\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { EventSettingSimple, IEventSettingSimple } from \"ui/Scripts/source/models/eventSettings/eventSettingSimple\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IEventDefaultEventHandlers {\r\n unitId: string;\r\n unitCode: string;\r\n createCompanyUnitId: string;\r\n createCompanyUnitCode: string;\r\n canHandleEvent: boolean;\r\n canEditIdentificationData: boolean;\r\n handlers: IModifyUser[];\r\n eventSetting: IEventSettingSimple;\r\n}\r\n\r\nexport class EventDefaultEventHandlers implements IEventDefaultEventHandlers {\r\n unitId: string;\r\n unitCode: string;\r\n createCompanyUnitId: string;\r\n createCompanyUnitCode: string;\r\n canHandleEvent: boolean;\r\n canEditIdentificationData: boolean;\r\n handlers: ModifyUser[];\r\n eventSetting: EventSettingSimple;\r\n\r\n constructor();\r\n constructor(obj: IEventDefaultEventHandlers);\r\n constructor(obj?: any) {\r\n this.unitId = obj && obj.unitId || \"\";\r\n this.unitCode = obj && obj.unitCode || \"\";\r\n this.createCompanyUnitId = obj && obj.createCompanyUnitId || \"\";\r\n this.createCompanyUnitCode = obj && obj.createCompanyUnitCode || \"\";\r\n this.canHandleEvent = obj && obj.canHandleEvent || false;\r\n this.canEditIdentificationData = obj && obj.canEditIdentificationData || false;\r\n this.handlers = Base.getTypedArray(obj ? obj.handlers : null, ModifyUser);\r\n this.eventSetting = new EventSettingSimple(obj?.eventSetting);\r\n }\r\n}","import { EventTypeUsageType } from \"ui/Scripts/source/models/enums\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IdTitleNode, IIdTitleNode } from \"../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/idTitleNode\";\r\n\r\nexport interface IEventTypeNode {\r\n id: string;\r\n parentId: string;\r\n companyId: string;\r\n code: string;\r\n comment: string;\r\n activeState: number;\r\n eventTypeUsageType: EventTypeUsageType;\r\n parent: IEventTypeNode;\r\n children: IEventTypeNode[];\r\n\r\n collapsed: boolean;\r\n\r\n isActive(): boolean;\r\n isSelectableForNew(): boolean;\r\n getAncesterIsCollapsed(): boolean;\r\n getEventTypeNodeById(id: string): IEventTypeNode;\r\n getAsList(list: IEventTypeNode[]): IEventTypeNode[];\r\n getAsIdTitleNode(): IIdTitleNode;\r\n}\r\n\r\nexport class EventTypeNode implements IEventTypeNode {\r\n id: string;\r\n parentId: string;\r\n companyId: string;\r\n code: string;\r\n comment: string;\r\n activeState: number;\r\n eventTypeUsageType: EventTypeUsageType;\r\n parent: IEventTypeNode;\r\n children: IEventTypeNode[];\r\n\r\n collapsed: boolean;\r\n\r\n constructor();\r\n constructor(obj: IEventTypeNode);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.parentId = obj && obj.parentId || \"\";\r\n this.companyId = obj && obj.companyId || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.activeState = obj && obj.activeState || 0;\r\n this.eventTypeUsageType = obj && obj.eventTypeUsageType || EventTypeUsageType.Normal;\r\n if (obj && obj.children) {\r\n this.children = Base.getTypedArray(obj.children, EventTypeNode);\r\n for (const child of this.children) {\r\n child.parent = this;\r\n }\r\n }\r\n this.collapsed = obj && obj.collapsed || false;\r\n }\r\n\r\n isActive(): boolean {\r\n let result = this.activeState > 0.5;\r\n if (this.parent) {\r\n result = result && this.parent.isActive();\r\n }\r\n return result;\r\n }\r\n\r\n isSelectableForNew(): boolean {\r\n let result = this.eventTypeUsageType === EventTypeUsageType.SelectForNew;\r\n if (this.parent) {\r\n result = result && this.parent.isSelectableForNew();\r\n }\r\n return result;\r\n }\r\n\r\n getAncesterIsCollapsed(): boolean {\r\n if (!this.parent) return false;\r\n if (this.parent.collapsed) return true;\r\n return this.parent.getAncesterIsCollapsed();\r\n }\r\n\r\n getEventTypeNodeById(id: string): IEventTypeNode {\r\n if (!id) return null;\r\n if (this.id.equalIgnoreCase(id)) return this;\r\n for (const child of this.children) {\r\n const childResult = child.getEventTypeNodeById(id);\r\n if (childResult) return childResult;\r\n }\r\n return null;\r\n }\r\n\r\n static getEventTypeNodeById(nodes: IEventTypeNode[], id: string): IEventTypeNode {\r\n if (!id || nodes.length < 1) return null;\r\n for (const node of nodes) {\r\n const result = node.getEventTypeNodeById(id);\r\n if (result) return result;\r\n }\r\n return null;\r\n }\r\n\r\n static removeEventTypeNodeById(nodes: IEventTypeNode[], id: string): IEventTypeNode[] {\r\n if (!id || nodes.length < 1) return nodes;\r\n for (const node of nodes) {\r\n const result = node.getEventTypeNodeById(id);\r\n if (result) {\r\n if (result.parent) {\r\n result.parent.children = result.parent.children.filter(i => i.id !== result.id);\r\n return nodes.map(i => new EventTypeNode(i));\r\n } else {\r\n return nodes.filter(i => i.id !== result.id).map(i => new EventTypeNode(i));\r\n }\r\n }\r\n }\r\n return nodes;\r\n }\r\n \r\n getAsList(list: IEventTypeNode[]): IEventTypeNode[] {\r\n list.push(this);\r\n if (this.children.length < 1) return list;\r\n for (const child of this.children) {\r\n child.getAsList(list);\r\n }\r\n return list;\r\n }\r\n\r\n static getAsList(nodes: IEventTypeNode[]): IEventTypeNode[] {\r\n if (nodes.length < 1) return [];\r\n const result: IEventTypeNode[] = [];\r\n for (const node of nodes) {\r\n node.getAsList(result);\r\n }\r\n return result;\r\n }\r\n \r\n getAsIdTitleNode(): IIdTitleNode {\r\n const result = IdTitleNode.createIdTitleNode(this.id, this.code, [], this.activeState > 0);\r\n for (const child of this.children) {\r\n result.children.push(child.getAsIdTitleNode());\r\n }\r\n return result;\r\n }\r\n\r\n static getAsIdTitleNodes(nodes: IEventTypeNode[]): IIdTitleNode[] {\r\n if (!nodes || nodes.length < 1) return [];\r\n const result: IIdTitleNode[] = [];\r\n for (const node of nodes) {\r\n result.push(node.getAsIdTitleNode());\r\n }\r\n return result;\r\n }\r\n}","import { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\nexport interface IEventEditItemMessage {\r\n id: string;\r\n date: number;\r\n content: string;\r\n myMessage: boolean;\r\n allRead: boolean;\r\n isRead: boolean;\r\n modifyUser: IModifyUser;\r\n\r\n uiType: number;\r\n}\r\n\r\nexport class EventEditItemMessage implements IEventEditItemMessage {\r\n id: string;\r\n date: number;\r\n content: string;\r\n myMessage: boolean;\r\n allRead: boolean;\r\n isRead: boolean;\r\n modifyUser: IModifyUser;\r\n\r\n uiType: number;\r\n\r\n constructor();\r\n constructor(obj: IEventEditItemMessage);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.date = obj && obj.date || 0;\r\n this.content = obj && obj.content || \"\";\r\n this.myMessage = obj && obj.myMessage || false;\r\n this.allRead = obj && obj.allRead || false;\r\n this.isRead = obj && obj.isRead || false;\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n this.uiType = obj && obj.uiType || 0;\r\n }\r\n \r\n static sortEventEditItemMessages(items: IEventEditItemMessage[]): IEventEditItemMessage[] {\r\n if (!items && items.length < 2) return items;\r\n return items.sort((a: IEventEditItemMessage, b: IEventEditItemMessage) => { return (!a || !b) ? 0 : Base.numCompare(a.modifyUser.date, b.modifyUser.date); });\r\n }\r\n}","import { LockedRecord } from \"ui/Scripts/source/models/common/lockedRecord\";\r\nimport { Base } from \"../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/framework/base\";\r\nimport { EditItem, IEditItem } from \"../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/editItem\";\r\nimport { FileAttachment, IFileAttachment } from \"../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/fileAttachment\";\r\nimport { Translations } from \"../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/translations\";\r\nimport { IModifyUser, ModifyUser } from \"../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/user/modifyUser\";\r\nimport { EventEditItemMessage, IEventEditItemMessage } from \"./eventEditItemMessage\";\r\n\r\nexport interface IEventEditItem extends IEditItem {\r\n companyId: string;\r\n unitId: string;\r\n unitCode: string;\r\n createCompanyId: string;\r\n createCompanyUnitId: string;\r\n createCompanyUnitCode: string;\r\n code: string;\r\n urgencyClassId: string;\r\n date: number;\r\n name: string;\r\n observer: string;\r\n observerAction: string;\r\n description: string;\r\n locationName: string;\r\n latitude: number;\r\n longitude: number;\r\n immediateAction: string;\r\n preventiveAction: string;\r\n rootCause: string;\r\n identificationDetails: string;\r\n directCosts: number;\r\n indirectCosts: number;\r\n amount: number;\r\n isRead: boolean;\r\n attachments: IFileAttachment[];\r\n createUser: IModifyUser;\r\n modifyUser: IModifyUser;\r\n publishUser: IModifyUser;\r\n lockedUser: IModifyUser;\r\n handlers: IModifyUser[];\r\n messages: IEventEditItemMessage[];\r\n eventTypeIds: string[];\r\n eventTypeBIds: string[];\r\n eventTypeCIds: string[];\r\n\r\n stateStr: string;\r\n\r\n isPublished(): boolean;\r\n\r\n isLocked(): boolean;\r\n isLockedToUser(userCode: string): boolean;\r\n isLockedToOtherUser(userCode: string): boolean;\r\n}\r\n\r\nexport class EventEditItem extends EditItem implements IEventEditItem {\r\n companyId: string;\r\n unitId: string;\r\n unitCode: string;\r\n createCompanyId: string;\r\n createCompanyUnitId: string;\r\n createCompanyUnitCode: string;\r\n code: string;\r\n urgencyClassId: string;\r\n date: number;\r\n name: string;\r\n observer: string;\r\n observerAction: string;\r\n description: string;\r\n locationName: string;\r\n latitude: number;\r\n longitude: number;\r\n immediateAction: string;\r\n preventiveAction: string;\r\n rootCause: string;\r\n identificationDetails: string;\r\n directCosts: number;\r\n indirectCosts: number;\r\n amount: number;\r\n isRead: boolean;\r\n attachments: IFileAttachment[];\r\n createUser: IModifyUser;\r\n modifyUser: IModifyUser;\r\n publishUser: IModifyUser;\r\n lockedUser: IModifyUser;\r\n handlers: ModifyUser[];\r\n messages: EventEditItemMessage[];\r\n eventTypeIds: string[];\r\n eventTypeBIds: string[];\r\n eventTypeCIds: string[];\r\n \r\n stateStr: string;\r\n\r\n constructor();\r\n constructor(obj: IEventEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.companyId = obj && obj.companyId || \"\";\r\n this.unitId = obj && obj.unitId || \"\";\r\n this.unitCode = obj && obj.unitCode || \"\";\r\n this.createCompanyId = obj && obj.createCompanyId || \"\";\r\n this.createCompanyUnitId = obj && obj.createCompanyUnitId || \"\";\r\n this.createCompanyUnitCode = obj && obj.createCompanyUnitCode || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.urgencyClassId = obj && obj.urgencyClassId || \"\";\r\n this.date = obj && obj.date || 0;\r\n this.name = obj && obj.name || \"\";\r\n this.observer = obj && obj.observer || \"\";\r\n this.observerAction = obj && obj.observerAction || \"\";\r\n this.description = obj && obj.description || \"\";\r\n this.locationName = obj && obj.locationName || \"\";\r\n this.latitude = obj && obj.latitude || 0;\r\n this.longitude = obj && obj.longitude || 0;\r\n this.immediateAction = obj && obj.immediateAction || \"\";\r\n this.preventiveAction = obj && obj.preventiveAction || \"\";\r\n this.rootCause = obj && obj.rootCause || \"\";\r\n this.identificationDetails = obj && obj.identificationDetails || \"\";\r\n this.directCosts = obj && obj.directCosts || 0;\r\n this.indirectCosts = obj && obj.indirectCosts || 0;\r\n this.amount = obj && obj.amount || 0;\r\n this.isRead = obj && obj.isRead || false;\r\n this.createUser = new ModifyUser(obj?.createUser);\r\n this.modifyUser = new ModifyUser(obj?.modifyUser);\r\n this.publishUser = obj?.publishUser\r\n ? new ModifyUser(obj.publishUser)\r\n : null;\r\n this.lockedUser = obj?.lockedUser\r\n ? new ModifyUser(obj.lockedUser)\r\n : null;\r\n this.attachments = Base.getTypedArray(obj ? obj.attachments : null, FileAttachment);\r\n FileAttachment.sortFileAttachments(this.attachments);\r\n this.handlers = ModifyUser.sortModifyUsers(Base.getTypedArray(obj?.handlers, ModifyUser));\r\n this.messages = EventEditItemMessage.sortEventEditItemMessages(Base.getTypedArray(obj?.messages, EventEditItemMessage));\r\n this.eventTypeIds = obj?.eventTypeIds ?? [];\r\n this.eventTypeBIds = obj?.eventTypeBIds ?? [];\r\n this.eventTypeCIds = obj?.eventTypeCIds ?? [];\r\n //Set state string\r\n const approveHandlers = EventEditItem.getFirstAndLastApproveHandler(this.handlers);\r\n this.stateStr = approveHandlers.lastApprove\r\n ? Translations.Closed\r\n : (!this.publishUser\r\n ? Translations.Draft\r\n : (this.handlers.length < 1\r\n ? Translations.NotAssigned\r\n : Translations.StateOpen));\r\n }\r\n\r\n isPublished(): boolean {\r\n return !!this.publishUser;\r\n }\r\n\r\n isLocked(): boolean {\r\n return !!this.lockedUser;\r\n }\r\n\r\n isLockedToUser(userCode: string): boolean {\r\n return LockedRecord.isLockedToUser(this.lockedUser, userCode);\r\n }\r\n\r\n isLockedToOtherUser(userCode: string): boolean {\r\n return this.lockedUser?.code && !userCode.equalIgnoreCase(this.lockedUser.code);\r\n }\r\n\r\n static getFirstAndLastApproveHandler(handlers: IModifyUser[]): { firstApprove: IModifyUser, lastApprove: IModifyUser } {\r\n const result = {\r\n firstApprove: null,\r\n lastApprove: null\r\n };\r\n let allApproved = true;\r\n for (const handler of handlers) {\r\n if (!handler.date) {\r\n allApproved = false;\r\n result.lastApprove = null;\r\n continue;\r\n }\r\n if (!result.firstApprove || result.firstApprove.date > handler.date) {\r\n result.firstApprove = handler;\r\n }\r\n if (allApproved && (!result.lastApprove || result.lastApprove.date < handler.date)) {\r\n result.lastApprove = handler;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n static getProcessingTimeStr(lastApproveUser: IModifyUser, publishUser: IModifyUser, createUser: IModifyUser): string {\r\n const processingTime = lastApproveUser ? lastApproveUser.date - (publishUser ? publishUser.date : createUser.date) : null;\r\n if (!processingTime) return \"\";\r\n let hours = processingTime / (60 * 60 * 1000);\r\n const days = Math.floor(hours / 24);\r\n hours = hours % 24;\r\n return (days < 0.5\r\n ? \"\"\r\n : days.toLocaleFixed(0) + \" \" + Translations.Days + \" \") + hours.toLocaleFixed(0) + \" \" + Translations.Hours;\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { IdTitle, IIdTitle } from \"./idTitle\";\r\n\r\nexport interface IIdColorTitle extends IIdTitle {\r\n color: string;\r\n\r\n getHash(): string;\r\n}\r\n\r\nexport class IdColorTitle extends IdTitle implements IIdColorTitle {\r\n color: string;\r\n\r\n constructor();\r\n constructor(obj: IIdTitle);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.color = obj && obj.color || \"\";\r\n }\r\n\r\n static createIdColorTitle(id: string, color: string, title: string): IIdColorTitle {\r\n const result = new IdColorTitle();\r\n result.id = id;\r\n result.color = color;\r\n result.title = title;\r\n return result;\r\n }\r\n\r\n getHash(): string {\r\n return this.id + \"#\" + this.title + \"#\" + this.color;\r\n }\r\n\r\n static getHash(items: IIdColorTitle[]): string {\r\n if (!items || items.length < 1) return \"\";\r\n return Base.joinSuffix(items.map(i => i.getHash()), \"$\");\r\n }\r\n \r\n static sortIdTitles(items: IIdColorTitle[], asc: boolean): IIdColorTitle[] {\r\n if (!items && items.length < 2) return items;\r\n return items.sort((a: IIdColorTitle, b: IIdColorTitle) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.getTitle(), b.getTitle())); });\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IdTitleNode, IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { CompanyMenuItem, ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { EventTypeNode, IEventTypeNode } from \"../eventType/eventTypeNode\";\r\nimport { EventEditItem, IEventEditItem } from \"./eventEditItem\";\r\nimport { IdColorTitle, IIdColorTitle } from \"ui/Scripts/source/models/common/idColorTitle\";\r\nimport { EventSettingSimple, IEventSettingSimple } from \"ui/Scripts/source/models/eventSettings/eventSettingSimple\";\r\n\r\nexport interface IEventEdit {\r\n canHandleEvent: boolean;\r\n canRemoveEvent: boolean;\r\n canEditIdentificationData: boolean;\r\n item: IEventEditItem;\r\n createCompany: ICompanyMenuItem;\r\n companies: ICompanyMenuItem[];\r\n units: IIdTitleNode[];\r\n urgencyClasses: IIdColorTitle[];\r\n eventTypeNodes: IEventTypeNode[];\r\n eventTypeBNodes: IEventTypeNode[];\r\n eventTypeCNodes: IEventTypeNode[];\r\n eventSetting: IEventSettingSimple;\r\n}\r\n\r\nexport class EventEdit implements IEventEdit {\r\n canHandleEvent: boolean;\r\n canRemoveEvent: boolean;\r\n canEditIdentificationData: boolean;\r\n item: EventEditItem;\r\n createCompany: ICompanyMenuItem;\r\n companies: ICompanyMenuItem[];\r\n units: IdTitleNode[];\r\n urgencyClasses: IdColorTitle[];\r\n eventTypeNodes: EventTypeNode[];\r\n eventTypeBNodes: EventTypeNode[];\r\n eventTypeCNodes: EventTypeNode[];\r\n eventSetting: EventSettingSimple;\r\n\r\n constructor();\r\n constructor(obj: IEventEdit);\r\n constructor(obj?: any) {\r\n this.canHandleEvent = obj && obj.canHandleEvent || false;\r\n this.canRemoveEvent = obj && obj.canRemoveEvent || false;\r\n this.canEditIdentificationData = obj && obj.canEditIdentificationData || false;\r\n this.item = new EventEditItem(obj ? obj.item : null);\r\n this.createCompany = new CompanyMenuItem(obj ? obj.createCompany : null);\r\n this.companies = Base.getTypedArray(obj ? obj.companies : null, CompanyMenuItem);\r\n this.units = Base.getTypedArray(obj ? obj.units : null, IdTitleNode);\r\n this.urgencyClasses = Base.getTypedArray(obj ? obj.urgencyClasses : null, IdColorTitle);\r\n this.eventTypeNodes = Base.getTypedArray(obj ? obj.eventTypeNodes : null, EventTypeNode);\r\n this.eventTypeBNodes = Base.getTypedArray(obj ? obj.eventTypeBNodes : null, EventTypeNode);\r\n this.eventTypeCNodes = Base.getTypedArray(obj ? obj.eventTypeCNodes : null, EventTypeNode);\r\n this.eventSetting = new EventSettingSimple(obj?.eventSetting);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IdTitleNode, IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { CompanyMenuItem, ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { EventTypeNode, IEventTypeNode } from \"../eventType/eventTypeNode\";\r\nimport { IdColorTitle, IIdColorTitle } from \"ui/Scripts/source/models/common/idColorTitle\";\r\nimport { EventSettingSimple, IEventSettingSimple } from \"ui/Scripts/source/models/eventSettings/eventSettingSimple\";\r\n\r\nexport interface IEventEditNew {\r\n urgencyClassId: string;\r\n companies: ICompanyMenuItem[];\r\n units: IIdTitleNode[];\r\n urgencyClasses: IIdColorTitle[];\r\n eventTypeNodes: IEventTypeNode[];\r\n eventTypeBNodes: IEventTypeNode[];\r\n eventTypeCNodes: IEventTypeNode[];\r\n eventSetting: IEventSettingSimple;\r\n}\r\n\r\nexport class EventEditNew implements IEventEditNew {\r\n urgencyClassId: string;\r\n companies: ICompanyMenuItem[];\r\n units: IdTitleNode[];\r\n urgencyClasses: IdColorTitle[];\r\n eventTypeNodes: EventTypeNode[];\r\n eventTypeBNodes: EventTypeNode[];\r\n eventTypeCNodes: EventTypeNode[];\r\n eventSetting: EventSettingSimple;\r\n\r\n constructor();\r\n constructor(obj: IEventEditNew);\r\n constructor(obj?: any) {\r\n this.urgencyClassId = obj && obj.urgencyClassId || \"\";\r\n this.companies = Base.getTypedArray(obj ? obj.companies : null, CompanyMenuItem);\r\n this.units = Base.getTypedArray(obj ? obj.units : null, IdTitleNode);\r\n this.urgencyClasses = Base.getTypedArray(obj ? obj.urgencyClasses : null, IdColorTitle);\r\n this.eventTypeNodes = Base.getTypedArray(obj ? obj.eventTypeNodes : null, EventTypeNode);\r\n this.eventTypeBNodes = Base.getTypedArray(obj ? obj.eventTypeBNodes : null, EventTypeNode);\r\n this.eventTypeCNodes = Base.getTypedArray(obj ? obj.eventTypeCNodes : null, EventTypeNode);\r\n this.eventSetting = new EventSettingSimple(obj?.eventSetting);\r\n }\r\n}","import { EnumHelper, EventState, EventUserState } from \"ui/Scripts/source/models/enums\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\nexport interface IEventListItem {\r\n id: string;\r\n companyId: string;\r\n createCompanyId: string;\r\n unitCode: string;\r\n urgencyClassCode: string;\r\n urgencyClassColor: string;\r\n code: string;\r\n name: string;\r\n date: number;\r\n description: string;\r\n observer: string;\r\n observerAction: string;\r\n observerActionInUse: boolean;\r\n state: EventState;\r\n userState: EventUserState;\r\n immediateAction: string;\r\n preventiveAction: string;\r\n rootCause: string;\r\n isRead: boolean;\r\n locked: boolean;\r\n imported: boolean;\r\n exported: boolean;\r\n removable: boolean;\r\n published: boolean;\r\n messageCount: number;\r\n createUser: IModifyUser;\r\n modifyUser: IModifyUser;\r\n handlers: IModifyUser[];\r\n eventTypes: string;\r\n\r\n stateStr: string;\r\n getModifyDate(): number;\r\n}\r\n\r\nexport class EventListItem implements IEventListItem {\r\n id: string;\r\n companyId: string;\r\n createCompanyId: string;\r\n unitCode: string;\r\n urgencyClassCode: string;\r\n urgencyClassColor: string;\r\n code: string;\r\n name: string;\r\n date: number;\r\n description: string;\r\n observer: string;\r\n observerAction: string;\r\n observerActionInUse: boolean;\r\n state: EventState;\r\n userState: EventUserState;\r\n immediateAction: string;\r\n preventiveAction: string;\r\n rootCause: string;\r\n isRead: boolean;\r\n locked: boolean;\r\n imported: boolean;\r\n exported: boolean;\r\n removable: boolean;\r\n published: boolean;\r\n messageCount: number;\r\n createUser: ModifyUser;\r\n modifyUser: ModifyUser;\r\n handlers: ModifyUser[];\r\n eventTypes: string;\r\n\r\n stateStr: string;\r\n\r\n constructor();\r\n constructor(obj: IEventListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.companyId = obj && obj.companyId || \"\";\r\n this.createCompanyId = obj && obj.createCompanyId || \"\";\r\n this.unitCode = obj && obj.unitCode || \"\";\r\n this.urgencyClassCode = obj && obj.urgencyClassCode || \"\";\r\n this.urgencyClassColor = obj && obj.urgencyClassColor || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.date = obj && obj.date || 0;\r\n this.description = obj && obj.description || \"\";\r\n this.observer = obj && obj.observer || \"\";\r\n this.observerAction = obj && obj.observerAction || \"\";\r\n this.observerActionInUse = obj && obj.observerActionInUse || false;\r\n this.state = obj && obj.state || EventState.Draft;\r\n this.userState = obj && obj.userState || EventUserState.NotHandler;\r\n this.immediateAction = obj && obj.immediateAction || \"\";\r\n this.preventiveAction = obj && obj.preventiveAction || \"\";\r\n this.rootCause = obj && obj.rootCause || \"\";\r\n this.isRead = obj && obj.isRead || false;\r\n this.locked = obj && obj.locked || false;\r\n this.imported = obj && obj.imported || false;\r\n this.exported = obj && obj.exported || false;\r\n this.removable = obj && obj.removable || false;\r\n this.published = obj && obj.published || false;\r\n this.messageCount = obj && obj.messageCount || 0;\r\n this.createUser = new ModifyUser(obj ? obj.createUser : null);\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n this.handlers = ModifyUser.sortModifyUsers(Base.getTypedArray(obj ? obj.handlers : null, ModifyUser));\r\n this.eventTypes = obj && obj.eventTypes || \"\";\r\n\r\n this.stateStr = EnumHelper.EventStateToStr(this.state);\r\n }\r\n\r\n getModifyDate(): number {\r\n return this.modifyUser?.date ?? 0;\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ListItems } from \"ui/Scripts/source/framework/listItems\";\r\nimport { EventListItem, IEventListItem } from \"./eventListItem\";\r\n\r\nexport interface IEventListItems extends ListItems {\r\n}\r\n\r\nexport class EventListItems extends ListItems implements IEventListItems {\r\n constructor();\r\n constructor(obj: IEventListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, EventListItem);\r\n }\r\n}","export interface IReportParameterValue {\r\n name: string;\r\n value: string;\r\n}\r\n\r\nexport class ReportParameterValue implements IReportParameterValue {\r\n name: string;\r\n value: string;\r\n\r\n constructor();\r\n constructor(obj: IReportParameterValue);\r\n constructor(obj?: any) {\r\n this.name = obj && obj.name || \"\";\r\n this.value = obj && obj.value || \"\";\r\n }\r\n\r\n static createReportParameterValue(name: string, value: string): ReportParameterValue {\r\n const result = new ReportParameterValue();\r\n result.name = name;\r\n result.value = value;\r\n return result;\r\n }\r\n}","import { ISavedListFilter, SavedListFilter } from \"../common/savedListFilter\";\r\n\r\nexport interface ISavedReport extends ISavedListFilter {\r\n reportId: string;\r\n reportFilter: any;\r\n showInFrontPage: boolean;\r\n}\r\n\r\nexport class SavedReport extends SavedListFilter implements ISavedReport {\r\n reportId: string;\r\n reportFilter: any;\r\n showInFrontPage: boolean;\r\n\r\n constructor();\r\n constructor(obj: ISavedReport);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.reportId = obj && obj.reportId || \"\";\r\n if (obj && obj.reportFilter) {\r\n this.reportFilter = obj.reportFilter;\r\n }\r\n this.showInFrontPage = obj && obj.showInFrontPage || false;\r\n }\r\n\r\n getHash(): string {\r\n return super.getHash() + \"#\" + this.reportId + \"#\" + JSON.stringify(this.reportFilter) + \"#\" + this.showInFrontPage.toString();\r\n }\r\n}","import React, { ReactNode } from \"react\";\r\nimport { ContentPagePanelType, FrontPagePanelSize } from \"ui/Scripts/source/models/enums\";\r\nimport { TaskDataRowCol } from \"ui/Scripts/source/models/task/taskDataRowCol\";\r\nimport { IPagePanel, PagePanel } from \"../common/pagePanel\";\r\nimport { IReportParameterValue, ReportParameterValue } from \"../report/reportParameterValue\";\r\nimport { ISavedReport, SavedReport } from \"../report/savedReport\";\r\nimport { IChartItem } from \"./chartItem\";\r\nimport { AppChartIcon } from \"source/components/framework/Icon/AppChartIcon\";\r\n\r\nexport interface ISavedChartPanel extends ISavedReport, IPagePanel {\r\n chartId: string;\r\n reportTitle: string;\r\n disabled: boolean; //True if saved chart is wrong locale compared to ui locale\r\n\r\n isNew(): boolean;\r\n getReportParameterValues(chartItem: IChartItem): IReportParameterValue[];\r\n}\r\n\r\nexport class SavedChartPanel extends SavedReport implements ISavedChartPanel {\r\n chartId: string;\r\n reportTitle: string;\r\n disabled: boolean;\r\n panelType: number;\r\n size: number;\r\n position: number;\r\n visible: boolean;\r\n\r\n constructor();\r\n constructor(obj: ISavedChartPanel);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.chartId = obj && obj.chartId || \"\";\r\n this.reportTitle = obj && obj.reportTitle || \"\";\r\n this.disabled = obj && obj.disabled || false;\r\n //IPagePanel\r\n this.panelType = obj && obj.panelType || 0;\r\n this.size = obj && obj.size || 0;\r\n this.position = obj && obj.position || 0;\r\n this.visible = obj && obj.visible || false;\r\n }\r\n\r\n getIconClass(): string {\r\n return \"chart\";\r\n }\r\n\r\n getIcon(): ReactNode {\r\n return React.createElement(AppChartIcon);\r\n }\r\n\r\n getTitle(): string {\r\n return this.reportTitle;\r\n }\r\n\r\n getId(): string {\r\n return this.id;\r\n }\r\n\r\n getDisabled(): boolean {\r\n return this.disabled;\r\n }\r\n\r\n getHash(): string {\r\n return super.getHash() + \"#\" + this.chartId + \"#\" + this.reportTitle + \"#\" + this.size.toString(10) + \"#\" + this.position.toString(10) + \"#\" + this.visible.toString();\r\n }\r\n\r\n isNew(): boolean {\r\n return !this.id;\r\n }\r\n\r\n getReportParameterValues(chartItem: IChartItem): IReportParameterValue[] {\r\n const result: IReportParameterValue[] = [];\r\n if (!this.reportFilter) return;\r\n for (const col of chartItem.taskDataRow.cols) {\r\n const typeCol = chartItem.taskType.formCols.find(i => i.field === col.field);\r\n if (!typeCol || !Object.prototype.hasOwnProperty.call(this.reportFilter, col.field)) continue;\r\n result.push(ReportParameterValue.createReportParameterValue(col.field, this.reportFilter[col.field]));\r\n }\r\n return result;\r\n }\r\n\r\n static GetReportFilter(chartItem: IChartItem): any {\r\n const result = {};\r\n for (const col of chartItem.taskDataRow.cols) {\r\n const typeCol = chartItem.taskType.formCols.find(i => i.field === col.field);\r\n if (!typeCol) continue;\r\n const defaultCol = TaskDataRowCol.getDefaultValueTaskDataRowCol(typeCol);\r\n result[col.field] = TaskDataRowCol.getTaskDataRowColDbValue(typeCol, defaultCol.valueStr, defaultCol.valueNbr);\r\n }\r\n return result;\r\n }\r\n\r\n static CreateSavedChartPanel(chartItem: IChartItem, position: number, applicationPermissionType: number): ISavedChartPanel {\r\n const result = new SavedChartPanel();\r\n result.id = chartItem.id;\r\n result.reportId = chartItem.reportName;\r\n result.reportTitle = chartItem.reportDescription;\r\n result.chartId = chartItem.chartNames[0];\r\n result.panelType = ContentPagePanelType.Chart;\r\n result.size = FrontPagePanelSize.OneXOne;\r\n result.position = position;\r\n result.visible = false;\r\n result.reportFilter = SavedChartPanel.GetReportFilter(chartItem);\r\n result.applicationPermissionType = applicationPermissionType;\r\n result.generalFilter = {};\r\n result.sortColumn = \"\";\r\n result.sortOrderIsAsc = true;\r\n return result;\r\n }\r\n\r\n static getDashBoardPanels(panels: IPagePanel[], savedChartPanels: ISavedChartPanel[], chartItems: IChartItem[], applicationPermissionType: number): IPagePanel[] {\r\n const result = panels ?? [];\r\n const chartPanels = savedChartPanels ?? [];\r\n const newChartPanels: ISavedChartPanel[] = [];\r\n //Set chart panel titles and add missing chart panels\r\n for (const chartItem of chartItems) {\r\n let chartPanel = chartPanels.find(i => i.reportId === chartItem.reportName);\r\n if (chartPanel) {\r\n chartPanel.reportTitle = chartItem.reportDescription;\r\n } else {\r\n chartPanel = SavedChartPanel.CreateSavedChartPanel(chartItem, result.length, applicationPermissionType);\r\n }\r\n newChartPanels.push(chartPanel);\r\n }\r\n return PagePanel.sortPagePanels(result.concat(newChartPanels));\r\n };\r\n}","import { ContentPagePanelType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IPagePanel, PagePanel } from \"../common/pagePanel\";\r\n\r\nexport class RecordPagePanel extends PagePanel implements IPagePanel {\r\n getTitle(): string {\r\n switch (this.panelType) {\r\n case ContentPagePanelType.Statistics:\r\n return Translations.Resources;\r\n case ContentPagePanelType.MyFiltersAndReports:\r\n return Translations.MyFiltersAndReports;\r\n case ContentPagePanelType.SharedFiltersAndReports:\r\n return Translations.SharedFiltersAndReports;\r\n case ContentPagePanelType.StandardFiltersAndReports:\r\n return Translations.StandardFiltersAndReports;\r\n default:\r\n return \"\";\r\n }\r\n }\r\n}","import { IdTitle, IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { ApplicationPermissionType } from \"ui/Scripts/source/models/enums\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\nexport interface ISavedPrint extends IIdTitle {\r\n applicationPermissionType: ApplicationPermissionType;\r\n defaultPrint: boolean;\r\n fields: string[];\r\n spacer: boolean;\r\n\r\n getHash(): string;\r\n isNew(): boolean;\r\n}\r\n\r\nexport class SavedPrint extends IdTitle implements ISavedPrint {\r\n applicationPermissionType: number;\r\n defaultPrint: boolean;\r\n fields: string[];\r\n spacer: boolean;\r\n\r\n constructor();\r\n constructor(obj: ISavedPrint);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.applicationPermissionType = obj && obj.applicationPermissionType || ApplicationPermissionType.Message;\r\n this.defaultPrint = obj && obj.defaultPrint || false;\r\n this.fields = obj && obj.fields || [];\r\n this.spacer = obj && obj.spacer || false;\r\n }\r\n\r\n getHash(): string {\r\n return super.getHash() + \"#\" + this.applicationPermissionType.toString(10) + \"#\" + this.defaultPrint.toString() + \"#\" + JSON.stringify(this.fields);\r\n }\r\n\r\n isNew(): boolean {\r\n return !this.id;\r\n }\r\n \r\n static createSpacer(): ISavedPrint {\r\n const result = new SavedPrint();\r\n result.id = Base.getGuid();\r\n result.spacer = true;\r\n return result;\r\n }\r\n\r\n static sortSavedPrints(items: ISavedPrint[]): ISavedPrint[] {\r\n if (!items && items.length < 2) return items;\r\n return items.sort((a: ISavedPrint, b: ISavedPrint) => {\r\n if (!a || !b) return 0;\r\n if (a.defaultPrint !== b.defaultPrint) return Base.boolCompare(a.defaultPrint, b.defaultPrint);\r\n return Base.strCompare(a.getTitle(), b.getTitle());\r\n });\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IdTitle, IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { IIdColorTitle, IdColorTitle } from \"ui/Scripts/source/models/common/idColorTitle\";\r\nimport { IdTitleNode, IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { INumberTitle, NumberTitle } from \"ui/Scripts/source/models/common/numberTitle\";\r\nimport { CodeTitle, ICodeTitle } from \"../common/codeTitle\";\r\nimport { IPagePanel } from \"../common/pagePanel\";\r\nimport { RecordPagePanel } from \"../record/recordPagePanel\";\r\nimport { ISavedPrint, SavedPrint } from \"../common/savedPrint\";\r\n\r\nexport interface IEventPageData {\r\n canEditModuleProperties: boolean;\r\n canEditAllModuleProperties: boolean;\r\n hasExplicitEventPartners: boolean;\r\n panels: IPagePanel[];\r\n units: IIdTitleNode[];\r\n states: INumberTitle[];\r\n urgencyClasses: IIdColorTitle[];\r\n partners: IIdTitle[];\r\n creators: ICodeTitle[];\r\n handlers: ICodeTitle[];\r\n observers: ICodeTitle[];\r\n eventTypes: IIdTitleNode[];\r\n eventTypeBs: IIdTitleNode[];\r\n eventTypeCs: IIdTitleNode[];\r\n userPrints: ISavedPrint[];\r\n printableFields: IIdTitleNode[];\r\n}\r\n\r\nexport class EventPageData implements IEventPageData {\r\n canEditModuleProperties: boolean;\r\n canEditAllModuleProperties: boolean;\r\n hasExplicitEventPartners: boolean;\r\n panels: RecordPagePanel[];\r\n units: IdTitleNode[];\r\n states: NumberTitle[];\r\n urgencyClasses: IdColorTitle[];\r\n partners: IdTitle[];\r\n creators: CodeTitle[];\r\n handlers: CodeTitle[];\r\n observers: CodeTitle[];\r\n eventTypes: IdTitleNode[];\r\n eventTypeBs: IdTitleNode[];\r\n eventTypeCs: IdTitleNode[];\r\n userPrints: SavedPrint[];\r\n printableFields: IdTitleNode[];\r\n\r\n constructor();\r\n constructor(obj: IEventPageData);\r\n constructor(obj?: any) {\r\n this.canEditModuleProperties = obj && obj.canEditModuleProperties || false;\r\n this.canEditAllModuleProperties = obj && obj.canEditAllModuleProperties || false;\r\n this.hasExplicitEventPartners = obj && obj.hasExplicitEventPartners || false;\r\n this.panels = Base.getTypedArray(obj ? obj.panels : null, RecordPagePanel);\r\n this.units = Base.getTypedArray(obj ? obj.units : null, IdTitleNode);\r\n this.states = Base.getTypedArray(obj ? obj.states : null, NumberTitle);\r\n this.urgencyClasses = Base.getTypedArray(obj ? obj.urgencyClasses : null, IdColorTitle);\r\n this.partners = Base.getTypedArray(obj ? obj.partners : null, IdTitle);\r\n this.creators = Base.getTypedArray(obj ? obj.creators : null, CodeTitle);\r\n this.handlers = Base.getTypedArray(obj ? obj.handlers : null, CodeTitle);\r\n this.observers = Base.getTypedArray(obj ? obj.observers : null, CodeTitle);\r\n this.eventTypes = Base.getTypedArray(obj ? obj.eventTypes : null, IdTitleNode);\r\n this.eventTypeBs = Base.getTypedArray(obj ? obj.eventTypeBs : null, IdTitleNode);\r\n this.eventTypeCs = Base.getTypedArray(obj ? obj.eventTypeCs : null, IdTitleNode);\r\n this.userPrints = SavedPrint.sortSavedPrints(Base.getTypedArray(obj ? obj.userPrints : null, SavedPrint));\r\n this.printableFields = Base.getTypedArray(obj ? obj.printableFields : null, IdTitleNode);\r\n }\r\n}\r\n","import { ContentPagePanelType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IPagePanel, PagePanel } from \"../common/pagePanel\";\r\n\r\nexport class EventPagePanel extends PagePanel implements IPagePanel {\r\n getTitle(): string {\r\n switch (this.panelType) {\r\n case ContentPagePanelType.Statistics:\r\n return Translations.Events;\r\n case ContentPagePanelType.MyFiltersAndReports:\r\n return Translations.MyFiltersAndReports;\r\n case ContentPagePanelType.SharedFiltersAndReports:\r\n return Translations.SharedFiltersAndReports;\r\n case ContentPagePanelType.StandardFiltersAndReports:\r\n return Translations.StandardFiltersAndReports;\r\n default:\r\n return \"\";\r\n }\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IPagePanel } from \"../common/pagePanel\";\r\nimport { CompanyMenuItem, ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { ISavedListFilter, SavedListFilter } from \"../common/savedListFilter\";\r\nimport { ISavedChartPanel, SavedChartPanel } from \"../chart/savedChartPanel\";\r\nimport { EventPageData, IEventPageData } from \"./eventPageData\";\r\nimport { EventListItems, IEventListItems } from \"./eventListItems\";\r\nimport { EventPagePanel } from \"./eventPagePanel\";\r\n\r\nexport interface IEventPage extends IEventPageData {\r\n validAdditionalPermissions: number[];\r\n panels: IPagePanel[];\r\n chartPanels: ISavedChartPanel[];\r\n companies: ICompanyMenuItem[];\r\n list: IEventListItems;\r\n companyFilters: ISavedListFilter[];\r\n userFilters: ISavedListFilter[];\r\n showDocumentPreview: boolean;\r\n}\r\n\r\nexport class EventPage extends EventPageData implements IEventPage {\r\n validAdditionalPermissions: number[];\r\n panels: EventPagePanel[];\r\n chartPanels: SavedChartPanel[];\r\n companies: CompanyMenuItem[];\r\n list: EventListItems;\r\n companyFilters: SavedListFilter[];\r\n userFilters: SavedListFilter[];\r\n showDocumentPreview: boolean;\r\n\r\n constructor();\r\n constructor(obj: IEventPage);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.validAdditionalPermissions = obj && obj.validAdditionalPermissions || [];\r\n this.panels = Base.getTypedArray(obj ? obj.panels : null, EventPagePanel);\r\n this.chartPanels = Base.getTypedArray(obj ? obj.chartPanels : null, SavedChartPanel);\r\n this.companies = Base.getTypedArray(obj ? obj.companies : null, CompanyMenuItem);\r\n this.list = new EventListItems(obj && obj.list || null);\r\n this.companyFilters = Base.getTypedArray(obj ? obj.companyFilters : null, SavedListFilter);\r\n this.userFilters = Base.getTypedArray(obj ? obj.userFilters : null, SavedListFilter);\r\n this.showDocumentPreview = obj && obj.showDocumentPreview || false;\r\n }\r\n}\r\n","import { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IEventPartnerEditItem extends IEditItem {\r\n partnerCompanyId: string;\r\n partnerCompanyCode: string;\r\n partnerCompanyName: string;\r\n partnerCompanyLogo: string;\r\n unitId: string;\r\n unitCode: string;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class EventPartnerEditItem extends EditItem implements IEventPartnerEditItem {\r\n partnerCompanyId: string;\r\n partnerCompanyCode: string;\r\n partnerCompanyName: string;\r\n partnerCompanyLogo: string;\r\n unitId: string;\r\n unitCode: string;\r\n modifyUser: IModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IEventPartnerEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.partnerCompanyId = obj && obj.partnerCompanyId || \"\";\r\n this.partnerCompanyCode = obj && obj.partnerCompanyCode || \"\";\r\n this.partnerCompanyName = obj && obj.partnerCompanyName || \"\";\r\n this.partnerCompanyLogo = obj && obj.partnerCompanyLogo || \"\";\r\n this.unitId = obj && obj.unitId || \"\";\r\n this.unitCode = obj && obj.unitCode || \"\";\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { Base } from \"../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/framework/base\";\r\nimport { IdTitleNode, IIdTitleNode } from \"../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/idTitleNode\";\r\nimport { EventPartnerEditItem, IEventPartnerEditItem } from \"./eventPartnerEditItem\";\r\n\r\nexport interface IEventPartnerEdit {\r\n units: IIdTitleNode[];\r\n eventPartner: IEventPartnerEditItem;\r\n}\r\n\r\nexport class EventPartnerEdit implements IEventPartnerEdit {\r\n units: IdTitleNode[];\r\n eventPartner: EventPartnerEditItem;\r\n\r\n constructor();\r\n constructor(obj: IEventPartnerEdit);\r\n constructor(obj?: any) {\r\n this.eventPartner = new EventPartnerEditItem(obj ? obj.eventPartner : null);\r\n this.units = Base.getTypedArray(obj ? obj.units : null, IdTitleNode);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { CompanyListItem } from \"../company/companyListItem\";\r\n\r\nexport interface IEventPartnerListItem {\r\n id: string;\r\n partnerCompanyId: string;\r\n code: string;\r\n name: string;\r\n logo: string;\r\n activeState: number;\r\n unitId: string;\r\n unit: string;\r\n\r\n activeStateStr: string;\r\n}\r\n\r\nexport class EventPartnerListItem implements IEventPartnerListItem {\r\n id: string;\r\n partnerCompanyId: string;\r\n code: string;\r\n name: string;\r\n logo: string;\r\n activeState: number;\r\n unitId: string;\r\n unit: string;\r\n\r\n activeStateStr: string;\r\n\r\n constructor();\r\n constructor(obj: IEventPartnerListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.partnerCompanyId = obj && obj.partnerCompanyId || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.logo = obj && obj.logo || \"\";\r\n this.activeState = obj && obj.activeState || 0;\r\n this.unitId = obj && obj.unitId || \"\";\r\n this.unit = obj && obj.unit || \"\";\r\n\r\n this.activeStateStr = CompanyListItem.getActiveStateToStr(this.activeState);\r\n }\r\n\r\n static sortCompanyListItems(items: IEventPartnerListItem[], column: string, asc: boolean): IEventPartnerListItem[] {\r\n if (!items && items.length < 2) return items;\r\n if (column === \"name\") {\r\n return items.sort((a: IEventPartnerListItem, b: IEventPartnerListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.name, b.name)); });\r\n } else if (column === \"activeState\") {\r\n return items.sort((a: IEventPartnerListItem, b: IEventPartnerListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.activeState, b.activeState)); });\r\n } else if (column === \"unit\") {\r\n return items.sort((a: IEventPartnerListItem, b: IEventPartnerListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.unit, b.unit)); });\r\n } else {\r\n return items.sort((a: IEventPartnerListItem, b: IEventPartnerListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.code, b.code)); });\r\n }\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IListItems, ListItems } from \"ui/Scripts/source/framework/listItems\";\r\nimport { EventPartnerListItem, IEventPartnerListItem } from \"./eventPartnerListItem\";\r\n\r\nexport interface IEventPartnerListItems extends IListItems {\r\n defaultUnitId: string;\r\n}\r\n\r\nexport class EventPartnerListItems extends ListItems implements IEventPartnerListItems {\r\n defaultUnitId: string;\r\n\r\n constructor();\r\n constructor(obj: IEventPartnerListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.defaultUnitId = obj && obj.defaultUnitId || \"\";\r\n this.items = Base.getTypedArray(obj ? obj.items : null, EventPartnerListItem);\r\n }\r\n}","import { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IEventTypeEditItem extends IEditItem {\r\n parentId: string;\r\n code: string;\r\n comment: string;\r\n eventTypeUsageType: number;\r\n activeState: number;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class EventTypeEditItem extends EditItem implements IEventTypeEditItem {\r\n parentId: string;\r\n code: string;\r\n comment: string;\r\n eventTypeUsageType: number;\r\n activeState: number;\r\n modifyUser: IModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IEventTypeEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.parentId = obj && obj.parentId || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.eventTypeUsageType = obj && obj.eventTypeUsageType || 0;\r\n this.activeState = obj && obj.activeState || 0;\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { EventTypeEditItem, IEventTypeEditItem } from \"./eventTypeEditItem\";\r\n\r\nexport interface IEventTypeEdit {\r\n eventType: IEventTypeEditItem;\r\n}\r\n\r\nexport class EventTypeEdit implements IEventTypeEdit {\r\n eventType: EventTypeEditItem;\r\n\r\n constructor();\r\n constructor(obj: IEventTypeEdit);\r\n constructor(obj?: any) {\r\n this.eventType = new EventTypeEditItem(obj ? obj.eventType : null);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { EventTypeNode, IEventTypeNode } from \"./eventTypeNode\";\r\n\r\nexport interface IEventTypeNodes {\r\n items: IEventTypeNode[];\r\n}\r\n\r\nexport class EventTypeNodes implements IEventTypeNodes {\r\n items: EventTypeNode[];\r\n\r\n constructor();\r\n constructor(obj: IEventTypeNode);\r\n constructor(obj?: any) {\r\n this.items = Base.getTypedArray(obj.items, EventTypeNode);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { FrontToDoItem, IFrontToDoItem } from \"./frontToDoItem\";\r\n\r\nexport interface IFrontToDoItems {\r\n items: IFrontToDoItem[];\r\n}\r\n\r\nexport class FrontToDoItems implements IFrontToDoItems {\r\n items: FrontToDoItem[];\r\n\r\n constructor();\r\n constructor(obj: IFrontToDoItems);\r\n constructor(obj?: any) {\r\n this.items = Base.getTypedArray(obj ? obj.items : null, FrontToDoItem);\r\n }\r\n}","export interface IReportChartDataSet {\r\n label: string;\r\n data: number[];\r\n}\r\n\r\nexport class ReportChartDataSet implements IReportChartDataSet {\r\n label: string;\r\n data: number[];\r\n\r\n constructor();\r\n constructor(obj: IReportChartDataSet);\r\n constructor(obj?: any) {\r\n this.label = obj && obj.label || \"\";\r\n this.data = obj && obj.data || [];\r\n }\r\n\r\n static createReportChartDataSet(label: string, data: number[]): ReportChartDataSet {\r\n const result = new ReportChartDataSet();\r\n result.label = label;\r\n result.data = data;\r\n return result;\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IReportChartDataSet, ReportChartDataSet } from \"./reportChartDataSet\";\r\n\r\nexport interface IReportChartData {\r\n dataId: string;\r\n title: string;\r\n chartType: number;\r\n labels: string[];\r\n dataSets: IReportChartDataSet[];\r\n}\r\n\r\nexport class ReportChartData implements IReportChartData {\r\n dataId: string;\r\n title: string;\r\n chartType: number;\r\n labels: string[];\r\n dataSets: ReportChartDataSet[];\r\n\r\n constructor();\r\n constructor(obj: IReportChartData);\r\n constructor(obj?: any) {\r\n this.dataId = obj && obj.dataId || \"\";\r\n this.title = obj && obj.title || \"\";\r\n this.chartType = obj && obj.chartType || 0;\r\n this.labels = obj && obj.labels || [];\r\n this.dataSets = Base.getTypedArray(obj ? obj.dataSets : null, ReportChartDataSet);\r\n }\r\n}","import { IEditItem, EditItem } from \"./editItem\";\r\n\r\nexport interface IEditItemLockable extends IEditItem {\r\n lockedDate: number;\r\n lockedUserCode: string;\r\n lockedUserName: string;\r\n lockedUserPicture: string;\r\n\r\n isLockedToUser(userCode: string): boolean;\r\n isLockedToOtherUser(userCode: string): boolean;\r\n}\r\n\r\nexport class EditItemLockable extends EditItem implements IEditItemLockable {\r\n lockedDate: number;\r\n lockedUserCode: string;\r\n lockedUserName: string;\r\n lockedUserPicture: string;\r\n\r\n constructor();\r\n constructor(obj: IEditItemLockable);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.lockedDate = obj && obj.lockedDate || null;\r\n this.lockedUserCode = obj && obj.lockedUserCode || \"\";\r\n this.lockedUserName = obj && obj.lockedUserName || \"\";\r\n this.lockedUserPicture = obj && obj.lockedUserPicture || \"\";\r\n }\r\n\r\n isLockedToUser(userCode: string): boolean {\r\n return !!this.lockedDate && !!this.lockedUserCode && userCode.equalIgnoreCase(this.lockedUserCode);\r\n }\r\n\r\n isLockedToOtherUser(userCode: string): boolean {\r\n return !!this.lockedDate && !!this.lockedUserCode && !userCode.equalIgnoreCase(this.lockedUserCode);\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { IEditItemLockable, EditItemLockable } from \"../common/editItemLockable\";\r\nimport { IFileAttachment, FileAttachment } from \"../common/fileAttachment\";\r\nimport { ITaskDataRowCol, TaskDataRowCol, SaveTaskDataRowCol } from \"./taskDataRowCol\";\r\nimport { ITaskEditTypeItem } from \"./taskEditTypeItem\";\r\nimport { ITaskTypeCol, TaskTypeCol, modifyDateField, modifyUserNameField } from \"./taskTypeCol\";\r\n\r\nexport interface ITaskDataRow extends IEditItemLockable {\r\n modifyDate: number;\r\n modifyUserCode: string;\r\n modifyUserName: string;\r\n modifyUserPicture: string;\r\n state: number;\r\n hasAttachments: boolean;\r\n cols: ITaskDataRowCol[];\r\n attachments: IFileAttachment[];\r\n\r\n getHash(): string;\r\n initializeCols(taskType: ITaskEditTypeItem);\r\n initializeToTaskType(taskType: ITaskEditTypeItem, dataCols: ITaskDataRowCol[]);\r\n hasDefaultValues(taskType: ITaskEditTypeItem): boolean;\r\n matchesToFilter(lowFilter: string, taskType: ITaskEditTypeItem): boolean;\r\n getTaskDataRowColUiValue(field: string, taskType: ITaskEditTypeItem): string;\r\n getTaskDataRowColListUiValue(field: string, taskType: ITaskEditTypeItem): string;\r\n}\r\n\r\nexport class TaskDataRow extends EditItemLockable implements ITaskDataRow {\r\n modifyDate: number;\r\n modifyUserCode: string;\r\n modifyUserName: string;\r\n modifyUserPicture: string;\r\n state: number;\r\n hasAttachments: boolean;\r\n cols: TaskDataRowCol[];\r\n attachments: FileAttachment[];\r\n\r\n constructor();\r\n constructor(obj: ITaskDataRow);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.modifyDate = obj && obj.modifyDate || 0;\r\n this.modifyUserCode = obj && obj.modifyUserCode || \"\";\r\n this.modifyUserName = obj && obj.modifyUserName || \"\";\r\n this.modifyUserPicture = obj && obj.modifyUserPicture || \"\";\r\n this.state = obj && obj.state || 0;\r\n this.hasAttachments = obj && obj.hasAttachments || false;\r\n this.cols = Base.getTypedArray(obj ? obj.cols : null, TaskDataRowCol);\r\n this.attachments = Base.getTypedArray(obj ? obj.attachments : null, FileAttachment);\r\n }\r\n\r\n initializeCols(taskType: ITaskEditTypeItem) {\r\n this.cols = TaskDataRowCol.initializeValuesByType(taskType.formCols, this.cols);\r\n }\r\n\r\n initializeToTaskType(taskType: ITaskEditTypeItem, dataCols: ITaskDataRowCol[] = []) {\r\n if (Base.isNullOrUndefined(taskType)) return;\r\n this.cols = TaskDataRowCol.initializeValuesByType(taskType.formCols, dataCols);\r\n }\r\n\r\n hasDefaultValues(taskType: ITaskEditTypeItem): boolean {\r\n if (Base.isNullOrUndefined(taskType)) return true;\r\n return TaskDataRowCol.hasDefaultValues(taskType.formCols, this.cols);\r\n }\r\n\r\n matchesToFilter(lowFilter: string, taskType: ITaskEditTypeItem): boolean {\r\n const lineCols = taskType.lineCols.filter(i => i.isSaveDataType() && i.isSavedTaskDataField());\r\n const formCols = taskType.formCols.filter(i => i.isSaveDataType() && i.isSavedTaskDataField());\r\n for (const lineCol of lineCols) {\r\n const formIndex = formCols.findIndex(j => j.field === lineCol.field);\r\n if (formIndex < 0 || formIndex > this.cols.length - 1) {\r\n continue;\r\n }\r\n const dataIndex = this.cols.findIndex(i => i.field === lineCol.field);\r\n if (dataIndex < 0 || dataIndex > this.cols.length - 1) {\r\n continue;\r\n }\r\n if (this.cols[dataIndex].matchesToFilter(lowFilter, formCols[formIndex], this.modifyUserName, this.modifyDate)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n getTaskDataRowColUiValue(field: string, taskType: ITaskEditTypeItem): string {\r\n const formIndex = taskType.formCols.findIndex(i => i.field === field);\r\n if (formIndex < 0 || formIndex > this.cols.length - 1) return \"\";\r\n const dataIndex = this.cols.findIndex(i => i.field === field);\r\n if (dataIndex < 0 || dataIndex > this.cols.length - 1) return \"\";\r\n const col = this.cols[dataIndex];\r\n return TaskDataRowCol.getTaskDataRowColUiValue(taskType.formCols[formIndex], col.valueStr, col.valueNbr);\r\n }\r\n\r\n getTaskDataRowColListUiValue(field: string, taskType: ITaskEditTypeItem): string {\r\n if (field.equalIgnoreCase(modifyUserNameField)) {\r\n return this.modifyUserName;\r\n }\r\n if (field.equalIgnoreCase(modifyDateField)) {\r\n return Base.timeToDateTimeStr(this.modifyDate);\r\n }\r\n const formIndex = taskType.formCols.findIndex(i => i.field === field);\r\n if (formIndex < 0 || formIndex > taskType.formCols.length - 1) return \"\";\r\n const dataIndex = this.cols.findIndex(i => i.field === field);\r\n if (dataIndex < 0 || dataIndex > this.cols.length - 1) return \"\";\r\n return this.cols[dataIndex].getTaskDataRowColListUiValue(taskType.formCols[formIndex], this.modifyUserName, this.modifyDate);\r\n }\r\n\r\n getHash(): string {\r\n let result = super.getHash();\r\n for (const col of this.cols) {\r\n result = result + \"##\" + col.getHash();\r\n }\r\n return result;\r\n }\r\n\r\n static getHash(items: ITaskDataRow[]): string {\r\n if (!items || items.length < 1) return \"\";\r\n return Base.joinSuffix(items.map(i => i.getHash()), \"#\");\r\n }\r\n\r\n static sortTaskDataRows(rows: ITaskDataRow[], taskType: ITaskEditTypeItem) {\r\n if (Base.isNullOrUndefined(rows) || rows.length < 2 || !taskType || taskType.lineCols.length < 1) return;\r\n const formCols = taskType.formCols.filter(i => i.isSaveDataType() && i.isSavedTaskDataField());\r\n const modifyUserNameIndex = formCols.length;\r\n const modifyUserNameTaskTypeCol = new TaskTypeCol();\r\n modifyUserNameTaskTypeCol.field = modifyUserNameField;\r\n formCols.push(modifyUserNameTaskTypeCol);\r\n const modifyDateIndex = formCols.length;\r\n const modifyDateTaskTypeCol = new TaskTypeCol();\r\n modifyDateTaskTypeCol.field = modifyDateField;\r\n formCols.push(modifyDateTaskTypeCol);\r\n const lineCols = taskType.lineCols.filter(i => i.isSaveDataType());\r\n const dataColIndexes: number[] = [];\r\n for (let i = 0; i < lineCols.length; i++) {\r\n dataColIndexes[i] = formCols.findIndex(j => j.field.equalIgnoreCase(lineCols[i].field));\r\n }\r\n const sortFunction: (a: ITaskDataRow, b: ITaskDataRow) => number =\r\n (a: ITaskDataRow, b: ITaskDataRow) => {\r\n for (let i = 0; i < lineCols.length; i++) {\r\n if (!lineCols[i].defaultSortField) continue;\r\n let result = 0;\r\n const formColIndex = dataColIndexes[i];\r\n if (formColIndex === modifyUserNameIndex) {\r\n result = TaskDataRowCol.strCompare(a.modifyUserName, b.modifyUserName, lineCols[i].defaultSortOrderAsc);\r\n } else if (formColIndex === modifyDateIndex) {\r\n result = TaskDataRowCol.numCompare(a.modifyDate, b.modifyDate, lineCols[i].defaultSortOrderAsc);\r\n } else {\r\n if (formColIndex < 0 || a.cols.length <= formColIndex || b.cols.length <= formColIndex) continue;\r\n result = TaskDataRowCol.compareTaskDataRowCols(a.cols[formColIndex], b.cols[formColIndex], formCols[formColIndex], lineCols[i].defaultSortOrderAsc);\r\n }\r\n if (result !== 0) return result;\r\n }\r\n return 0;\r\n };\r\n rows.sort(sortFunction);\r\n }\r\n \r\n static sortTaskDataRowsByColumn(rows: ITaskDataRow[], taskType: ITaskEditTypeItem, column: string, asc: boolean) {\r\n if (Base.isNullOrUndefined(rows) || rows.length < 2 || !taskType || taskType.lineCols.length < 1) return;\r\n const lineCols = taskType.lineCols.filter(i => i.isSaveDataType() && i.isSavedTaskDataField());\r\n const formCols = taskType.formCols.filter(i => i.isSaveDataType() && i.isSavedTaskDataField());\r\n const dataColIndexes: number[] = [];\r\n for (let i = 0; i < lineCols.length; i++) {\r\n dataColIndexes[i] = formCols.findIndex(j => j.field === lineCols[i].field);\r\n }\r\n const sortFunction: (a: ITaskDataRow, b: ITaskDataRow) => number =\r\n (a: ITaskDataRow, b: ITaskDataRow) => {\r\n for (let i = 0; i < lineCols.length; i++) {\r\n const formColIndex = dataColIndexes[i];\r\n if (formColIndex < 0 || a.cols.length <= formColIndex || b.cols.length <= formColIndex || lineCols[i].field !== column) continue;\r\n const result = TaskDataRowCol.compareTaskDataRowCols(a.cols[formColIndex], b.cols[formColIndex], formCols[formColIndex], asc);\r\n if (result !== 0) return result;\r\n }\r\n return 0;\r\n };\r\n rows.sort(sortFunction);\r\n }\r\n \r\n static createTaskDataRow(cols: ITaskDataRowCol[], attachments: IFileAttachment[]): TaskDataRow {\r\n const result = new TaskDataRow();\r\n result.id = Base.getGuid();\r\n result.cols = cols.slice(0);\r\n result.attachments = attachments.slice(0);\r\n return result;\r\n }\r\n\r\n static getDynamicDataRowsFromJsonTaskDataRows(rows: ITaskDataRow[], typeCols: ITaskTypeCol[]): any[] {\r\n const result: any[] = [];\r\n for (const row of rows) {\r\n const resultRow: any = {};\r\n for (const col of row.cols) {\r\n const typeCol = typeCols.find(i => i.field === col.field);\r\n if (!typeCol) continue;\r\n resultRow[typeCol.field] = TaskDataRowCol.getTaskDataRowColDbValue(typeCol, col.valueStr, col.valueNbr);\r\n }\r\n result.push(resultRow);\r\n }\r\n return result;\r\n }\r\n}\r\n\r\nexport class SaveTaskDataRow {\r\n id: string;\r\n rowId: string;\r\n cols: SaveTaskDataRowCol[];\r\n\r\n static createSaveTaskDataRow(formCols: ITaskTypeCol[], taskDataRow: ITaskDataRow, cols: ITaskDataRowCol[]): SaveTaskDataRow {\r\n const result = new SaveTaskDataRow();\r\n result.id = taskDataRow.id || \"\";\r\n result.rowId = taskDataRow.rowId || \"\";\r\n result.cols = [];\r\n const savedCols = TaskDataRowCol.getToBeSavedTaskDataRowCols(formCols, cols || taskDataRow.cols || []);\r\n for (const col of savedCols) {\r\n result.cols.push(new SaveTaskDataRowCol(col));\r\n }\r\n return result;\r\n }\r\n}\r\n","export interface ITaskValidationRowCol {\r\n field: string;\r\n errors: string[];\r\n}\r\n\r\nexport class TaskValidationRowCol implements ITaskValidationRowCol {\r\n field: string;\r\n errors: string[];\r\n\r\n constructor();\r\n constructor(obj: ITaskValidationRowCol);\r\n constructor(obj?: any) {\r\n this.field = obj && obj.field || \"\";\r\n this.errors = obj && obj.errors || [];\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { ITaskValidationRowCol, TaskValidationRowCol } from \"./taskValidationRowCol\";\r\n\r\nexport interface ITaskValidationRow {\r\n id: string;\r\n cols: ITaskValidationRowCol[];\r\n}\r\n\r\nexport class TaskValidationRow implements ITaskValidationRow {\r\n id: string;\r\n cols: TaskValidationRowCol[];\r\n\r\n constructor();\r\n constructor(obj: TaskValidationRow);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.cols = Base.getTypedArray(obj ? obj.cols : null, TaskValidationRowCol);\r\n }\r\n}","export interface ITaskTypePage {\r\n title: string;\r\n headerClass: string;\r\n formHeight: number;\r\n showAttachments: boolean;\r\n attachmentsHeight: number;\r\n enableDialogButtons: boolean;\r\n fields: string[];\r\n\r\n getHash(): string;\r\n}\r\n\r\nexport class TaskTypePage implements ITaskTypePage {\r\n title: string;\r\n headerClass: string;\r\n formHeight: number;\r\n showAttachments: boolean;\r\n attachmentsHeight: number;\r\n enableDialogButtons: boolean;\r\n fields: string[];\r\n\r\n constructor();\r\n constructor(obj: ITaskTypePage);\r\n constructor(obj?: any) {\r\n this.title = obj && obj.title || \"\";\r\n this.headerClass = obj && obj.headerClass || \"\";\r\n this.formHeight = obj && obj.formHeight || 0;\r\n this.showAttachments = obj && obj.showAttachments || false;\r\n this.attachmentsHeight = obj && obj.attachmentsHeight || 0;\r\n this.enableDialogButtons = obj && obj.enableDialogButtons || false;\r\n this.fields = obj && obj.fields || [];\r\n }\r\n\r\n getHash(): string {\r\n return this.title + \"#\" + this.headerClass + \"#\" + this.fields.join(\";\");\r\n }\r\n}\r\n","import { Base } from \"../../framework/base\";\r\nimport { IGetTitle, IIdTitle } from \"../common/idTitle\";\r\nimport { TaskDataRowDataType, TaskRepetitionType, TaskVisibility } from \"../enums\";\r\nimport { Translations } from \"../translations\";\r\nimport { ITaskDataRow, TaskDataRow } from \"./taskDataRow\";\r\nimport { TaskDataRowCol } from \"./taskDataRowCol\";\r\nimport { ITaskTypeCol, TaskTypeCol } from \"./taskTypeCol\";\r\nimport { ITaskTypePage, TaskTypePage } from \"./taskTypePage\";\r\n\r\nexport interface ISchemaParseResult {\r\n taskType: ITaskEditTypeItem;\r\n headerDataRow: ITaskDataRow;\r\n formDataRow: ITaskDataRow;\r\n lineDataRow: ITaskDataRow;\r\n error: string;\r\n}\r\n\r\nexport interface ITaskEditTypeItem extends IGetTitle {\r\n id: string;\r\n code: string;\r\n taskRepetitionType: TaskRepetitionType;\r\n visibility: TaskVisibility;\r\n lineMultiselect: boolean;\r\n headerCols: ITaskTypeCol[];\r\n formCols: ITaskTypeCol[];\r\n lineCols: ITaskTypeCol[];\r\n pages: ITaskTypePage[];\r\n\r\n getHash(): string;\r\n hasFilterColumns(): boolean;\r\n isVisible(isPrivate: boolean): boolean;\r\n}\r\n\r\nexport class TaskEditTypeItem implements ITaskEditTypeItem {\r\n id: string;\r\n code: string;\r\n taskRepetitionType: TaskRepetitionType;\r\n visibility: TaskVisibility;\r\n lineMultiselect: boolean;\r\n headerCols: TaskTypeCol[];\r\n formCols: TaskTypeCol[];\r\n lineCols: TaskTypeCol[];\r\n pages: TaskTypePage[];\r\n\r\n constructor();\r\n constructor(obj: ITaskEditTypeItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.taskRepetitionType = obj && obj.taskRepetitionType || TaskRepetitionType.NotRepeated;\r\n this.visibility = obj && obj.visibility || TaskVisibility.PrivateAndPublic;\r\n this.lineMultiselect = obj && obj.lineMultiselect || false;\r\n this.headerCols = Base.getTypedArray(obj ? obj.headerCols : null, TaskTypeCol);\r\n this.formCols = Base.getTypedArray(obj ? obj.formCols : null, TaskTypeCol);\r\n this.lineCols = Base.getTypedArray(obj ? obj.lineCols : null, TaskTypeCol);\r\n this.pages = Base.getTypedArray(obj ? obj.pages : null, TaskTypePage);\r\n }\r\n\r\n getTitle(): string {\r\n return this.code;\r\n }\r\n\r\n getHash(): string {\r\n return this.id + \"#\" + this.code;\r\n }\r\n\r\n hasFilterColumns(): boolean {\r\n for (let i = 0; i < this.headerCols.length; i++) {\r\n if (this.headerCols[i].useInFilter) {\r\n return true;\r\n }\r\n }\r\n for (let i = 0; i < this.formCols.length; i++) {\r\n if (this.formCols[i].useInFilter) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n isVisible(isPrivate: boolean): boolean {\r\n return this.visibility === TaskVisibility.PrivateAndPublic || (isPrivate && this.visibility === TaskVisibility.Private || !isPrivate && this.visibility === TaskVisibility.Public);\r\n }\r\n\r\n private static createTaskTypeCol(key: string, value: any, dataType: TaskDataRowDataType, colIndex: number): TaskTypeCol {\r\n const result = new TaskTypeCol();\r\n result.dataType = dataType;\r\n result.field = key;\r\n result.title = !Base.isNullOrUndefined(value.title) ? (value.title as string) : \"\";\r\n result.required = !Base.isNullOrUndefined(value.required) && value.required;\r\n result.readOnly = !Base.isNullOrUndefined(value.readOnly) && value.readOnly;\r\n result.readOnlyExpression = !Base.isNullOrUndefined(value.readOnlyExpression) ? (value.readOnlyExpression as string) : \"\";\r\n result.class = !Base.isNullOrUndefined(value.class) ? (value.class as string) : \"\";\r\n result.unitTitle = !Base.isNullOrUndefined(value.unitTitle) ? (value.unitTitle as string) : \"\";\r\n result.expression = !Base.isNullOrUndefined(value.expression) ? (value.expression as string) : \"\";\r\n result.expressionFormat = !Base.isNullOrUndefined(value.expressionFormat) ? (value.expressionFormat as string) : \"\";\r\n result.expressionIndex = !Base.isNullOrUndefined(value.expressionIndex) ? (value.expressionIndex as number) : colIndex;\r\n result.defaultSortField = !Base.isNullOrUndefined(value.defaultSortField) && value.defaultSortField;\r\n result.defaultSortOrderAsc = !Base.isNullOrUndefined(value.defaultSortOrderAsc) && value.defaultSortOrderAsc;\r\n result.placeholder = !Base.isNullOrUndefined(value.placeholder) ? (value.placeholder as string) : \"\";\r\n result.defaultExpression = !Base.isNullOrUndefined(value.defaultExpression) ? (value.defaultExpression as string) : \"\";\r\n return result;\r\n }\r\n\r\n private static getTaskTypeCol(key: string, value: any, isLineSchema: boolean, colIndex: number) {\r\n if (!key) return null;\r\n if (Base.isNullOrUndefined(value)) return null;\r\n let result: TaskTypeCol;\r\n let type = !Base.isNullOrUndefined(value.type) ? (value.type as string) : \"\";\r\n type = !Base.isNullOrEmpty(type) ? type : \"\";\r\n if (type.equalIgnoreCase(\"date\") || type.equalIgnoreCase(\"time\")) {\r\n result = TaskEditTypeItem.createTaskTypeCol(key, value, TaskDataRowDataType.Date, colIndex);\r\n if (type.equalIgnoreCase(\"time\")) {\r\n result.dataType = TaskDataRowDataType.Time;\r\n }\r\n result.useInFilter = !Base.isNullOrUndefined(value.useInFilter) && value.useInFilter;\r\n result.defaultStr = !Base.isNullOrUndefined(value.default) ? (value.default as string) : \"\";\r\n return result;\r\n }\r\n if (type.equalIgnoreCase(\"integer\") || type.equalIgnoreCase(\"boolean\")) {\r\n result = TaskEditTypeItem.createTaskTypeCol(key, value, TaskDataRowDataType.Integer, colIndex);\r\n if (type.equalIgnoreCase(\"boolean\")) {\r\n result.dataType = TaskDataRowDataType.Boolean;\r\n result.defaultStr = !Base.isNullOrUndefined(value.default) ? (value.default as string) : \"\";\r\n } else {\r\n result.defaultNbr = !Base.isNullOrUndefined(value.default) ? (value.default as number) : null;\r\n }\r\n result.minimum = !Base.isNullOrUndefined(value.minimum) ? value.minimum as number : null;\r\n result.maximum = !Base.isNullOrUndefined(value.maximum) ? value.maximum as number : null;\r\n result.useInFilter = !Base.isNullOrUndefined(value.useInFilter) && value.useInFilter;\r\n return result;\r\n }\r\n if (type.equalIgnoreCase(\"string\")) {\r\n result = TaskEditTypeItem.createTaskTypeCol(key, value, TaskDataRowDataType.String, colIndex);\r\n result.defaultStr = !Base.isNullOrUndefined(value.default) ? (value.default as string) : \"\";\r\n result.maxLength = !Base.isNullOrUndefined(value.maxLength) ? value.maxLength as number : null;\r\n result.options = !Base.isNullOrUndefined(value.enum) ? value.enum as string[] : null;\r\n result.idOptions = !Base.isNullOrUndefined(value.idEnum) ? value.idEnum as IIdTitle[] : null;\r\n result.useInFilter = !Base.isNullOrUndefined(value.useInFilter) && value.useInFilter;\r\n return result;\r\n }\r\n if (type.equalIgnoreCase(\"number\") || type.equalIgnoreCase(\"timespan\")) {\r\n result = TaskEditTypeItem.createTaskTypeCol(key, value, TaskDataRowDataType.Number, colIndex);\r\n if (type.equalIgnoreCase(\"timespan\")) {\r\n result.dataType = TaskDataRowDataType.TimeSpan;\r\n }\r\n result.defaultNbr = !Base.isNullOrUndefined(value.default) ? (value.default as number) : null;\r\n result.minimum = !Base.isNullOrUndefined(value.minimum) ? value.minimum as number : null;\r\n result.maximum = !Base.isNullOrUndefined(value.maximum) ? value.maximum as number : null;\r\n result.decimals = !Base.isNullOrUndefined(value.decimals) ? value.decimals as number : 0;\r\n result.useInFilter = !Base.isNullOrUndefined(value.useInFilter) && value.useInFilter;\r\n return result;\r\n }\r\n if (!isLineSchema) {\r\n if (type.equalIgnoreCase(\"label\")) {\r\n return TaskEditTypeItem.createTaskTypeCol(key, value, TaskDataRowDataType.Label, colIndex);\r\n } else if (type.equalIgnoreCase(\"lineBreak\")) {\r\n return TaskEditTypeItem.createTaskTypeCol(key, value, TaskDataRowDataType.LineBreak, colIndex);\r\n }\r\n return null;\r\n }\r\n if (key.equalIgnoreCase(\"modifyUserName\")) {\r\n result = TaskEditTypeItem.createTaskTypeCol(key, value, TaskDataRowDataType.String, colIndex);\r\n return result;\r\n }\r\n return null;\r\n }\r\n\r\n private static getJsonTaskTypeColsToList(schema: any, isLineSchema: boolean): TaskTypeCol[] {\r\n const result: TaskTypeCol[] = [];\r\n for (const prop in schema) {\r\n if (Object.prototype.hasOwnProperty.call(schema, prop)) {\r\n const taskTypeCol = TaskEditTypeItem.getTaskTypeCol(prop, schema[prop], isLineSchema, result.length);\r\n if (!Base.isNullOrUndefined(taskTypeCol)) {\r\n result.push(taskTypeCol);\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n static getTaskTypeFromDataSchema(dataSchema: string, errorCallback: (error) => void): TaskEditTypeItem {\r\n const result = new TaskEditTypeItem();\r\n if (!dataSchema) return result;\r\n try {\r\n const obj = JSON.parse(dataSchema);\r\n if (Base.isNullOrUndefined(obj)) return result;\r\n if (Object.prototype.hasOwnProperty.call(obj, \"header\") && !Base.isNullOrUndefined(obj.header)) {\r\n result.headerCols = TaskEditTypeItem.getJsonTaskTypeColsToList(obj.header, false);\r\n }\r\n if (Object.prototype.hasOwnProperty.call(obj, \"form\") && !Base.isNullOrUndefined(obj.form)) {\r\n result.formCols = TaskEditTypeItem.getJsonTaskTypeColsToList(obj.form, false);\r\n }\r\n if (Object.prototype.hasOwnProperty.call(obj, \"line\") && !Base.isNullOrUndefined(obj.line)) {\r\n result.lineCols = TaskEditTypeItem.getJsonTaskTypeColsToList(obj.line, true);\r\n }\r\n } catch (error) {\r\n errorCallback(error);\r\n return null;\r\n }\r\n return result;\r\n }\r\n\r\n static getTaskTypesByVisibility = (taskTypes: ITaskEditTypeItem[], isPublic: boolean): ITaskEditTypeItem[] => {\r\n return isPublic\r\n ? taskTypes.filter(i => i.visibility === TaskVisibility.Public || i.visibility === TaskVisibility.PrivateAndPublic)\r\n : taskTypes.filter(i => i.visibility === TaskVisibility.Private || i.visibility === TaskVisibility.PrivateAndPublic);\r\n };\r\n\r\n static getTaskTypeFromSchema = (dataSchema: string): ISchemaParseResult => {\r\n let dataSchemaParseError = \"\";\r\n const taskType = TaskEditTypeItem.getTaskTypeFromDataSchema(dataSchema, (error) => {\r\n dataSchemaParseError = Base.isString(error)\r\n ? (error ?? \"\")\r\n : (error.message && Base.isString(error.message)\r\n ? error.message\r\n : JSON.stringify(error));\r\n });\r\n if (!taskType) {\r\n return {\r\n taskType: null,\r\n headerDataRow: null,\r\n formDataRow: null,\r\n lineDataRow: null,\r\n error: dataSchemaParseError,\r\n };\r\n }\r\n const headerDataRow = new TaskDataRow();\r\n headerDataRow.id = Base.getGuid();\r\n headerDataRow.cols = TaskDataRowCol.initializeValuesByType(taskType.headerCols, []);\r\n const formDataRow = new TaskDataRow();\r\n formDataRow.id = Base.getGuid();\r\n formDataRow.cols = TaskDataRowCol.initializeValuesByType(taskType.formCols, []);\r\n const lineDataRow = new TaskDataRow();\r\n lineDataRow.id = Base.getGuid();\r\n lineDataRow.cols = TaskDataRowCol.initializeValuesByType(taskType.lineCols, []);\r\n return {\r\n taskType,\r\n headerDataRow,\r\n formDataRow,\r\n lineDataRow,\r\n error: dataSchemaParseError\r\n };\r\n };\r\n\r\n static getTaskTypesForUiSelect = (taskTypes: ITaskEditTypeItem[], isPublic: boolean) => {\r\n const filteredTaskTypes = TaskEditTypeItem.getTaskTypesByVisibility(taskTypes, isPublic);\r\n const notRepeatedTaskTypes = filteredTaskTypes.filter(i => i.taskRepetitionType !== TaskRepetitionType.Repeated);\r\n const repeatedTaskTypes = filteredTaskTypes.filter(i => i.taskRepetitionType === TaskRepetitionType.Repeated);\r\n let result: { id: string, title: string, divider?: boolean }[] = [];\r\n if (notRepeatedTaskTypes.length > 0) {\r\n result = [{ id: \"NotRepeated\", title: Translations.OneTimeForm, divider: true }];\r\n result = result.concat(\r\n notRepeatedTaskTypes.map(item => {\r\n return {\r\n id: item.id,\r\n title: item.code\r\n };\r\n }));\r\n }\r\n if (repeatedTaskTypes.length > 0) {\r\n result = result.concat([{ id: \"Repeated\", title: Translations.RowForm, divider: true }]);\r\n result = result.concat(\r\n repeatedTaskTypes.map(item => {\r\n return {\r\n id: item.id,\r\n title: item.code\r\n };\r\n }));\r\n }\r\n return result;\r\n };\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ITaskDataRow, TaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskValidationRow, TaskValidationRow } from \"ui/Scripts/source/models/task/taskValidationRow\";\r\nimport { ITaskEditTypeItem, TaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\n\r\nexport interface IReportGeneratedTableData {\r\n taskType: ITaskEditTypeItem;\r\n dataRows: ITaskDataRow[];\r\n validationRows: ITaskValidationRow[];\r\n\r\n getHash(): string;\r\n}\r\n\r\nexport class ReportGeneratedTableData implements IReportGeneratedTableData {\r\n taskType: TaskEditTypeItem;\r\n dataRows: TaskDataRow[];\r\n validationRows: TaskValidationRow[];\r\n\r\n constructor();\r\n constructor(obj: IReportGeneratedTableData);\r\n constructor(obj?: any) {\r\n this.taskType = new TaskEditTypeItem(obj ? obj.taskType : null);\r\n this.dataRows = Base.getTypedArray(obj ? obj.dataRows : null, TaskDataRow);\r\n this.validationRows = Base.getTypedArray(obj ? obj.validationRows : null, TaskValidationRow);\r\n for (const dataRow of this.dataRows) {\r\n dataRow.initializeCols(this.taskType);\r\n }\r\n }\r\n\r\n getHash(): string {\r\n let result = this.taskType.getHash();\r\n for (const dataRow of this.dataRows) {\r\n result = result + \"##\" + dataRow.getHash();\r\n }\r\n return result;\r\n }\r\n}","import { IdTitle, IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { IReportGeneratedTableData, ReportGeneratedTableData } from \"./reportGeneratedTableData\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\nexport interface IReportGenerated2 extends IIdTitle {\r\n downloadId: string;\r\n fileName: string;\r\n content: string;\r\n mediaType: string;\r\n listWidth: number;\r\n tables: IReportGeneratedTableData[];\r\n}\r\n\r\nexport class ReportGenerated2 extends IdTitle implements IReportGenerated2 {\r\n downloadId: string;\r\n fileName: string;\r\n content: string;\r\n mediaType: string;\r\n listWidth: number;\r\n tables: ReportGeneratedTableData[];\r\n \r\n constructor();\r\n constructor(obj: IReportGenerated2);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.downloadId = obj && obj.downloadId || \"\";\r\n this.fileName = obj && obj.fileName || \"\";\r\n this.content = obj && obj.content || \"\";\r\n this.mediaType = obj && obj.mediaType || \"\";\r\n this.listWidth = obj && obj.listWidth || 0;\r\n this.tables = Base.getTypedArray(obj ? obj.tables : null, ReportGeneratedTableData);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IdTitle, IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { EnumHelper, TaskDataRowDataType } from \"ui/Scripts/source/models/enums\";\r\nimport { ITaskDataRow, TaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskEditTypeItem, TaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { IReportParameterValue, ReportParameterValue } from \"../report/reportParameterValue\";\r\n\r\nexport interface IChartItem extends IIdTitle {\r\n id: string;\r\n reportName: string;\r\n reportDescription: string;\r\n chartNames: string[];\r\n taskType: ITaskEditTypeItem; //customer parameters schema\r\n taskDataRow: ITaskDataRow; //customer parameter values\r\n}\r\n\r\nexport class ChartItem extends IdTitle implements IChartItem {\r\n id: string;\r\n reportName: string;\r\n reportDescription: string;\r\n chartNames: string[];\r\n taskType: TaskEditTypeItem; //customer parameters schema\r\n taskDataRow: TaskDataRow; //customer parameter values\r\n\r\n constructor();\r\n constructor(obj: IChartItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.id = obj && obj.id || \"\";\r\n this.reportName = obj && obj.reportName || \"\";\r\n this.reportDescription = obj && obj.reportDescription || \"\";\r\n this.chartNames = obj && obj.chartNames || [];\r\n this.taskType = null;\r\n if (obj && obj.taskType) {\r\n this.taskType = new TaskEditTypeItem(obj.taskType);\r\n }\r\n this.taskDataRow = null;\r\n if (this.taskType) {\r\n if (!obj.taskDataRow) {\r\n this.taskDataRow = new TaskDataRow();\r\n this.taskDataRow.id = Base.getGuid();\r\n this.taskDataRow.initializeToTaskType(this.taskType);\r\n } else {\r\n this.taskDataRow = new TaskDataRow(obj.taskDataRow);\r\n this.taskDataRow.initializeCols(this.taskType);\r\n }\r\n }\r\n }\r\n\r\n getHash(): string {\r\n return super.getHash() + \"#\" + this.id + \"#\" + this.reportName + \"#\" + Base.joinSuffix(this.chartNames, \"#\") + (this.taskDataRow ? this.taskDataRow.getHash() : \"\");\r\n }\r\n \r\n getReportParameterValues(): IReportParameterValue[] {\r\n if (!this.taskType || !this.taskDataRow) return [];\r\n const result: IReportParameterValue[] = [];\r\n for (const col of this.taskDataRow.cols) {\r\n const typeCol = this.taskType.formCols.find(i => i.field === col.field);\r\n if (!typeCol) continue;\r\n let value = this.taskDataRow.getTaskDataRowColUiValue(col.field, this.taskType);\r\n if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.StringArray) || EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.TreeStringArray)) {\r\n const array: string[] = value ? JSON.parse(value) : [];\r\n value = JSON.stringify(array.filter(i => !!i));\r\n }\r\n result.push(ReportParameterValue.createReportParameterValue(col.field, value));\r\n }\r\n return result;\r\n }\r\n\r\n static sortChartItems(items: IChartItem[]): IChartItem[] {\r\n if (!items && items.length < 2) return items;\r\n return items.sort((a: IChartItem, b: IChartItem) => {\r\n if (!a || !b) return 0;\r\n return Base.strCompare(a.title, b.title);\r\n });\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IdTitle, IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { EnumHelper, ReportSharingType, ReportType, TaskDataRowDataType } from \"ui/Scripts/source/models/enums\";\r\nimport { ITaskDataRow, TaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskEditTypeItem, TaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { IReportParameterValue, ReportParameterValue } from \"./reportParameterValue\";\r\nimport { ISavedReport } from \"./savedReport\";\r\n\r\nexport interface IReportItem extends IIdTitle {\r\n reportId: string;\r\n type: ReportType;\r\n sortOrder: number;\r\n taskType: ITaskEditTypeItem; //customer parameters schema\r\n taskDataRow: ITaskDataRow; //customer parameter values\r\n generalFilter: any; //User report parameter initialization\r\n reportFilter: any; //User report parameter initialization\r\n sortColumn: string; //User report parameter initialization\r\n sortOrderIsAsc: boolean; //User report parameter initialization\r\n\r\n orgTaskDataRow: ITaskDataRow;\r\n orgReportFilter: any;\r\n\r\n isUserReport: boolean;\r\n reportSharingType: ReportSharingType;\r\n\r\n showInFrontPage: boolean;\r\n\r\n getIsUserLevel(): boolean;\r\n getIsShared(): boolean;\r\n getTypeImageClass(): string;\r\n getTypeTitle(): string;\r\n getReportParameterValues(): IReportParameterValue[];\r\n copyReportParameterValuesFromSavedValues();\r\n copyReportParameterValues(report: IReportItem);\r\n resetTaskDataRowToOrg();\r\n}\r\n\r\nexport class ReportItem extends IdTitle implements IReportItem {\r\n reportId: string;\r\n type: ReportType;\r\n sortOrder: number;\r\n taskType: TaskEditTypeItem; //customer parameters schema\r\n taskDataRow: TaskDataRow; //customer parameter values\r\n generalFilter: any; //User report parameter initialization\r\n reportFilter: any; //User report parameter initialization\r\n sortColumn: string; //User report parameter initialization\r\n sortOrderIsAsc: boolean; //User report parameter initialization\r\n\r\n orgTaskDataRow: TaskDataRow;\r\n orgReportFilter: any;\r\n\r\n isUserReport: boolean;\r\n reportSharingType: ReportSharingType;\r\n\r\n showInFrontPage: boolean;\r\n\r\n constructor();\r\n constructor(obj: IReportItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.reportId = obj && obj.reportId || \"\";\r\n this.type = obj && obj.type || ReportType.Html;\r\n this.sortOrder = obj && obj.sortOrder || 0;\r\n this.taskType = null;\r\n if (obj && obj.taskType) {\r\n this.taskType = new TaskEditTypeItem(obj.taskType);\r\n }\r\n this.taskDataRow = null;\r\n if (this.taskType) {\r\n if (!obj?.taskDataRow) {\r\n this.taskDataRow = new TaskDataRow();\r\n this.taskDataRow.id = Base.getGuid();\r\n this.taskDataRow.initializeToTaskType(this.taskType);\r\n } else {\r\n this.taskDataRow = new TaskDataRow(obj.taskDataRow);\r\n this.taskDataRow.initializeCols(this.taskType);\r\n }\r\n if (obj?.orgTaskDataRow) {\r\n this.orgTaskDataRow = new TaskDataRow(obj.orgTaskDataRow);\r\n } else {\r\n this.orgTaskDataRow = new TaskDataRow(this.taskDataRow);\r\n }\r\n }\r\n this.generalFilter = {};\r\n if (obj && obj.generalFilter) {\r\n this.generalFilter = obj.generalFilter;\r\n }\r\n this.reportFilter = {};\r\n if (obj && obj.reportFilter) {\r\n this.reportFilter = obj.reportFilter;\r\n }\r\n if (obj?.orgReportFilter) {\r\n this.orgReportFilter = obj.orgReportFilter;\r\n } else {\r\n this.orgReportFilter = this.reportFilter;\r\n }\r\n this.sortColumn = obj && obj.sortColumn || \"\";\r\n this.sortOrderIsAsc = obj && obj.sortOrderIsAsc || false;\r\n this.isUserReport = obj && obj.isUserReport || false;\r\n if (!this.isUserReport) {\r\n this.reportId = obj && obj.id || \"\";\r\n }\r\n this.reportSharingType = obj && obj.reportSharingType || ReportSharingType.NotShared;\r\n this.showInFrontPage = obj && obj.showInFrontPage || false;\r\n }\r\n\r\n getHash(): string {\r\n return super.getHash() + \"#\" + this.reportId + \"#\" + this.type.toString(10) + \"#\" + (this.taskDataRow ? this.taskDataRow.getHash() : \"\") + \"#\" +\r\n JSON.stringify(this.generalFilter ?? {}) + \"#\" + JSON.stringify(this.reportFilter ?? {}) + \"#\" +\r\n this.sortColumn + \"#\" + this.sortOrderIsAsc.toString() + \"#\" + this.isUserReport.toString() + \"#\" + this.reportSharingType.toString(10) + \"#\" +\r\n this.showInFrontPage.toString();\r\n }\r\n\r\n getIsUserLevel(): boolean {\r\n return this.isUserReport;\r\n }\r\n \r\n getIsShared(): boolean {\r\n return this.reportSharingType > ReportSharingType.NotShared;\r\n }\r\n\r\n getTypeImageClass(): string {\r\n switch (this.type) {\r\n case ReportType.Html:\r\n return \"file_type_8\";\r\n case ReportType.Excel:\r\n return \"file_type_2\";\r\n case ReportType.Pdf:\r\n return \"file_type_4\";\r\n default:\r\n return \"file_type_20\";\r\n }\r\n }\r\n\r\n getTypeTitle(): string {\r\n switch (this.type) {\r\n case ReportType.Html:\r\n return \"html\";\r\n case ReportType.Excel:\r\n return \"Excel\";\r\n case ReportType.Pdf:\r\n return \"pdf\";\r\n default:\r\n return \"\";\r\n }\r\n }\r\n\r\n getReportParameterValues(): IReportParameterValue[] {\r\n if (!this.taskType || !this.taskDataRow) return [];\r\n const result: IReportParameterValue[] = [];\r\n for (const col of this.taskDataRow.cols) {\r\n const typeCol = this.taskType.formCols.find(i => i.field === col.field);\r\n if (!typeCol) continue;\r\n let value = this.taskDataRow.getTaskDataRowColUiValue(col.field, this.taskType);\r\n if (EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.StringArray) || EnumHelper.isEqual(typeCol.dataType, TaskDataRowDataType.TreeStringArray)) {\r\n const array: string[] = value ? JSON.parse(value) : [];\r\n value = JSON.stringify(array.filter(i => !!i));\r\n }\r\n result.push(ReportParameterValue.createReportParameterValue(col.field, value));\r\n }\r\n return result;\r\n }\r\n\r\n copyReportParameterValuesFromSavedValues() {\r\n if (!this.reportFilter || !this.taskType || !this.taskDataRow) return;\r\n for (const col of this.taskDataRow.cols) {\r\n const typeCol = this.taskType.formCols.find(i => i.field === col.field);\r\n if (!typeCol || !Object.prototype.hasOwnProperty.call(this.reportFilter, col.field)) continue;\r\n col.setTaskDataRowColValueFromDbValue(typeCol, this.reportFilter[col.field]);\r\n }\r\n if (this.taskType) {\r\n this.taskDataRow.initializeCols(this.taskType);\r\n }\r\n }\r\n\r\n copyReportParameterValues(report: IReportItem) {\r\n if (!report || !report.taskType || !report.taskDataRow) return;\r\n for (const col of this.taskDataRow.cols) {\r\n const typeCol = this.taskType.formCols.find(i => i.field === col.field);\r\n if (!typeCol) continue;\r\n const sourceTypeCol = report.taskType.formCols.find(i => i.field === col.field);\r\n if (!sourceTypeCol || !EnumHelper.isEqual(typeCol.dataType, sourceTypeCol.dataType)) continue;\r\n const sourceCol = report.taskDataRow.cols.find(i => i.field === col.field);\r\n if (!sourceCol) continue;\r\n col.valueStr = sourceCol.valueStr;\r\n col.valueNbr = sourceCol.valueNbr;\r\n }\r\n }\r\n\r\n resetTaskDataRowToOrg() {\r\n if (this.taskDataRow) {\r\n this.taskDataRow = new TaskDataRow(this.orgTaskDataRow);\r\n this.reportFilter = { ...this.orgReportFilter };\r\n }\r\n }\r\n\r\n static createReportItem(id: string, title: string, type: ReportType, taskType: ITaskEditTypeItem): IReportItem {\r\n const result = new ReportItem();\r\n result.id = id;\r\n result.reportId = id;\r\n result.title = title;\r\n result.type = type;\r\n result.taskType = taskType;\r\n return result;\r\n }\r\n\r\n static createReportItemFromSavedReport(report: IReportItem, savedReport: ISavedReport, reportSharingType: ReportSharingType): IReportItem {\r\n const result = new ReportItem(report);\r\n result.id = savedReport.id;\r\n result.reportId = report.reportId;\r\n result.title = savedReport.title;\r\n result.generalFilter = savedReport.generalFilter;\r\n result.reportFilter = savedReport.reportFilter;\r\n result.sortColumn = savedReport.sortColumn;\r\n result.sortOrderIsAsc = savedReport.sortColumn ? savedReport.sortOrderIsAsc : true;\r\n result.showInFrontPage = savedReport.showInFrontPage;\r\n result.isUserReport = true;\r\n result.reportSharingType = reportSharingType;\r\n result.orgReportFilter = result.reportFilter;\r\n result.copyReportParameterValuesFromSavedValues();\r\n result.orgTaskDataRow = new TaskDataRow(result.taskDataRow);\r\n return result;\r\n }\r\n\r\n static sortReportItems(items: IReportItem[]): IReportItem[] {\r\n if (!items && items.length < 2) return items;\r\n return items.sort((a: IReportItem, b: IReportItem) => {\r\n if (!a || !b) return 0;\r\n let result = Base.numCompare(a.isUserReport ? 0 : 1, b.isUserReport ? 0 : 1);\r\n if (result !== 0) return result;\r\n result = Base.numCompare(a.reportSharingType, b.reportSharingType);\r\n if (result !== 0) return result;\r\n result = Base.numCompare(a.type, b.type);\r\n if (result !== 0) return result;\r\n result = Base.numCompare(a.sortOrder, b.sortOrder);\r\n if (result !== 0) return result;\r\n return Base.strCompare(a.title, b.title);\r\n });\r\n }\r\n\r\n static sortReportItemsSharedAndStandard(items: IReportItem[]): IReportItem[] {\r\n if (!items && items.length < 2) return items;\r\n return items.sort((a: IReportItem, b: IReportItem) => {\r\n if (!a || !b) return 0;\r\n let result = Base.numCompare(a.type, b.type);\r\n if (result !== 0) return result;\r\n result = Base.numCompare(a.sortOrder, b.sortOrder);\r\n if (result !== 0) return result;\r\n return Base.strCompare(a.title, b.title);\r\n });\r\n }\r\n\r\n static getSharedAndStandardReports(standardReports: IReportItem[], savedReports: IReportItem[]): IReportItem[] {\r\n return ReportItem.sortReportItemsSharedAndStandard(standardReports.concat(savedReports.filter(i => i.reportSharingType > ReportSharingType.NotShared)));\r\n }\r\n\r\n static getItemsHash(standardReports: IReportItem[], savedReports: IReportItem[]): string {\r\n return standardReports.map(i => i.id).join(\",\") + savedReports.map(i => i.id + \"#\" + i.reportSharingType.toString(10)).join(\",\");\r\n };\r\n\r\n static getTaskTypeAndTaskDataRow(id: string, reports: IReportItem[]): { taskType: ITaskEditTypeItem; taskDataRow: ITaskDataRow; } {\r\n const result = {\r\n taskType: null,\r\n taskDataRow: null\r\n };\r\n if (!id) return result;\r\n const report = reports.find(i => i.id === id);\r\n if (report && report.taskType && report.taskDataRow && report.taskDataRow.cols.length > 0) {\r\n result.taskType = report.taskType;\r\n result.taskDataRow = report.taskDataRow;\r\n }\r\n return result;\r\n }\r\n\r\n static getActiveReport(state: { reports: IReportItem[], savedReports: IReportItem[], activeReportId: string, activeSavedReportId: string }): IReportItem {\r\n return state.activeReportId\r\n ? state.reports.find(i => i.id === state.activeReportId)\r\n : state.savedReports.find(i => i.id === state.activeSavedReportId);\r\n };\r\n\r\n static getStateChangeAfterSetReportSortData(state: { reports: IReportItem[], savedReports: IReportItem[], activeReportId: string, activeSavedReportId: string },\r\n sortColumn: string, sortOrderIsAsc: boolean, getReportFilterIsSet: (state: any) => boolean) {\r\n if (state.activeReportId) {\r\n const reports = state.reports.slice(0);\r\n const index = reports.findIndex(i => i.id === state.activeReportId);\r\n if (index < 0) return;\r\n const report = new ReportItem(reports[index]);\r\n report.sortColumn = sortColumn;\r\n report.sortOrderIsAsc = sortOrderIsAsc;\r\n reports[index] = report;\r\n const newState = { ...state, reports };\r\n return {\r\n reports,\r\n reportFilterIsSet: getReportFilterIsSet(newState)\r\n };\r\n } else if (state.activeSavedReportId) {\r\n const savedReports = state.savedReports.slice(0);\r\n const index = savedReports.findIndex(i => i.id === state.activeSavedReportId);\r\n if (index < 0) return;\r\n const savedReport = new ReportItem(savedReports[index]);\r\n savedReport.sortColumn = sortColumn;\r\n savedReport.sortOrderIsAsc = sortOrderIsAsc;\r\n savedReports[index] = savedReport;\r\n const newState = { ...state, savedReports };\r\n return {\r\n savedReports,\r\n reportFilterIsSet: getReportFilterIsSet(newState)\r\n };\r\n }\r\n };\r\n};\r\n","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IChartItem, ChartItem } from \"../chart/chartItem\";\r\nimport { IReportItem, ReportItem } from \"./reportItem\";\r\nimport { ISavedReport, SavedReport } from \"./savedReport\";\r\nimport { ReportSharingType } from \"ui/Scripts/source/models/enums\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\n\r\nexport interface IReportsState {\r\n reports: IReportItem[];\r\n savedReports: IReportItem[];\r\n activeReportId: string;\r\n chartItems: IChartItem[];\r\n}\r\n\r\nexport interface IReportItems {\r\n items: IReportItem[];\r\n userReports: ISavedReport[];\r\n companyReports: ISavedReport[];\r\n systemReports: ISavedReport[];\r\n chartItems: IChartItem[];\r\n}\r\n\r\nexport class ReportItems implements IReportItems {\r\n items: ReportItem[];\r\n userReports: SavedReport[];\r\n companyReports: SavedReport[];\r\n systemReports: SavedReport[];\r\n chartItems: ChartItem[];\r\n\r\n constructor();\r\n constructor(obj: IReportItems);\r\n constructor(obj?: any) {\r\n this.items = Base.getTypedArray(obj ? obj.items : null, ReportItem);\r\n this.userReports = Base.getTypedArray(obj ? obj.userReports : null, SavedReport);\r\n this.companyReports = Base.getTypedArray(obj ? obj.companyReports : null, SavedReport);\r\n this.systemReports = Base.getTypedArray(obj ? obj.systemReports : null, SavedReport);\r\n this.chartItems = Base.getTypedArray(obj ? obj.chartItems : null, ChartItem);\r\n }\r\n\r\n static getReportsState = async (companyId: string, activeReportId: string, staticReports: ReportItem[], serviceCall: (companyId: string) => Promise, onBegin: () => void, onAfter: () => void): Promise => {\r\n if (onBegin) {\r\n onBegin();\r\n }\r\n try {\r\n const reportItems = await AppUtils.callService(() => serviceCall(companyId), false, true);\r\n if (!reportItems) return null;\r\n const reports = staticReports.concat(reportItems.items);\r\n const savedReports: ReportItem[] = [];\r\n for (const userReport of reportItems.userReports) {\r\n const report = reports.find(i => i.id === userReport.reportId);\r\n if (!report) continue;\r\n savedReports.push(ReportItem.createReportItemFromSavedReport(report, userReport, ReportSharingType.NotShared));\r\n }\r\n for (const companyReport of reportItems.companyReports) {\r\n const report = reports.find(i => i.id === companyReport.reportId);\r\n if (!report) continue;\r\n savedReports.push(ReportItem.createReportItemFromSavedReport(report, companyReport, ReportSharingType.Company));\r\n }\r\n for (const systemReport of reportItems.systemReports) {\r\n const report = reports.find(i => i.id === systemReport.reportId);\r\n if (!report) continue;\r\n savedReports.push(ReportItem.createReportItemFromSavedReport(report, systemReport, ReportSharingType.AllCompanies));\r\n }\r\n ReportItem.sortReportItems(reports);\r\n ReportItem.sortReportItems(savedReports);\r\n const activeReport = reports.find(i => i.id === activeReportId);\r\n return {\r\n reports,\r\n savedReports,\r\n activeReportId: activeReport ? activeReportId : reportItems.items[0].id,\r\n chartItems: reportItems.chartItems\r\n };\r\n } finally {\r\n if (onAfter) {\r\n onAfter();\r\n }\r\n }\r\n };\r\n}","import { IUnitModuleNode, UnitModuleNode } from \"./unitModuleNode\";\r\n\r\nexport interface IModuleUnits {\r\n unitModuleNode: IUnitModuleNode;\r\n}\r\n\r\nexport class ModuleUnits implements IModuleUnits {\r\n unitModuleNode: UnitModuleNode;\r\n\r\n constructor();\r\n constructor(obj: IModuleUnits);\r\n constructor(obj?: any) {\r\n this.unitModuleNode = new UnitModuleNode(obj ? obj.unitModuleNode : null);\r\n }\r\n}","import { DefaultHandlerType } from \"../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/enums\";\r\n\r\nexport interface IUnitDefaultHandlersNodeUser {\r\n code: string;\r\n type: DefaultHandlerType;\r\n name: string;\r\n picture: string;\r\n}\r\n\r\nexport class UnitDefaultHandlersNodeUser implements IUnitDefaultHandlersNodeUser {\r\n code: string;\r\n type: DefaultHandlerType;\r\n name: string;\r\n picture: string;\r\n\r\n constructor();\r\n constructor(obj: IUnitDefaultHandlersNodeUser);\r\n constructor(obj?: any) {\r\n this.code = obj && obj.code || \"\";\r\n this.type = obj && obj.type || DefaultHandlerType.Handler;\r\n this.name = obj && obj.name || \"\";\r\n this.picture = obj && obj.picture || \"\";\r\n }\r\n\r\n static sortUnitDefaultHandlersNodeUsers(src: UnitDefaultHandlersNodeUser[], asc: boolean): UnitDefaultHandlersNodeUser[] {\r\n const result = src.slice(0);\r\n result.sort((a: UnitDefaultHandlersNodeUser, b: UnitDefaultHandlersNodeUser) => {\r\n if ((a === null || a === undefined) && (b === null || b === undefined)) return 0;\r\n if (a === null || a === undefined) return 1;\r\n if (b === null || b === undefined) return -1;\r\n if ((a.name === null || a.name === undefined) && (b.name === null || b.name === undefined)) return 0;\r\n if (a.name < b.name) return (asc ? 1 : -1) * -1;\r\n if (a.name > b.name) return (asc ? 1 : -1) * 1;\r\n return 0;\r\n });\r\n return result;\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\ninterface IUnitDefaultHandlersNodeSave {\r\n id: string;\r\n userCodes: string[];\r\n notifyUserCodes: string[];\r\n}\r\n\r\nexport class UnitDefaultHandlersNodeSave implements IUnitDefaultHandlersNodeSave {\r\n id: string;\r\n userCodes: string[];\r\n notifyUserCodes: string[];\r\n\r\n constructor();\r\n constructor(obj: IUnitDefaultHandlersNodeSave);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.userCodes = obj && obj.userCodes || [];\r\n this.notifyUserCodes = obj && obj.notifyUserCodes || [];\r\n }\r\n\r\n static getSortedUnitDefaultHandlersNodeSaves(src: IUnitDefaultHandlersNodeSave[]): IUnitDefaultHandlersNodeSave[] {\r\n const result = src.slice(0);\r\n result.sort((a: IUnitDefaultHandlersNodeSave, b: IUnitDefaultHandlersNodeSave) => {\r\n if ((!a) && (!b)) return 0;\r\n if (!a) return 1;\r\n if (!b) return -1;\r\n if (Base.isNullOrUndefined(a) && Base.isNullOrUndefined(b)) return 0;\r\n if (a.id < b.id) return -1;\r\n if (a.id > b.id) return 1;\r\n return 0;\r\n });\r\n return result;\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IUnitDefaultHandlersNodeUser, UnitDefaultHandlersNodeUser } from \"./unitDefaultHandlersNodeUser\";\r\nimport { UnitDefaultHandlersNodeSave } from \"./unitDefaultHandlersNodeSave\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { DefaultHandlerType } from \"../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/enums\";\r\n\r\nexport interface IUnitDefaultHandlersNode {\r\n id: string;\r\n name: string;\r\n explicitUsers: IUnitDefaultHandlersNodeUser[];\r\n children: IUnitDefaultHandlersNode[];\r\n parent: IUnitDefaultHandlersNode;\r\n partnerCompanyIds: string[];\r\n\r\n getIsRoot(): boolean;\r\n getSiblings(): IUnitDefaultHandlersNode[];\r\n hasChildren(): boolean;\r\n hasSiblings(): boolean;\r\n hasExplicitUsers(): boolean;\r\n getDefaultUsersText(type?: DefaultHandlerType): string;\r\n getUnitNodeById(id: string): IUnitDefaultHandlersNode;\r\n setUser(userCode: string, type: number, name: string, picture: string, clearDescendants: boolean);\r\n getUsers(): IUnitDefaultHandlersNodeUser[];\r\n getUnitDefaultHandlersNodeSaves(list: UnitDefaultHandlersNodeSave[]): UnitDefaultHandlersNodeSave[];\r\n removeUsers(processSubUnits: boolean);\r\n}\r\n\r\nexport class UnitDefaultHandlersNode implements IUnitDefaultHandlersNode {\r\n id: string;\r\n name: string;\r\n explicitUsers: UnitDefaultHandlersNodeUser[];\r\n children: UnitDefaultHandlersNode[];\r\n parent: UnitDefaultHandlersNode;\r\n partnerCompanyIds: string[];\r\n\r\n constructor();\r\n constructor(obj: IUnitDefaultHandlersNode);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.explicitUsers = null;\r\n if (obj && obj.explicitUsers) {\r\n this.explicitUsers = Base.getTypedArray(obj ? obj.explicitUsers : null, UnitDefaultHandlersNodeUser);\r\n }\r\n this.children = [];\r\n this.parent = null;\r\n if (obj && obj.children) {\r\n this.children = Base.getTypedArray(obj.children, UnitDefaultHandlersNode);\r\n for (const child of this.children) {\r\n child.parent = this;\r\n }\r\n }\r\n this.partnerCompanyIds = obj && obj.partnerCompanyIds || [];\r\n }\r\n\r\n getIsRoot(): boolean {\r\n return !this.parent;\r\n }\r\n\r\n getRoot(): UnitDefaultHandlersNode {\r\n return this.getIsRoot() ? this : this.parent.getRoot();\r\n }\r\n\r\n getSiblings(): UnitDefaultHandlersNode[] {\r\n if (this.getIsRoot()) return [];\r\n return this.parent.children.filter(i => i.id !== this.id);\r\n }\r\n\r\n getPathNodes(): UnitDefaultHandlersNode[] {\r\n if (this.getIsRoot()) return [this];\r\n const result: UnitDefaultHandlersNode[] = this.parent.getPathNodes();\r\n result.push(this);\r\n return result;\r\n }\r\n\r\n hasChildren(): boolean {\r\n return this.children.length > 0;\r\n }\r\n\r\n hasSiblings(): boolean {\r\n if (this.getIsRoot()) return false;\r\n return this.parent.children.length > 1;\r\n }\r\n\r\n hasExplicitUsers(): boolean {\r\n return !!this.explicitUsers && this.explicitUsers.length > 0;\r\n }\r\n\r\n getUnitNodeById(id: string): IUnitDefaultHandlersNode {\r\n if (!id) return null;\r\n if (this.id.equalIgnoreCase(id)) return this;\r\n for (const child of this.children) {\r\n const childResult = child.getUnitNodeById(id);\r\n if (childResult) return childResult;\r\n }\r\n return null;\r\n }\r\n\r\n removeUser(userCode: string) {\r\n if (this.explicitUsers === null || this.explicitUsers.length === 0) return;\r\n const index = this.explicitUsers.findIndex(i => i.code.equalIgnoreCase(userCode));\r\n if (index >= 0) {\r\n this.explicitUsers.splice(index, 1);\r\n }\r\n }\r\n\r\n removeUsers(processSubUnits: boolean = false) {\r\n if (this.explicitUsers !== null && this.explicitUsers.length > 0) {\r\n this.explicitUsers = null;\r\n }\r\n if (!processSubUnits || !this.hasChildren()) return;\r\n for (let i = 0; i < this.children.length; i++) {\r\n this.children[i].removeUsers(true);\r\n }\r\n }\r\n\r\n clearSubUnits() {\r\n if (!this.hasChildren()) return;\r\n for (const child of this.children) {\r\n child.removeUsers(true);\r\n }\r\n }\r\n\r\n setUser(userCode: string, type: number, name: string, picture: string, clearDescendants: boolean) {\r\n let currentUser: UnitDefaultHandlersNodeUser = null;\r\n if (this.explicitUsers === null) {\r\n this.explicitUsers = [];\r\n } else {\r\n currentUser = this.explicitUsers.find(j => j.code.equalIgnoreCase(userCode));\r\n }\r\n if (!currentUser) {\r\n currentUser = new UnitDefaultHandlersNodeUser();\r\n currentUser.code = userCode;\r\n currentUser.type = type;\r\n currentUser.name = name;\r\n currentUser.picture = picture;\r\n this.explicitUsers.push(currentUser);\r\n } else {\r\n currentUser.type = type;\r\n }\r\n //Clear subfolder permissions\r\n if (clearDescendants) {\r\n this.clearSubUnits();\r\n }\r\n if (this.explicitUsers.length < 2) return;\r\n this.explicitUsers = UnitDefaultHandlersNodeUser.sortUnitDefaultHandlersNodeUsers(this.explicitUsers, true);\r\n }\r\n\r\n getUsers(): UnitDefaultHandlersNodeUser[] {\r\n if (this.getIsRoot() || this.explicitUsers != null) {\r\n return this.explicitUsers;\r\n } else {\r\n return this.parent.getUsers();\r\n }\r\n }\r\n\r\n getSubTreeUserCodes(list: string[]): string[] {\r\n if (this.explicitUsers != null && this.explicitUsers.length > 0) {\r\n for (let i = 0; i < this.explicitUsers.length; i++) {\r\n const code = this.explicitUsers[i].code;\r\n if (list.indexOf(code) > -1) continue;\r\n list.push(code);\r\n }\r\n }\r\n if (this.children.length < 1) return list;\r\n for (let i = 0; i < this.children.length; i++) {\r\n const child = this.children[i];\r\n child.getSubTreeUserCodes(list);\r\n }\r\n return list;\r\n }\r\n\r\n getAsList(list: UnitDefaultHandlersNode[]): UnitDefaultHandlersNode[] {\r\n list.push(this);\r\n if (this.children.length < 1) return list;\r\n for (let i = 0; i < this.children.length; i++) {\r\n const child = this.children[i];\r\n child.getAsList(list);\r\n }\r\n return list;\r\n }\r\n\r\n getUnitDefaultHandlersNodeSaves(list: UnitDefaultHandlersNodeSave[]): UnitDefaultHandlersNodeSave[] {\r\n let i: number;\r\n let users: UnitDefaultHandlersNodeUser[] = [];\r\n if (this.explicitUsers !== null && this.explicitUsers.length > 0) {\r\n users = this.explicitUsers.slice(0);\r\n }\r\n let saveUnitNode = list.find(j => j.id === this.id);\r\n if (!saveUnitNode) {\r\n saveUnitNode = new UnitDefaultHandlersNodeSave();\r\n saveUnitNode.id = this.id;\r\n list.push(saveUnitNode);\r\n }\r\n for (i = 0; i < users.length; i++) {\r\n const user = users[i];\r\n if (saveUnitNode.userCodes.findIndex(j => j.equalIgnoreCase(user.code)) >= 0) continue;\r\n saveUnitNode.userCodes.push(user.code);\r\n if (user.type === DefaultHandlerType.Handler || saveUnitNode.notifyUserCodes.findIndex(j => j.equalIgnoreCase(user.code)) >= 0) continue;\r\n saveUnitNode.notifyUserCodes.push(user.code);\r\n }\r\n if (this.children.length < 1) return list;\r\n for (const child of this.children) {\r\n child.getUnitDefaultHandlersNodeSaves(list);\r\n }\r\n return list;\r\n }\r\n\r\n getTreeHasPartnerCompanies(): boolean {\r\n if (this.partnerCompanyIds.length > 0) return true;\r\n for (const child of this.children) {\r\n const childResult = child.getTreeHasPartnerCompanies();\r\n if (childResult) return true;\r\n }\r\n return false;\r\n }\r\n \r\n addPartnerCompanyToUnit(unitId: string, partnerCompanyId: string) {\r\n if (!unitId || !partnerCompanyId) return;\r\n const node = this.getUnitNodeById(unitId);\r\n if (!node) return;\r\n if (node.partnerCompanyIds.indexOf(partnerCompanyId) > -1) return;\r\n node.partnerCompanyIds.push(partnerCompanyId);\r\n }\r\n\r\n removePartnerCompanyFromTree(unitId: string, partnerCompanyId: string) {\r\n if (!unitId || !partnerCompanyId) return;\r\n const node = this.getUnitNodeById(unitId);\r\n if (!node) return;\r\n const index = node.partnerCompanyIds.indexOf(partnerCompanyId);\r\n if (index < 0) return;\r\n node.partnerCompanyIds.splice(index, 1);\r\n }\r\n\r\n getPartnerCompanyIdsFromTree(unitId: string): string[] {\r\n if (!unitId) return [];\r\n const node = this.getUnitNodeById(unitId);\r\n if (!node) return [];\r\n return node.partnerCompanyIds.slice(0);\r\n }\r\n\r\n getDefaultUsersText(type?: DefaultHandlerType): string {\r\n let users = this.getUsers() ?? [];\r\n if (!Base.isNullOrUndefined(type)) {\r\n users = users.filter(i => i.type === type);\r\n }\r\n const result = Base.getStringWithSeparators(users.map(i => i.name), \", \");\r\n return result?.length ? result : \"'\" + Translations.NotSet + \"'\";\r\n }\r\n}","import { IUnitDefaultHandlersNode, UnitDefaultHandlersNode } from \"./unitDefaultHandlersNode\";\r\n\r\nexport interface IUnitNodeDefaultHandlers {\r\n unitNode: IUnitDefaultHandlersNode;\r\n}\r\n\r\nexport class UnitNodeDefaultHandlers implements IUnitNodeDefaultHandlers {\r\n unitNode: UnitDefaultHandlersNode;\r\n\r\n constructor();\r\n constructor(obj: IUnitNodeDefaultHandlers);\r\n constructor(obj?: any) {\r\n this.unitNode = new UnitDefaultHandlersNode(obj && obj.unitNode ? obj.unitNode : null);\r\n }\r\n}","import { AttachmentImageSize, EventLocationUseType, EventObserverActionUseType } from \"../enums\";\r\nimport { EditItem, IEditItem } from \"./../common/editItem\";\r\nimport { IModifyUser, ModifyUser } from \"./../user/modifyUser\";\r\n\r\nexport interface IEventSetting extends IEditItem {\r\n attachmentImageSize: AttachmentImageSize;\r\n observerActionUseType: EventObserverActionUseType;\r\n locationUseType: EventLocationUseType;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class EventSetting extends EditItem implements IEventSetting {\r\n attachmentImageSize: AttachmentImageSize;\r\n observerActionUseType: EventObserverActionUseType;\r\n locationUseType: EventLocationUseType;\r\n modifyUser: IModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IEventSetting);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.attachmentImageSize = obj && obj.attachmentImageSize || AttachmentImageSize.Large;\r\n this.observerActionUseType = obj && obj.observerActionUseType || EventObserverActionUseType.NotInUse;\r\n this.locationUseType = obj && obj.locationUseType || EventLocationUseType.NotInUse;\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","export interface IIdRowId {\r\n id: string;\r\n rowId: string;\r\n}\r\n\r\nexport class IdRowId implements IIdRowId {\r\n id: string;\r\n rowId: string;\r\n\r\n constructor();\r\n constructor(obj: IIdRowId);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.rowId = obj && obj.rowId || \"\";\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IIdRowId, IdRowId } from \"ui/Scripts/source/models/common/idRowId\";\r\nimport { ApiSuccess, IApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\n\r\nexport interface IUnitModuleSaveResult extends IApiSuccess {\r\n rowIds: IIdRowId[];\r\n}\r\n\r\nexport class UnitModuleSaveResult extends ApiSuccess implements IUnitModuleSaveResult {\r\n rowIds: IdRowId[];\r\n\r\n constructor();\r\n constructor(obj: IUnitModuleSaveResult);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.rowIds = Base.getTypedArray(obj ? obj.rowIds : null, IdRowId);\r\n }\r\n}","import { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { SaveSuccessItems } from \"ui/Scripts/source/models/common/saveSuccessItems\";\r\nimport { EventTypeCategory } from \"ui/Scripts/source/models/enums\";\r\nimport { EventUrgencyClassListItems } from \"ui/Scripts/source/models/eventUrgencyClass/eventUrgencyClassListItems\";\r\nimport { EventUrgencyClassEdit } from \"ui/Scripts/source/models/eventUrgencyClass/eventUrgencyClassEdit\";\r\nimport { ISavedChartPanel } from \"../chart/savedChartPanel\";\r\nimport { IPagePanel } from \"../common/pagePanel\";\r\nimport { CompanyListItems } from \"../company/companyListItems\";\r\nimport { EventChartPropertiesDialogData } from \"../event/eventChartPropertiesDialogData\";\r\nimport { EventDefaultEventHandlers } from \"../event/eventDefaultEventHandlers\";\r\nimport { EventEdit } from \"../event/eventEdit\";\r\nimport { EventEditNew } from \"../event/eventEditNew\";\r\nimport { EventListItems } from \"../event/eventListItems\";\r\nimport { EventPage } from \"../event/eventPage\";\r\nimport { EventPageData } from \"../event/eventPageData\";\r\nimport { EventPartnerEdit } from \"../eventPartner/eventPartnerEdit\";\r\nimport { EventPartnerListItems } from \"../eventPartner/eventPartnerListItems\";\r\nimport { EventTypeEdit } from \"../eventType/eventTypeEdit\";\r\nimport { EventTypeNodes } from \"../eventType/eventTypeNodes\";\r\nimport { FrontToDoItems } from \"../front/frontToDoItems\";\r\nimport { ReportChartData } from \"../report/reportChartData\";\r\nimport { ReportGenerated2 } from \"../report/reportGenerated2\";\r\nimport { ReportItems } from \"../report/reportItems\";\r\nimport { IReportParameterValue } from \"../report/reportParameterValue\";\r\nimport { ModuleUnits } from \"../unit/moduleUnits\";\r\nimport { UnitNodeDefaultHandlers } from \"../unit/unitNodeDefaultHandlers\";\r\nimport { UnitNodePermissions } from \"../unit/unitNodePermissions\";\r\nimport { UserListItems } from \"../user/userListItems\";\r\nimport { AbortDictionary, getApiCall, getFileApiCall, postApiCall } from \"./tokenService\";\r\nimport { EventSetting } from \"ui/Scripts/source/models/eventSettings/eventSetting\";\r\nimport { UnitModuleSaveResult } from \"../unit/unitModuleSaveResult\";\r\n\r\n//Abort\r\nconst commonAborts = new AbortDictionary();\r\nconst reportAborts = new AbortDictionary();\r\nconst chartAborts = new AbortDictionary();\r\n\r\n//App Front\r\nexport const getChartData = (companyId: string): Promise => {\r\n const operationId = \"getFrontPageChartData\";\r\n chartAborts.abort(operationId);\r\n return postApiCall(\"api/event/chartdata\", ReportChartData, JSON.stringify({\r\n companyId\r\n }), (abortId: string) => {\r\n chartAborts.add(operationId, abortId);\r\n }).finally(() => {\r\n chartAborts.remove(operationId);\r\n });\r\n};\r\n\r\nexport const getEventChartPropertiesDialogData = (): Promise => {\r\n return getApiCall(\"api/event/chartpropertiesdialogdata\", EventChartPropertiesDialogData);\r\n};\r\n\r\nexport const saveEventChartOptions = (obj: any): Promise => {\r\n return postApiCall(\"api/event/savechartoptions\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\n//Page & List\r\n// #region EventPage\r\nexport const getEventPage = (): Promise => {\r\n return getApiCall(\"api/event\", EventPage);\r\n};\r\n\r\nexport const getEventPageData = (companyId: string): Promise => {\r\n return getApiCall(\"api/event/pagedata?id=\" + companyId, EventPageData);\r\n};\r\n\r\nexport const getEventListItems = (companyId: string, pageSize: number, page: number, filter: string, startDate: number, endDate: number, unitIds: string[],\r\n states: number[], urgencyClassIds: string[], eventTypeIds: string[], eventTypeBIds: string[], eventTypeCIds: string[], partnerCompanyIds: string[], createUserCodes: string[],\r\n handlerUserCodes: string[], observers: string[], dynamicTime: number, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n commonAborts.abortAll();\r\n reportAborts.abortAll();\r\n chartAborts.abortAll();\r\n return postApiCall(\"api/event/list\", EventListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n startDate,\r\n endDate,\r\n filter: filter || \"\",\r\n unitIds,\r\n states,\r\n urgencyClassIds,\r\n eventTypeIds,\r\n eventTypeBIds,\r\n eventTypeCIds,\r\n partnerCompanyIds,\r\n createUserCodes,\r\n handlerUserCodes,\r\n observers,\r\n dynamicTime\r\n }));\r\n};\r\n// #endregion EventPage\r\n\r\n// #region Edit\r\nexport const getEventEditNew = (companyId: string): Promise => {\r\n return getApiCall(\"api/event/new?id=\" + companyId, EventEditNew);\r\n};\r\n\r\nexport const saveEventEditNew = (obj: any): Promise => {\r\n return postApiCall(\"api/event/editsavenew\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const getEventEdit = (companyId: string, id: string, lockEvent: boolean): Promise => {\r\n return getApiCall(\"api/event/edit?id=\" + id + \"&companyId=\" + companyId + \"&lockEvent=\" + lockEvent, EventEdit);\r\n};\r\n\r\nexport const saveEventEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/event/editsave\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const sendEventReadReceipt = (companyId: string, id: string): Promise => {\r\n return postApiCall(\"api/event/sendreadreceipts\", ApiSuccess, JSON.stringify({\r\n companyId,\r\n id\r\n }));\r\n};\r\n\r\nexport const removeEvent = (companyId: string, createCompanyId: string, id: string): Promise => {\r\n return postApiCall(\"api/event/remove?id=\" + id + \"&createCompanyId=\" + createCompanyId + \"&companyId=\" + companyId, ApiSuccess);\r\n};\r\n\r\nexport const getDefaultEventHandlersForUnit = (companyId: string, createCompanyId: string, unitId: string, isNewEvent: boolean): Promise => {\r\n return getApiCall(\"api/event/unitdefaulthandlers?companyId=\" + companyId + \"&createCompanyId=\" + createCompanyId + \"&unitId=\" + unitId + \"&isNewEvent=\" + isNewEvent.toString(), EventDefaultEventHandlers);\r\n};\r\n\r\nexport const getEventPrint = (companyId: string, id: string, printId: string): Promise => {\r\n return getFileApiCall(\"api/event/print?id=\" + id + \"&companyId=\" + companyId + \"&printId=\" + printId);\r\n};\r\n// #endregion Edit\r\n\r\n// #region Handlers\r\nexport const approveEvent = (companyId: string, createCompanyId: string, eventId: string): Promise => {\r\n return postApiCall(\"api/event/approve\", ApiSuccess, JSON.stringify({ companyId, createCompanyId, eventId }));\r\n};\r\n\r\nexport const getHandlersSelectUserListItems = (companyId: string, eventId: string, unitId: string, pageSize: number, page: number, filter: string,\r\n ignoreUserIds: string[], ignoreUserCodes: string[], activityState: number, ignoreRecordUserConnected: boolean, doNotIgnoreRecordUserConnectedUserCode: string,\r\n sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/event/selecthandlers\", UserListItems, JSON.stringify({\r\n companyId,\r\n eventId,\r\n unitId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\",\r\n ignoreUserIds,\r\n ignoreUserCodes,\r\n ignoreRecordUserConnected,\r\n doNotIgnoreRecordUserConnectedUserCode,\r\n activityState\r\n }));\r\n};\r\n\r\nexport const eventEditAddHandlers = (companyId: string, eventId: string, userCodes: string[]): Promise => {\r\n return postApiCall(\"api/event/editaddhandlers\", ApiSuccess, JSON.stringify({\r\n companyId,\r\n eventId,\r\n userCodes\r\n }));\r\n};\r\n\r\nexport const eventEditRemoveHandlers = (companyId: string, eventId: string, userCodes: string[]): Promise => {\r\n return postApiCall(\"api/event/editremovehandlers\", ApiSuccess, JSON.stringify({\r\n companyId,\r\n eventId,\r\n userCodes\r\n }));\r\n};\r\n// #endregion Handlers\r\n\r\n// #region Edit Message\r\nexport const eventEditAddMessage = (obj: any): Promise => {\r\n return postApiCall(\"api/event/editaddmessage\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const sendEventMessageReadReceipts = (companyId: string, eventId: string, ids: string[]): Promise => {\r\n return postApiCall(\"api/event/sendmessagereadreceipts\", ApiSuccess, JSON.stringify({\r\n companyId,\r\n eventId,\r\n ids\r\n }));\r\n};\r\n// #endregion Edit Message\r\n\r\n// #region Edit EventTypes\r\nexport const eventEditSaveEventTypes = (companyId: string, eventId: string, category: EventTypeCategory, ids: string[]): Promise => {\r\n return postApiCall(\"api/event/editasaveeventtypes\", ApiSuccess, JSON.stringify({\r\n companyId,\r\n eventId,\r\n category,\r\n ids\r\n }));\r\n};\r\n// #endregion Edit EventTypes\r\n\r\n// #region Edit Attachment\r\nexport const eventEditRemoveAttachments = (obj: any): Promise => {\r\n return postApiCall(\"api/event/editremoveattachments\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const eventEditAddAttachments = (obj: any): Promise => {\r\n return postApiCall(\"api/event/editaddattachments\", SaveSuccessItems, JSON.stringify(obj));\r\n};\r\n// #endregion Edit Attachment\r\n\r\n// #region Report\r\nexport const getEventPageReportItems = (companyId: string): Promise => {\r\n const operationId = \"getEventPageReportItems_\" + (companyId ?? \"\");\r\n commonAborts.abort(operationId);\r\n return getApiCall(\"api/event/reports?id=\" + companyId ?? \"\", ReportItems, (id: string) => {\r\n commonAborts.add(operationId, id);\r\n }).finally(() => {\r\n commonAborts.remove(operationId);\r\n });\r\n};\r\n\r\nexport const getReportGenerated = (companyId: string, reportId: string, reportName: string, startDate: number, endDate: number, dynamicTime: number, unitIds: string[],\r\n states: number[], urgencyClassIds: string[], eventTypeIds: string[], eventTypeBIds: string[], eventTypeCIds: string[], partnerCompanyIds: string[], createUserCodes: string[],\r\n handlerUserCodes: string[], observers: string[], parameterValues: IReportParameterValue[]): Promise => {\r\n reportAborts.abortAll();\r\n return postApiCall(\"api/event/createreport\", ReportGenerated2, JSON.stringify({\r\n companyId,\r\n reportId,\r\n reportName,\r\n startDate,\r\n endDate,\r\n dynamicTime,\r\n unitIds,\r\n states,\r\n urgencyClassIds,\r\n eventTypeIds,\r\n eventTypeBIds,\r\n eventTypeCIds,\r\n partnerCompanyIds,\r\n createUserCodes,\r\n handlerUserCodes,\r\n observers,\r\n parameterValues\r\n }), (id: string) => {\r\n reportAborts.add(reportId, id);\r\n }).finally(() => {\r\n reportAborts.remove(reportId);\r\n });\r\n};\r\n\r\nexport const getChart = (panelId: string, companyId: string, reportId: string, chartId: string, startDate: number, endDate: number, dynamicTime: number, unitIds: string[],\r\n states: number[], urgencyClassIds: string[], eventTypeIds: string[], eventTypeBIds: string[], eventTypeCIds: string[], partnerCompanyIds: string[], createUserCodes: string[],\r\n handlerUserCodes: string[], observers: string[], parameterValues: IReportParameterValue[]): Promise => {\r\n chartAborts.abort(panelId);\r\n reportAborts.abortAll();\r\n return postApiCall(\"api/event/createchart\", ReportChartData, JSON.stringify({\r\n companyId,\r\n reportId,\r\n chartId,\r\n startDate,\r\n endDate,\r\n dynamicTime,\r\n unitIds,\r\n states,\r\n urgencyClassIds,\r\n eventTypeIds,\r\n eventTypeBIds,\r\n eventTypeCIds,\r\n partnerCompanyIds,\r\n createUserCodes,\r\n handlerUserCodes,\r\n observers,\r\n parameterValues\r\n }), (abortId: string) => {\r\n chartAborts.add(panelId, abortId);\r\n }).finally(() => {\r\n chartAborts.remove(panelId);\r\n });\r\n};\r\n// #endregion Report\r\n\r\n// #region Dashboard\r\nexport const saveEventPanels = (panels: IPagePanel[]): Promise => {\r\n return postApiCall(\"api/event/savepanels\", ApiSuccess, JSON.stringify({ panels }));\r\n};\r\n\r\nexport const saveEventChartPanels = (panels: ISavedChartPanel[]): Promise => {\r\n return postApiCall(\"api/event/savechartpanels\", ApiSuccess, JSON.stringify({ panels }));\r\n};\r\n\r\nexport const getEventToDoItems = (): Promise => {\r\n return getApiCall(\"api/event/todoitems\", FrontToDoItems);\r\n};\r\n// #endregion Dashboard\r\n\r\n// #region Module Permissions\r\nexport const getUnitNodePermissions = (companyId: string): Promise => {\r\n return getApiCall(\"api/event/module/permissions?id=\" + companyId, UnitNodePermissions);\r\n};\r\n\r\nexport const saveUnitNodePermissions = (obj: any): Promise => {\r\n return postApiCall(\"api/event/module/savepermissions\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Module Permissions\r\n\r\n// #region Module units\r\nexport const getUnits = (companyId: string): Promise => {\r\n return getApiCall(\"api/event/module/units?id=\" + companyId, ModuleUnits);\r\n};\r\n\r\nexport const saveUnits = (obj: any): Promise => {\r\n return postApiCall(\"api/event/module/saveunits\", UnitModuleSaveResult, JSON.stringify(obj));\r\n};\r\n// #endregion Module units\r\n\r\n// #region DefaultHandlers\r\nexport const getUnitNodeDefaultHandlers = (companyId: string): Promise => {\r\n return getApiCall(\"api/event/module/defaulthandlers?id=\" + companyId, UnitNodeDefaultHandlers);\r\n};\r\n\r\nexport const saveUnitNodeDefaultHandlers = (obj: any): Promise => {\r\n return postApiCall(\"api/event/module/savedefaulthandlers\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const defaultHandlersGetSelectUserListItems = (companyId: string, unitId: string, pageSize: number, page: number, filter: string,\r\n ignoreUserIds: string[], ignoreUserCodes: string[], activityState: number, ignoreRecordUserConnected: boolean, doNotIgnoreRecordUserConnectedUserCode: string,\r\n sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/event/module/defaulthandlersselectuserslist\", UserListItems, JSON.stringify({\r\n companyId,\r\n unitId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\",\r\n ignoreUserIds,\r\n ignoreUserCodes,\r\n ignoreRecordUserConnected,\r\n doNotIgnoreRecordUserConnectedUserCode,\r\n activityState\r\n }));\r\n};\r\n// #endregion DefaultHandlers\r\n\r\n// #region EventTypes\r\nexport const getEventTypes = (companyId: string, category: number): Promise => {\r\n return postApiCall(\"api/event/module/eventtype/tree\", EventTypeNodes, JSON.stringify({\r\n companyId,\r\n category\r\n }));\r\n};\r\n\r\nexport const getEventTypeEdit = (companyId: string, category: number, eventTypeId: string): Promise => {\r\n return getApiCall(\"api/event/module/eventtype/edit?id=\" + eventTypeId + \"&companyId=\" + companyId + \"&category=\" + category.toString(10), EventTypeEdit);\r\n};\r\n\r\nexport const saveEventTypeEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/event/module/eventtype/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeEventType = (companyId: string, category: number, id: string, code: string): Promise => {\r\n return postApiCall(\"api/event/module/eventtype/remove\", ApiSuccess, JSON.stringify({\r\n companyId,\r\n category,\r\n id,\r\n code\r\n }));\r\n};\r\n// #endregion EventTypes\r\n\r\n// #region EventPartners\r\nexport const getEventPartnerListItems = (companyId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/event/module/eventpartner/list\", EventPartnerListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\"\r\n }));\r\n};\r\n\r\nexport const getEventPartnerEdit = (companyId: string, eventPartnerId: string): Promise => {\r\n return getApiCall(\"api/event/module/eventpartner/edit?id=\" + eventPartnerId + \"&companyId=\" + companyId, EventPartnerEdit);\r\n};\r\n\r\nexport const saveEventPartnerEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/event/module/eventpartner/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeEventPartner = (companyId: string, id: string, code: string): Promise => {\r\n return postApiCall(\"api/event/module/eventpartner/remove\", ApiSuccess, JSON.stringify({\r\n companyId,\r\n id,\r\n code\r\n }));\r\n};\r\n\r\nexport const getSelectPartnerCompaniesListItems = (pageSize: number, page: number, filter: string, companyGroupIds: string[], activityState: number, sortColumn: string, sortOrderIsAsc: boolean, ignoreCompanyGroupId: string, ignoreCompanyIds: string[]): Promise => {\r\n return postApiCall(\"api/event/module/eventpartner/selectcompanieslist\", CompanyListItems, JSON.stringify({\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\",\r\n companyGroupIds,\r\n activityState,\r\n ignoreCompanyGroupId,\r\n ignoreCompanyIds\r\n }));\r\n};\r\n// #endregion EventPartners\r\n\r\n// #region Module EventUrgencyClasses\r\nexport const getEventUrgencyClassListItems = (companyId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/event/module/urgencyclass/list\", EventUrgencyClassListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\"\r\n }));\r\n};\r\n\r\nexport const getEventUrgencyClassEdit = (companyId: string, eventUrgencyClassId: string): Promise => {\r\n return getApiCall(\"api/event/module/urgencyclass/edit?id=\" + eventUrgencyClassId + \"&companyId=\" + companyId, EventUrgencyClassEdit);\r\n};\r\n\r\nexport const saveEventUrgencyClassEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/event/module/urgencyclass/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeEventUrgencyClasses = (obj: any): Promise => {\r\n return postApiCall(\"api/event/module/urgencyclass/remove\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Module EventUrgencyClasses\r\n\r\n// #region Module EventSettings\r\nexport const getEventSetting = (companyId: string): Promise => {\r\n return getApiCall(\"api/event/module/settings/edit?id=\" + companyId ?? \"\", EventSetting);\r\n};\r\n\r\nexport const saveEventSetting = (obj: any): Promise => {\r\n return postApiCall(\"api/event/module/settings/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Module EventSettings","export interface IRecordEducationListItem {\r\n id: string;\r\n companyId: string;\r\n code: string;\r\n comment: string;\r\n}\r\n\r\nexport class RecordEducationListItem implements IRecordEducationListItem {\r\n id: string;\r\n companyId: string;\r\n code: string;\r\n comment: string;\r\n\r\n constructor();\r\n constructor(obj: IRecordEducationListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.companyId = obj && obj.companyId || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IRecordEditItemEmployment extends IEditItem {\r\n startDate: number;\r\n endDate: number;\r\n companyName: string;\r\n jobTitle: string;\r\n comment: string;\r\n modifyUser: IModifyUser;\r\n\r\n getTitle(): string;\r\n getUiTitle(): string;\r\n}\r\n\r\nexport class RecordEditItemEmployment extends EditItem implements IRecordEditItemEmployment {\r\n startDate: number;\r\n endDate: number;\r\n companyName: string;\r\n jobTitle: string;\r\n comment: string;\r\n modifyUser: ModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IRecordEditItemEmployment);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.startDate = obj && obj.startDate || 0;\r\n this.endDate = obj && obj.endDate || null;\r\n this.companyName = obj && obj.companyName || \"\";\r\n this.jobTitle = obj && obj.jobTitle || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n\r\n getUiTitle(): string {\r\n return ((this.companyName ? this.companyName + \" \" : \"\") + (this.jobTitle ? this.jobTitle : \"\")).trim();\r\n }\r\n\r\n getTitle(): string {\r\n return this.getUiTitle();\r\n }\r\n \r\n static sortRecordEditItemEmployments(items: IRecordEditItemEmployment[], column: string, asc: boolean): IRecordEditItemEmployment[] {\r\n if (!items && items.length < 2) return items;\r\n if (column === \"startDate\") {\r\n return items.sort((a: IRecordEditItemEmployment, b: IRecordEditItemEmployment) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.startDate, b.startDate)); });\r\n } else if (column === \"endDate\") {\r\n return items.sort((a: IRecordEditItemEmployment, b: IRecordEditItemEmployment) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.endDate, b.endDate)); });\r\n } else if (column === \"companyName\") {\r\n return items.sort((a: IRecordEditItemEmployment, b: IRecordEditItemEmployment) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.companyName, b.companyName)); });\r\n } else if (column === \"comment\") {\r\n return items.sort((a: IRecordEditItemEmployment, b: IRecordEditItemEmployment) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.comment, b.comment)); });\r\n } else {\r\n return items.sort((a: IRecordEditItemEmployment, b: IRecordEditItemEmployment) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.jobTitle, b.jobTitle)); });\r\n }\r\n }\r\n}\r\n\r\nexport class RecordEditItemEmploymentSave extends EditItem {\r\n startDate: number;\r\n endDate: number;\r\n companyName: string;\r\n jobTitle: string;\r\n comment: string;\r\n\r\n constructor();\r\n constructor(obj: IRecordEditItemEmployment);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.startDate = obj && obj.startDate || 0;\r\n this.endDate = obj && obj.endDate || null;\r\n this.companyName = obj && obj.companyName || \"\";\r\n this.jobTitle = obj && obj.jobTitle || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n }\r\n}\r\n","import { IRecordFurtherEducationGroupNode, RecordFurtherEducationGroupNode } from \"../recordFurtherEducationGroup/recordFurtherEducationGroupNode\";\r\n\r\nexport interface IRecordFurtherEducationNode {\r\n id: string;\r\n groupId: string;\r\n code: string;\r\n comment: string;\r\n scopeUnit: number;\r\n scope: number;\r\n validity: number;\r\n parent: IRecordFurtherEducationGroupNode;\r\n\r\n parentIsCollapsed(): boolean;\r\n}\r\n\r\nexport class RecordFurtherEducationNode implements IRecordFurtherEducationNode {\r\n id: string;\r\n groupId: string;\r\n code: string;\r\n comment: string;\r\n scopeUnit: number;\r\n scope: number;\r\n validity: number;\r\n parent: RecordFurtherEducationGroupNode;\r\n\r\n constructor();\r\n constructor(obj: IRecordFurtherEducationNode);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.groupId = obj && obj.groupId || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.scopeUnit = obj && obj.scopeUnit || 0;\r\n this.scope = obj && obj.scope || 0;\r\n this.validity = obj && obj.validity || 0;\r\n this.parent = obj && obj.parent || null;\r\n }\r\n\r\n parentIsCollapsed(): boolean {\r\n if (!this.parent) return false;\r\n return this.parent.collapsed;\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { IIdTitleNode, IdTitleNode } from \"../common/idTitleNode\";\r\nimport { IRecordFurtherEducationNode, RecordFurtherEducationNode } from \"../recordFurtherEducation/recordFurtherEducationNode\";\r\n\r\nexport interface IRecordFurtherEducationGroupNode {\r\n id: string;\r\n code: string;\r\n comment: string;\r\n requiredQualificationCount: number;\r\n children: IRecordFurtherEducationNode[];\r\n\r\n collapsed: boolean;\r\n\r\n getRecordFurtherEducationById(id: string): IRecordFurtherEducationNode;\r\n}\r\n\r\nexport class RecordFurtherEducationGroupNode implements IRecordFurtherEducationGroupNode {\r\n id: string;\r\n code: string;\r\n comment: string;\r\n requiredQualificationCount: number;\r\n children: RecordFurtherEducationNode[];\r\n\r\n collapsed: boolean;\r\n\r\n constructor();\r\n constructor(obj: IRecordFurtherEducationGroupNode);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.requiredQualificationCount = obj && obj.requiredQualificationCount || 0;\r\n this.children = Base.getTypedArray(obj ? obj.children : null, RecordFurtherEducationNode);\r\n for (const child of this.children) {\r\n child.parent = this;\r\n }\r\n this.collapsed = obj && obj.collapsed || false;\r\n }\r\n\r\n getRecordFurtherEducationById(id: string): IRecordFurtherEducationNode {\r\n for (const child of this.children) {\r\n if (id !== child.id) continue;\r\n return child;\r\n }\r\n return null;\r\n }\r\n\r\n static isGroup = (arg: any): arg is IRecordFurtherEducationGroupNode => {\r\n return arg.children !== undefined;\r\n };\r\n\r\n static getRecordFurtherEducationById(items: IRecordFurtherEducationGroupNode[], id: string): IRecordFurtherEducationNode {\r\n if (!items || items.length < 1) return null;\r\n for (const item of items) {\r\n const result = item.getRecordFurtherEducationById(id);\r\n if (!result) continue;\r\n return result;\r\n }\r\n return null;\r\n }\r\n\r\n static getRecordFurtherEducationGroupNodeById(items: IRecordFurtherEducationGroupNode[], id: string): IRecordFurtherEducationGroupNode {\r\n if (!items || items.length < 1) return null;\r\n return items.find(i => i.id === id);\r\n }\r\n\r\n static getItemById(items: IRecordFurtherEducationGroupNode[], id: string): IRecordFurtherEducationGroupNode | IRecordFurtherEducationNode {\r\n if (!items || items.length < 1) return null;\r\n for (const item of items) {\r\n if (item.id === id) return item;\r\n const result = item.getRecordFurtherEducationById(id);\r\n if (!result) continue;\r\n return result;\r\n }\r\n return null;\r\n }\r\n\r\n static getFirstRecordFurtherEducationById(items: IRecordFurtherEducationGroupNode[]): IRecordFurtherEducationNode {\r\n if (!items || items.length < 1) return null;\r\n for (const item of items) {\r\n if (!item.children.length) continue;\r\n return item.children[0];\r\n }\r\n return null;\r\n }\r\n \r\n static getRecordFurtherEducationCount(items: IRecordFurtherEducationGroupNode[]): number {\r\n if (!items || items.length < 1) return 0;\r\n let result = 0;\r\n for (const item of items) {\r\n result = result + item.children.length;\r\n }\r\n return result;\r\n }\r\n\r\n static getAsList(items: IRecordFurtherEducationGroupNode[]): (IRecordFurtherEducationGroupNode | IRecordFurtherEducationNode)[] {\r\n if (!items || items.length < 1) return [];\r\n let result: (IRecordFurtherEducationGroupNode | IRecordFurtherEducationNode)[] = [];\r\n for (const item of items) {\r\n result.push(item);\r\n result = result.concat(item.children);\r\n }\r\n return result;\r\n }\r\n \r\n static equalIdsInArrays(a: IRecordFurtherEducationGroupNode[], b: IRecordFurtherEducationGroupNode[]): boolean {\r\n return Base.equalStrArrays(RecordFurtherEducationGroupNode.getAsList(a).map(i => i.id), RecordFurtherEducationGroupNode.getAsList(b).map(i => i.id));\r\n }\r\n\r\n static getFurtherEducations = (furtherEducationGroups: IRecordFurtherEducationGroupNode[]): IIdTitleNode[] => {\r\n if (!furtherEducationGroups || furtherEducationGroups.length < 1) return [];\r\n return furtherEducationGroups.map(i =>\r\n IdTitleNode.createIdTitleNode(\r\n i.id,\r\n i.code,\r\n i.children.map(j => IdTitleNode.createIdTitleNode(\r\n j.id,\r\n j.code,\r\n [],\r\n true,\r\n [\r\n { key: \"scopeUnit\", value: j.scopeUnit.toString(10) },\r\n { key: \"scope\", value: j.scope.toString(10) },\r\n { key: \"validity\", value: j.validity.toString(10) }\r\n ])),\r\n false)\r\n );\r\n };\r\n\r\n static getFurtherEducationsForQualification = (furtherEducationGroups: IRecordFurtherEducationGroupNode[]): IIdTitleNode[] => {\r\n if (!furtherEducationGroups || furtherEducationGroups.length < 1) return [];\r\n return furtherEducationGroups.map(i =>\r\n IdTitleNode.createIdTitleNode(i.id, i.code, i.children.map(j => IdTitleNode.createIdTitleNode(j.id, j.code, [], i.requiredQualificationCount === 0, [{ key: \"scopeUnit\", value: j.scopeUnit.toString(10) }])), i.requiredQualificationCount > 0)\r\n );\r\n };\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { EnumHelper, RecordEducationScopeUnit } from \"ui/Scripts/source/models/enums\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { IIdTitleNode, IdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { IRecordEditItemQualification } from \"./recordEditItemQualification\";\r\nimport { IRecordFurtherEducationGroupNode, RecordFurtherEducationGroupNode } from \"ui/Scripts/source/models/recordFurtherEducationGroup/recordFurtherEducationGroupNode\";\r\n\r\nexport interface IRecordEditItemFurtherEducation extends IEditItem {\r\n furtherEducationId: string;\r\n furtherEducationCode: string;\r\n scope: number;\r\n scopeUnit: RecordEducationScopeUnit;\r\n scopeUnitStr: string;\r\n startDate: number;\r\n endDate: number;\r\n validityEndDate: number;\r\n comment: string;\r\n activeState: number;\r\n modifyUser: IModifyUser;\r\n isQualification: boolean;\r\n qualificationValid: boolean;\r\n\r\n getTitle(): string;\r\n getIsArchived(): boolean;\r\n setFurtherEducationCode2(furtherEducationGroups: IRecordFurtherEducationGroupNode[]);\r\n setScopeUnitStr();\r\n setQaulificationValidity(recordQualifications: IRecordEditItemQualification[]);\r\n}\r\n\r\nexport class RecordEditItemFurtherEducation extends EditItem implements IRecordEditItemFurtherEducation {\r\n furtherEducationId: string;\r\n furtherEducationCode: string;\r\n scope: number;\r\n scopeUnit: RecordEducationScopeUnit;\r\n scopeUnitStr: string;\r\n startDate: number;\r\n endDate: number;\r\n validityEndDate: number;\r\n comment: string;\r\n activeState: number;\r\n modifyUser: ModifyUser;\r\n isQualification: boolean;\r\n qualificationValid: boolean;\r\n\r\n constructor();\r\n constructor(obj: IRecordEditItemFurtherEducation);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.furtherEducationId = obj && obj.furtherEducationId || \"\";\r\n this.furtherEducationCode = obj && obj.furtherEducationCode || \"\";\r\n this.scope = obj && obj.scope || 0;\r\n this.scopeUnit = obj && obj.scopeUnit || RecordEducationScopeUnit.Hour;\r\n this.scopeUnitStr = obj && obj.scopeUnitStr || \"\";\r\n this.startDate = obj && obj.startDate || 0;\r\n this.endDate = obj && obj.endDate || null;\r\n this.validityEndDate = obj && obj.validityEndDate || null;\r\n this.comment = obj && obj.comment || \"\";\r\n this.activeState = obj && obj.activeState || 0;\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n this.isQualification = obj && obj.isQualification || false;\r\n this.qualificationValid = obj && obj.qualificationValid || false;\r\n }\r\n\r\n getTitle(): string {\r\n return this.furtherEducationCode + \", \" + Base.utcTimeToDateStr(this.startDate);\r\n }\r\n\r\n getIsArchived(): boolean {\r\n return this.activeState < 0.5;\r\n }\r\n\r\n setFurtherEducationCode(furtherEducations: IIdTitleNode[]) {\r\n this.furtherEducationCode = \"\";\r\n if (!this.furtherEducationId) return;\r\n const furtherEducation = IdTitleNode.getById(furtherEducations, this.furtherEducationId);\r\n if (!furtherEducation) return;\r\n this.furtherEducationCode = furtherEducation.title;\r\n }\r\n\r\n setFurtherEducationCode2(furtherEducationGroups: IRecordFurtherEducationGroupNode[]) {\r\n this.furtherEducationCode = \"\";\r\n if (!this.furtherEducationId) return;\r\n const furtherEducation = RecordFurtherEducationGroupNode.getRecordFurtherEducationById(furtherEducationGroups, this.furtherEducationId);\r\n if (!furtherEducation) return;\r\n this.furtherEducationCode = furtherEducation.code;\r\n }\r\n\r\n setScopeUnitStr() {\r\n this.scopeUnitStr = EnumHelper.RecordEducationScopeUnitToStr(this.scopeUnit);\r\n }\r\n\r\n static setFurtherEducationCodes(items: IRecordEditItemFurtherEducation[], furtherEducationGroups: IRecordFurtherEducationGroupNode[]) {\r\n for (const item of items) {\r\n item.setFurtherEducationCode2(furtherEducationGroups);\r\n item.setScopeUnitStr();\r\n }\r\n }\r\n\r\n setQaulificationValidity(recordQualifications: IRecordEditItemQualification[]) {\r\n this.isQualification = false;\r\n this.qualificationValid = false;\r\n //#1 Qualification is related to FurtherEducation\r\n const furtherEducationQualifications = recordQualifications.filter(i => !!i.furtherEducationId);\r\n for (const furtherEducationQualification of furtherEducationQualifications) {\r\n const recordQualification = furtherEducationQualification.userFurtherEducations.find(i => i.id === this.id);\r\n if (!recordQualification) continue;\r\n this.isQualification = true;\r\n this.qualificationValid = recordQualification.valid;\r\n return;\r\n }\r\n //#2 Qualification is related to FurtherEducationGroug\r\n // const furtherEducationGroupQualifications = recordQualifications.filter(i => !!i.furtherEducationGroupId);\r\n // for (const furtherEducationGroupQualification of furtherEducationGroupQualifications) {\r\n // const recordQualification = furtherEducationGroupQualification.userFurtherEducations.find(i => i.id === this.id);\r\n // if (!recordQualification) continue;\r\n // this.isQualification = true;\r\n // this.qualificationValid = furtherEducationGroupQualification.valid;\r\n // return;\r\n // }\r\n }\r\n\r\n static setQaulificationsValidity(items: IRecordEditItemFurtherEducation[], recordQualifications: IRecordEditItemQualification[]) {\r\n for (const item of items) {\r\n item.setQaulificationValidity(recordQualifications);\r\n }\r\n }\r\n \r\n static sortRecordEditItemFurtherEducations(items: IRecordEditItemFurtherEducation[], column: string, asc: boolean): IRecordEditItemFurtherEducation[] {\r\n if (!items && items.length < 2) return items;\r\n if (column === \"scope\") {\r\n return items.sort((a: IRecordEditItemFurtherEducation, b: IRecordEditItemFurtherEducation) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.scope, b.scope)); });\r\n } else if (column === \"scopeUnit\") {\r\n return items.sort((a: IRecordEditItemFurtherEducation, b: IRecordEditItemFurtherEducation) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.scopeUnitStr, b.scopeUnitStr)); });\r\n } else if (column === \"startDate\") {\r\n return items.sort((a: IRecordEditItemFurtherEducation, b: IRecordEditItemFurtherEducation) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.startDate, b.startDate)); });\r\n } else if (column === \"endDate\") {\r\n return items.sort((a: IRecordEditItemFurtherEducation, b: IRecordEditItemFurtherEducation) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.endDate, b.endDate)); });\r\n } else if (column === \"validityEndDate\") {\r\n return items.sort((a: IRecordEditItemFurtherEducation, b: IRecordEditItemFurtherEducation) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.validityEndDate, b.validityEndDate)); });\r\n } else if (column === \"activeState\") {\r\n return items.sort((a: IRecordEditItemFurtherEducation, b: IRecordEditItemFurtherEducation) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.activeState, b.activeState)); });\r\n } else if (column === \"comment\") {\r\n return items.sort((a: IRecordEditItemFurtherEducation, b: IRecordEditItemFurtherEducation) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.comment, b.comment)); });\r\n } else {\r\n return items.sort((a: IRecordEditItemFurtherEducation, b: IRecordEditItemFurtherEducation) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.furtherEducationCode, b.furtherEducationCode)); });\r\n }\r\n }\r\n}\r\n\r\nexport class RecordEditItemFurtherEducationSave extends EditItem {\r\n furtherEducationId: string;\r\n scope: number;\r\n scopeUnit: RecordEducationScopeUnit;\r\n startDate: number;\r\n endDate: number;\r\n validityEndDate: number;\r\n comment: string;\r\n activeState: number;\r\n\r\n constructor();\r\n constructor(obj: IRecordEditItemFurtherEducation);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.furtherEducationId = obj && obj.furtherEducationId || \"\";\r\n this.scope = obj && obj.scope || 0;\r\n this.scopeUnit = obj && obj.scopeUnit || RecordEducationScopeUnit.Hour;\r\n this.startDate = obj && obj.startDate || 0;\r\n this.endDate = obj && obj.endDate || null;\r\n this.validityEndDate = obj && obj.validityEndDate || null;\r\n this.comment = obj && obj.comment || \"\";\r\n this.activeState = obj && obj.activeState || 0;\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IRecordEditItemTransferredProperty extends IEditItem {\r\n type: string;\r\n code: string;\r\n description: string;\r\n transferDate: number;\r\n returnDate: number;\r\n modifyUser: IModifyUser;\r\n\r\n getTitle(): string;\r\n getUiTitle(): string;\r\n}\r\n\r\nexport class RecordEditItemTransferredProperty extends EditItem implements IRecordEditItemTransferredProperty {\r\n type: string;\r\n code: string;\r\n description: string;\r\n transferDate: number;\r\n returnDate: number;\r\n modifyUser: IModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IRecordEditItemTransferredProperty);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.type = obj && obj.type || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.description = obj && obj.description || \"\";\r\n this.transferDate = obj && obj.transferDate || 0;\r\n this.returnDate = obj && obj.returnDate || null;\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n\r\n getUiTitle(): string {\r\n return this.code;\r\n }\r\n\r\n getTitle(): string {\r\n return this.code + \", \" + Base.utcTimeToDateStr(this.transferDate);\r\n }\r\n\r\n static createNewRecordEditItemTransferredProperty = (): RecordEditItemTransferredProperty => {\r\n const result = new RecordEditItemTransferredProperty();\r\n result.id = Base.getGuid();\r\n result.transferDate = Base.getNowUtcDate().getTime();\r\n return result;\r\n };\r\n \r\n static sortRecordEditItemTransferredProperties(items: IRecordEditItemTransferredProperty[], column: string, asc: boolean): IRecordEditItemTransferredProperty[] {\r\n if (!items && items.length < 2) return items;\r\n if (column === \"transferDate\") {\r\n return items.sort((a: IRecordEditItemTransferredProperty, b: IRecordEditItemTransferredProperty) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.transferDate, b.transferDate)); });\r\n } else if (column === \"returnDate\") {\r\n return items.sort((a: IRecordEditItemTransferredProperty, b: IRecordEditItemTransferredProperty) => {\r\n const result = (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.returnDate, b.returnDate));\r\n if (result !== 0) return result;\r\n return (asc ? 1 : -1) * Base.numCompare(a.transferDate, b.transferDate);\r\n });\r\n } else if (column === \"type\") {\r\n return items.sort((a: IRecordEditItemTransferredProperty, b: IRecordEditItemTransferredProperty) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.type, b.type)); });\r\n } else if (column === \"description\") {\r\n return items.sort((a: IRecordEditItemTransferredProperty, b: IRecordEditItemTransferredProperty) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.description, b.description)); });\r\n } else {\r\n return items.sort((a: IRecordEditItemTransferredProperty, b: IRecordEditItemTransferredProperty) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.code, b.code)); });\r\n }\r\n }\r\n}\r\n\r\nexport class RecordEditItemTransferredPropertySave extends EditItem {\r\n type: string;\r\n code: string;\r\n description: string;\r\n transferDate: number;\r\n returnDate: number;\r\n\r\n constructor();\r\n constructor(obj: IRecordEditItemTransferredProperty);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.type = obj && obj.type || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.description = obj && obj.description || \"\";\r\n this.transferDate = obj && obj.transferDate || 0;\r\n this.returnDate = obj && obj.returnDate || null;\r\n }\r\n}\r\n","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { IRecordFamiliarizationListItem } from \"../recordFamiliarization/recordFamiliarizationListItem\";\r\n\r\nexport interface IRecordEditItemFamiliarization extends IEditItem {\r\n familiarizationId: string;\r\n familiarizationCode: string;\r\n startDate: number;\r\n endDate: number;\r\n validityEndDate: number;\r\n trainer: string;\r\n comment: string;\r\n activeState: number;\r\n modifyUser: IModifyUser;\r\n\r\n getTitle(): string;\r\n setFamiliarizationCode(familiarizations: IRecordFamiliarizationListItem[]);\r\n}\r\n\r\nexport class RecordEditItemFamiliarization extends EditItem implements IRecordEditItemFamiliarization {\r\n familiarizationId: string;\r\n familiarizationCode: string;\r\n startDate: number;\r\n endDate: number;\r\n validityEndDate: number;\r\n trainer: string;\r\n comment: string;\r\n activeState: number;\r\n modifyUser: ModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IRecordEditItemFamiliarization);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.familiarizationId = obj && obj.familiarizationId || \"\";\r\n this.familiarizationCode = obj && obj.familiarizationCode || \"\";\r\n this.startDate = obj && obj.startDate || 0;\r\n this.endDate = obj && obj.endDate || null;\r\n this.validityEndDate = obj && obj.validityEndDate || null;\r\n this.trainer = obj && obj.trainer || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.activeState = obj && obj.activeState || 0;\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n\r\n getTitle(): string {\r\n return this.familiarizationCode + \", \" + Base.utcTimeToDateStr(this.startDate);\r\n }\r\n\r\n setFamiliarizationCode(familiarizations: IRecordFamiliarizationListItem[]) {\r\n if (!this.familiarizationId) return;\r\n const familiarization = familiarizations.find(i => i.id === this.familiarizationId);\r\n if (!familiarization) return;\r\n this.familiarizationCode = familiarization.code;\r\n }\r\n\r\n static setFamiliarizationCodes(items: IRecordEditItemFamiliarization[], familiarizations: IRecordFamiliarizationListItem[]) {\r\n for (const item of items) {\r\n item.setFamiliarizationCode(familiarizations);\r\n }\r\n }\r\n\r\n static createNewRecordEditItemFamiliarization(familiarizations: IRecordFamiliarizationListItem[]) {\r\n const familiarization = familiarizations.length ? familiarizations[0] : null;\r\n const result = new RecordEditItemFamiliarization();\r\n result.id = Base.getGuid();\r\n result.familiarizationId = familiarization?.id ?? \"\";\r\n result.startDate = Base.getNowUtcDate().addDays(-1).getTime();\r\n result.activeState = 1;\r\n result.setFamiliarizationCode(familiarizations);\r\n return result;\r\n }\r\n \r\n static sortRecordEditItemFamiliarizations(items: IRecordEditItemFamiliarization[], column: string, asc: boolean): IRecordEditItemFamiliarization[] {\r\n if (!items && items.length < 2) return items;\r\n if (column === \"startDate\") {\r\n return items.sort((a: IRecordEditItemFamiliarization, b: IRecordEditItemFamiliarization) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.startDate, b.startDate)); });\r\n } else if (column === \"endDate\") {\r\n return items.sort((a: IRecordEditItemFamiliarization, b: IRecordEditItemFamiliarization) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.endDate, b.endDate)); });\r\n } else if (column === \"validityEndDate\") {\r\n return items.sort((a: IRecordEditItemFamiliarization, b: IRecordEditItemFamiliarization) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.validityEndDate, b.validityEndDate)); });\r\n } else if (column === \"activeState\") {\r\n return items.sort((a: IRecordEditItemFamiliarization, b: IRecordEditItemFamiliarization) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.activeState, b.activeState)); });\r\n } else if (column === \"trainer\") {\r\n return items.sort((a: IRecordEditItemFamiliarization, b: IRecordEditItemFamiliarization) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.trainer, b.trainer)); });\r\n } else if (column === \"comment\") {\r\n return items.sort((a: IRecordEditItemFamiliarization, b: IRecordEditItemFamiliarization) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.comment, b.comment)); });\r\n } else {\r\n return items.sort((a: IRecordEditItemFamiliarization, b: IRecordEditItemFamiliarization) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.familiarizationCode, b.familiarizationCode)); });\r\n }\r\n }\r\n}\r\n\r\nexport class RecordEditItemFamiliarizationSave extends EditItem {\r\n familiarizationId: string;\r\n startDate: number;\r\n endDate: number;\r\n validityEndDate: number;\r\n trainer: string;\r\n comment: string;\r\n activeState: number;\r\n\r\n constructor();\r\n constructor(obj: IRecordEditItemFamiliarization);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.familiarizationId = obj && obj.familiarizationId || \"\";\r\n this.startDate = obj && obj.startDate || 0;\r\n this.endDate = obj && obj.endDate || null;\r\n this.validityEndDate = obj && obj.validityEndDate || null;\r\n this.trainer = obj && obj.trainer || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.activeState = obj && obj.activeState || 0;\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\n\r\nexport interface IRecordQualificationUserFurtherEducation {\r\n id: string;\r\n code: string;\r\n valid: boolean;\r\n validityEndDate: number;\r\n}\r\n\r\nexport class RecordQualificationUserFurtherEducation implements IRecordQualificationUserFurtherEducation {\r\n id: string;\r\n code: string;\r\n valid: boolean;\r\n validityEndDate: number;\r\n\r\n constructor();\r\n constructor(obj: IRecordQualificationUserFurtherEducation);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.valid = obj && obj.valid || false;\r\n this.validityEndDate = obj && obj.validityEndDate || null;\r\n }\r\n\r\n public static Create(id: string, code: string, valid: boolean, validityEndDate: number): IRecordQualificationUserFurtherEducation {\r\n const result = new RecordQualificationUserFurtherEducation();\r\n result.id = id;\r\n result.code = code;\r\n result.valid = valid;\r\n result.validityEndDate = validityEndDate;\r\n return result;\r\n }\r\n\r\n static sortRecordQualificationUserFurtherEducation(items: IRecordQualificationUserFurtherEducation[], column: string, asc: boolean): IRecordQualificationUserFurtherEducation[] {\r\n if (!items && items.length < 2) return items;\r\n if (column === \"validity\") {\r\n return items.sort((a: IRecordQualificationUserFurtherEducation, b: IRecordQualificationUserFurtherEducation) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare((a.id ? 10 : 0) + (a.valid ? 1 : 0), (b.id ? 10 : 0) + (b.valid ? 1 : 0))); });\r\n } else if (column === \"validityEndDate\") {\r\n return items.sort((a: IRecordQualificationUserFurtherEducation, b: IRecordQualificationUserFurtherEducation) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.validityEndDate, b.validityEndDate)); });\r\n } else {\r\n return items.sort((a: IRecordQualificationUserFurtherEducation, b: IRecordQualificationUserFurtherEducation) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.code, b.code)); });\r\n }\r\n }\r\n}\r\n","import { Base } from \"../../framework/base\";\r\nimport { IRecordFurtherEducationGroupNode, RecordFurtherEducationGroupNode } from \"../recordFurtherEducationGroup/recordFurtherEducationGroupNode\";\r\nimport { IRecordListItemUserFurtherEducation } from \"../recordUserFurtherEducation/recordListItemUserFurtherEducation\";\r\nimport { Translations } from \"../translations\";\r\nimport { IRecordQualificationUserFurtherEducation, RecordQualificationUserFurtherEducation } from \"./recordQualificationUserFurtherEducation\";\r\n\r\nexport interface IRecordQualificationSimple {\r\n id: string;\r\n furtherEducationId: string;\r\n furtherEducationGroupId: string;\r\n //Calculated fields\r\n code: string;\r\n requiredQualificationCount: number;\r\n userFurtherEducations: IRecordQualificationUserFurtherEducation[];\r\n validUserFurtherEducations: IRecordQualificationUserFurtherEducation[];\r\n valid: boolean;\r\n validityEndDate: number;\r\n}\r\n\r\nexport interface IRecordUserFurtherEducationSimple {\r\n id: string;\r\n furtherEducationId: string;\r\n validityEndDate: number;\r\n getIsArchived(): boolean;\r\n}\r\n\r\nexport interface IRecordUserQualificationValidityData {\r\n furtherEducationId: string;\r\n furtherEducationValid: boolean;\r\n furtherEducationValidityEndDate: number;\r\n recordUserFurtherEducationId: string;\r\n}\r\n\r\nexport interface IRecordListItemUserQualification extends IRecordQualificationSimple {\r\n}\r\n\r\nexport class RecordListItemUserQualification implements IRecordListItemUserQualification {\r\n id: string;\r\n furtherEducationId: string;\r\n furtherEducationGroupId: string;\r\n //Calculated fields\r\n code: string;\r\n requiredQualificationCount: number;\r\n userFurtherEducations: IRecordQualificationUserFurtherEducation[];\r\n validUserFurtherEducations: IRecordQualificationUserFurtherEducation[];\r\n valid: boolean;\r\n validityEndDate: number;\r\n\r\n constructor();\r\n constructor(obj: IRecordListItemUserQualification);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.furtherEducationId = obj && obj.furtherEducationId || \"\";\r\n this.furtherEducationGroupId = obj && obj.furtherEducationGroupId || \"\";\r\n \r\n this.code = obj && obj.code || \"\";\r\n this.requiredQualificationCount = obj && obj.requiredQualificationCount || 0;\r\n this.userFurtherEducations = Base.getTypedArray(obj ? obj.userFurtherEducations : null, RecordQualificationUserFurtherEducation);\r\n this.validUserFurtherEducations = Base.getTypedArray(obj ? obj.validUserFurtherEducations : null, RecordQualificationUserFurtherEducation);\r\n this.valid = obj && obj.valid || false;\r\n this.validityEndDate = obj && obj.validityEndDate || null;\r\n }\r\n\r\n static getFurtherEducationCodeAndValidityData(userFurtherEducations: IRecordUserFurtherEducationSimple[], furtherEducationId: string): IRecordUserQualificationValidityData {\r\n const result: IRecordUserQualificationValidityData = {\r\n furtherEducationId,\r\n recordUserFurtherEducationId: \"\",\r\n furtherEducationValid: false,\r\n furtherEducationValidityEndDate: null\r\n };\r\n if (!furtherEducationId) return result;\r\n const relevantUserFurtherEducations = userFurtherEducations.filter(i => i.furtherEducationId === furtherEducationId && !i.getIsArchived());\r\n if (relevantUserFurtherEducations.length < 1) return result;\r\n relevantUserFurtherEducations.sort((a: IRecordUserFurtherEducationSimple, b: IRecordUserFurtherEducationSimple) => {\r\n if (!a || !b) return 0;\r\n return -1 * Base.numCompare(a.validityEndDate ?? Number.MAX_VALUE, b.validityEndDate ?? Number.MAX_VALUE);\r\n });\r\n const recordUserFurtherEducation = relevantUserFurtherEducations[0];\r\n const validityEndDate = recordUserFurtherEducation.validityEndDate;\r\n result.recordUserFurtherEducationId = recordUserFurtherEducation.id;\r\n result.furtherEducationValidityEndDate = validityEndDate;\r\n result.furtherEducationValid = !validityEndDate || validityEndDate >= Base.getNowDateTicks();\r\n return result;\r\n }\r\n\r\n static getFurtherEducationCodeAndValidityDatas(userFurtherEducations: IRecordUserFurtherEducationSimple[], furtherEducationIds: string[]): IRecordUserQualificationValidityData[] {\r\n const result: IRecordUserQualificationValidityData[] = [];\r\n if (!furtherEducationIds || !furtherEducationIds.length) return result;\r\n const relevantUserFurtherEducations = userFurtherEducations.filter(i => furtherEducationIds.indexOf(i.furtherEducationId) > -1 && !i.getIsArchived());\r\n if (relevantUserFurtherEducations.length < 1) return result;\r\n relevantUserFurtherEducations.sort((a: IRecordUserFurtherEducationSimple, b: IRecordUserFurtherEducationSimple) => {\r\n if (!a || !b) return 0;\r\n return -1 * Base.numCompare(a.validityEndDate ?? Number.MAX_VALUE, b.validityEndDate ?? Number.MAX_VALUE);\r\n });\r\n return relevantUserFurtherEducations.map(i => {\r\n return {\r\n furtherEducationId: i.furtherEducationId,\r\n recordUserFurtherEducationId: i.id,\r\n furtherEducationValidityEndDate: i.validityEndDate,\r\n furtherEducationValid: !i.validityEndDate || i.validityEndDate >= Base.getNowDateTicks()\r\n };\r\n });\r\n }\r\n\r\n static setCodeAndValidity(qualification: IRecordQualificationSimple, furtherEducationGroups: IRecordFurtherEducationGroupNode[], userFurtherEducations: IRecordUserFurtherEducationSimple[]) {\r\n qualification.code = \"\";\r\n qualification.userFurtherEducations = [];\r\n qualification.validUserFurtherEducations = [];\r\n qualification.requiredQualificationCount = 0;\r\n if (qualification.furtherEducationId) {\r\n const furtherEducation = RecordFurtherEducationGroupNode.getRecordFurtherEducationById(furtherEducationGroups, qualification.furtherEducationId);\r\n if (!furtherEducation) return;\r\n qualification.code = furtherEducation.code;\r\n const data = RecordListItemUserQualification.getFurtherEducationCodeAndValidityData(userFurtherEducations, qualification.furtherEducationId);\r\n if (!data.recordUserFurtherEducationId) return;\r\n qualification.userFurtherEducations.push(RecordQualificationUserFurtherEducation.Create(data.recordUserFurtherEducationId, qualification.code, data.furtherEducationValid, data.furtherEducationValidityEndDate));\r\n } else if (qualification.furtherEducationGroupId) {\r\n const furtherEducationGroup = RecordFurtherEducationGroupNode.getRecordFurtherEducationGroupNodeById(furtherEducationGroups, qualification.furtherEducationGroupId);\r\n if (!furtherEducationGroup) return;\r\n qualification.code = furtherEducationGroup.code;\r\n qualification.requiredQualificationCount = furtherEducationGroup.requiredQualificationCount;\r\n const data = RecordListItemUserQualification.getFurtherEducationCodeAndValidityDatas(userFurtherEducations, furtherEducationGroup.children.map(i => i.id));\r\n for (const item of data) {\r\n const furtherEducation = RecordFurtherEducationGroupNode.getRecordFurtherEducationById(furtherEducationGroups, item.furtherEducationId);\r\n qualification.userFurtherEducations.push(RecordQualificationUserFurtherEducation.Create(item.recordUserFurtherEducationId, furtherEducation.code, item.furtherEducationValid, item.furtherEducationValidityEndDate));\r\n }\r\n }\r\n RecordQualificationUserFurtherEducation.sortRecordQualificationUserFurtherEducation(qualification.userFurtherEducations, \"validityEndDate\", true);\r\n qualification.validUserFurtherEducations = qualification.userFurtherEducations.filter(i => i.valid);\r\n qualification.valid = qualification.requiredQualificationCount > 0\r\n ? qualification.validUserFurtherEducations.length >= qualification.requiredQualificationCount\r\n : qualification.validUserFurtherEducations.length > 0;\r\n const validityEndDates = qualification.validUserFurtherEducations.filter(i => i.validityEndDate).map(i => i.validityEndDate);\r\n qualification.validityEndDate = qualification.valid && validityEndDates.length\r\n ? Math.min(...validityEndDates)\r\n : null;\r\n }\r\n\r\n static setFurtherEducationCodesAndValidity(qualifications: IRecordListItemUserQualification[], furtherEducationGroups: IRecordFurtherEducationGroupNode[], userFurtherEducations: IRecordListItemUserFurtherEducation[]) {\r\n for (const qualification of qualifications) {\r\n RecordListItemUserQualification.setCodeAndValidity(qualification, furtherEducationGroups, userFurtherEducations);\r\n }\r\n }\r\n\r\n static getValidQualificationNumberStr(qualification: IRecordQualificationSimple): string {\r\n return (qualification.furtherEducationGroupId\r\n ? \" (\" + qualification.validUserFurtherEducations.length.toString(10) + \" / \" + qualification.requiredQualificationCount.toString(10) + \")\"\r\n : \"\");\r\n }\r\n\r\n static getQualificationState(qualification: IRecordQualificationSimple): string {\r\n return (qualification.userFurtherEducations.length\r\n ? (qualification.valid\r\n ? Translations.Valid\r\n : Translations.Missing)\r\n : Translations.Missing) + RecordListItemUserQualification.getValidQualificationNumberStr(qualification);\r\n // return (qualification.userFurtherEducations.length\r\n // ? (qualification.valid\r\n // ? Translations.Valid\r\n // : (!qualification.furtherEducationGroupId\r\n // ? Translations.Expired\r\n // : Translations.NotValid))\r\n // : Translations.Missing) + RecordListItemUserQualification.getValidQualificationNumberStr(qualification);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { IRecordEditItemFurtherEducation } from \"./recordEditItemFurtherEducation\";\r\nimport { IRecordFurtherEducationGroupNode } from \"ui/Scripts/source/models/recordFurtherEducationGroup/recordFurtherEducationGroupNode\";\r\nimport { IRecordQualificationUserFurtherEducation, RecordQualificationUserFurtherEducation } from \"ui/Scripts/source/models/recordUserQualification/recordQualificationUserFurtherEducation\";\r\nimport { RecordListItemUserQualification } from \"ui/Scripts/source/models/recordUserQualification/recordListItemUserQualification\";\r\n\r\nexport interface IRecordEditItemQualification extends IEditItem {\r\n furtherEducationId: string;\r\n furtherEducationGroupId: string;\r\n modifyUser: IModifyUser;\r\n code: string;\r\n requiredQualificationCount: number;\r\n userFurtherEducations: IRecordQualificationUserFurtherEducation[];\r\n validUserFurtherEducations: IRecordQualificationUserFurtherEducation[];\r\n valid: boolean;\r\n validityEndDate: number;\r\n\r\n getTitle(): string;\r\n setCodeAndValidity(furtherEducationGroups: IRecordFurtherEducationGroupNode[], userFurtherEducations: IRecordEditItemFurtherEducation[]);\r\n}\r\n\r\nexport class RecordEditItemQualification extends EditItem implements IRecordEditItemQualification {\r\n furtherEducationId: string;\r\n furtherEducationGroupId: string;\r\n modifyUser: ModifyUser;\r\n code: string;\r\n requiredQualificationCount: number;\r\n userFurtherEducations: RecordQualificationUserFurtherEducation[];\r\n validUserFurtherEducations: RecordQualificationUserFurtherEducation[];\r\n valid: boolean;\r\n validityEndDate: number;\r\n\r\n constructor();\r\n constructor(obj: IRecordEditItemQualification);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.furtherEducationId = obj && obj.furtherEducationId || \"\";\r\n this.furtherEducationGroupId = obj && obj.furtherEducationGroupId || \"\";\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n this.code = obj && obj.code || \"\";\r\n this.requiredQualificationCount = obj && obj.requiredQualificationCount || 0;\r\n this.userFurtherEducations = Base.getTypedArray(obj ? obj.userFurtherEducations : null, RecordQualificationUserFurtherEducation);\r\n this.validUserFurtherEducations = Base.getTypedArray(obj ? obj.validUserFurtherEducations : null, RecordQualificationUserFurtherEducation);\r\n this.valid = obj && obj.valid || false;\r\n this.validityEndDate = obj && obj.validityEndDate || null;\r\n }\r\n\r\n getTitle(): string {\r\n return this.code;\r\n }\r\n\r\n setCodeAndValidity(furtherEducationGroups: IRecordFurtherEducationGroupNode[], userFurtherEducations: IRecordEditItemFurtherEducation[]) {\r\n RecordListItemUserQualification.setCodeAndValidity(this, furtherEducationGroups, userFurtherEducations);\r\n }\r\n\r\n static setFurtherEducationCodes(qualifications: IRecordEditItemQualification[], furtherEducationGroups: IRecordFurtherEducationGroupNode[], userFurtherEducations: IRecordEditItemFurtherEducation[]) {\r\n for (const qualification of qualifications) {\r\n RecordListItemUserQualification.setCodeAndValidity(qualification, furtherEducationGroups, userFurtherEducations);\r\n }\r\n }\r\n \r\n static sortRecordEditItemFurtherEducations(items: IRecordEditItemQualification[], column: string, asc: boolean): IRecordEditItemQualification[] {\r\n if (!items && items.length < 2) return items;\r\n if (column === \"validity\") {\r\n return items.sort((a: IRecordEditItemQualification, b: IRecordEditItemQualification) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare((a.userFurtherEducations.length > 0 ? 10 : 0) + (a.valid ? 1 : 0), (b.userFurtherEducations.length ? 10 : 0) + (b.valid ? 1 : 0))); });\r\n } else if (column === \"validityEndDate\") {\r\n return items.sort((a: IRecordEditItemQualification, b: IRecordEditItemQualification) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.validityEndDate, b.validityEndDate)); });\r\n } else {\r\n return items.sort((a: IRecordEditItemQualification, b: IRecordEditItemQualification) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.code, b.code)); });\r\n }\r\n }\r\n}\r\n\r\nexport class RecordEditItemQualificationSave extends EditItem {\r\n furtherEducationId: string;\r\n furtherEducationGroupId: string;\r\n\r\n constructor();\r\n constructor(obj: IRecordEditItemQualification);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.furtherEducationId = obj && obj.furtherEducationId || \"\";\r\n this.furtherEducationGroupId = obj && obj.furtherEducationGroupId || \"\";\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { RecordEmployeeType } from \"ui/Scripts/source/models/enums\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { ITaskDataRow, TaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { IRecordEditItemEmployment, RecordEditItemEmployment } from \"./recordEditItemEmployment\";\r\nimport { IRecordEditItemFurtherEducation, RecordEditItemFurtherEducation } from \"./recordEditItemFurtherEducation\";\r\nimport { IRecordEditItemTransferredProperty, RecordEditItemTransferredProperty } from \"./recordEditItemTransferredProperty\";\r\nimport { IRecordEditItemFamiliarization, RecordEditItemFamiliarization } from \"./recordEditItemFamiliarization\";\r\nimport { IRecordEditItemQualification, RecordEditItemQualification } from \"./recordEditItemQualification\";\r\n\r\nexport interface IRecordEditItem extends IEditItem {\r\n basicEducationId: string;\r\n unitId: string;\r\n unitCode: string;\r\n userId: string;\r\n userCode: string;\r\n firstName: string;\r\n middleName: string;\r\n lastName: string;\r\n picture: string;\r\n birthDate: number;\r\n postalAddress: string;\r\n postalCode: string;\r\n city: string;\r\n phone: string;\r\n email: string;\r\n employeeType: RecordEmployeeType;\r\n ibanNumber: string;\r\n bicCode: string;\r\n taxNumber: string;\r\n driversLicenseType: string;\r\n workShiftName: string;\r\n comment: string;\r\n activeState: number;\r\n personalIdentityCode: string;\r\n identifier: string;\r\n nextOfKinFirstName: string;\r\n nextOfKinLastName: string;\r\n nextOfKinPostalAddress: string;\r\n nextOfKinPostalCode: string;\r\n nextOfKinCity: string;\r\n nextOfKinPhone: string;\r\n nextOfKinEmail: string;\r\n modifyUser: IModifyUser;\r\n familiarizations: IRecordEditItemFamiliarization[];\r\n employments: IRecordEditItemEmployment[];\r\n furtherEducations: IRecordEditItemFurtherEducation[];\r\n transferredProperties: IRecordEditItemTransferredProperty[];\r\n qualifications: IRecordEditItemQualification[];\r\n sheetDataRows: ITaskDataRow[];\r\n\r\n getName(): string;\r\n initializeSheetDataRowsRows(taskType: ITaskEditTypeItem);\r\n}\r\n\r\nexport class RecordEditItem extends EditItem implements IRecordEditItem {\r\n basicEducationId: string;\r\n unitId: string;\r\n unitCode: string;\r\n userId: string;\r\n userCode: string;\r\n firstName: string;\r\n middleName: string;\r\n lastName: string;\r\n picture: string;\r\n birthDate: number;\r\n postalAddress: string;\r\n postalCode: string;\r\n city: string;\r\n phone: string;\r\n email: string;\r\n employeeType: RecordEmployeeType;\r\n ibanNumber: string;\r\n bicCode: string;\r\n taxNumber: string;\r\n driversLicenseType: string;\r\n workShiftName: string;\r\n comment: string;\r\n activeState: number;\r\n personalIdentityCode: string;\r\n identifier: string;\r\n nextOfKinFirstName: string;\r\n nextOfKinLastName: string;\r\n nextOfKinPostalAddress: string;\r\n nextOfKinPostalCode: string;\r\n nextOfKinCity: string;\r\n nextOfKinPhone: string;\r\n nextOfKinEmail: string;\r\n modifyUser: ModifyUser;\r\n familiarizations: RecordEditItemFamiliarization[];\r\n employments: RecordEditItemEmployment[];\r\n furtherEducations: RecordEditItemFurtherEducation[];\r\n transferredProperties: RecordEditItemTransferredProperty[];\r\n qualifications: RecordEditItemQualification[];\r\n sheetDataRows: TaskDataRow[];\r\n\r\n constructor();\r\n constructor(obj: IRecordEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.basicEducationId = obj && obj.basicEducationId || \"\";\r\n this.unitId = obj && obj.unitId || \"\";\r\n this.unitCode = obj && obj.unitCode || \"\";\r\n this.userId = obj && obj.userId || \"\";\r\n this.userCode = obj && obj.userCode || \"\";\r\n this.firstName = obj && obj.firstName || \"\";\r\n this.middleName = obj && obj.middleName || \"\";\r\n this.lastName = obj && obj.lastName || \"\";\r\n this.picture = obj && obj.picture || \"\";\r\n this.birthDate = obj && obj.birthDate || null;\r\n this.postalAddress = obj && obj.postalAddress || \"\";\r\n this.postalCode = obj && obj.postalCode || \"\";\r\n this.city = obj && obj.city || \"\";\r\n this.phone = obj && obj.phone || \"\";\r\n this.email = obj && obj.email || \"\";\r\n this.employeeType = obj && obj.employeeType || RecordEmployeeType.Employee;\r\n this.ibanNumber = obj && obj.ibanNumber || \"\";\r\n this.bicCode = obj && obj.bicCode || \"\";\r\n this.taxNumber = obj && obj.taxNumber || \"\";\r\n this.driversLicenseType = obj && obj.driversLicenseType || \"\";\r\n this.workShiftName = obj && obj.workShiftName || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.activeState = obj && obj.activeState || 0;\r\n this.personalIdentityCode = obj && obj.personalIdentityCode || \"\";\r\n this.identifier = obj && obj.identifier || \"\";\r\n this.nextOfKinFirstName = obj && obj.nextOfKinFirstName || \"\";\r\n this.nextOfKinLastName = obj && obj.nextOfKinLastName || \"\";\r\n this.nextOfKinPostalAddress = obj && obj.nextOfKinPostalAddress || \"\";\r\n this.nextOfKinPostalCode = obj && obj.nextOfKinPostalCode || \"\";\r\n this.nextOfKinCity = obj && obj.nextOfKinCity || \"\";\r\n this.nextOfKinPhone = obj && obj.nextOfKinPhone || \"\";\r\n this.nextOfKinEmail = obj && obj.nextOfKinEmail || \"\";\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n this.familiarizations = Base.getTypedArray(obj ? obj.familiarizations : null, RecordEditItemFamiliarization);\r\n this.employments = Base.getTypedArray(obj ? obj.employments : null, RecordEditItemEmployment);\r\n this.furtherEducations = Base.getTypedArray(obj ? obj.furtherEducations : null, RecordEditItemFurtherEducation);\r\n this.transferredProperties = Base.getTypedArray(obj ? obj.transferredProperties : null, RecordEditItemTransferredProperty);\r\n this.qualifications = Base.getTypedArray(obj ? obj.qualifications : null, RecordEditItemQualification);\r\n this.sheetDataRows = Base.getTypedArray(obj ? obj.sheetDataRows : null, TaskDataRow);\r\n }\r\n\r\n getName(): string {\r\n return ((this.firstName ?? \"\") + \" \" + (this.lastName ?? \"\")).trim();\r\n }\r\n\r\n initializeSheetDataRowsRows(taskType: ITaskEditTypeItem) {\r\n for (let i = 0; i < this.sheetDataRows.length; i++) {\r\n this.sheetDataRows[i].initializeCols(taskType);\r\n }\r\n }\r\n}","export interface IRecordFamiliarizationListItem {\r\n id: string;\r\n companyId: string;\r\n code: string;\r\n comment: string;\r\n}\r\n\r\nexport class RecordFamiliarizationListItem implements IRecordFamiliarizationListItem {\r\n id: string;\r\n companyId: string;\r\n code: string;\r\n comment: string;\r\n\r\n constructor();\r\n constructor(obj: IRecordFamiliarizationListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.companyId = obj && obj.companyId || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { FileAttachment, IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { IdTitleNode, IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { IRecordEducationListItem, RecordEducationListItem } from \"../recordEducation/recordEducationListItem\";\r\nimport { ITaskEditTypeItem, TaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { IRecordEditItem, RecordEditItem } from \"./recordEditItem\";\r\nimport { IRecordFamiliarizationListItem, RecordFamiliarizationListItem } from \"../recordFamiliarization/recordFamiliarizationListItem\";\r\nimport { RecordEditItemFamiliarization } from \"./recordEditItemFamiliarization\";\r\nimport { RecordEditItemFurtherEducation } from \"./recordEditItemFurtherEducation\";\r\nimport { RecordEditItemQualification } from \"./recordEditItemQualification\";\r\nimport { IRecordFurtherEducationGroupNode, RecordFurtherEducationGroupNode } from \"ui/Scripts/source/models/recordFurtherEducationGroup/recordFurtherEducationGroupNode\";\r\n\r\nexport interface IRecordEdit {\r\n record: IRecordEditItem;\r\n canReadUsers: boolean;\r\n canEditUsers: boolean;\r\n canClearUnit: boolean;\r\n canArchiveAndRemove: boolean;\r\n units: IIdTitleNode[];\r\n attachments: IFileAttachment[];\r\n jobTitles: string[];\r\n familiarizations: IRecordFamiliarizationListItem[];\r\n basicEducations: IRecordEducationListItem[];\r\n furtherEducationGroups: IRecordFurtherEducationGroupNode[];\r\n taskType: ITaskEditTypeItem;\r\n transferredPropertyTypes: string[];\r\n familiarizationTrainers: string[];\r\n workShiftNames: string[];\r\n}\r\n\r\nexport class RecordEdit implements IRecordEdit {\r\n record: RecordEditItem;\r\n canReadUsers: boolean;\r\n canEditUsers: boolean;\r\n canClearUnit: boolean;\r\n canArchiveAndRemove: boolean;\r\n units: IdTitleNode[];\r\n attachments: FileAttachment[];\r\n jobTitles: string[];\r\n familiarizations: RecordFamiliarizationListItem[];\r\n basicEducations: RecordEducationListItem[];\r\n furtherEducationGroups: RecordFurtherEducationGroupNode[];\r\n taskType: TaskEditTypeItem;\r\n transferredPropertyTypes: string[];\r\n familiarizationTrainers: string[];\r\n workShiftNames: string[];\r\n\r\n constructor();\r\n constructor(obj: IRecordEdit);\r\n constructor(obj?: any) {\r\n this.record = new RecordEditItem(obj ? obj.record : null);\r\n this.canReadUsers = obj && obj.canReadUsers || false;\r\n this.canEditUsers = obj && obj.canEditUsers || false;\r\n this.canClearUnit = obj && obj.canClearUnit || false;\r\n this.canArchiveAndRemove = obj && obj.canArchiveAndRemove || false;\r\n this.units = Base.getTypedArray(obj ? obj.units : null, IdTitleNode);\r\n this.attachments = Base.getTypedArray(obj ? obj.attachments : null, FileAttachment);\r\n this.jobTitles = obj && obj.jobTitles || [];\r\n this.familiarizations = Base.getTypedArray(obj ? obj.familiarizations : null, RecordFamiliarizationListItem);\r\n this.basicEducations = Base.getTypedArray(obj ? obj.basicEducations : null, RecordEducationListItem);\r\n this.furtherEducationGroups = Base.getTypedArray(obj ? obj.furtherEducationGroups : null, RecordFurtherEducationGroupNode);\r\n this.taskType = new TaskEditTypeItem(obj ? obj.taskType : null);\r\n this.transferredPropertyTypes = obj && obj.transferredPropertyTypes || [];\r\n this.familiarizationTrainers = obj && obj.familiarizationTrainers || [];\r\n this.workShiftNames = obj && obj.workShiftNames || [];\r\n this.record.initializeSheetDataRowsRows(this.taskType);\r\n RecordEditItemFamiliarization.setFamiliarizationCodes(this.record.familiarizations, this.familiarizations);\r\n RecordEditItemFurtherEducation.setFurtherEducationCodes(this.record.furtherEducations, this.furtherEducationGroups);\r\n RecordEditItemQualification.setFurtherEducationCodes(this.record.qualifications, this.furtherEducationGroups, this.record.furtherEducations);\r\n RecordEditItemFurtherEducation.setQaulificationsValidity(this.record.furtherEducations, this.record.qualifications);\r\n }\r\n}","import { EnumHelper, RecordUserLogEntryType } from \"ui/Scripts/source/models/enums\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IRecordEditItemLogListItem {\r\n id: string;\r\n entryType: RecordUserLogEntryType;\r\n entryTypeStr: string;\r\n callerIp: string;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class RecordEditItemLogListItem implements IRecordEditItemLogListItem {\r\n id: string;\r\n entryType: RecordUserLogEntryType;\r\n entryTypeStr: string;\r\n callerIp: string;\r\n modifyUser: ModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IRecordEditItemLogListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.entryType = obj && obj.entryType || RecordUserLogEntryType.Create;\r\n this.entryTypeStr = EnumHelper.RecordUserLogEntryTypeToStr(this.entryType);\r\n this.callerIp = obj && obj.callerIp || \"\";\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ListItems } from \"ui/Scripts/source/framework/listItems\";\r\nimport { IRecordEditItemLogListItem, RecordEditItemLogListItem } from \"./recordEditItemLogListItem\";\r\n\r\nexport interface IRecordEditItemLogListItems extends ListItems { }\r\n\r\nexport class RecordEditItemLogListItems extends ListItems implements IRecordEditItemLogListItems {\r\n constructor();\r\n constructor(obj: IRecordEditItemLogListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, RecordEditItemLogListItem);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IUserGroupListItem, UserGroupListItem } from \"ui/Scripts/source/models/userGroup/userGroupListItem\";\r\nimport { IIdTitleNode, IdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\n\r\nexport interface IRecordEditNew {\r\n units: IIdTitleNode[];\r\n canReadUsers: boolean;\r\n canEditUsers: boolean;\r\n minPasswordLength: number;\r\n userGroups: IUserGroupListItem[];\r\n}\r\n\r\nexport class RecordEditNew implements IRecordEditNew {\r\n units: IdTitleNode[];\r\n canReadUsers: boolean;\r\n canEditUsers: boolean;\r\n minPasswordLength: number;\r\n userGroups: UserGroupListItem[];\r\n\r\n constructor();\r\n constructor(obj: IRecordEditNew);\r\n constructor(obj?: any) {\r\n this.units = Base.getTypedArray(obj ? obj.units : null, IdTitleNode);\r\n this.canReadUsers = obj && obj.canReadUsers || false;\r\n this.canEditUsers = obj && obj.canEditUsers || false;\r\n this.minPasswordLength = obj && obj.minPasswordLength || false;\r\n this.userGroups = Base.getTypedArray(obj ? obj.userGroups : null, UserGroupListItem);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IdTitle, IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\n\r\nexport interface IRecordExpiredFurtherEducationListItem {\r\n id: string;\r\n recordId: string;\r\n name: string;\r\n validityEndDate: number;\r\n recordUserCode: string;\r\n recordFirstName: string;\r\n recordLastName: string;\r\n recordPicture: string;\r\n recordBirthDate: number;\r\n recordArchived: boolean;\r\n attachments: IIdTitle[];\r\n\r\n getName(): string;\r\n}\r\n\r\nexport class RecordExpiredFurtherEducationListItem implements IRecordExpiredFurtherEducationListItem {\r\n id: string;\r\n recordId: string;\r\n name: string;\r\n validityEndDate: number;\r\n recordUserCode: string;\r\n recordFirstName: string;\r\n recordLastName: string;\r\n recordPicture: string;\r\n recordBirthDate: number;\r\n recordArchived: boolean;\r\n attachments: IdTitle[];\r\n\r\n constructor();\r\n constructor(obj: IRecordExpiredFurtherEducationListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.recordId = obj && obj.recordId || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.validityEndDate = obj && obj.validityEndDate || null;\r\n this.recordUserCode = obj && obj.recordUserCode || \"\";\r\n this.recordFirstName = obj && obj.recordFirstName || \"\";\r\n this.recordLastName = obj && obj.recordLastName || \"\";\r\n this.recordPicture = obj && obj.recordPicture || \"\";\r\n this.recordBirthDate = obj && obj.recordBirthDate || null;\r\n this.recordArchived = obj && obj.recordArchived || false;\r\n this.attachments = Base.getTypedArray(obj ? obj.attachments : null, IdTitle);\r\n }\r\n \r\n getName(): string {\r\n return ((this.recordLastName ?? \"\") + \" \" + (this.recordFirstName ?? \"\")).trim();\r\n }\r\n\r\n static sortRecordExpiredFurtherEducationListItemsByColumn(items: IRecordExpiredFurtherEducationListItem[], column: string, asc: boolean): IRecordExpiredFurtherEducationListItem[] {\r\n if (!items && items.length < 2) return items;\r\n if (column === \"validityEndDate\") {\r\n return items.sort((a: IRecordExpiredFurtherEducationListItem, b: IRecordExpiredFurtherEducationListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.validityEndDate, b.validityEndDate)); });\r\n } else if (column === \"lastName\") {\r\n return items.sort((a: IRecordExpiredFurtherEducationListItem, b: IRecordExpiredFurtherEducationListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.recordLastName, b.recordLastName)); });\r\n } else if (column === \"firstName\") {\r\n return items.sort((a: IRecordExpiredFurtherEducationListItem, b: IRecordExpiredFurtherEducationListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.recordFirstName, b.recordFirstName)); });\r\n } else if (column === \"birthDate\") {\r\n return items.sort((a: IRecordExpiredFurtherEducationListItem, b: IRecordExpiredFurtherEducationListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.recordBirthDate, b.recordBirthDate)); });\r\n } else if (column === \"attachments\") {\r\n return items.sort((a: IRecordExpiredFurtherEducationListItem, b: IRecordExpiredFurtherEducationListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.attachments.length ? a.attachments[0].title : \"\", b.attachments.length ? b.attachments[0].title : \"\")); });\r\n } else {\r\n return items.sort((a: IRecordExpiredFurtherEducationListItem, b: IRecordExpiredFurtherEducationListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.name, b.name)); });\r\n }\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ListItems } from \"ui/Scripts/source/framework/listItems\";\r\nimport { IRecordExpiredFurtherEducationListItem, RecordExpiredFurtherEducationListItem } from \"./recordExpiredFurtherEducationListItem\";\r\n\r\nexport interface IRecordExpiredFurtherEducationListItems extends ListItems { }\r\n\r\nexport class RecordExpiredFurtherEducationListItems extends ListItems implements IRecordExpiredFurtherEducationListItems {\r\n constructor();\r\n constructor(obj: IRecordExpiredFurtherEducationListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, RecordExpiredFurtherEducationListItem);\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { EnumHelper, RecordEducationScopeUnit, UserFurtherEducationState } from \"../enums\";\r\n\r\nexport interface IRecordListItemUserFurtherEducation {\r\n id: string;\r\n furtherEducationId: string;\r\n furtherEducationCode: string;\r\n startDate: number;\r\n endDate: number;\r\n validityEndDate: number;\r\n archived: boolean;\r\n scope: number;\r\n scopeUnit: RecordEducationScopeUnit;\r\n scopeUnitStr: string;\r\n state: UserFurtherEducationState;\r\n hasAttachments: boolean;\r\n modifyDate: number;\r\n\r\n getIsArchived(): boolean;\r\n}\r\n\r\nexport class RecordListItemUserFurtherEducation implements IRecordListItemUserFurtherEducation {\r\n id: string;\r\n furtherEducationId: string;\r\n furtherEducationCode: string;\r\n startDate: number;\r\n endDate: number;\r\n validityEndDate: number;\r\n archived: boolean;\r\n scope: number;\r\n scopeUnit: RecordEducationScopeUnit;\r\n scopeUnitStr: string;\r\n state: UserFurtherEducationState;\r\n hasAttachments: boolean;\r\n modifyDate: number;\r\n\r\n constructor();\r\n constructor(obj: IRecordListItemUserFurtherEducation);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.furtherEducationId = obj && obj.furtherEducationId || \"\";\r\n this.furtherEducationCode = obj && obj.furtherEducationCode || \"\";\r\n this.startDate = obj && obj.startDate || 0;\r\n this.endDate = obj && obj.endDate || null;\r\n this.validityEndDate = obj && obj.validityEndDate || null;\r\n this.archived = obj && obj.archived || false;\r\n this.scope = obj && obj.scope || 0;\r\n this.scopeUnit = obj && obj.scopeUnit || RecordEducationScopeUnit.Hour;\r\n this.scopeUnitStr = EnumHelper.RecordEducationScopeUnitToStr(this.scopeUnit);\r\n this.state = obj && obj.state || UserFurtherEducationState.Valid;\r\n this.hasAttachments = obj && obj.hasAttachments || false;\r\n this.modifyDate = obj && obj.modifyDate || 0;\r\n }\r\n\r\n getIsArchived(): boolean {\r\n return this.archived;\r\n }\r\n\r\n static sortRecordListItemUserFurtherEducations(items: IRecordListItemUserFurtherEducation[], column: string, asc: boolean): IRecordListItemUserFurtherEducation[] {\r\n if (!items && items.length < 2) return items;\r\n if (column === \"validityDuration\") {\r\n return items.sort((a: IRecordListItemUserFurtherEducation, b: IRecordListItemUserFurtherEducation) => {\r\n if (!a || !b) return 0;\r\n if (!a.validityEndDate && !b.validityEndDate) {\r\n return ((asc ? 1 : -1) * -1 * Base.numCompare(a.startDate, b.startDate));\r\n }\r\n if (!a.validityEndDate) {\r\n return asc ? 1 : -1;\r\n }\r\n if (!b.validityEndDate) {\r\n return asc ? -1 : 1;\r\n }\r\n return (asc ? 1 : -1) * Base.numCompare(a.validityEndDate, b.validityEndDate);\r\n });\r\n } else if (column === \"validityEndDate\") {\r\n return items.sort((a: IRecordListItemUserFurtherEducation, b: IRecordListItemUserFurtherEducation) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.validityEndDate, b.validityEndDate)); });\r\n } else {\r\n return items.sort((a: IRecordListItemUserFurtherEducation, b: IRecordListItemUserFurtherEducation) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.furtherEducationCode, b.furtherEducationCode)); });\r\n }\r\n }\r\n}","export interface IRecordListItemUserFamiliarization {\r\n id: string;\r\n name: string;\r\n startDate: number;\r\n endDate: number;\r\n validityEndDate: number;\r\n archived: boolean;\r\n}\r\n\r\nexport class RecordListItemUserFamiliarization implements IRecordListItemUserFamiliarization {\r\n id: string;\r\n name: string;\r\n startDate: number;\r\n endDate: number;\r\n validityEndDate: number;\r\n archived: boolean;\r\n\r\n constructor();\r\n constructor(obj: IRecordListItemUserFamiliarization);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.startDate = obj && obj.startDate || 0;\r\n this.endDate = obj && obj.endDate || null;\r\n this.validityEndDate = obj && obj.validityEndDate || null;\r\n this.archived = obj && obj.archived || false;\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { EnumHelper, RecordEmployeeType } from \"ui/Scripts/source/models/enums\";\r\nimport { IRecordListItemUserFurtherEducation, RecordListItemUserFurtherEducation } from \"ui/Scripts/source/models/recordUserFurtherEducation/recordListItemUserFurtherEducation\";\r\nimport { IRecordListItemUserFamiliarization, RecordListItemUserFamiliarization } from \"./recordListItemUserFamiliarization\";\r\nimport { IRecordListItemUserQualification, RecordListItemUserQualification } from \"ui/Scripts/source/models/recordUserQualification/recordListItemUserQualification\";\r\nimport { IUserListItemUserGroup, UserListItemUserGroup } from \"../user/userListItemUserGroup\";\r\n\r\nexport interface IRecordListItem {\r\n id: string;\r\n firstName: string;\r\n middleName: string;\r\n lastName: string;\r\n picture: string;\r\n email: string;\r\n phone: string;\r\n birthDate: number;\r\n employeeType: RecordEmployeeType;\r\n employeeTypeStr: string;\r\n archived: boolean;\r\n basicEducationName: string;\r\n unitCode: string;\r\n userCode: string;\r\n userEndDate: number;\r\n userDisabled: boolean;\r\n userGroups: IUserListItemUserGroup[];\r\n familiarizations: IRecordListItemUserFamiliarization[];\r\n furtherEducations: IRecordListItemUserFurtherEducation[];\r\n qualifications: IRecordListItemUserQualification[];\r\n\r\n getName(): string;\r\n hasQualifications(): boolean;\r\n allQualificationsOk(): boolean;\r\n getQualificationsForUi(): string[];\r\n}\r\n\r\nexport class RecordListItem implements IRecordListItem {\r\n id: string;\r\n firstName: string;\r\n middleName: string;\r\n lastName: string;\r\n picture: string;\r\n email: string;\r\n phone: string;\r\n birthDate: number;\r\n employeeType: RecordEmployeeType;\r\n employeeTypeStr: string;\r\n archived: boolean;\r\n basicEducationName: string;\r\n unitCode: string;\r\n userCode: string;\r\n userEndDate: number;\r\n userDisabled: boolean;\r\n userGroups: UserListItemUserGroup[];\r\n familiarizations: RecordListItemUserFamiliarization[];\r\n furtherEducations: RecordListItemUserFurtherEducation[];\r\n qualifications: RecordListItemUserQualification[];\r\n\r\n constructor();\r\n constructor(obj: IRecordListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.firstName = obj && obj.firstName || \"\";\r\n this.middleName = obj && obj.middleName || \"\";\r\n this.lastName = obj && obj.lastName || \"\";\r\n this.picture = obj && obj.picture || \"\";\r\n this.email = obj && obj.email || \"\";\r\n this.phone = obj && obj.phone || \"\";\r\n this.birthDate = obj && obj.birthDate || null;\r\n this.employeeType = obj && obj.employeeType || RecordEmployeeType.Employee;\r\n this.employeeTypeStr = EnumHelper.RecordEmployeeTypeToStr(this.employeeType);\r\n this.archived = obj && obj.archived || false;\r\n this.basicEducationName = obj && obj.basicEducationName || \"\";\r\n this.unitCode = obj && obj.unitCode || \"\";\r\n this.userCode = obj && obj.userCode || \"\";\r\n this.userEndDate = obj && obj.userEndDate || 0;\r\n this.userDisabled = obj && obj.userDisabled || false;\r\n this.userGroups = Base.getTypedArray(obj ? obj.userGroups : null, UserListItemUserGroup);\r\n this.familiarizations = Base.getTypedArray(obj ? obj.familiarizations : null, RecordListItemUserFamiliarization);\r\n this.furtherEducations = Base.getTypedArray(obj ? obj.furtherEducations : null, RecordListItemUserFurtherEducation);\r\n this.qualifications = Base.getTypedArray(obj ? obj.qualifications : null, RecordListItemUserQualification);\r\n }\r\n\r\n getName(): string {\r\n return ((this.lastName ?? \"\") + \" \" + (this.firstName ?? \"\")).trim();\r\n }\r\n\r\n hasQualifications(): boolean {\r\n return this.qualifications.length > 0;\r\n }\r\n\r\n allQualificationsOk(): boolean {\r\n return !this.qualifications.filter(i => !i.valid).length;\r\n }\r\n\r\n getQualificationsForUi(): string[] {\r\n return this.qualifications.map(i => i.code + \" (\" + RecordListItemUserQualification.getQualificationState(i) + \")\");\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ListItems } from \"ui/Scripts/source/framework/listItems\";\r\nimport { IRecordListItem, RecordListItem } from \"./recordListItem\";\r\nimport { IRecordFurtherEducationGroupNode } from \"ui/Scripts/source/models/recordFurtherEducationGroup/recordFurtherEducationGroupNode\";\r\nimport { RecordListItemUserQualification } from \"ui/Scripts/source/models/recordUserQualification/recordListItemUserQualification\";\r\n\r\nexport interface IRecordListItems extends ListItems {\r\n initializeQualifications(furtherEducationGroups: IRecordFurtherEducationGroupNode[]);\r\n}\r\n\r\nexport class RecordListItems extends ListItems implements IRecordListItems {\r\n constructor();\r\n constructor(obj: IRecordListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, RecordListItem);\r\n }\r\n\r\n initializeQualifications(furtherEducationGroups: IRecordFurtherEducationGroupNode[]) {\r\n if (!furtherEducationGroups || furtherEducationGroups.length < 1) return;\r\n for (const item of this.items) {\r\n // eslint-disable-next-line no-undef\r\n RecordListItemUserQualification.setFurtherEducationCodesAndValidity(item.qualifications, furtherEducationGroups, item.furtherEducations);\r\n }\r\n }\r\n}","export interface IRecordPageEdit {\r\n hasSheet: boolean;\r\n}\r\n\r\nexport class RecordPageEdit implements IRecordPageEdit {\r\n hasSheet: boolean;\r\n\r\n constructor();\r\n constructor(obj: IRecordPageEdit);\r\n constructor(obj?: any) {\r\n this.hasSheet = obj && obj.hasSheet || false;\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { CompanyMenuItem, ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { IdTitleNode, IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { IPagePanel } from \"../common/pagePanel\";\r\nimport { ISavedListFilter, SavedListFilter } from \"../common/savedListFilter\";\r\nimport { IRecordFamiliarizationListItem, RecordFamiliarizationListItem } from \"../recordFamiliarization/recordFamiliarizationListItem\";\r\nimport { ITaskEditTypeItem, TaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { IRecordListItems, RecordListItems } from \"./recordListItems\";\r\nimport { RecordPagePanel } from \"./recordPagePanel\";\r\nimport { IRecordFurtherEducationGroupNode, RecordFurtherEducationGroupNode } from \"ui/Scripts/source/models/recordFurtherEducationGroup/recordFurtherEducationGroupNode\";\r\n\r\nexport interface IRecordPageList {\r\n panels: IPagePanel[];\r\n validAdditionalPermissions: number[];\r\n companies: ICompanyMenuItem[];\r\n furtherEducationGroups: IRecordFurtherEducationGroupNode[];\r\n familiarizations: IRecordFamiliarizationListItem[];\r\n units: IIdTitleNode[];\r\n jobTitles: string[];\r\n sheetTaskType: ITaskEditTypeItem;\r\n list: IRecordListItems;\r\n companyFilters: ISavedListFilter[];\r\n userFilters: ISavedListFilter[];\r\n}\r\n\r\nexport class RecordPageList implements IRecordPageList {\r\n panels: RecordPagePanel[];\r\n validAdditionalPermissions: number[];\r\n companies: CompanyMenuItem[];\r\n furtherEducationGroups: RecordFurtherEducationGroupNode[];\r\n familiarizations: RecordFamiliarizationListItem[];\r\n units: IdTitleNode[];\r\n jobTitles: string[];\r\n sheetTaskType: TaskEditTypeItem;\r\n list: RecordListItems;\r\n companyFilters: SavedListFilter[];\r\n userFilters: SavedListFilter[];\r\n\r\n constructor();\r\n constructor(obj: IRecordPageList);\r\n constructor(obj?: any) {\r\n this.panels = Base.getTypedArray(obj ? obj.panels : null, RecordPagePanel);\r\n this.list = new RecordListItems(obj && obj.list || null);\r\n this.validAdditionalPermissions = obj && obj.validAdditionalPermissions || [];\r\n this.furtherEducationGroups = Base.getTypedArray(obj ? obj.furtherEducationGroups : null, RecordFurtherEducationGroupNode);\r\n this.familiarizations = Base.getTypedArray(obj ? obj.familiarizations : null, RecordFamiliarizationListItem);\r\n this.companies = Base.getTypedArray(obj ? obj.companies : null, CompanyMenuItem);\r\n this.units = Base.getTypedArray(obj ? obj.units : null, IdTitleNode);\r\n this.jobTitles = obj && obj.jobTitles || [];\r\n this.sheetTaskType = null;\r\n if (obj && obj.sheetTaskType) {\r\n this.sheetTaskType = new TaskEditTypeItem(obj ? obj.sheetTaskType : null);\r\n }\r\n this.companyFilters = Base.getTypedArray(obj ? obj.companyFilters : null, SavedListFilter);\r\n this.userFilters = Base.getTypedArray(obj ? obj.userFilters : null, SavedListFilter);\r\n this.list.initializeQualifications(this.furtherEducationGroups);\r\n }\r\n}","import { IRecordPageEdit, RecordPageEdit } from \"./recordPageEdit\";\r\nimport { IRecordPageList, RecordPageList } from \"./recordPageList\";\r\n\r\nexport interface IRecordPage {\r\n list: IRecordPageList;\r\n edit: IRecordPageEdit;\r\n}\r\n\r\nexport class RecordPage implements IRecordPage {\r\n list: RecordPageList;\r\n edit: RecordPageEdit;\r\n\r\n constructor();\r\n constructor(obj: IRecordPage);\r\n constructor(obj?: any) {\r\n this.list = new RecordPageList(obj && obj.list || null);\r\n this.edit = new RecordPageEdit(obj && obj.edit || null);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IdTitleNode, IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { IRecordFamiliarizationListItem, RecordFamiliarizationListItem } from \"../recordFamiliarization/recordFamiliarizationListItem\";\r\nimport { ITaskEditTypeItem, TaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { IRecordFurtherEducationGroupNode, RecordFurtherEducationGroupNode } from \"ui/Scripts/source/models/recordFurtherEducationGroup/recordFurtherEducationGroupNode\";\r\n\r\nexport interface IRecordPageUnitsAndJobTitles {\r\n furtherEducationGroups: IRecordFurtherEducationGroupNode[];\r\n familiarizations: IRecordFamiliarizationListItem[];\r\n units: IIdTitleNode[];\r\n jobTitles: string[];\r\n sheetTaskType: ITaskEditTypeItem;\r\n}\r\n\r\nexport class RecordPageUnitsAndJobTitles implements IRecordPageUnitsAndJobTitles {\r\n furtherEducationGroups: RecordFurtherEducationGroupNode[];\r\n familiarizations: RecordFamiliarizationListItem[];\r\n units: IdTitleNode[];\r\n jobTitles: string[];\r\n sheetTaskType: TaskEditTypeItem;\r\n\r\n constructor();\r\n constructor(obj: IRecordPageUnitsAndJobTitles);\r\n constructor(obj?: any) {\r\n this.furtherEducationGroups = Base.getTypedArray(obj ? obj.furtherEducationGroups : null, RecordFurtherEducationGroupNode);\r\n this.familiarizations = Base.getTypedArray(obj ? obj.familiarizations : null, RecordFamiliarizationListItem);\r\n this.units = Base.getTypedArray(obj ? obj.units : null, IdTitleNode);\r\n this.jobTitles = obj && obj.jobTitles || [];\r\n this.sheetTaskType = null;\r\n if (obj && obj.sheetTaskType) {\r\n this.sheetTaskType = new TaskEditTypeItem(obj ? obj.sheetTaskType : null);\r\n }\r\n }\r\n}","import { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IRecordEducationEditItem extends IEditItem {\r\n code: string;\r\n comment: string;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class RecordEducationEditItem extends EditItem implements IRecordEducationEditItem {\r\n code: string;\r\n comment: string;\r\n modifyUser: IModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IRecordEducationEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { IRecordEducationEditItem, RecordEducationEditItem } from \"./recordEducationEditItem\";\r\n\r\nexport interface IRecordEducationEdit {\r\n education: IRecordEducationEditItem;\r\n}\r\n\r\nexport class RecordEducationEdit implements IRecordEducationEdit {\r\n education: RecordEducationEditItem;\r\n\r\n constructor();\r\n constructor(obj: IRecordEducationEdit);\r\n constructor(obj?: any) {\r\n this.education = new RecordEducationEditItem(obj ? obj.education : null);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ListItems } from \"ui/Scripts/source/framework/listItems\";\r\nimport { IRecordEducationListItem, RecordEducationListItem } from \"./recordEducationListItem\";\r\n\r\nexport interface IRecordEducationListItems extends ListItems { }\r\n\r\nexport class RecordEducationListItems extends ListItems implements IRecordEducationListItems {\r\n constructor();\r\n constructor(obj: IRecordEducationListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, RecordEducationListItem);\r\n }\r\n}","import { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IRecordFamiliarizationEditItem extends IEditItem {\r\n code: string;\r\n comment: string;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class RecordFamiliarizationEditItem extends EditItem implements IRecordFamiliarizationEditItem {\r\n code: string;\r\n comment: string;\r\n modifyUser: IModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IRecordFamiliarizationEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { IRecordFamiliarizationEditItem, RecordFamiliarizationEditItem } from \"./recordFamiliarizationEditItem\";\r\n\r\nexport interface IRecordFamiliarizationEdit {\r\n familiarization: IRecordFamiliarizationEditItem;\r\n}\r\n\r\nexport class RecordFamiliarizationEdit implements IRecordFamiliarizationEdit {\r\n familiarization: RecordFamiliarizationEditItem;\r\n\r\n constructor();\r\n constructor(obj: IRecordFamiliarizationEdit);\r\n constructor(obj?: any) {\r\n this.familiarization = new RecordFamiliarizationEditItem(obj ? obj.familiarization : null);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ListItems } from \"ui/Scripts/source/framework/listItems\";\r\nimport { IRecordFamiliarizationListItem, RecordFamiliarizationListItem } from \"./recordFamiliarizationListItem\";\r\n\r\nexport interface IRecordFamiliarizationListItems extends ListItems { }\r\n\r\nexport class RecordFamiliarizationListItems extends ListItems implements IRecordFamiliarizationListItems {\r\n constructor();\r\n constructor(obj: IRecordFamiliarizationListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, RecordFamiliarizationListItem);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IdTitle, IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\n\r\nexport interface IRecordExpiredFamiliarizationListItem {\r\n id: string;\r\n recordId: string;\r\n name: string;\r\n validityEndDate: number;\r\n recordUserCode: string;\r\n recordFirstName: string;\r\n recordLastName: string;\r\n recordPicture: string;\r\n recordBirthDate: number;\r\n recordArchived: boolean;\r\n attachments: IIdTitle[];\r\n\r\n getName(): string;\r\n}\r\n\r\nexport class RecordExpiredFamiliarizationListItem implements IRecordExpiredFamiliarizationListItem {\r\n id: string;\r\n recordId: string;\r\n name: string;\r\n validityEndDate: number;\r\n recordUserCode: string;\r\n recordFirstName: string;\r\n recordLastName: string;\r\n recordPicture: string;\r\n recordBirthDate: number;\r\n recordArchived: boolean;\r\n attachments: IdTitle[];\r\n\r\n constructor();\r\n constructor(obj: IRecordExpiredFamiliarizationListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.recordId = obj && obj.recordId || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.validityEndDate = obj && obj.validityEndDate || null;\r\n this.recordUserCode = obj && obj.recordUserCode || \"\";\r\n this.recordFirstName = obj && obj.recordFirstName || \"\";\r\n this.recordLastName = obj && obj.recordLastName || \"\";\r\n this.recordPicture = obj && obj.recordPicture || \"\";\r\n this.recordBirthDate = obj && obj.recordBirthDate || null;\r\n this.recordArchived = obj && obj.recordArchived || false;\r\n this.attachments = Base.getTypedArray(obj ? obj.attachments : null, IdTitle);\r\n }\r\n \r\n getName(): string {\r\n return ((this.recordLastName ?? \"\") + \" \" + (this.recordFirstName ?? \"\")).trim();\r\n }\r\n\r\n static sortRecordExpiredFamiliarizationListItemsByColumn(items: IRecordExpiredFamiliarizationListItem[], column: string, asc: boolean): IRecordExpiredFamiliarizationListItem[] {\r\n if (!items && items.length < 2) return items;\r\n if (column === \"validityEndDate\") {\r\n return items.sort((a: IRecordExpiredFamiliarizationListItem, b: IRecordExpiredFamiliarizationListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.validityEndDate, b.validityEndDate)); });\r\n } else if (column === \"lastName\") {\r\n return items.sort((a: IRecordExpiredFamiliarizationListItem, b: IRecordExpiredFamiliarizationListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.recordLastName, b.recordLastName)); });\r\n } else if (column === \"firstName\") {\r\n return items.sort((a: IRecordExpiredFamiliarizationListItem, b: IRecordExpiredFamiliarizationListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.recordFirstName, b.recordFirstName)); });\r\n } else if (column === \"birthDate\") {\r\n return items.sort((a: IRecordExpiredFamiliarizationListItem, b: IRecordExpiredFamiliarizationListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.recordBirthDate, b.recordBirthDate)); });\r\n } else if (column === \"attachments\") {\r\n return items.sort((a: IRecordExpiredFamiliarizationListItem, b: IRecordExpiredFamiliarizationListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.attachments.length ? a.attachments[0].title : \"\", b.attachments.length ? b.attachments[0].title : \"\")); });\r\n } else {\r\n return items.sort((a: IRecordExpiredFamiliarizationListItem, b: IRecordExpiredFamiliarizationListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.name, b.name)); });\r\n }\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ListItems } from \"ui/Scripts/source/framework/listItems\";\r\nimport { IRecordExpiredFamiliarizationListItem, RecordExpiredFamiliarizationListItem } from \"./recordExpiredFamiliarizationListItem\";\r\n\r\nexport interface IRecordExpiredFamiliarizationListItems extends ListItems { }\r\n\r\nexport class RecordExpiredFamiliarizationListItems extends ListItems implements IRecordExpiredFamiliarizationListItems {\r\n constructor();\r\n constructor(obj: IRecordExpiredFamiliarizationListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, RecordExpiredFamiliarizationListItem);\r\n }\r\n}","import { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IRecordFurtherEducationEditItem extends IEditItem {\r\n groupId: string;\r\n code: string;\r\n comment: string;\r\n scopeUnit: number;\r\n scope: number;\r\n validity: number;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class RecordFurtherEducationEditItem extends EditItem implements IRecordFurtherEducationEditItem {\r\n groupId: string;\r\n code: string;\r\n comment: string;\r\n scopeUnit: number;\r\n scope: number;\r\n validity: number;\r\n modifyUser: IModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IRecordFurtherEducationEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.groupId = obj && obj.groupId || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.scopeUnit = obj && obj.scopeUnit || 0;\r\n this.scope = obj && obj.scope || 0;\r\n this.validity = obj && obj.validity || 0;\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { IRecordFurtherEducationEditItem, RecordFurtherEducationEditItem } from \"./recordFurtherEducationEditItem\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IIdTitle, IdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\n\r\nexport interface IRecordFurtherEducationEdit {\r\n education: IRecordFurtherEducationEditItem;\r\n furtherEducationGroups: IIdTitle[];\r\n}\r\n\r\nexport class RecordFurtherEducationEdit implements IRecordFurtherEducationEdit {\r\n education: RecordFurtherEducationEditItem;\r\n furtherEducationGroups: IdTitle[];\r\n\r\n constructor();\r\n constructor(obj: IRecordFurtherEducationEdit);\r\n constructor(obj?: any) {\r\n this.education = new RecordFurtherEducationEditItem(obj ? obj.education : null);\r\n this.furtherEducationGroups = Base.getTypedArray(obj ? obj.furtherEducationGroups : null, IdTitle);\r\n }\r\n}","import { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IRecordFurtherEducationGroupEditItem extends IEditItem {\r\n code: string;\r\n comment: string;\r\n requiredQualificationCount: number;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class RecordFurtherEducationGroupEditItem extends EditItem implements IRecordFurtherEducationGroupEditItem {\r\n code: string;\r\n comment: string;\r\n requiredQualificationCount: number;\r\n modifyUser: IModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IRecordFurtherEducationGroupEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.requiredQualificationCount = obj && obj.requiredQualificationCount || 0;\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { IRecordFurtherEducationGroupEditItem, RecordFurtherEducationGroupEditItem } from \"./recordFurtherEducationGroupEditItem\";\r\n\r\nexport interface IRecordFurtherEducationGroupEdit {\r\n educationGroup: IRecordFurtherEducationGroupEditItem;\r\n}\r\n\r\nexport class RecordFurtherEducationGroupEdit implements IRecordFurtherEducationGroupEdit {\r\n educationGroup: RecordFurtherEducationGroupEditItem;\r\n\r\n constructor();\r\n constructor(obj: IRecordFurtherEducationGroupEdit);\r\n constructor(obj?: any) {\r\n this.educationGroup = new RecordFurtherEducationGroupEditItem(obj ? obj.educationGroup : null);\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { IRecordFurtherEducationGroupNode, RecordFurtherEducationGroupNode } from \"./recordFurtherEducationGroupNode\";\r\n\r\nexport interface IRecordFurtherEducationGroupNodes {\r\n items: IRecordFurtherEducationGroupNode[];\r\n}\r\n\r\nexport class RecordFurtherEducationGroupNodes implements IRecordFurtherEducationGroupNodes {\r\n items: RecordFurtherEducationGroupNode[];\r\n\r\n constructor();\r\n constructor(obj: IRecordFurtherEducationGroupNodes);\r\n constructor(obj?: any) {\r\n this.items = Base.getTypedArray(obj ? obj.items : null, RecordFurtherEducationGroupNode);\r\n }\r\n}","import { RecordEdit } from \"../record/recordEdit\";\r\nimport { RecordEditItemLogListItems } from \"../record/recordEditItemLogListItems\";\r\nimport { RecordEditNew } from \"../record/recordEditNew\";\r\nimport { RecordExpiredFurtherEducationListItems } from \"../record/recordExpiredFurtherEducationListItems\";\r\nimport { RecordListItems } from \"../record/recordListItems\";\r\nimport { RecordPage } from \"../record/recordPage\";\r\nimport { RecordPageUnitsAndJobTitles } from \"../record/recordPageUnitsAndJobTitles\";\r\nimport { RecordEducationEdit } from \"../recordEducation/recordEducationEdit\";\r\nimport { RecordEducationListItems } from \"../recordEducation/recordEducationListItems\";\r\nimport { IReportParameterValue } from \"../report/reportParameterValue\";\r\nimport { ReportGenerated2 } from \"../report/reportGenerated2\";\r\nimport { ReportItems } from \"../report/reportItems\";\r\nimport { UnitNodePermissions } from \"../unit/unitNodePermissions\";\r\nimport { AbortDictionary, getApiCall, getFileApiCall, postApiCall } from \"./tokenService\";\r\nimport { ModuleUnits } from \"../unit/moduleUnits\";\r\nimport { IPagePanel } from \"../common/pagePanel\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { SaveSuccessItems } from \"ui/Scripts/source/models/common/saveSuccessItems\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { RecordFamiliarizationEdit } from \"../recordFamiliarization/recordFamiliarizationEdit\";\r\nimport { RecordFamiliarizationListItems } from \"../recordFamiliarization/recordFamiliarizationListItems\";\r\nimport { RecordExpiredFamiliarizationListItems } from \"../record/recordExpiredFamiliarizationListItems\";\r\nimport { RecordFurtherEducationEdit } from \"../recordFurtherEducation/recordFurtherEducationEdit\";\r\nimport { FrontToDoItems } from \"../front/frontToDoItems\";\r\nimport { RecordUserRemoveType } from \"ui/Scripts/source/models/enums\";\r\nimport { RecordFurtherEducationGroupEdit } from \"../recordFurtherEducationGroup/recordFurtherEducationGroupEdit\";\r\nimport { RecordFurtherEducationGroupNodes } from \"ui/Scripts/source/models/recordFurtherEducationGroup/recordFurtherEducationGroupNodes\";\r\nimport { UnitModuleSaveResult } from \"../unit/unitModuleSaveResult\";\r\n\r\n//Abort\r\nconst commonAborts = new AbortDictionary();\r\nconst reportAborts = new AbortDictionary();\r\n \r\n//Page & List\r\nexport const getRecordPage = (): Promise => {\r\n return getApiCall(\"api/record\", RecordPage);\r\n};\r\n\r\nexport const getRecordPageUnitsAndJobTitles = (companyId: string): Promise => {\r\n return getApiCall(\"api/record/pageunitsandjobtitles?id=\" + companyId, RecordPageUnitsAndJobTitles);\r\n};\r\n\r\nexport const getRecordListItems = (companyId: string, pageSize: number, page: number, filter: string, employeeTypes: number[], jobTitles: string[], unitIds: string[], activityState: number, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n reportAborts.abortAll();\r\n return postApiCall(\"api/record/list\", RecordListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\",\r\n employeeTypes,\r\n jobTitles,\r\n unitIds,\r\n activityState\r\n }));\r\n};\r\n\r\n// #region SheetDataRow\r\nexport const addSheetDataRowToRecords = (obj: any): Promise => {\r\n return postApiCall(\"api/record/addsheetdatarowtorecords\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion SheetDataRow\r\n\r\n// #region Familiarization\r\nexport const getExpiredRecordUserFamiliarizationListItems = (companyId: string, employeeTypes: number[], jobTitles: string[], unitIds: string[], activityState: number, pageSize: number, page: number, sortColumn: string, sortOrderIsAsc: boolean, isReport: boolean): Promise => {\r\n reportAborts.abortAll();\r\n return postApiCall(\"api/record/expiredfamiliarizationlist\", RecordExpiredFamiliarizationListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n isReport,\r\n employeeTypes,\r\n jobTitles,\r\n unitIds,\r\n activityState\r\n }));\r\n};\r\n\r\nexport const archiveRecordUserFamiliarizations = (obj: any): Promise => {\r\n return postApiCall(\"api/record/archivefamiliarizations\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Familiarization\r\n\r\n// #region FurtherEducation\r\nexport const addFurtherEducationToRecords = (obj: any): Promise => {\r\n return postApiCall(\"api/record/addfurthereducationtorecords\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const getExpiredRecordUserFurtherEducationListItems = (companyId: string, employeeTypes: number[], jobTitles: string[], unitIds: string[], activityState: number, pageSize: number, page: number, sortColumn: string, sortOrderIsAsc: boolean, isReport: boolean): Promise => {\r\n reportAborts.abortAll();\r\n return postApiCall(\"api/record/expiredfurthereducationlist\", RecordExpiredFurtherEducationListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n isReport,\r\n employeeTypes,\r\n jobTitles,\r\n unitIds,\r\n activityState\r\n }));\r\n};\r\n\r\nexport const archiveRecordUserFurtherEducations = (obj: any): Promise => {\r\n return postApiCall(\"api/record/archivefurthereducations\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion FurtherEducation\r\n\r\n// #region TransferredProperty\r\nexport const addTransferredPropertyToToRecords = (obj: any): Promise => {\r\n return postApiCall(\"api/record/addtransferredpropertytorecords\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion TransferredProperty\r\n\r\n// #region Qualification\r\nexport const addQualificationToToRecords = (obj: any): Promise => {\r\n return postApiCall(\"api/record/addqualificationtorecords\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Qualification\r\n\r\n// #region Familiarization\r\nexport const addFamiliarizationToToRecords = (obj: any): Promise => {\r\n return postApiCall(\"api/record/addfamiliarizationtorecords\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Familiarization\r\n\r\n// #region Dashboard\r\nexport const saveRecordPanels = (panels: IPagePanel[]): Promise => {\r\n return postApiCall(\"api/record/savepanels\", ApiSuccess, JSON.stringify({ panels }));\r\n};\r\n\r\nexport const getRecordToDoItems = (companyId: string): Promise => {\r\n return getApiCall(\"api/record/todoitems?id=\" + (companyId ?? \"\"), FrontToDoItems);\r\n};\r\n// #endregion Dashboard\r\n\r\n// #region Report\r\nexport const getRecordPageReportItems = (companyId: string): Promise => {\r\n const operationId = \"getRecordPageReportItems\" + (companyId ?? \"\");\r\n commonAborts.abort(operationId);\r\n return getApiCall(\"api/record/reports?id=\" + (companyId ?? \"\"), ReportItems, (id: string) => {\r\n commonAborts.add(operationId, id);\r\n }).finally(() => {\r\n commonAborts.remove(operationId);\r\n });\r\n};\r\n\r\nexport const getReportGenerated = (companyId: string, reportId: string, reportName: string, employeeTypes: number[],\r\n jobTitles: string[], unitIds: string[], activityState: number, parameterValues: IReportParameterValue[], printRows: number[] = []): Promise => {\r\n reportAborts.abortAll();\r\n return postApiCall(\"api/record/createreport\", ReportGenerated2, JSON.stringify({\r\n companyId,\r\n reportId,\r\n reportName,\r\n employeeTypes,\r\n jobTitles,\r\n unitIds,\r\n activityState,\r\n parameterValues,\r\n printRows\r\n }), (id: string) => {\r\n reportAborts.add(reportId, id);\r\n }).finally(() => {\r\n reportAborts.remove(reportId);\r\n });\r\n};\r\n// #endregion Report\r\n\r\n// #region Edit\r\nexport const getRecordEditNew = (companyId: string): Promise => {\r\n return getApiCall(\"api/record/new?id=\" + companyId, RecordEditNew);\r\n};\r\n\r\nexport const saveRecordEditNew = (obj: any): Promise => {\r\n return postApiCall(\"api/record/newsave\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const getRecordEdit = (recordId: string, companyId: string): Promise => {\r\n return getApiCall(\"api/record/edit?id=\" + recordId + \"&companyId=\" + companyId, RecordEdit);\r\n};\r\n\r\nexport const saveRecordEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/record/editsave\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeRecord = (recordId: string, companyId: string, removeType: RecordUserRemoveType): Promise => {\r\n return postApiCall(\"api/record/remove?id=\" + recordId + \"&companyId=\" + companyId + \"&removeType=\" + removeType.toString(10), ApiSuccess);\r\n};\r\n\r\nexport const getRecordPrint = (recordId: string, companyId: string): Promise => {\r\n return getFileApiCall(\"api/record/print?id=\" + recordId + \"&companyId=\" + companyId);\r\n};\r\n// #endregion Edit\r\n\r\n// #region Edit SheetData\r\nexport const recordEditSaveSheetData = (obj: any): Promise => {\r\n return postApiCall(\"api/record/editsavesheetdata\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Edit SheetData\r\n\r\n// #region Edit Attachment\r\nexport const recordEditRemoveAttachments = (obj: any): Promise => {\r\n return postApiCall(\"api/record/editremoveattachments\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const recordEditAddAttachments = (obj: any): Promise => {\r\n return postApiCall(\"api/record/editaddattachments\", SaveSuccessItems, JSON.stringify(obj));\r\n};\r\n// #endregion Edit Attachment\r\n\r\n// #region Edit Familiarization\r\nexport const recordEditRemoveFamiliarizations = (obj: any): Promise => {\r\n return postApiCall(\"api/record/editremovefamiliarizations\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const recordEditSaveFamiliarization = (obj: any): Promise => {\r\n return postApiCall(\"api/record/editsavefamiliarization\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const getFamiliarizationTrainers = (companyId: string): Promise => {\r\n return getApiCall(\"api/record/familiarizationtrainers?id=\" + companyId, null);\r\n};\r\n// #endregion Edit Familiarization\r\n\r\n// #region Edit FurtherEducation\r\nexport const recordEditRemoveFurtherEducations = (obj: any): Promise => {\r\n return postApiCall(\"api/record/editremovefurthereducations\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const recordEditSaveFurtherEducation = (obj: any): Promise => {\r\n return postApiCall(\"api/record/editsavefurthereducation\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Edit FurtherEducation\r\n\r\n// #region Edit Employment\r\nexport const recordEditRemoveEmployments = (obj: any): Promise => {\r\n return postApiCall(\"api/record/editremoveemployments\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const recordEditSaveEmployment = (obj: any): Promise => {\r\n return postApiCall(\"api/record/editsaveemployment\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Edit Employment\r\n\r\n// #region Edit TransferredProperty\r\nexport const recordEditRemoveTransferredProperties = (obj: any): Promise => {\r\n return postApiCall(\"api/record/editremovetrensferredproperties\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const recordEditSaveTransferredProperty = (obj: any): Promise => {\r\n return postApiCall(\"api/record/editsavetransferredproperty\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const getTransferredPropertyTypes = (companyId: string): Promise => {\r\n return getApiCall(\"api/record/transferredpropertytypes?id=\" + companyId, null);\r\n};\r\n// #endregion Edit TransferredProperty\r\n\r\n// #region Edit Qualification\r\nexport const recordEditRemoveQualifications = (obj: any): Promise => {\r\n return postApiCall(\"api/record/editremovequalifications\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const recordEditSaveQualification = (obj: any): Promise => {\r\n return postApiCall(\"api/record/editsavequalification\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Edit Qualification\r\n\r\n// #region Edit Log\r\nexport const getRecordEditItemLogListItems = (companyId: string, recordId: string, userCode: string, filter: string, pageSize: number, page: number, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/record/editLogList\", RecordEditItemLogListItems, JSON.stringify({\r\n companyId,\r\n id: recordId,\r\n userCode: userCode || \"\",\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\",\r\n }));\r\n};\r\n// #endregion Edit Log\r\n\r\n// #region Module permissions\r\nexport const getUnitNodePermissions = (companyId: string): Promise => {\r\n return getApiCall(\"api/record/module/permissions?id=\" + companyId, UnitNodePermissions);\r\n};\r\n\r\nexport const saveUnitNodePermissions = (obj: any): Promise => {\r\n return postApiCall(\"api/record/module/savepermissions\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Module permissions\r\n\r\n// #region Module basic educations\r\nexport const getBasicEducationListItems = (companyId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/record/module/basiceducation/list\", RecordEducationListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\"\r\n }));\r\n};\r\n\r\nexport const getRecordBasicEducationEdit = (companyId: string, userId: string): Promise => {\r\n return getApiCall(\"api/record/module/basiceducation/edit?id=\" + userId + \"&companyId=\" + companyId, RecordEducationEdit);\r\n};\r\n\r\nexport const saveRecordBasicEducationEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/record/module/basiceducation/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeRecordBasicEducations = (obj: any): Promise => {\r\n return postApiCall(\"api/record/module/basiceducation/remove\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Module basic educations\r\n\r\n// #region Module further educations\r\nexport const getRecordFurtherEducationGroupNodes = (companyId: string): Promise => {\r\n return postApiCall(\"api/record/module/furthereducation/list\", RecordFurtherEducationGroupNodes, JSON.stringify({\r\n companyId\r\n }));\r\n};\r\n\r\nexport const getRecordFurtherEducationEdit = (companyId: string, userId: string): Promise => {\r\n return getApiCall(\"api/record/module/furthereducation/edit?id=\" + userId + \"&companyId=\" + (companyId ?? \"\"), RecordFurtherEducationEdit);\r\n};\r\n\r\nexport const saveRecordFurtherEducationEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/record/module/furthereducation/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeRecordFurtherEducations = (obj: any): Promise => {\r\n return postApiCall(\"api/record/module/furthereducation/remove\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const getRecordFurtherEducationGroupEdit = (companyId: string, userId: string): Promise => {\r\n return getApiCall(\"api/record/module/furthereducationgroup/edit?id=\" + userId + \"&companyId=\" + (companyId ?? \"\"), RecordFurtherEducationGroupEdit);\r\n};\r\n\r\nexport const saveRecordFurtherEducationGroupEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/record/module/furthereducationgroup/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeRecordFurtherEducationGroup = (companyId: string, id: string): Promise => {\r\n return postApiCall(\"api/record/module/furthereducationgroup/remove?id=\" + id + \"&companyId=\" + (companyId ?? \"\"), ApiSuccess);\r\n};\r\n// #endregion Module further educations\r\n\r\n// #region Module familiarizations\r\nexport const getRecordFamiliarizationListItems = (companyId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/record/module/familiarization/list\", RecordFamiliarizationListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\"\r\n }));\r\n};\r\n\r\nexport const getRecordFamiliarizationEdit = (companyId: string, userId: string): Promise => {\r\n return getApiCall(\"api/record/module/familiarization/edit?id=\" + userId + \"&companyId=\" + companyId, RecordFamiliarizationEdit);\r\n};\r\n\r\nexport const saveRecordFamiliarizationEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/record/module/familiarization/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeRecordFamiliarizations = (obj: any): Promise => {\r\n return postApiCall(\"api/record/module/familiarization/remove\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Module familiarizations\r\n\r\n// #region Module units\r\nexport const getUnits = (companyId: string): Promise => {\r\n return getApiCall(\"api/record/module/units?id=\" + companyId, ModuleUnits);\r\n};\r\n\r\nexport const saveUnits = (obj: any): Promise => {\r\n return postApiCall(\"api/record/module/saveunits\", UnitModuleSaveResult, JSON.stringify(obj));\r\n};\r\n// #endregion Module units\r\n","import { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { FileAttachment, IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\n\r\nexport interface IMessageShortListItem {\r\n id: string;\r\n companyId: string;\r\n date: number;\r\n title: string;\r\n content: string;\r\n userCode: string;\r\n userName: string;\r\n userPicture: string;\r\n typeImage: string;\r\n companyName: string;\r\n modifyDate: number;\r\n isRead: boolean;\r\n requiresReceipt: boolean;\r\n attachments: IFileAttachment[];\r\n\r\n getStateNumber(): number;\r\n getStateStr(): string;\r\n getStateNumberListSection(): number;\r\n getStateStrListSection(): string;\r\n}\r\n\r\nexport class MessageShortListItem implements IMessageShortListItem {\r\n id: string;\r\n companyId: string;\r\n date: number;\r\n title: string;\r\n content: string;\r\n userCode: string;\r\n userName: string;\r\n userPicture: string;\r\n typeImage: string;\r\n companyName: string;\r\n modifyDate: number;\r\n isRead: boolean;\r\n requiresReceipt: boolean;\r\n attachments: FileAttachment[];\r\n\r\n constructor();\r\n constructor(obj: IMessageShortListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.companyId = obj && obj.companyId || \"\";\r\n this.date = obj && obj.date || null;\r\n this.title = obj && obj.title || \"\";\r\n this.content = obj && obj.content || \"\";\r\n this.userCode = obj && obj.userCode || \"\";\r\n this.userName = obj && obj.userName || \"\";\r\n this.userPicture = obj && obj.userPicture || \"\";\r\n this.typeImage = obj && obj.typeImage || \"\";\r\n this.companyName = obj && obj.companyName || \"\";\r\n this.modifyDate = obj && obj.modifyDate || 0;\r\n this.isRead = obj && obj.isRead || false;\r\n this.requiresReceipt = obj && obj.requiresReceipt || false;\r\n this.attachments = Base.getTypedArray(obj ? obj.attachments : null, FileAttachment);\r\n }\r\n\r\n getStateNumber(): number {\r\n return this.isRead ? (this.requiresReceipt ? 4 : 3) : (this.requiresReceipt ? 1 : 2);\r\n }\r\n\r\n getStateStr(): string {\r\n return this.isRead ? (this.requiresReceipt ? Translations.ReadReceiptGiven : Translations.ReadImp) : (this.requiresReceipt ? Translations.ReadReceiptNotGiven : Translations.Unread);\r\n }\r\n\r\n getStateNumberListSection(): number {\r\n return this.isRead ? 3 : (this.requiresReceipt ? 1 : 2);\r\n }\r\n\r\n getStateStrListSection(): string {\r\n return this.isRead ? Translations.ReadImpPlur : (this.requiresReceipt ? Translations.ReadReceiptRequired : Translations.Unread);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IListItems, ListItems } from \"ui/Scripts/source/framework/listItems\";\r\nimport { IMessageShortListItem, MessageShortListItem } from \"./messageShortListItem\";\r\n\r\nexport interface IMessageShortListItems extends IListItems {}\r\n\r\nexport class MessageShortListItems extends ListItems implements IMessageShortListItems {\r\n constructor();\r\n constructor(obj: IMessageShortListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, MessageShortListItem);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IdTitle, IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { IdTitleNode, IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { CodeTitle, ICodeTitle } from \"../common/codeTitle\";\r\n\r\nexport interface IMessagePageData {\r\n canEditOtherCompanyPermissions: boolean;\r\n canEditModuleProperties: boolean;\r\n canEditAllModuleProperties: boolean;\r\n canEditMessages: boolean;\r\n units: IIdTitleNode[];\r\n filterCompanies: IIdTitle[];\r\n modifyUsers: ICodeTitle[];\r\n}\r\n\r\nexport class MessagePageData implements IMessagePageData {\r\n canEditOtherCompanyPermissions: boolean;\r\n canEditModuleProperties: boolean;\r\n canEditAllModuleProperties: boolean;\r\n canEditMessages: boolean;\r\n units: IdTitleNode[];\r\n filterCompanies: IdTitle[];\r\n modifyUsers: CodeTitle[];\r\n\r\n constructor();\r\n constructor(obj: IMessagePageData);\r\n constructor(obj?: any) {\r\n this.canEditOtherCompanyPermissions = obj && obj.canEditOtherCompanyPermissions || false;\r\n this.canEditModuleProperties = obj && obj.canEditModuleProperties || false;\r\n this.canEditAllModuleProperties = obj && obj.canEditAllModuleProperties || false;\r\n this.canEditMessages = obj && obj.canEditMessages || false;\r\n this.units = Base.getTypedArray(obj ? obj.units : null, IdTitleNode);\r\n this.filterCompanies = Base.getTypedArray(obj ? obj.filterCompanies : null, IdTitle);\r\n this.modifyUsers = Base.getTypedArray(obj ? obj.modifyUsers : null, CodeTitle);\r\n }\r\n}\r\n","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { FileAttachment, IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IMessageListItem {\r\n id: string;\r\n companyId: string;\r\n // companyName: string;\r\n // companyLogo: string;\r\n date: number;\r\n title: string;\r\n content: string;\r\n modifyUser: IModifyUser;\r\n modifyUserCompanyName: string;\r\n typeName: string;\r\n typeImage: string;\r\n isRead: boolean;\r\n locked: boolean;\r\n requiresReceipt: boolean;\r\n expired: boolean;\r\n notVisibleYet: boolean;\r\n attachments: IFileAttachment[];\r\n}\r\n\r\nexport class MessageListItem implements IMessageListItem {\r\n id: string;\r\n companyId: string;\r\n // companyName: string;\r\n // companyLogo: string;\r\n date: number;\r\n title: string;\r\n content: string;\r\n modifyUser: ModifyUser;\r\n modifyUserCompanyName: string;\r\n typeName: string;\r\n typeImage: string;\r\n isRead: boolean;\r\n locked: boolean;\r\n requiresReceipt: boolean;\r\n expired: boolean;\r\n notVisibleYet: boolean;\r\n attachments: FileAttachment[];\r\n\r\n constructor();\r\n constructor(obj: IMessageListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.companyId = obj && obj.companyId || \"\";\r\n // this.companyName = obj && obj.companyName || \"\";\r\n // this.companyLogo = obj && obj.companyLogo || \"\";\r\n this.date = obj && obj.date || null;\r\n this.title = obj && obj.title || \"\";\r\n this.content = obj && obj.content || \"\";\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n this.modifyUserCompanyName = obj && obj.modifyUserCompanyName || \"\";\r\n this.typeName = obj && obj.typeName || \"\";\r\n this.typeImage = obj && obj.typeImage || \"\";\r\n this.isRead = obj && obj.isRead || false;\r\n this.locked = obj && obj.locked || false;\r\n this.requiresReceipt = obj && obj.requiresReceipt || false;\r\n this.expired = obj && obj.expired || false;\r\n this.notVisibleYet = obj && obj.notVisibleYet || false;\r\n this.attachments = Base.getTypedArray(obj ? obj.attachments : null, FileAttachment);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IListItems, ListItems } from \"ui/Scripts/source/framework/listItems\";\r\nimport { IMessageListItem, MessageListItem } from \"./messageListItem\";\r\n\r\nexport interface IMessageListItems extends IListItems {}\r\n\r\nexport class MessageListItems extends ListItems implements IMessageListItems {\r\n constructor();\r\n constructor(obj: IMessageListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, MessageListItem);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { CompanyMenuItem, ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { ISavedListFilter, SavedListFilter } from \"../common/savedListFilter\";\r\nimport { IMessagePageData, MessagePageData } from \"./messagePageData\";\r\nimport { IMessageListItems, MessageListItems } from \"./messageListItems\";\r\n\r\nexport interface IMessagePage extends IMessagePageData {\r\n validAdditionalPermissions: number[];\r\n companies: ICompanyMenuItem[];\r\n list: IMessageListItems;\r\n companyFilters: ISavedListFilter[];\r\n userFilters: ISavedListFilter[];\r\n showDocumentPreview: boolean;\r\n}\r\n\r\nexport class MessagePage extends MessagePageData implements IMessagePage {\r\n validAdditionalPermissions: number[];\r\n companies: CompanyMenuItem[];\r\n list: MessageListItems;\r\n companyFilters: SavedListFilter[];\r\n userFilters: SavedListFilter[];\r\n showDocumentPreview: boolean;\r\n\r\n constructor();\r\n constructor(obj: IMessagePage);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.validAdditionalPermissions = obj && obj.validAdditionalPermissions || [];\r\n this.companies = Base.getTypedArray(obj ? obj.companies : null, CompanyMenuItem);\r\n this.list = new MessageListItems(obj && obj.list || null);\r\n this.companyFilters = Base.getTypedArray(obj ? obj.companyFilters : null, SavedListFilter);\r\n this.userFilters = Base.getTypedArray(obj ? obj.userFilters : null, SavedListFilter);\r\n this.showDocumentPreview = obj && obj.showDocumentPreview || false;\r\n }\r\n}\r\n","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ListItems } from \"ui/Scripts/source/framework/listItems\";\r\nimport { IMessageTypeListItem, MessageTypeListItem } from \"./messageTypeListItem\";\r\n\r\nexport interface IMessageTypeListItems extends ListItems {\r\n}\r\n\r\nexport class MessageTypeListItems extends ListItems implements IMessageTypeListItems {\r\n constructor();\r\n constructor(obj: IMessageTypeListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, MessageTypeListItem);\r\n }\r\n}","import { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { MessageTypeClass } from \"ui/Scripts/source/models/enums\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IMessageTypeEditItem extends IEditItem {\r\n code: string;\r\n name: string;\r\n image: string;\r\n defaultImage: string;\r\n messageTypeClass: MessageTypeClass;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class MessageTypeEditItem extends EditItem implements IMessageTypeEditItem {\r\n code: string;\r\n name: string;\r\n image: string;\r\n defaultImage: string;\r\n messageTypeClass: MessageTypeClass;\r\n modifyUser: IModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IMessageTypeEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.code = obj && obj.code || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.image = obj && obj.image || \"\";\r\n this.defaultImage = obj && obj.defaultImage || \"\";\r\n this.messageTypeClass = obj && obj.messageTypeClass || MessageTypeClass.NormalMessage;\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { IMessageTypeEditItem, MessageTypeEditItem } from \"./messageTypeEditItem\";\r\n\r\nexport interface IMessageTypeEdit {\r\n item: IMessageTypeEditItem;\r\n}\r\n\r\nexport class MessageTypeEdit implements IMessageTypeEdit {\r\n item: IMessageTypeEditItem;\r\n\r\n constructor();\r\n constructor(obj: IMessageTypeEdit);\r\n constructor(obj?: any) {\r\n this.item = new MessageTypeEditItem(obj ? obj.item : null);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\nexport interface IGroupPermission {\r\n id: string;\r\n code: string;\r\n level: number;\r\n type: number;\r\n}\r\n\r\nexport class GroupPermission implements IGroupPermission {\r\n id: string;\r\n code: string;\r\n level: number;\r\n type: number;\r\n\r\n constructor();\r\n constructor(obj: IGroupPermission);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.level = obj && obj.level || 0;\r\n this.type = obj && obj.type || 0;\r\n }\r\n\r\n static sortGroupPermissions(items: IGroupPermission[]) {\r\n if (!items && items.length < 2) return;\r\n items.sort((a: IGroupPermission, b: IGroupPermission) => {\r\n if (!a || !b) return 0;\r\n const result = Base.numCompare(a.type, b.type);\r\n if (result !== 0) return result;\r\n return Base.strCompare(a.code, b.code);\r\n });\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { CodeTitle, ICodeTitle } from \"../common/codeTitle\";\r\nimport { GroupPermission, IGroupPermission } from \"../common/groupPermission\";\r\nimport { GroupPermissionLevel } from \"ui/Scripts/source/models/enums\";\r\n\r\nexport interface ICompanyGroupPermissions {\r\n basePermission: GroupPermissionLevel;\r\n hasNormalCompanyGroups: boolean;\r\n hasFixedCompanyGroups: boolean;\r\n companyGroups: ICodeTitle[];\r\n permissions: IGroupPermission[];\r\n inheritedPermissions: IGroupPermission[];\r\n}\r\n\r\nexport class CompanyGroupPermissions implements ICompanyGroupPermissions {\r\n basePermission: GroupPermissionLevel;\r\n hasNormalCompanyGroups: boolean;\r\n hasFixedCompanyGroups: boolean;\r\n companyGroups: CodeTitle[];\r\n permissions: GroupPermission[];\r\n inheritedPermissions: IGroupPermission[];\r\n\r\n constructor();\r\n constructor(obj: ICompanyGroupPermissions);\r\n constructor(obj?: any) {\r\n this.basePermission = obj && obj.basePermission || GroupPermissionLevel.None;\r\n this.hasNormalCompanyGroups = obj && obj.hasNormalCompanyGroups || false;\r\n this.hasFixedCompanyGroups = obj && obj.hasFixedCompanyGroups || false;\r\n this.companyGroups = Base.getTypedArray(obj ? obj.companyGroups : null, CodeTitle);\r\n this.permissions = Base.getTypedArray(obj ? obj.permissions : null, GroupPermission);\r\n this.inheritedPermissions = Base.getTypedArray(obj ? obj.inheritedPermissions : null, GroupPermission);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\nexport interface IMessageEditItemTargetUnit {\r\n id: string;\r\n unitId: string;\r\n title: string;\r\n}\r\n\r\nexport class MessageEditItemTargetUnit implements IMessageEditItemTargetUnit {\r\n id: string;\r\n unitId: string;\r\n title: string;\r\n\r\n constructor();\r\n constructor(obj: IMessageEditItemTargetUnit);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.unitId = obj && obj.unitId || \"\";\r\n this.title = obj && obj.title || \"\";\r\n }\r\n\r\n static sort(items: IMessageEditItemTargetUnit[]): IMessageEditItemTargetUnit[] {\r\n if (!items && items.length < 2) return items;\r\n return items.sort((a: IMessageEditItemTargetUnit, b: IMessageEditItemTargetUnit) => { return (!a || !b) ? 0 : (Base.strCompare(a.title, b.title)); });\r\n }\r\n}\r\n\r\nexport class MessageEditItemTargetUnitSave {\r\n id: string;\r\n unitId: string;\r\n\r\n constructor();\r\n constructor(obj: IMessageEditItemTargetUnit);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.unitId = obj && obj.unitId || \"\";\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\nexport interface IMessageEditItemTargetCompanyGroup {\r\n id: string;\r\n code: string;\r\n title: string;\r\n logo: string;\r\n}\r\n\r\nexport class MessageEditItemTargetCompanyGroup implements IMessageEditItemTargetCompanyGroup {\r\n id: string;\r\n code: string;\r\n title: string;\r\n logo: string;\r\n\r\n constructor();\r\n constructor(obj: IMessageEditItemTargetCompanyGroup);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.title = obj && obj.title || \"\";\r\n this.logo = obj && obj.logo || \"\";\r\n }\r\n\r\n static sort(items: IMessageEditItemTargetCompanyGroup[]): IMessageEditItemTargetCompanyGroup[] {\r\n if (!items && items.length < 2) return items;\r\n return items.sort((a: IMessageEditItemTargetCompanyGroup, b: IMessageEditItemTargetCompanyGroup) => { return (!a || !b) ? 0 : (Base.strCompare(a.title, b.title)); });\r\n }\r\n}\r\n\r\nexport class MessageEditItemTargetCompanyGroupSave {\r\n id: string;\r\n code: string;\r\n\r\n constructor();\r\n constructor(obj: IMessageEditItemTargetCompanyGroup);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.code = obj && obj.code || \"\";\r\n }\r\n}","import { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { FileAttachment, IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IMessageEditItemTargetUnit, MessageEditItemTargetUnit } from \"./messageEditItemTargetUnit\";\r\nimport { IMessageEditItemTargetCompanyGroup, MessageEditItemTargetCompanyGroup } from \"./messageEditItemTargetCompanyGroup\";\r\n\r\nexport interface IMessageEditItem extends IEditItem {\r\n companyId: string;\r\n unitId: string;\r\n messageTypeId: string;\r\n date: number;\r\n startDate: number;\r\n endDate: number;\r\n title: string;\r\n content: string;\r\n requiresReceipt: boolean;\r\n systemAdminMessage: boolean;\r\n isRead: boolean;\r\n targetUnits: IMessageEditItemTargetUnit[];\r\n targetCompanyGroups: IMessageEditItemTargetCompanyGroup[];\r\n attachments: IFileAttachment[];\r\n lockedUser: IModifyUser;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class MessageEditItem extends EditItem implements IMessageEditItem {\r\n companyId: string;\r\n unitId: string;\r\n messageTypeId: string;\r\n date: number;\r\n startDate: number;\r\n endDate: number;\r\n title: string;\r\n content: string;\r\n requiresReceipt: boolean;\r\n systemAdminMessage: boolean;\r\n isRead: boolean;\r\n targetUnits: MessageEditItemTargetUnit[];\r\n targetCompanyGroups: MessageEditItemTargetCompanyGroup[];\r\n attachments: IFileAttachment[];\r\n lockedUser: IModifyUser;\r\n modifyUser: IModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IMessageEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.companyId = obj && obj.companyId || \"\";\r\n this.unitId = obj && obj.unitId || \"\";\r\n this.messageTypeId = obj && obj.messageTypeId || \"\";\r\n this.date = obj && obj.date || 0;\r\n this.startDate = obj && obj.startDate || 0;\r\n this.endDate = obj && obj.endDate || null;\r\n this.title = obj && obj.title || \"\";\r\n this.content = obj && obj.content || \"\";\r\n this.requiresReceipt = obj && obj.requiresReceipt || false;\r\n this.systemAdminMessage = obj && obj.systemAdminMessage || false;\r\n this.isRead = obj && obj.isRead || false;\r\n this.targetUnits = Base.getTypedArray(obj ? obj.targetUnits : null, MessageEditItemTargetUnit);\r\n this.targetCompanyGroups = Base.getTypedArray(obj ? obj.targetCompanyGroups : null, MessageEditItemTargetCompanyGroup);\r\n this.attachments = Base.getTypedArray(obj ? obj.attachments : null, FileAttachment);\r\n this.lockedUser = new ModifyUser(obj ? obj.lockedUser : null);\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n\r\n isLockedToOtherUser(userCode: string): boolean {\r\n return this.lockedUser?.code ? !userCode.equalIgnoreCase(this.lockedUser.code) : false;\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IMessageTypeListItem, MessageTypeListItem } from \"../messageType/messageTypeListItem\";\r\nimport { IMessageEditItem, MessageEditItem } from \"./messageEditItem\";\r\nimport { IIdTitleNode, IdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\n\r\nexport interface IMessageEdit {\r\n item: IMessageEditItem;\r\n hasNormalCompanyGroups: boolean;\r\n hasFixedCompanyGroups: boolean;\r\n canUseAllCompanyGroup: boolean;\r\n canSaveAndSendEmail: boolean;\r\n messageTypes: IMessageTypeListItem[];\r\n senderUnits: IIdTitleNode[];\r\n targetUnits: IIdTitleNode[];\r\n}\r\n\r\nexport class MessageEdit implements IMessageEdit {\r\n item: MessageEditItem;\r\n hasNormalCompanyGroups: boolean;\r\n hasFixedCompanyGroups: boolean;\r\n canUseAllCompanyGroup: boolean;\r\n canSaveAndSendEmail: boolean;\r\n messageTypes: MessageTypeListItem[];\r\n senderUnits: IdTitleNode[];\r\n targetUnits: IdTitleNode[];\r\n\r\n constructor();\r\n constructor(obj: IMessageEdit);\r\n constructor(obj?: any) {\r\n this.item = new MessageEditItem(obj ? obj.item : null);\r\n this.hasNormalCompanyGroups = obj && obj.hasNormalCompanyGroups || false;\r\n this.hasFixedCompanyGroups = obj && obj.hasFixedCompanyGroups || false;\r\n this.canUseAllCompanyGroup = obj && obj.canUseAllCompanyGroup || false;\r\n this.canSaveAndSendEmail = obj && obj.canSaveAndSendEmail || false;\r\n this.messageTypes = Base.getTypedArray(obj ? obj.messageTypes : null, MessageTypeListItem);\r\n this.senderUnits = Base.getTypedArray(obj ? obj.senderUnits : null, IdTitleNode);\r\n this.targetUnits = Base.getTypedArray(obj ? obj.targetUnits : null, IdTitleNode);\r\n }\r\n}","import { IModifyUser, ModifyUser } from \"../user/modifyUser\";\r\n\r\nexport interface IReadReceiptListItem {\r\n id: string;\r\n modifyUser: IModifyUser;\r\n userCompanyName: string;\r\n userCompanyLogo: string;\r\n}\r\n\r\nexport class ReadReceiptListItem implements IReadReceiptListItem {\r\n id: string;\r\n modifyUser: ModifyUser;\r\n userCompanyName: string;\r\n userCompanyLogo: string;\r\n\r\n constructor();\r\n constructor(obj: IReadReceiptListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n this.userCompanyName = obj && obj.userCompanyName || \"\";\r\n this.userCompanyLogo = obj && obj.userCompanyLogo || \"\";\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { ListItems } from \"../../framework/listItems\";\r\nimport { IReadReceiptListItem, ReadReceiptListItem } from \"./readReceiptListItem\";\r\n\r\nexport interface IReadReceiptListItems extends ListItems {\r\n}\r\n\r\nexport class ReadReceiptListItems extends ListItems implements IReadReceiptListItems {\r\n constructor();\r\n constructor(obj: IReadReceiptListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, ReadReceiptListItem);\r\n }\r\n}","import { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IMessageSendEnmailListItem {\r\n id: string;\r\n email: string;\r\n modifyUser: IModifyUser;\r\n userCompanyName: string;\r\n userCompanyLogo: string;\r\n}\r\n\r\nexport class MessageSendEnmailListItem implements IMessageSendEnmailListItem {\r\n id: string;\r\n email: string;\r\n modifyUser: ModifyUser;\r\n userCompanyName: string;\r\n userCompanyLogo: string;\r\n\r\n constructor();\r\n constructor(obj: IMessageSendEnmailListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.email = obj && obj.email || \"\";\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n this.userCompanyName = obj && obj.userCompanyName || \"\";\r\n this.userCompanyLogo = obj && obj.userCompanyLogo || \"\";\r\n }\r\n}","import { ListItems } from \"ui/Scripts/source/framework/listItems\";\r\nimport { IMessageSendEnmailListItem, MessageSendEnmailListItem } from \"./messageSendEnmailListItem\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\nexport interface IMessageSendEnmailListItems extends ListItems {\r\n}\r\n\r\nexport class MessageSendEnmailListItems extends ListItems implements IMessageSendEnmailListItems {\r\n constructor();\r\n constructor(obj: IMessageSendEnmailListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, MessageSendEnmailListItem);\r\n }\r\n}","import { MessageShortListItems } from \"../message/messageShortListItems\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { AbortDictionary, getApiCall, postApiCall } from \"./tokenService\";\r\nimport { MessagePage } from \"../message/messagePage\";\r\nimport { MessagePageData } from \"../message/messagePageData\";\r\nimport { UnitNodePermissions } from \"../unit/unitNodePermissions\";\r\nimport { ModuleUnits } from \"../unit/moduleUnits\";\r\nimport { MessageTypeListItems } from \"../messageType/messageTypeListItems\";\r\nimport { MessageTypeEdit } from \"../messageType/messageTypeEdit\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { CompanyGroupPermissions } from \"../companyGroup/companyGroupPermissions\";\r\nimport { MessageListItems } from \"../message/messageListItems\";\r\nimport { MessageEdit } from \"../message/messageEdit\";\r\nimport { ReadReceiptListItems } from \"ui/Scripts/source/models/readReceipt/readReceiptListItems\";\r\nimport { SaveSuccessItems } from \"ui/Scripts/source/models/common/saveSuccessItems\";\r\nimport { MessageSendEnmailListItems } from \"../messageSendEnmail/messageSendEnmailListItems\";\r\nimport { UnitModuleSaveResult } from \"../unit/unitModuleSaveResult\";\r\n\r\n//Abort\r\nconst frontAborts = new AbortDictionary();\r\nconst reportAborts = new AbortDictionary();\r\nconst chartAborts = new AbortDictionary();\r\n\r\n// #region FrontPage\r\nexport const getMessageShortListItems = (companyId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, dateRange: number): Promise => {\r\n const operationId = \"getMessageShortListItems\";\r\n frontAborts.abort(operationId);\r\n return postApiCall(\"api/message/listshort\", MessageShortListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\",\r\n dateRange\r\n }), (abortId: string) => {\r\n frontAborts.add(operationId, abortId);\r\n }).finally(() => {\r\n frontAborts.remove(operationId);\r\n });\r\n};\r\n\r\nexport const sendReadReceipt = (id: string, companyId: string): Promise => {\r\n return postApiCall(\"api/message/sendreadreceipt?id=\" + id + \"&companyId=\" + companyId, ApiSuccess);\r\n};\r\n// #endregion FrontPage\r\n\r\n// #region MessagePage\r\nexport const getMessagePage = (): Promise => {\r\n return getApiCall(\"api/message\", MessagePage);\r\n};\r\n\r\nexport const getMessagePageData = (companyId: string, editMode: boolean): Promise => {\r\n return getApiCall(\"api/message/pagedata?id=\" + companyId + \"&editMode=\" + editMode.toString(), MessagePageData);\r\n};\r\n\r\nexport const getMessageListItems = (companyId: string, pageSize: number, page: number, editMode: boolean, filter: string, startDate: number, endDate: number, dynamicTime: number,\r\n companyIds: string[], unitIds: string[], modifyUserCodes: string[], sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n reportAborts.abortAll();\r\n chartAborts.abortAll();\r\n return postApiCall(\"api/message/list\", MessageListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n editMode,\r\n startDate: startDate || null,\r\n endDate: endDate || null,\r\n dynamicTime,\r\n filter: filter || \"\",\r\n companyIds,\r\n unitIds,\r\n modifyUserCodes\r\n }));\r\n};\r\n// #endregion MessagePage\r\n\r\n// #region MessageAttachments\r\nexport const messageEditRemoveAttachments = (data: any): Promise => {\r\n return postApiCall(\"api/message/editremoveattachments\", ApiSuccess, JSON.stringify(data));\r\n};\r\n\r\nexport const messageEditAddAttachments = (data: any): Promise => {\r\n return postApiCall(\"api/message/editaddattachments\", SaveSuccessItems, JSON.stringify(data));\r\n};\r\n// #endregion MessageAttachments\r\n\r\n// #region MessageReadReceipts\r\nexport const getMessageReadReceiptListItems = (companyId: string, messageId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/message/readreceipt/list\", ReadReceiptListItems, JSON.stringify({\r\n companyId,\r\n messageId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\"\r\n }));\r\n};\r\n// #endregion MessageReadReceipts\r\n\r\n// #region MessageSendEnmails\r\nexport const getMessageSendEnmailListItems = (companyId: string, messageId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/message/sendemail/list\", MessageSendEnmailListItems, JSON.stringify({\r\n companyId,\r\n messageId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\"\r\n }));\r\n};\r\n// #endregion MessageSendEnmails\r\n\r\n// #region Module Permissions\r\nexport const getUnitNodePermissions = (companyId: string): Promise => {\r\n return getApiCall(\"api/message/module/permissions?id=\" + companyId, UnitNodePermissions);\r\n};\r\n\r\nexport const saveUnitNodePermissions = (obj: any): Promise => {\r\n return postApiCall(\"api/message/module/savepermissions\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Module Permissions\r\n\r\n// #region Module Company Group Permissions\r\nexport const getCompanyGroupPermissions = (companyId: string): Promise => {\r\n return getApiCall(\"api/message/module/companygrouppermissions?id=\" + companyId, CompanyGroupPermissions);\r\n};\r\n\r\nexport const saveCompanyGroupPermissions = (obj: any): Promise => {\r\n return postApiCall(\"api/message/module/savecompanygrouppermissions\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Module Company Group Permissions\r\n\r\n// #region Module units\r\nexport const getUnits = (companyId: string): Promise => {\r\n return getApiCall(\"api/message/module/units?id=\" + companyId, ModuleUnits);\r\n};\r\n\r\nexport const saveUnits = (obj: any): Promise => {\r\n return postApiCall(\"api/message/module/saveunits\", UnitModuleSaveResult, JSON.stringify(obj));\r\n};\r\n// #endregion Module units\r\n\r\n// #region Module message types\r\nexport const getMessageTypeListItems = (companyId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/message/module/messagetype/list\", MessageTypeListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\"\r\n }));\r\n};\r\n\r\nexport const getMessageTypeEdit = (companyId: string, id: string): Promise => {\r\n return getApiCall(\"api/message/module/messagetype/edit?id=\" + id + \"&companyId=\" + companyId, MessageTypeEdit);\r\n};\r\n\r\nexport const saveMessageTypeEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/message/module/messagetype/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeMessageTypes = (obj: any): Promise => {\r\n return postApiCall(\"api/message/module/messagetype/remove\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Module message types\r\n\r\n// #region Edit\r\nexport const getMessageEdit = (companyId: string, messageId: string, forwardMessage: boolean): Promise => {\r\n return getApiCall(\"api/message/edit?id=\" + messageId + \"&companyId=\" + companyId + \"&forwardMessage=\" + forwardMessage.toString(), MessageEdit);\r\n};\r\n\r\nexport const saveMessageEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/message/editsave\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeMessage = (companyId: string, messageId: string): Promise => {\r\n return postApiCall(\"api/message/remove?id=\" + messageId + \"&companyId=\" + companyId, ApiSuccess);\r\n};\r\n// #endregion Edit\r\n","import { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { TaskRepetitionType } from \"ui/Scripts/source/models/enums\";\r\n\r\nexport interface ITaskListItem {\r\n id: string;\r\n unitCode: string;\r\n stateId: string;\r\n stateCode: string;\r\n stateColor: string;\r\n priorityCode: string;\r\n prioritySortOrder: number;\r\n taskRepetitionType: TaskRepetitionType;\r\n typeCode: string;\r\n code: string;\r\n name: string;\r\n isRead: boolean;\r\n locked: boolean;\r\n removable: boolean;\r\n userIsHandler: boolean;\r\n calendarTaskCount: number;\r\n createUser: IModifyUser;\r\n modifyUser: IModifyUser;\r\n handlers: IModifyUser[];\r\n\r\n getModifyDate(): number;\r\n}\r\n\r\nexport class TaskListItem implements ITaskListItem {\r\n id: string;\r\n unitCode: string;\r\n stateId: string;\r\n stateCode: string;\r\n stateColor: string;\r\n priorityCode: string;\r\n prioritySortOrder: number;\r\n taskRepetitionType: TaskRepetitionType;\r\n typeCode: string;\r\n code: string;\r\n name: string;\r\n isRead: boolean;\r\n locked: boolean;\r\n removable: boolean;\r\n userIsHandler: boolean;\r\n calendarTaskCount: number;\r\n createUser: ModifyUser;\r\n modifyUser: ModifyUser;\r\n handlers: ModifyUser[];\r\n\r\n stateStr: string;\r\n\r\n constructor();\r\n constructor(obj: ITaskListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.unitCode = obj && obj.unitCode || \"\";\r\n this.stateId = obj && obj.stateId || \"\";\r\n this.stateCode = obj && obj.stateCode || \"\";\r\n this.stateColor = obj && obj.stateColor || \"\";\r\n this.priorityCode = obj && obj.priorityCode || \"\";\r\n this.prioritySortOrder = obj && obj.prioritySortOrder || 0;\r\n this.taskRepetitionType = obj && obj.taskRepetitionType || TaskRepetitionType.NotRepeated;\r\n this.typeCode = obj && obj.typeCode || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.isRead = obj && obj.isRead || false;\r\n this.locked = obj && obj.locked || false;\r\n this.removable = obj && obj.removable || false;\r\n this.userIsHandler = obj && obj.userIsHandler || false;\r\n this.calendarTaskCount = obj && obj.calendarTaskCount || 0;\r\n this.createUser = new ModifyUser(obj ? obj.createUser : null);\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n this.handlers = ModifyUser.sortModifyUsers(Base.getTypedArray(obj ? obj.handlers : null, ModifyUser));\r\n }\r\n\r\n getModifyDate(): number {\r\n return this.modifyUser?.date ?? 0;\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ListItems } from \"ui/Scripts/source/framework/listItems\";\r\nimport { ITaskListItem, TaskListItem } from \"./taskListItem\";\r\n\r\nexport interface ITaskListItems extends ListItems {\r\n}\r\n\r\nexport class TaskListItems extends ListItems implements ITaskListItems {\r\n constructor();\r\n constructor(obj: ITaskListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, TaskListItem);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IdTitle, IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { IIdColorTitle, IdColorTitle } from \"ui/Scripts/source/models/common/idColorTitle\";\r\nimport { IdTitleNode, IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { CodeTitle, ICodeTitle } from \"../common/codeTitle\";\r\nimport { ITaskEditTypeItem, TaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\n\r\nexport interface ITaskPageData {\r\n canCreateTasks: boolean;\r\n canEditModuleProperties: boolean;\r\n canEditAllModuleProperties: boolean;\r\n units: IIdTitleNode[];\r\n states: IIdColorTitle[];\r\n priorities: IIdTitle[];\r\n taskTypes: ITaskEditTypeItem[];\r\n handlers: ICodeTitle[];\r\n}\r\n\r\nexport class TaskPageData implements ITaskPageData {\r\n canCreateTasks: boolean;\r\n canEditModuleProperties: boolean;\r\n canEditAllModuleProperties: boolean;\r\n units: IdTitleNode[];\r\n states: IdColorTitle[];\r\n priorities: IdTitle[];\r\n taskTypes: TaskEditTypeItem[];\r\n handlers: CodeTitle[];\r\n\r\n constructor();\r\n constructor(obj: ITaskPageData);\r\n constructor(obj?: any) {\r\n this.canCreateTasks = obj && obj.canCreateTasks || false;\r\n this.canEditModuleProperties = obj && obj.canEditModuleProperties || false;\r\n this.canEditAllModuleProperties = obj && obj.canEditAllModuleProperties || false;\r\n this.units = Base.getTypedArray(obj ? obj.units : null, IdTitleNode);\r\n this.states = Base.getTypedArray(obj ? obj.states : null, IdColorTitle);\r\n this.priorities = Base.getTypedArray(obj ? obj.priorities : null, IdTitle);\r\n this.taskTypes = Base.getTypedArray(obj ? obj.taskTypes : null, TaskEditTypeItem);\r\n this.handlers = Base.getTypedArray(obj ? obj.handlers : null, CodeTitle);\r\n }\r\n}\r\n","import { ContentPagePanelType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IPagePanel, PagePanel } from \"../common/pagePanel\";\r\n\r\nexport class TaskPagePanel extends PagePanel implements IPagePanel {\r\n getTitle(): string {\r\n switch (this.panelType) {\r\n case ContentPagePanelType.Statistics:\r\n return Translations.Tasks;\r\n case ContentPagePanelType.MyFiltersAndReports:\r\n return Translations.MyFiltersAndReports;\r\n case ContentPagePanelType.SharedFiltersAndReports:\r\n return Translations.SharedFiltersAndReports;\r\n case ContentPagePanelType.StandardFiltersAndReports:\r\n return Translations.StandardFiltersAndReports;\r\n default:\r\n return \"\";\r\n }\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IPagePanel } from \"../common/pagePanel\";\r\nimport { CompanyMenuItem, ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { ISavedListFilter, SavedListFilter } from \"../common/savedListFilter\";\r\nimport { ISavedChartPanel, SavedChartPanel } from \"../chart/savedChartPanel\";\r\nimport { ITaskPageData, TaskPageData } from \"./taskPageData\";\r\nimport { TaskPagePanel } from \"./taskPagePanel\";\r\nimport { ITaskListItems, TaskListItems } from \"./taskListItems\";\r\n\r\nexport interface ITaskPage extends ITaskPageData {\r\n validAdditionalPermissions: number[];\r\n panels: IPagePanel[];\r\n chartPanels: ISavedChartPanel[];\r\n companies: ICompanyMenuItem[];\r\n list: ITaskListItems;\r\n companyFilters: ISavedListFilter[];\r\n userFilters: ISavedListFilter[];\r\n showDocumentPreview: boolean;\r\n}\r\n\r\nexport class TaskPage extends TaskPageData implements ITaskPage {\r\n validAdditionalPermissions: number[];\r\n panels: TaskPagePanel[];\r\n chartPanels: SavedChartPanel[];\r\n companies: CompanyMenuItem[];\r\n list: TaskListItems;\r\n companyFilters: SavedListFilter[];\r\n userFilters: SavedListFilter[];\r\n showDocumentPreview: boolean;\r\n\r\n constructor();\r\n constructor(obj: ITaskPage);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.validAdditionalPermissions = obj && obj.validAdditionalPermissions || [];\r\n this.panels = Base.getTypedArray(obj ? obj.panels : null, TaskPagePanel);\r\n this.chartPanels = Base.getTypedArray(obj ? obj.chartPanels : null, SavedChartPanel);\r\n this.companies = Base.getTypedArray(obj ? obj.companies : null, CompanyMenuItem);\r\n this.list = new TaskListItems(obj && obj.list || null);\r\n this.companyFilters = Base.getTypedArray(obj ? obj.companyFilters : null, SavedListFilter);\r\n this.userFilters = Base.getTypedArray(obj ? obj.userFilters : null, SavedListFilter);\r\n this.showDocumentPreview = obj && obj.showDocumentPreview || false;\r\n }\r\n}\r\n","import { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { TaskStateEditabilityType } from \"ui/Scripts/source/models/enums\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface ITaskStateEditItem extends IEditItem {\r\n code: string;\r\n comment: string;\r\n color: string;\r\n sortOrder: number;\r\n editabilityType: TaskStateEditabilityType;\r\n activeState: number;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class TaskStateEditItem extends EditItem implements ITaskStateEditItem {\r\n code: string;\r\n comment: string;\r\n color: string;\r\n sortOrder: number;\r\n editabilityType: TaskStateEditabilityType;\r\n activeState: number;\r\n modifyUser: IModifyUser;\r\n\r\n constructor();\r\n constructor(obj: ITaskStateEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.color = obj && obj.color || \"\";\r\n this.sortOrder = obj && obj.sortOrder || 0;\r\n this.editabilityType = obj && obj.editabilityType || TaskStateEditabilityType.Editable;\r\n this.activeState = obj && obj.activeState || 0;\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { ITaskStateEditItem, TaskStateEditItem } from \"./taskStateEditItem\";\r\n\r\nexport interface ITaskStateEdit {\r\n item: ITaskStateEditItem;\r\n}\r\n\r\nexport class TaskStateEdit implements ITaskStateEdit {\r\n item: TaskStateEditItem;\r\n\r\n constructor();\r\n constructor(obj: ITaskStateEdit);\r\n constructor(obj?: any) {\r\n this.item = new TaskStateEditItem(obj ? obj.item : null);\r\n }\r\n}","export interface ITaskStateListItem {\r\n id: string;\r\n companyId: string;\r\n code: string;\r\n color: string;\r\n comment: string;\r\n sortOrder: number;\r\n activeState: number;\r\n}\r\n\r\nexport class TaskStateListItem implements ITaskStateListItem {\r\n id: string;\r\n companyId: string;\r\n code: string;\r\n color: string;\r\n comment: string;\r\n sortOrder: number;\r\n activeState: number;\r\n\r\n constructor();\r\n constructor(obj: ITaskStateListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.companyId = obj && obj.companyId || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.color = obj && obj.color || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.sortOrder = obj && obj.sortOrder || 0;\r\n this.activeState = obj && obj.activeState || 0;\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ListItems } from \"ui/Scripts/source/framework/listItems\";\r\nimport { ITaskStateListItem, TaskStateListItem } from \"./taskStateListItem\";\r\n\r\nexport interface ITaskStateListItems extends ListItems {\r\n}\r\n\r\nexport class TaskStateListItems extends ListItems implements ITaskStateListItems {\r\n constructor();\r\n constructor(obj: ITaskStateListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, TaskStateListItem);\r\n }\r\n}","export interface ITaskPriorityListItem {\r\n id: string;\r\n companyId: string;\r\n code: string;\r\n comment: string;\r\n sortOrder: number;\r\n activeState: number;\r\n}\r\n\r\nexport class TaskPriorityListItem implements ITaskPriorityListItem {\r\n id: string;\r\n companyId: string;\r\n code: string;\r\n comment: string;\r\n sortOrder: number;\r\n activeState: number;\r\n\r\n constructor();\r\n constructor(obj: ITaskPriorityListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.companyId = obj && obj.companyId || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.sortOrder = obj && obj.sortOrder || 0;\r\n this.activeState = obj && obj.activeState || 0;\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ListItems } from \"ui/Scripts/source/framework/listItems\";\r\nimport { ITaskPriorityListItem, TaskPriorityListItem } from \"./taskPriorityListItem\";\r\n\r\nexport interface ITaskPriorityListItems extends ListItems {\r\n}\r\n\r\nexport class TaskPriorityListItems extends ListItems implements ITaskPriorityListItems {\r\n constructor();\r\n constructor(obj: ITaskPriorityListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, TaskPriorityListItem);\r\n }\r\n}","import { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface ITaskPriorityEditItem extends IEditItem {\r\n code: string;\r\n comment: string;\r\n sortOrder: number;\r\n activeState: number;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class TaskPriorityEditItem extends EditItem implements ITaskPriorityEditItem {\r\n code: string;\r\n comment: string;\r\n sortOrder: number;\r\n activeState: number;\r\n modifyUser: IModifyUser;\r\n\r\n constructor();\r\n constructor(obj: ITaskPriorityEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.sortOrder = obj && obj.sortOrder || 0;\r\n this.activeState = obj && obj.activeState || 0;\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { ITaskPriorityEditItem, TaskPriorityEditItem } from \"./taskPriorityEditItem\";\r\n\r\nexport interface ITaskPriorityEdit {\r\n item: ITaskPriorityEditItem;\r\n}\r\n\r\nexport class TaskPriorityEdit implements ITaskPriorityEdit {\r\n item: TaskPriorityEditItem;\r\n\r\n constructor();\r\n constructor(obj: ITaskPriorityEdit);\r\n constructor(obj?: any) {\r\n this.item = new TaskPriorityEditItem(obj ? obj.item : null);\r\n }\r\n}","export interface ITaskTypeListItem {\r\n id: string;\r\n companyId: string;\r\n code: string;\r\n comment: string;\r\n activeState: number;\r\n usageAmount: number;\r\n}\r\n\r\nexport class TaskTypeListItem implements ITaskTypeListItem {\r\n id: string;\r\n companyId: string;\r\n code: string;\r\n comment: string;\r\n activeState: number;\r\n usageAmount: number;\r\n\r\n constructor();\r\n constructor(obj: ITaskTypeListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.companyId = obj && obj.companyId || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.activeState = obj && obj.activeState || 0;\r\n this.usageAmount = obj && obj.usageAmount || 0;\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ListItems } from \"ui/Scripts/source/framework/listItems\";\r\nimport { ITaskTypeListItem, TaskTypeListItem } from \"./taskTypeListItem\";\r\n\r\nexport interface ITaskTypeListItems extends ListItems {\r\n}\r\n\r\nexport class TaskTypeListItems extends ListItems implements ITaskTypeListItems {\r\n constructor();\r\n constructor(obj: ITaskTypeListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, TaskTypeListItem);\r\n }\r\n}","import { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { TaskRepetitionType, TaskVisibility } from \"ui/Scripts/source/models/enums\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface ITaskTypeEditItem extends IEditItem {\r\n code: string;\r\n comment: string;\r\n taskRepetitionType: TaskRepetitionType;\r\n dataSchema: string;\r\n printOrientationLandscape: boolean;\r\n visibility: TaskVisibility;\r\n activeState: number;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class TaskTypeEditItem extends EditItem implements ITaskTypeEditItem {\r\n code: string;\r\n comment: string;\r\n taskRepetitionType: TaskRepetitionType;\r\n dataSchema: string;\r\n printOrientationLandscape: boolean;\r\n visibility: TaskVisibility;\r\n activeState: number;\r\n modifyUser: IModifyUser;\r\n\r\n constructor();\r\n constructor(obj: ITaskTypeEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.taskRepetitionType = obj && obj.taskRepetitionType || TaskRepetitionType.NotRepeated;\r\n this.dataSchema = obj && obj.dataSchema || \"\";\r\n this.printOrientationLandscape = obj && obj.printOrientationLandscape || false;\r\n this.visibility = obj && obj.visibility || TaskVisibility.PrivateAndPublic;\r\n this.activeState = obj && obj.activeState || 0;\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { ITaskTypeEditItem, TaskTypeEditItem } from \"./taskTypeEditItem\";\r\n\r\nexport interface ITaskTypeEdit {\r\n item: ITaskTypeEditItem;\r\n}\r\n\r\nexport class TaskTypeEdit implements ITaskTypeEdit {\r\n item: TaskTypeEditItem;\r\n\r\n constructor();\r\n constructor(obj: ITaskTypeEdit);\r\n constructor(obj?: any) {\r\n this.item = new TaskTypeEditItem(obj ? obj.item : null);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { ITaskDataRow, TaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { ITaskDataRowCol, TaskDataRowCol } from \"ui/Scripts/source/models/task/taskDataRowCol\";\r\n\r\nexport interface ITaskEditItem extends IEditItem {\r\n companyId: string;\r\n taskTypeId: string;\r\n taskStateId: string;\r\n taskPriorityId: string;\r\n unitId: string;\r\n code: string;\r\n name: string;\r\n isRead: boolean;\r\n createUser: IModifyUser;\r\n modifyUser: IModifyUser;\r\n deleteUser: IModifyUser;\r\n lockedUser: IModifyUser;\r\n taskHeaderDataCols: ITaskDataRowCol[];\r\n taskDataRows: ITaskDataRow[];\r\n handlers: IModifyUser[];\r\n\r\n initializeDataRowsRows(taskType: ITaskEditTypeItem);\r\n isLockedToOtherUser(userCode: string): boolean;\r\n}\r\n\r\nexport class TaskEditItem extends EditItem implements ITaskEditItem {\r\n companyId: string;\r\n taskTypeId: string;\r\n taskStateId: string;\r\n taskPriorityId: string;\r\n unitId: string;\r\n code: string;\r\n name: string;\r\n isRead: boolean;\r\n createUser: ModifyUser;\r\n modifyUser: ModifyUser;\r\n deleteUser: ModifyUser;\r\n lockedUser: ModifyUser;\r\n taskHeaderDataCols: TaskDataRowCol[];\r\n taskDataRows: TaskDataRow[];\r\n handlers: ModifyUser[];\r\n\r\n constructor();\r\n constructor(obj: ITaskEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.companyId = obj && obj.companyId || \"\";\r\n this.taskTypeId = obj && obj.taskTypeId || \"\";\r\n this.taskStateId = obj && obj.taskStateId || \"\";\r\n this.taskPriorityId = obj && obj.taskPriorityId || \"\";\r\n this.unitId = obj && obj.unitId || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.isRead = obj && obj.isRead || \"\";\r\n this.createUser = new ModifyUser(obj ? obj.createUser : null);\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n this.deleteUser = obj?.deleteUser ? new ModifyUser(obj.deleteUser) : null;\r\n this.lockedUser = obj?.lockedUser ? new ModifyUser(obj.lockedUser) : null;\r\n this.taskHeaderDataCols = Base.getTypedArray(obj ? obj.taskHeaderDataCols : null, TaskDataRowCol);\r\n this.taskDataRows = Base.getTypedArray(obj ? obj.taskDataRows : null, TaskDataRow);\r\n this.handlers = Base.getTypedArray(obj ? obj.handlers : null, ModifyUser);\r\n }\r\n\r\n initializeDataRowsRows(taskType: ITaskEditTypeItem) {\r\n this.taskHeaderDataCols = TaskDataRowCol.initializeValuesByType(taskType.headerCols, this.taskHeaderDataCols);\r\n for (const taskDataRow of this.taskDataRows) {\r\n taskDataRow.initializeCols(taskType);\r\n }\r\n }\r\n\r\n isLockedToOtherUser(userCode: string): boolean {\r\n return this.lockedUser?.code && !userCode.equalIgnoreCase(this.lockedUser.code);\r\n }\r\n}","import { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { TaskStateEditabilityType } from \"ui/Scripts/source/models/enums\";\r\n\r\nexport interface ITaskEditItemTaskState extends IEditItem {\r\n code: string;\r\n color: string;\r\n sortOrder: number;\r\n editabilityType: TaskStateEditabilityType;\r\n}\r\n\r\nexport class TaskEditItemTaskState extends EditItem implements ITaskEditItemTaskState {\r\n code: string;\r\n color: string;\r\n sortOrder: number;\r\n editabilityType: TaskStateEditabilityType;\r\n\r\n constructor();\r\n constructor(obj: ITaskEditItemTaskState);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.code = obj && obj.code || \"\";\r\n this.color = obj && obj.color || \"\";\r\n this.sortOrder = obj && obj.sortOrder || 0;\r\n this.editabilityType = obj && obj.editabilityType || TaskStateEditabilityType.Editable;\r\n }\r\n}","export interface ITaskEditItemTaskPriority {\r\n id: string;\r\n code: string;\r\n sortOrder: number;\r\n}\r\n\r\nexport class TaskEditItemTaskPriority implements ITaskEditItemTaskPriority {\r\n id: string;\r\n code: string;\r\n sortOrder: number;\r\n\r\n constructor();\r\n constructor(obj: ITaskEditItemTaskPriority);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.sortOrder = obj && obj.sortOrder || 0;\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ITaskEditItem, TaskEditItem } from \"./taskEditItem\";\r\nimport { ITaskEditTypeItem, TaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { IIdTitleNode, IdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { ITaskEditItemTaskState, TaskEditItemTaskState } from \"./taskEditItemTaskState\";\r\nimport { ITaskEditItemTaskPriority, TaskEditItemTaskPriority } from \"./taskEditItemTaskPriority\";\r\n\r\nexport interface ITaskEdit {\r\n item: ITaskEditItem;\r\n canHandleTask: boolean;\r\n canRemoveTask: boolean;\r\n canChangeTaskState: boolean;\r\n taskTypes: ITaskEditTypeItem[];\r\n taskStates: ITaskEditItemTaskState[];\r\n taskPriorities: ITaskEditItemTaskPriority[];\r\n units: IIdTitleNode[];\r\n}\r\n\r\nexport class TaskEdit implements ITaskEdit {\r\n item: TaskEditItem;\r\n canHandleTask: boolean;\r\n canRemoveTask: boolean;\r\n canChangeTaskState: boolean;\r\n taskTypes: TaskEditTypeItem[];\r\n taskStates: TaskEditItemTaskState[];\r\n taskPriorities: TaskEditItemTaskPriority[];\r\n units: IdTitleNode[];\r\n\r\n constructor();\r\n constructor(obj: ITaskEdit);\r\n constructor(obj?: any) {\r\n this.item = new TaskEditItem(obj ? obj.item : null);\r\n this.canHandleTask = obj && obj.canHandleTask || false;\r\n this.canRemoveTask = obj && obj.canRemoveTask || false;\r\n this.canChangeTaskState = obj && obj.canChangeTaskState || false;\r\n this.taskTypes = Base.getTypedArray(obj ? obj.taskTypes : null, TaskEditTypeItem);\r\n this.taskStates = Base.getTypedArray(obj ? obj.taskStates : null, TaskEditItemTaskState);\r\n this.taskPriorities = Base.getTypedArray(obj ? obj.taskPriorities : null, TaskEditItemTaskPriority);\r\n this.units = Base.getTypedArray(obj ? obj.units : null, IdTitleNode);\r\n const taskType = this.taskTypes.find(i => i.id === this.item.taskTypeId);\r\n this.item.initializeDataRowsRows(taskType);\r\n }\r\n}","import { ITaskDataRow, TaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\n\r\nexport interface ITaskDataRowEdit {\r\n item: ITaskDataRow;\r\n}\r\n\r\nexport class TaskDataRowEdit implements ITaskDataRowEdit {\r\n item: TaskDataRow;\r\n\r\n constructor();\r\n constructor(obj: ITaskDataRowEdit);\r\n constructor(obj?: any) {\r\n this.item = null;\r\n if (obj && obj.item) {\r\n this.item = new TaskDataRow(obj.item);\r\n }\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ListItems } from \"ui/Scripts/source/framework/listItems\";\r\nimport { ITaskDataRow, TaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\n\r\nexport interface ITaskDataRowListItems extends ListItems {\r\n}\r\n\r\nexport class TaskDataRowListItems extends ListItems implements ITaskDataRowListItems {\r\n constructor();\r\n constructor(obj: ITaskDataRowListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, TaskDataRow);\r\n }\r\n}","import { ITaskEditTypeItem, TaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\nexport interface ITaskTypeNew {\r\n systemTaskTypes: ITaskEditTypeItem[];\r\n companyTaskTypes: ITaskEditTypeItem[];\r\n}\r\n\r\nexport class TaskTypeNew implements ITaskTypeNew {\r\n systemTaskTypes: TaskEditTypeItem[];\r\n companyTaskTypes: TaskEditTypeItem[];\r\n\r\n constructor();\r\n constructor(obj: ITaskTypeNew);\r\n constructor(obj?: any) {\r\n this.systemTaskTypes = Base.getTypedArray(obj?.systemTaskTypes, TaskEditTypeItem);\r\n this.companyTaskTypes = Base.getTypedArray(obj?.companyTaskTypes, TaskEditTypeItem);\r\n }\r\n}","export interface ITaskTypePrintHtml {\r\n html: string;\r\n}\r\n\r\nexport class TaskTypePrintHtml implements ITaskTypePrintHtml {\r\n html: string;\r\n\r\n constructor();\r\n constructor(obj: ITaskTypePrintHtml);\r\n constructor(obj?: any) {\r\n this.html = obj && obj.html || \"\";\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { ITaskDataRowCol, TaskDataRowCol } from \"./taskDataRowCol\";\r\n\r\nexport interface ITaskDataRowDefaultValues {\r\n cols: ITaskDataRowCol[];\r\n}\r\n\r\nexport class TaskDataRowDefaultValues implements ITaskDataRowDefaultValues {\r\n cols: TaskDataRowCol[];\r\n\r\n constructor();\r\n constructor(obj: ITaskDataRowDefaultValues);\r\n constructor(obj?: any) {\r\n this.cols = Base.getTypedArray(obj ? obj.cols : null, TaskDataRowCol);\r\n }\r\n}","import { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { TaskListItems, TaskPage, TaskPageData } from \"../task\";\r\nimport { AbortDictionary, getApiCall, getFileApiCall, postApiCall, postFileApiCall } from \"./tokenService\";\r\nimport { IPagePanel } from \"../common/pagePanel\";\r\nimport { ISavedChartPanel } from \"../chart/savedChartPanel\";\r\nimport { FrontToDoItems } from \"../front/frontToDoItems\";\r\nimport { ReportItems } from \"../report/reportItems\";\r\nimport { UnitNodePermissions } from \"../unit/unitNodePermissions\";\r\nimport { ModuleUnits } from \"../unit/moduleUnits\";\r\nimport { IReportParameterValue } from \"../report/reportParameterValue\";\r\nimport { ReportGenerated2 } from \"../report/reportGenerated2\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { TaskStateEdit } from \"../taskState/taskStateEdit\";\r\nimport { TaskStateListItems } from \"../taskState/taskStateListItems\";\r\nimport { TaskPriorityListItems } from \"../taskPriority/taskPriorityListItems\";\r\nimport { TaskPriorityEdit } from \"../taskPriority/taskPriorityEdit\";\r\nimport { TaskTypeListItems } from \"../taskType/taskTypeListItems\";\r\nimport { TaskTypeEdit } from \"../taskType/taskTypeEdit\";\r\nimport { TaskEdit } from \"../task/taskdit\";\r\nimport { UserListItems } from \"../user/userListItems\";\r\nimport { SaveSuccessItems } from \"ui/Scripts/source/models/common/saveSuccessItems\";\r\nimport { TaskDataRowEdit } from \"../task/taskDataRowEdit\";\r\nimport { TaskDataRowListItems } from \"../task/taskDataRowListItems\";\r\nimport { UnitModuleSaveResult } from \"../unit/unitModuleSaveResult\";\r\nimport { TaskTypeNew } from \"../taskType/taskTypeNew\";\r\nimport { CalendarTaskListItems } from \"ui/Scripts/source/models/calendarTask/calendarTaskListItems\";\r\nimport { CalendarTaskEdit } from \"ui/Scripts/source/models/calendarTask/calendarTaskEdit\";\r\nimport { TaskTypePrintHtml } from \"../taskType/taskTypePrintHtml\";\r\nimport { TaskDataRowDefaultValues } from \"ui/Scripts/source/models/task/taskDataRowDefaultValues\";\r\n\r\n//Abort\r\nconst commonAborts = new AbortDictionary();\r\nconst reportAborts = new AbortDictionary();\r\nconst chartAborts = new AbortDictionary();\r\n\r\n// #region TaskPage\r\nexport const getTaskPage = (): Promise => {\r\n return getApiCall(\"api/task\", TaskPage);\r\n};\r\n\r\nexport const getTaskPageData = (companyId: string): Promise => {\r\n return getApiCall(\"api/task/pagedata?id=\" + companyId, TaskPageData);\r\n};\r\n\r\nexport const getTaskListItems = (companyId: string, pageSize: number, page: number, thrashBin: boolean, filter: string, unitIds: string[],\r\n stateIds: string[], priorityIds: string[], taskTypeIds: string[], handlerUserCodes: string[], taskTypeHeaderFields: string, taskTypeFields: string,\r\n sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n reportAborts.abortAll();\r\n chartAborts.abortAll();\r\n return postApiCall(\"api/task/list\", TaskListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n thrashBin,\r\n filter: filter || \"\",\r\n unitIds,\r\n stateIds,\r\n priorityIds,\r\n taskTypeIds,\r\n handlerUserCodes,\r\n taskTypeHeaderFields,\r\n taskTypeFields\r\n }));\r\n};\r\n\r\nexport const getTaskPrint = (companyId: string, id: string, rowAmount: number): Promise => {\r\n return getFileApiCall(\"api/task/print?id=\" + id + \"&companyId=\" + companyId + \"&rowAmount=\" + rowAmount.toString(10));\r\n};\r\n// #endregion TaskPage\r\n\r\n// #region Report\r\nexport const getTaskPageReportItems = (companyId: string): Promise => {\r\n const operationId = \"getTaskPageReportItems\" + (companyId ?? \"\");\r\n commonAborts.abort(operationId);\r\n return getApiCall(\"api/task/reports?id=\" + (companyId ?? \"\"), ReportItems, (id: string) => {\r\n commonAborts.add(operationId, id);\r\n }).finally(() => {\r\n commonAborts.remove(operationId);\r\n });\r\n};\r\n\r\nexport const getReportGenerated = (companyId: string, reportId: string, reportName: string, thrashBin: boolean, unitIds: string[],\r\n stateIds: string[], priorityIds: string[], taskTypeIds: string[], handlerUserCodes: string[], taskTypeHeaderFields: string, taskTypeFields: string,\r\n parameterValues: IReportParameterValue[]): Promise => {\r\n reportAborts.abortAll();\r\n chartAborts.abortAll();\r\n return postApiCall(\"api/task/createreport\", ReportGenerated2, JSON.stringify({\r\n companyId,\r\n reportId,\r\n reportName,\r\n thrashBin,\r\n unitIds,\r\n stateIds,\r\n priorityIds,\r\n taskTypeIds,\r\n handlerUserCodes,\r\n taskTypeHeaderFields,\r\n taskTypeFields,\r\n parameterValues\r\n }), (abortId: string) => {\r\n reportAborts.add(reportId, abortId);\r\n }).finally(() => {\r\n reportAborts.remove(reportId);\r\n });\r\n};\r\n\r\nexport const getChart = (companyId: string, reportId: string, chartId: string, thrashBin: boolean, unitIds: string[],\r\n stateIds: string[], priorityIds: string[], taskTypeIds: string[], handlerUserCodes: string[], taskTypeHeaderFields: string, taskTypeFields: string,\r\n parameterValues: IReportParameterValue[]): Promise => {\r\n const reportChartId = reportId + \"#\" + chartId;\r\n chartAborts.abort(reportChartId);\r\n reportAborts.abortAll();\r\n return postApiCall(\"api/task/createchart\", null, JSON.stringify({\r\n companyId,\r\n reportId,\r\n chartId,\r\n thrashBin,\r\n unitIds,\r\n stateIds,\r\n priorityIds,\r\n taskTypeIds,\r\n handlerUserCodes,\r\n taskTypeHeaderFields,\r\n taskTypeFields,\r\n parameterValues\r\n }), (abortId: string) => {\r\n chartAborts.add(reportChartId, abortId);\r\n }).finally(() => {\r\n chartAborts.remove(reportChartId);\r\n });\r\n};\r\n// #endregion Report\r\n\r\n// #region Dashboard\r\nexport const saveTaskPanels = (panels: IPagePanel[]): Promise => {\r\n return postApiCall(\"api/task/savepanels\", ApiSuccess, JSON.stringify({ panels }));\r\n};\r\n\r\nexport const saveTaskChartPanels = (panels: ISavedChartPanel[]): Promise => {\r\n return postApiCall(\"api/task/savechartpanels\", ApiSuccess, JSON.stringify({ panels }));\r\n};\r\n\r\nexport const getTaskToDoItems = (): Promise => {\r\n return getApiCall(\"api/task/todoitems\", FrontToDoItems);\r\n};\r\n// #endregion Dashboard\r\n\r\n// #region Module Permissions\r\nexport const getUnitNodePermissions = (companyId: string): Promise => {\r\n return getApiCall(\"api/task/module/permissions?id=\" + companyId, UnitNodePermissions);\r\n};\r\n\r\nexport const saveUnitNodePermissions = (obj: any): Promise => {\r\n return postApiCall(\"api/task/module/savepermissions\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Module Permissions\r\n\r\n// #region Module units\r\nexport const getUnits = (companyId: string): Promise => {\r\n return getApiCall(\"api/task/module/units?id=\" + companyId, ModuleUnits);\r\n};\r\n\r\nexport const saveUnits = (obj: any): Promise => {\r\n return postApiCall(\"api/task/module/saveunits\", UnitModuleSaveResult, JSON.stringify(obj));\r\n};\r\n// #endregion Module units\r\n\r\n// #region Module task priorities\r\nexport const getTaskPriorityListItems = (companyId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/task/module/taskpriority/list\", TaskPriorityListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\"\r\n }));\r\n};\r\n\r\nexport const getTaskPriorityEdit = (companyId: string, id: string): Promise => {\r\n return getApiCall(\"api/task/module/taskpriority/edit?id=\" + id + \"&companyId=\" + companyId, TaskPriorityEdit);\r\n};\r\n\r\nexport const saveTaskPriorityEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/task/module/taskpriority/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeTaskPriorities = (obj: any): Promise => {\r\n return postApiCall(\"api/task/module/taskpriority/remove\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Module task priorities\r\n\r\n// #region Module task states\r\nexport const getTaskStateListItems = (companyId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/task/module/taskstate/list\", TaskStateListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\"\r\n }));\r\n};\r\n\r\nexport const getTaskStateEdit = (companyId: string, id: string): Promise => {\r\n return getApiCall(\"api/task/module/taskstate/edit?id=\" + id + \"&companyId=\" + companyId, TaskStateEdit);\r\n};\r\n\r\nexport const saveTaskStateEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/task/module/taskstate/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeTaskStates = (obj: any): Promise => {\r\n return postApiCall(\"api/task/module/taskstate/remove\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Module task states\r\n\r\n// #region Module task types\r\nexport const getTaskTypeListItems = (companyId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, ignoreTaskTypesOfCompanyId: string): Promise => {\r\n return postApiCall(\"api/task/module/tasktype/list\", TaskTypeListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\",\r\n ignoreTaskTypesOfCompanyId\r\n }));\r\n};\r\n\r\nexport const getTaskTypeNew = (companyId: string): Promise => {\r\n return getApiCall(\"api/task/module/tasktype/new?id=\" + companyId, TaskTypeNew);\r\n};\r\n\r\nexport const getTaskTypeEdit = (companyId: string, id: string, addToCompany: boolean): Promise => {\r\n return getApiCall(\"api/task/module/tasktype/edit?id=\" + id + \"&companyId=\" + companyId + \"&addToCompany=\" + addToCompany, TaskTypeEdit);\r\n};\r\n\r\nexport const saveTaskTypeEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/task/module/tasktype/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeTaskTypes = (obj: any): Promise => {\r\n return postApiCall(\"api/task/module/tasktype/remove\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const getTaskTypePreviewPrintHtml = (obj: any): Promise => {\r\n return postApiCall(\"api/task/module/tasktype/previewprinthtml\", TaskTypePrintHtml, JSON.stringify(obj));\r\n};\r\n\r\nexport const getTaskTypePreviewPrint = (obj: any): Promise => {\r\n return postFileApiCall(\"api/task/module/tasktype/previewprint\", JSON.stringify(obj));\r\n};\r\n\r\nexport const getTaskTypeRowPreviewPrintHtml = (obj: any): Promise => {\r\n return postApiCall(\"api/task/module/tasktyperow/previewprinthtml\", TaskTypePrintHtml, JSON.stringify(obj));\r\n};\r\n\r\nexport const getTaskTypeRowPreviewPrint = (obj: any): Promise => {\r\n return postFileApiCall(\"api/task/module/tasktyperow/previewprint\", JSON.stringify(obj));\r\n};\r\n// #endregion Module task types\r\n\r\n// #region Edit\r\nexport const getTaskEdit = (companyId: string, taskId: string, lockTask: boolean): Promise => {\r\n return getApiCall(\"api/task/edit?id=\" + taskId + \"&companyId=\" + companyId + \"&lockTask=\" + lockTask, TaskEdit);\r\n};\r\n\r\nexport const saveTaskEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/task/editsave\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeTask = (companyId: string, taskId: string): Promise => {\r\n return postApiCall(\"api/task/remove?id=\" + taskId + \"&companyId=\" + companyId, ApiSuccess);\r\n};\r\n\r\nexport const moveTaskToTrashBin = (companyId: string, taskId: string): Promise => {\r\n return postApiCall(\"api/task/movetotrash?id=\" + taskId + \"&companyId=\" + companyId, ApiSuccess);\r\n};\r\n\r\nexport const restoreTaskFromTrashBin = (companyId: string, taskId: string): Promise => {\r\n return postApiCall(\"api/task/restorefromtrash?id=\" + taskId + \"&companyId=\" + companyId, ApiSuccess);\r\n};\r\n\r\nexport const emptyTrashBin = (companyId: string): Promise => {\r\n return postApiCall(\"api/task/emptytrash?id=\" + companyId, ApiSuccess);\r\n};\r\n\r\nexport const sendTaskReadReceipt = (companyId: string, id: string): Promise => {\r\n return postApiCall(\"api/task/sendreadreceipt\", ApiSuccess, JSON.stringify({\r\n companyId,\r\n id\r\n }));\r\n};\r\n\r\nexport const downloadInfoDocument = (id: string): Promise => {\r\n return getFileApiCall(\"api/task/downloadinfo?id=\" + id);\r\n};\r\n// #endregion Edit\r\n\r\n// #region Edit Handlers\r\nexport const getHandlersSelectUserListItems = (companyId: string, taskId: string, unitId: string, pageSize: number, page: number, filter: string,\r\n ignoreUserIds: string[], ignoreUserCodes: string[], activityState: number, ignoreRecordUserConnected: boolean, doNotIgnoreRecordUserConnectedUserCode: string,\r\n sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/task/selecthandlers\", UserListItems, JSON.stringify({\r\n companyId,\r\n taskId,\r\n unitId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\",\r\n ignoreUserIds,\r\n ignoreUserCodes,\r\n ignoreRecordUserConnected,\r\n doNotIgnoreRecordUserConnectedUserCode,\r\n activityState\r\n }));\r\n};\r\n\r\nexport const taskEditAddHandlers = (companyId: string, taskId: string, userCodes: string[]): Promise => {\r\n return postApiCall(\"api/task/editaddhandlers\", ApiSuccess, JSON.stringify({\r\n companyId,\r\n taskId,\r\n userCodes\r\n }));\r\n};\r\n\r\nexport const taskEditRemoveHandlers = (companyId: string, taskId: string, userCodes: string[]): Promise => {\r\n return postApiCall(\"api/task/editremovehandlers\", ApiSuccess, JSON.stringify({\r\n companyId,\r\n taskId,\r\n userCodes\r\n }));\r\n};\r\n// #endregion Edit Handlers\r\n\r\n// #region Edit Task Data Row Attachment\r\nexport const taskEditRemoveAttachments = (data: any): Promise => {\r\n return postApiCall(\"api/task/editremoveattachments\", ApiSuccess, JSON.stringify(data));\r\n};\r\n\r\nexport const taskEditAddAttachments = (data: any): Promise => {\r\n return postApiCall(\"api/task/editaddattachments\", SaveSuccessItems, JSON.stringify(data));\r\n};\r\n// #endregion Edit Task Data Row Attachment\r\n\r\n// #region TaskDataRow\r\nexport const getTaskDataRowListItems = (companyId: string, taskId: string, pageSize: number, page: number, taskDataRowFilterFields: string = null): Promise => {\r\n return postApiCall(\"api/task/datarow/list\", TaskDataRowListItems, JSON.stringify({\r\n companyId,\r\n taskId,\r\n pageSize,\r\n page,\r\n taskDataRowFilterFields\r\n }));\r\n};\r\n\r\nexport const getTaskDataRowDefaultValues = (companyId: string, taskId: string): Promise => {\r\n return getApiCall(\"api/task/datarow/new/defaultvalues?taskId=\" + taskId + \"&companyId=\" + companyId, TaskDataRowDefaultValues);\r\n};\r\n\r\nexport const getTaskDataRowEdit = (companyId: string, taskId: string, taskDataRowId: string): Promise => {\r\n return getApiCall(\"api/task/datarow/edit?id=\" + taskDataRowId + \"&taskId=\" + taskId + \"&companyId=\" + companyId, TaskDataRowEdit);\r\n};\r\n\r\nexport const saveTaskDataRowEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/task/datarow/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeTaskDataRow = (companyId: string, taskId: string, taskDataRowId: string): Promise => {\r\n return postApiCall(\"api/task/datarow/remove?id=\" + taskDataRowId + \"&taskId=\" + taskId + \"&companyId=\" + companyId, ApiSuccess);\r\n};\r\n\r\nexport const getTaskDataRowPrint = (companyId: string, taskId: string, taskDataRowId: string): Promise => {\r\n return getFileApiCall(\"api/task/datarow/print?id=\" + taskDataRowId + \"&taskId=\" + taskId + \"&companyId=\" + companyId);\r\n};\r\n// #endregion TaskDataRow\r\n\r\n// #region Task CalendarTasks\r\nexport const getCalendarTaskListItems = (companyId: string, taskId: string, pageSize: number, page: number): Promise => {\r\n return postApiCall(\"api/task/calendartask/list\", CalendarTaskListItems, JSON.stringify({\r\n companyId,\r\n recordId: taskId,\r\n pageSize,\r\n page,\r\n }));\r\n};\r\n\r\nexport const getCalendarTaskEdit = (companyId: string, calendarTaskId: string, taskId: string): Promise => {\r\n return getApiCall(\"api/task/calendartask/edit?id=\" + calendarTaskId + \"&companyId=\" + companyId + \"&taskId=\" + taskId, CalendarTaskEdit);\r\n};\r\n\r\nexport const saveCalendarTaskEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/task/calendartask/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeCalendarTask = (companyId: string, calendarTaskId: string, taskId: string): Promise => {\r\n return postApiCall(\"api/task/calendartask/remove?id=\" + calendarTaskId + \"&companyId=\" + companyId + \"&taskId=\" + taskId, ApiSuccess);\r\n};\r\n// #endregion Task CalendarTasks\r\n","export interface IUserIntraModule {\r\n code: string;\r\n name: string;\r\n externalCode: string;\r\n inUse: boolean;\r\n}\r\n\r\nexport class UserIntraModule implements IUserIntraModule {\r\n code: string;\r\n name: string;\r\n externalCode: string;\r\n inUse: boolean;\r\n\r\n constructor();\r\n constructor(obj: IUserIntraModule);\r\n constructor(obj?: any) {\r\n this.code = obj && obj.code || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.externalCode = obj && obj.externalCode || \"\";\r\n this.inUse = obj && obj.inUse || false;\r\n }\r\n}\r\n\r\nexport class UserSaveIntraModule {\r\n code: string;\r\n externalCode: string;\r\n\r\n constructor();\r\n constructor(obj: IUserIntraModule);\r\n constructor(obj?: any) {\r\n this.code = obj && obj.code || \"\";\r\n this.externalCode = obj && obj.externalCode || \"\";\r\n }\r\n}","import { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IUserEditItem extends IEditItem {\r\n code: string;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n comment: string;\r\n endDate: number;\r\n picture: string;\r\n userType: number;\r\n portalUseType: number;\r\n emailNotificationType: number;\r\n pushNotificationType: number;\r\n recordEmailNotificationType: number;\r\n recordEmailNotificationShowExpired: boolean;\r\n instantMessageUserInvitationAcceptType: number;\r\n defaultCulture: string;\r\n recordUserId: string;\r\n createUser: IModifyUser;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class UserEditItem extends EditItem implements IUserEditItem {\r\n code: string;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n comment: string;\r\n endDate: number;\r\n picture: string;\r\n userType: number;\r\n portalUseType: number;\r\n emailNotificationType: number;\r\n pushNotificationType: number;\r\n recordEmailNotificationType: number;\r\n recordEmailNotificationShowExpired: boolean;\r\n instantMessageUserInvitationAcceptType: number;\r\n defaultCulture: string;\r\n recordUserId: string;\r\n createUser: ModifyUser;\r\n modifyUser: ModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IUserEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.code = obj && obj.code || \"\";\r\n this.firstName = obj && obj.firstName || \"\";\r\n this.lastName = obj && obj.lastName || \"\";\r\n this.email = obj && obj.email || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.endDate = obj && obj.endDate || 0;\r\n this.picture = obj && obj.picture || \"\";\r\n this.userType = obj && obj.userType || 0;\r\n this.portalUseType = obj && obj.portalUseType || 0;\r\n this.emailNotificationType = obj && obj.emailNotificationType || 0;\r\n this.pushNotificationType = obj && obj.pushNotificationType || 0;\r\n this.recordEmailNotificationType = obj && obj.recordEmailNotificationType || 0;\r\n this.recordEmailNotificationShowExpired = obj && obj.recordEmailNotificationShowExpired || false;\r\n this.instantMessageUserInvitationAcceptType = obj && obj.instantMessageUserInvitationAcceptType || 0;\r\n this.defaultCulture = obj && obj.defaultCulture || \"\";\r\n this.recordUserId = obj && obj.recordUserId || \"\";\r\n this.createUser = new ModifyUser(obj ? obj.createUser : null);\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","export interface IUserTokenData {\r\n isInvitation: boolean;\r\n time: number;\r\n expireTime: number;\r\n}\r\n\r\nexport class UserTokenData implements IUserTokenData {\r\n isInvitation: boolean;\r\n time: number;\r\n expireTime: number;\r\n\r\n constructor();\r\n constructor(obj: IUserTokenData);\r\n constructor(obj?: any) {\r\n this.isInvitation = obj && obj.isInvitation || false;\r\n this.time = obj && obj.time || null;\r\n this.expireTime = obj && obj.expireTime || null;\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IUserExternalSystem, UserExternalSystem } from \"../externalSystem/userExternalSystem\";\r\nimport { IUserIntraModule, UserIntraModule } from \"../intraModule/userIntraModule\";\r\nimport { IUserGroupListItem, UserGroupListItem } from \"ui/Scripts/source/models/userGroup/userGroupListItem\";\r\nimport { IUserEditItem, UserEditItem } from \"./userEditItem\";\r\nimport { CompanyMenuItem, ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { IUserTokenData, UserTokenData } from \"./userTokenData\";\r\n\r\nexport interface IUserEdit {\r\n user: IUserEditItem;\r\n userGroups: IUserGroupListItem[];\r\n externalSystems: IUserExternalSystem[];\r\n intraModules: IUserIntraModule[];\r\n companies: ICompanyMenuItem[];\r\n companyCanUseInstantMessages: boolean;\r\n minPasswordLength: number;\r\n tokenData: IUserTokenData;\r\n}\r\n\r\nexport class UserEdit implements IUserEdit {\r\n user: UserEditItem;\r\n userGroups: UserGroupListItem[];\r\n externalSystems: UserExternalSystem[];\r\n intraModules: UserIntraModule[];\r\n companies: CompanyMenuItem[];\r\n companyCanUseInstantMessages: boolean;\r\n minPasswordLength: number;\r\n tokenData: UserTokenData;\r\n\r\n constructor();\r\n constructor(obj: IUserEdit);\r\n constructor(obj?: any) {\r\n this.user = new UserEditItem(obj ? obj.user : null);\r\n this.userGroups = Base.getTypedArray(obj ? obj.userGroups : null, UserGroupListItem);\r\n this.externalSystems = Base.getTypedArray(obj ? obj.externalSystems : null, UserExternalSystem);\r\n this.intraModules = Base.getTypedArray(obj ? obj.intraModules : null, UserIntraModule);\r\n this.companies = Base.getTypedArray(obj ? obj.companies : null, CompanyMenuItem);\r\n this.companyCanUseInstantMessages = obj && obj.companyCanUseInstantMessages || false;\r\n this.minPasswordLength = obj && obj.minPasswordLength || 0;\r\n this.tokenData = obj && obj.tokenData ? new UserTokenData(obj.tokenData) : null;\r\n }\r\n}","export interface IUserEditSaveSuccess {\r\n id: string;\r\n message: string;\r\n refreshSessionState: boolean;\r\n}\r\n\r\nexport class UserEditSaveSuccess implements IUserEditSaveSuccess {\r\n id: string;\r\n message: string;\r\n refreshSessionState: boolean;\r\n\r\n constructor();\r\n constructor(obj: IUserEditSaveSuccess);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.message = obj && obj.message || \"\";\r\n this.refreshSessionState = obj && obj.refreshSessionState || false;\r\n }\r\n}","import { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IUserProfileEditItem {\r\n code: string;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n emailNotificationType: number;\r\n pushNotificationType: number;\r\n instantMessageUserInvitationAcceptType: number;\r\n picture: string;\r\n rowId: string;\r\n createUser: IModifyUser;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class UserProfileEditItem implements IUserProfileEditItem {\r\n code: string;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n emailNotificationType: number;\r\n pushNotificationType: number;\r\n instantMessageUserInvitationAcceptType: number;\r\n picture: string;\r\n rowId: string;\r\n createUser: ModifyUser;\r\n modifyUser: ModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IUserProfileEditItem);\r\n constructor(obj?: any) {\r\n this.code = obj && obj.code || \"\";\r\n this.firstName = obj && obj.firstName || \"\";\r\n this.lastName = obj && obj.lastName || \"\";\r\n this.email = obj && obj.email || \"\";\r\n this.emailNotificationType = obj && obj.emailNotificationType || 0;\r\n this.pushNotificationType = obj && obj.pushNotificationType || 0;\r\n this.instantMessageUserInvitationAcceptType = obj && obj.instantMessageUserInvitationAcceptType || 0;\r\n this.picture = obj && obj.picture || \"\";\r\n this.rowId = obj && obj.rowId || \"\";\r\n this.createUser = new ModifyUser(obj ? obj.createUser : null);\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { IUserProfileEditItem, UserProfileEditItem } from \"./userProfileEditItem\";\r\n\r\nexport interface IUserProfileEdit {\r\n minPasswordLength: number;\r\n userProfile: IUserProfileEditItem;\r\n}\r\n\r\nexport class UserProfileEdit implements IUserProfileEdit {\r\n minPasswordLength: number;\r\n userProfile: UserProfileEditItem;\r\n\r\n constructor();\r\n constructor(obj: IUserProfileEdit);\r\n constructor(obj?: any) {\r\n this.minPasswordLength = obj && obj.minPasswordLength || 0;\r\n this.userProfile = new UserProfileEditItem(obj ? obj.userProfile : null);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { CompanyMenuItem, ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { IdTitleNode, IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { ISavedListFilter, SavedListFilter } from \"../common/savedListFilter\";\r\nimport { IUserListItems, UserListItems } from \"./userListItems\";\r\n\r\nexport interface IUsersPage {\r\n companies: ICompanyMenuItem[];\r\n userGroups: IIdTitleNode[];\r\n list: IUserListItems;\r\n companyFilters: ISavedListFilter[];\r\n userFilters: ISavedListFilter[];\r\n}\r\n\r\nexport class UsersPage implements IUsersPage {\r\n companies: CompanyMenuItem[];\r\n userGroups: IdTitleNode[];\r\n list: UserListItems;\r\n companyFilters: SavedListFilter[];\r\n userFilters: SavedListFilter[];\r\n\r\n constructor();\r\n constructor(obj: IUsersPage);\r\n constructor(obj?: any) {\r\n this.list = new UserListItems(obj && obj.list || null);\r\n this.companies = Base.getTypedArray(obj ? obj.companies : null, CompanyMenuItem);\r\n this.userGroups = Base.getTypedArray(obj ? obj.userGroups : null, IdTitleNode);\r\n this.companyFilters = Base.getTypedArray(obj ? obj.companyFilters : null, SavedListFilter);\r\n this.userFilters = Base.getTypedArray(obj ? obj.userFilters : null, SavedListFilter);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IdTitleNode, IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\n\r\nexport interface IUsersPageUserGroups {\r\n userGroups: IIdTitleNode[];\r\n}\r\n\r\nexport class UsersPageUserGroups implements IUsersPageUserGroups {\r\n userGroups: IdTitleNode[];\r\n\r\n constructor();\r\n constructor(obj: IUsersPageUserGroups);\r\n constructor(obj?: any) {\r\n this.userGroups = Base.getTypedArray(obj ? obj.userGroups : null, IdTitleNode);\r\n }\r\n}","import { ApiSuccess, IApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { IUserTokenData, UserTokenData } from \"./userTokenData\";\r\n\r\nexport interface IUserPasswordEmailResult extends IApiSuccess {\r\n tokenData: IUserTokenData;\r\n}\r\n\r\nexport class UserPasswordEmailResult extends ApiSuccess implements IUserPasswordEmailResult {\r\n tokenData: UserTokenData;\r\n\r\n constructor();\r\n constructor(obj: IUserPasswordEmailResult);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.tokenData = new UserTokenData(obj?.tokenData);\r\n }\r\n}","import { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { UserRemoveType } from \"../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/enums\";\r\nimport { UnitNodePermissions } from \"../unit/unitNodePermissions\";\r\nimport { UserEdit } from \"../user/userEdit\";\r\nimport { UserEditSaveSuccess } from \"../user/userEditSaveSuccess\";\r\nimport { UserListItems } from \"../user/userListItems\";\r\nimport { UserProfileEdit } from \"../user/userProfileEdit\";\r\nimport { UsersPage } from \"../user/usersPage\";\r\nimport { UsersPageUserGroups } from \"../user/usersPageUserGroups\";\r\nimport { getApiCall, getFileApiCall, postApiCall } from \"./tokenService\";\r\nimport { ReportGenerated2 } from \"../report/reportGenerated2\";\r\nimport { UserPasswordEmailResult } from \"../user/userPasswordEmailResult\";\r\n\r\n// #region UserPage\r\nexport const getUsersPage = (): Promise => {\r\n return getApiCall(\"api/user\", UsersPage);\r\n};\r\n\r\nexport const getUserListItems = (companyId: string, pageSize: number, page: number, filter: string, userGroupIds: string[], activityState: number, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/user/list\", UserListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\",\r\n userGroupIds,\r\n activityState\r\n }));\r\n};\r\n\r\nexport const getUsersPageUserGroups = (companyId: string): Promise => {\r\n return getApiCall(\"api/user/pageusergroups?id=\" + companyId, UsersPageUserGroups);\r\n};\r\n\r\nexport const getUserEdit = (companyId: string, userId: string): Promise => {\r\n return getApiCall(\"api/user/edit?id=\" + userId + \"&companyId=\" + companyId, UserEdit);\r\n};\r\n\r\nexport const saveUserEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/user/editsave\", UserEditSaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const checkUserCode = (id: string, companyId: string, code: string): Promise => {\r\n return postApiCall(\"api/user/checkusercode\", ApiSuccess, JSON.stringify({ id, companyId, code }));\r\n};\r\n\r\nexport const removeUser = (id: string, companyId: string, removeType: UserRemoveType): Promise => {\r\n return postApiCall(\"api/user/remove?id=\" + id + \"&companyId=\" + companyId + \"&removeType=\" + removeType.toString(10), ApiSuccess);\r\n};\r\n\r\nexport const userEditChangePassword = (obj: any): Promise => {\r\n return postApiCall(\"api/user/editchangepassword\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const userEditRemoveUserGroups = (obj: any): Promise => {\r\n return postApiCall(\"api/user/editremoveusergroups\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const userEditAddUserGroups = (obj: any): Promise => {\r\n return postApiCall(\"api/user/editaddusergroups\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion UserPage\r\n\r\n// #region Import\r\nexport const downloadImportTemplate = (): Promise => {\r\n return getFileApiCall(\"api/user/downloadimporttemplate\");\r\n};\r\n\r\nexport const uploadImportFile = (obj: any): Promise => {\r\n return postApiCall(\"api/user/uploadimportfile\", ReportGenerated2, JSON.stringify(obj));\r\n};\r\n\r\nexport const importUsers = (obj: any): Promise => {\r\n return postApiCall(\"api/user/import\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Import\r\n\r\n// #region Email\r\nexport const sendInvitationEmail = (id: string, companyId: string): Promise => {\r\n return postApiCall(\"api/user/invitationemail\", UserPasswordEmailResult, JSON.stringify({ id, companyId }));\r\n};\r\n\r\nexport const sendPasswordChangeEmail = (id: string, companyId: string): Promise => {\r\n return postApiCall(\"api/user/passwordchangeemail\", UserPasswordEmailResult, JSON.stringify({ id, companyId }));\r\n};\r\n// #endregion Email\r\n\r\n// #region Module properties\r\nexport const getUnitNodePermissions = (companyId: string): Promise => {\r\n return getApiCall(\"api/user/module/permissions?id=\" + companyId, UnitNodePermissions);\r\n};\r\n\r\nexport const saveUnitNodePermissions = (obj: any): Promise => {\r\n return postApiCall(\"api/user/module/savepermissions\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Module properties\r\n\r\n// #region UserProfile\r\nexport const getUserProfileEdit = (): Promise => {\r\n return getApiCall(\"api/user/profile\", UserProfileEdit);\r\n};\r\n\r\nexport const saveUserProfile = (obj: any): Promise => {\r\n return postApiCall(\"api/user/profilesave\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const changePassword = (obj: any): Promise => {\r\n return postApiCall(\"api/user/profilechangepassword\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion UserProfile\r\n\r\n// #region UserSelect\r\nexport const getUserSelectListItems = (companyId: string, pageSize: number, page: number, filter: string, ignoreUserIds: string[], ignoreUserCodes: string[], activityState: number,\r\n ignoreRecordUserConnected: boolean, doNotIgnoreRecordUserConnectedUserCode: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/user/selectlist\", UserListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\",\r\n ignoreUserIds,\r\n ignoreUserCodes,\r\n ignoreRecordUserConnected,\r\n doNotIgnoreRecordUserConnectedUserCode,\r\n activityState\r\n }));\r\n};\r\n// #endregion UserSelect\r\n\r\n//User parameter\r\n// #region User parameter\r\nexport const saveUserParameter = (code: string, value: string): Promise => {\r\n return postApiCall(\"api/userparameter/save\", ApiSuccess, JSON.stringify({\r\n code,\r\n value\r\n }));\r\n};\r\n// #endregion User parameter\r\n","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { INumberTitle, NumberTitle } from \"ui/Scripts/source/models/common/numberTitle\";\r\n\r\nexport interface IUserGroupIntraModule {\r\n code: string;\r\n name: string;\r\n level: number;\r\n permissions: INumberTitle[];\r\n}\r\n\r\nexport class UserGroupIntraModule implements IUserGroupIntraModule {\r\n code: string;\r\n name: string;\r\n level: number;\r\n permissions: NumberTitle[];\r\n\r\n constructor();\r\n constructor(obj: IUserGroupIntraModule);\r\n constructor(obj?: any) {\r\n this.code = obj && obj.code || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.level = obj && obj.level || 0;\r\n this.permissions = Base.getTypedArray(obj ? obj.permissions : null, NumberTitle);\r\n }\r\n}\r\n\r\nexport class UserGroupSaveIntraModule {\r\n code: string;\r\n level: string;\r\n\r\n constructor();\r\n constructor(obj: IUserGroupIntraModule);\r\n constructor(obj?: any) {\r\n this.code = obj && obj.code || \"\";\r\n this.level = obj && obj.level || 0;\r\n }\r\n}","import { EditItem, IEditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\nexport interface IUserGroupEditItem extends IEditItem {\r\n code: string;\r\n name: string;\r\n comment: string;\r\n authorizationLevel: number;\r\n createUser: IModifyUser;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class UserGroupEditItem extends EditItem implements IUserGroupEditItem {\r\n code: string;\r\n name: string;\r\n comment: string;\r\n authorizationLevel: number;\r\n createUser: ModifyUser;\r\n modifyUser: ModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IUserGroupEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.code = obj && obj.code || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.authorizationLevel = obj && obj.authorizationLevel || 0;\r\n this.createUser = new ModifyUser(obj ? obj.createUser : null);\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { INumberTitle, NumberTitle } from \"ui/Scripts/source/models/common/numberTitle\";\r\nimport { IUserGroupIntraModule, UserGroupIntraModule } from \"../intraModule/userGroupIntraModule\";\r\nimport { IUserListItem, UserListItem } from \"../user/userListItem\";\r\nimport { IUserGroupEditItem, UserGroupEditItem } from \"./userGroupEditItem\";\r\n\r\nexport interface IUserGroupEdit {\r\n userGroup: IUserGroupEditItem;\r\n users: IUserListItem[];\r\n authorizationLevels: INumberTitle[];\r\n intraModules: IUserGroupIntraModule[];\r\n}\r\n\r\nexport class UserGroupEdit implements IUserGroupEdit {\r\n userGroup: UserGroupEditItem;\r\n users: UserListItem[];\r\n authorizationLevels: NumberTitle[];\r\n intraModules: UserGroupIntraModule[];\r\n\r\n constructor();\r\n constructor(obj: IUserGroupEdit);\r\n constructor(obj?: any) {\r\n this.userGroup = new UserGroupEditItem(obj ? obj.userGroup : null);\r\n this.users = Base.getTypedArray(obj ? obj.users : null, UserListItem);\r\n this.authorizationLevels = Base.getTypedArray(obj ? obj.authorizationLevels : null, NumberTitle);\r\n this.intraModules = Base.getTypedArray(obj ? obj.intraModules : null, UserGroupIntraModule);\r\n }\r\n}","export interface IUserGroupUserSaveSuccess {\r\n message: string;\r\n refreshSessionState: boolean;\r\n}\r\n\r\nexport class UserGroupUserSaveSuccess implements IUserGroupUserSaveSuccess {\r\n message: string;\r\n refreshSessionState: boolean;\r\n\r\n constructor();\r\n constructor(obj: IUserGroupUserSaveSuccess);\r\n constructor(obj?: any) {\r\n this.message = obj && obj.message || \"\";\r\n this.refreshSessionState = obj && obj.refreshSessionState || false;\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { INumberTitle, NumberTitle } from \"ui/Scripts/source/models/common/numberTitle\";\r\nimport { CompanyMenuItem, ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { ISavedListFilter, SavedListFilter } from \"../common/savedListFilter\";\r\nimport { IUserGroupListItems, UserGroupListItems } from \"ui/Scripts/source/models/userGroup/userGroupListItems\";\r\n\r\nexport interface IUserGroupPage {\r\n companies: ICompanyMenuItem[];\r\n authorizationLevels: INumberTitle[];\r\n list: IUserGroupListItems;\r\n companyFilters: ISavedListFilter[];\r\n userFilters: ISavedListFilter[];\r\n}\r\n\r\nexport class UserGroupPage implements IUserGroupPage {\r\n companies: CompanyMenuItem[];\r\n authorizationLevels: NumberTitle[];\r\n list: UserGroupListItems;\r\n companyFilters: SavedListFilter[];\r\n userFilters: SavedListFilter[];\r\n\r\n constructor();\r\n constructor(obj: IUserGroupPage);\r\n constructor(obj?: any) {\r\n this.companies = Base.getTypedArray(obj ? obj.companies : null, CompanyMenuItem);\r\n this.authorizationLevels = Base.getTypedArray(obj ? obj.authorizationLevels : null, NumberTitle);\r\n this.list = new UserGroupListItems(obj && obj.list || null);\r\n this.companyFilters = Base.getTypedArray(obj ? obj.companyFilters : null, SavedListFilter);\r\n this.userFilters = Base.getTypedArray(obj ? obj.userFilters : null, SavedListFilter);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { INumberTitle, NumberTitle } from \"ui/Scripts/source/models/common/numberTitle\";\r\n\r\nexport interface IUserGroupPageAuthorizationLevels {\r\n authorizationLevels: INumberTitle[];\r\n}\r\n\r\nexport class UserGroupPageAuthorizationLevels implements IUserGroupPageAuthorizationLevels {\r\n authorizationLevels: NumberTitle[];\r\n\r\n constructor();\r\n constructor(obj: IUserGroupPageAuthorizationLevels);\r\n constructor(obj?: any) {\r\n this.authorizationLevels = Base.getTypedArray(obj ? obj.authorizationLevels : null, NumberTitle);\r\n }\r\n}","import { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { UnitNodePermissions } from \"../unit/unitNodePermissions\";\r\nimport { UserGroupEdit } from \"../userGroup/userGroupEdit\";\r\nimport { UserGroupUserSaveSuccess } from \"../userGroup/userGroupEditUserSaveSuccess\";\r\nimport { UserGroupListItems } from \"ui/Scripts/source/models/userGroup/userGroupListItems\";\r\nimport { UserGroupPage } from \"../userGroup/userGroupPage\";\r\nimport { UserGroupPageAuthorizationLevels } from \"../userGroup/userGroupPageAuthorizationLevels\";\r\nimport { getApiCall, postApiCall } from \"./tokenService\";\r\n\r\n// #region UserPage\r\nexport const getUserGroupPage = (): Promise => {\r\n return getApiCall(\"api/usergroup\", UserGroupPage);\r\n};\r\n\r\nexport const getUserGroupPageAuthorizationLevels = (companyId: string): Promise => {\r\n return getApiCall(\"api/usergroup/authorizationlevels?id=\" + companyId, UserGroupPageAuthorizationLevels);\r\n};\r\n\r\nexport const getUserGroupListItems = (companyId: string, pageSize: number, page: number, filter: string, authorizationLevels: number[], sortColumn: string, sortOrderIsAsc: boolean,\r\n ignoreUserGroupCodes: string[] = null): Promise => {\r\n return postApiCall(\"api/usergroup/list\", UserGroupListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\",\r\n authorizationLevels,\r\n ignoreUserGroupCodes: ignoreUserGroupCodes || []\r\n }));\r\n};\r\n\r\nexport const getUserGroupEdit = (companyId: string, userId: string): Promise => {\r\n return getApiCall(\"api/usergroup/edit?id=\" + userId + \"&companyId=\" + companyId, UserGroupEdit);\r\n};\r\n\r\nexport const saveUserGroupEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/usergroup/editsave\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeUserGroup = (id: string, companyId: string): Promise => {\r\n return postApiCall(\"api/usergroup/remove?id=\" + id + \"&companyId=\" + companyId, ApiSuccess);\r\n};\r\n\r\nexport const userGroupEditRemoveUsers = (obj: any): Promise => {\r\n return postApiCall(\"api/usergroup/editremoveusers\", UserGroupUserSaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const userGroupEditAddUsers = (obj: any): Promise => {\r\n return postApiCall(\"api/usergroup/editaddusers\", UserGroupUserSaveSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion UserPage\r\n\r\n// #region Module properties\r\nexport const getUnitNodePermissions = (companyId: string): Promise => {\r\n return getApiCall(\"api/usergroup/module/permissions?id=\" + companyId, UnitNodePermissions);\r\n};\r\n\r\nexport const saveUnitNodePermissions = (obj: any): Promise => {\r\n return postApiCall(\"api/usergroup/module/savepermissions\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Module properties\r\n\r\nexport const getUserGroupListItemsForPermissions = (companyId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, groupType: number,\r\n ignoreUserGroupCodes: string[], requireUserGroupCodes: string[], messageTargetMode: boolean): Promise => {\r\n return postApiCall(\"api/usergroup/listforpermissions\", UserGroupListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\",\r\n groupType: groupType || 0,\r\n ignoreUserGroupCodes: ignoreUserGroupCodes || [],\r\n requireUserGroupCodes: requireUserGroupCodes || [],\r\n messageTargetMode: messageTargetMode || false\r\n }));\r\n};\r\n\r\nexport const getUserGroupListItemsForUser = (companyId: string, pageSize: number, page: number, filter: string, authorizationLevels: number[], sortColumn: string, sortOrderIsAsc: boolean,\r\n ignoreUserGroupCodes: string[] = null): Promise => {\r\n return postApiCall(\"api/usergroup/listforuser\", UserGroupListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\",\r\n authorizationLevels,\r\n ignoreUserGroupCodes: ignoreUserGroupCodes || []\r\n }));\r\n};\r\n","import { Base } from \"../../framework/base\";\r\nimport { ListItems } from \"../../framework/listItems\";\r\nimport { IModifyUser, ModifyUser } from \"./modifyUser\";\r\n\r\nexport interface IModifyUserItems extends ListItems {\r\n}\r\n\r\nexport class ModifyUserItems extends ListItems implements IModifyUserItems {\r\n constructor();\r\n constructor(obj: IModifyUserItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, ModifyUser);\r\n }\r\n}","export interface IWhistleBlowCategoryListItem {\r\n id: string;\r\n companyId: string;\r\n code: string;\r\n comment: string;\r\n activeState: number;\r\n}\r\n\r\nexport class WhistleBlowCategoryListItem implements IWhistleBlowCategoryListItem {\r\n id: string;\r\n companyId: string;\r\n code: string;\r\n comment: string;\r\n activeState: number;\r\n\r\n constructor();\r\n constructor(obj: IWhistleBlowCategoryListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.companyId = obj && obj.companyId || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.activeState = obj && obj.activeState || 0;\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { FileAttachment, IFileAttachment } from \"../common/fileAttachment\";\r\nimport { IModifyUser, ModifyUser } from \"../user/modifyUser\";\r\n\r\nexport interface IWhistleBlowEditItemMessage {\r\n id: string;\r\n date: number;\r\n content: string;\r\n isInternal: boolean;\r\n myMessage: boolean;\r\n informantMessage: boolean;\r\n allRead: boolean;\r\n isRead: boolean;\r\n modifyUser: IModifyUser;\r\n attachments: IFileAttachment[];\r\n}\r\n\r\nexport class WhistleBlowEditItemMessage implements IWhistleBlowEditItemMessage {\r\n id: string;\r\n date: number;\r\n content: string;\r\n isInternal: boolean;\r\n informantMessage: boolean;\r\n myMessage: boolean;\r\n allRead: boolean;\r\n isRead: boolean;\r\n modifyUser: ModifyUser;\r\n attachments: FileAttachment[];\r\n\r\n constructor();\r\n constructor(obj: IWhistleBlowEditItemMessage);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.date = obj && obj.date || 0;\r\n this.content = obj && obj.content || \"\";\r\n this.isInternal = obj && obj.isInternal || false;\r\n this.myMessage = obj && obj.myMessage || false;\r\n this.informantMessage = obj && obj.informantMessage || false;\r\n this.allRead = obj && obj.allRead || false;\r\n this.isRead = obj && obj.isRead || false;\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n this.attachments = Base.getTypedArray(obj ? obj.attachments : null, FileAttachment);\r\n }\r\n \r\n static sortWhistleBlowEditItemMessages(items: IWhistleBlowEditItemMessage[]): IWhistleBlowEditItemMessage[] {\r\n if (!items && items.length < 2) return items;\r\n return items.sort((a: IWhistleBlowEditItemMessage, b: IWhistleBlowEditItemMessage) => { return (!a || !b) ? 0 : Base.numCompare(a.date, b.date); });\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { EditItem, IEditItem } from \"../common/editItem\";\r\nimport { FileAttachment, IFileAttachment } from \"../common/fileAttachment\";\r\nimport { WhistleBlowResolution, WhistleBlowSeverity, WhistleBlowSource, WhistleBlowState, WhistleBlowArchiveState } from \"../enums\";\r\nimport { IModifyUser, ModifyUser } from \"../user/modifyUser\";\r\nimport { IWhistleBlowEditItemMessage, WhistleBlowEditItemMessage } from \"./whistleBlowEditItemMessage\";\r\n\r\nexport interface IWhistleBlowEditItem extends IEditItem {\r\n channelId: string;\r\n unitId: string;\r\n unitCode: string;\r\n categoryId: string;\r\n state: WhistleBlowState;\r\n archiveState: WhistleBlowArchiveState;\r\n severity: WhistleBlowSeverity;\r\n resolution: WhistleBlowResolution;\r\n resolutionComment: string;\r\n source: WhistleBlowSource;\r\n sourceComment: string;\r\n code: string;\r\n anonymous: boolean;\r\n title: string;\r\n date: number;\r\n description: string;\r\n informantName: string;\r\n informantEmail: string;\r\n informantPhone: string;\r\n informantPasswordConfirmed: boolean;\r\n createDate: number;\r\n resolvedDate: number;\r\n toBeReceivedDate: number;\r\n toBeReceivedDateUrgency: number;\r\n toBeRespondedDate: number;\r\n toBeRespondedDateUrgency: number;\r\n createdByInformant: boolean;\r\n modifyUser: IModifyUser;\r\n attachments: IFileAttachment[];\r\n messages: IWhistleBlowEditItemMessage[];\r\n handlers: IModifyUser[];\r\n}\r\n\r\nexport class WhistleBlowEditItem extends EditItem implements IWhistleBlowEditItem {\r\n channelId: string;\r\n unitId: string;\r\n unitCode: string;\r\n categoryId: string;\r\n state: WhistleBlowState;\r\n archiveState: WhistleBlowArchiveState;\r\n severity: WhistleBlowSeverity;\r\n resolution: WhistleBlowResolution;\r\n resolutionComment: string;\r\n source: WhistleBlowSource;\r\n sourceComment: string;\r\n code: string;\r\n anonymous: boolean;\r\n title: string;\r\n date: number;\r\n description: string;\r\n informantName: string;\r\n informantEmail: string;\r\n informantPhone: string;\r\n informantPasswordConfirmed: boolean;\r\n createDate: number;\r\n resolvedDate: number;\r\n toBeReceivedDate: number;\r\n toBeReceivedDateUrgency: number;\r\n toBeRespondedDate: number;\r\n toBeRespondedDateUrgency: number;\r\n createdByInformant: boolean;\r\n modifyUser: ModifyUser;\r\n attachments: FileAttachment[];\r\n messages: WhistleBlowEditItemMessage[];\r\n handlers: ModifyUser[];\r\n\r\n constructor();\r\n constructor(obj: IWhistleBlowEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.channelId = obj && obj.channelId || \"\";\r\n this.unitId = obj && obj.unitId || \"\";\r\n this.unitCode = obj && obj.unitCode || \"\";\r\n this.categoryId = obj && obj.categoryId || \"\";\r\n this.state = obj && obj.state || WhistleBlowState.New;\r\n this.archiveState = obj && obj.archiveState || WhistleBlowArchiveState.NotArchived;\r\n this.severity = obj && obj.severity || WhistleBlowSeverity.Unspecified;\r\n this.resolution = obj && obj.resolution || WhistleBlowResolution.Unspecified;\r\n this.resolutionComment = obj && obj.resolutionComment || \"\";\r\n this.source = obj && obj.source || WhistleBlowSource.Unspecified;\r\n this.sourceComment = obj && obj.sourceComment || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.anonymous = obj && obj.anonymous || false;\r\n this.title = obj && obj.title || \"\";\r\n this.date = obj && obj.date || 0;\r\n this.description = obj && obj.description || \"\";\r\n this.informantName = obj && obj.informantName || \"\";\r\n this.informantEmail = obj && obj.informantEmail || \"\";\r\n this.informantPhone = obj && obj.informantPhone || \"\";\r\n this.informantPasswordConfirmed = obj && obj.informantPasswordConfirmed || false;\r\n this.createDate = obj && obj.createDate || 0;\r\n this.resolvedDate = obj && obj.resolvedDate || 0;\r\n this.toBeReceivedDate = obj && obj.toBeReceivedDate || 0;\r\n this.toBeReceivedDateUrgency = obj && obj.toBeReceivedDateUrgency || 0;\r\n this.toBeRespondedDate = obj && obj.toBeRespondedDate || 0;\r\n this.toBeRespondedDateUrgency = obj && obj.toBeRespondedDateUrgency || 0;\r\n this.createdByInformant = obj && obj.createdByInformant || false;\r\n this.modifyUser = new ModifyUser(obj?.modifyUser);\r\n this.attachments = Base.getTypedArray(obj?.attachments, FileAttachment);\r\n this.messages = Base.getTypedArray(obj?.messages, WhistleBlowEditItemMessage);\r\n this.handlers = ModifyUser.sortModifyUsers(Base.getTypedArray(obj?.handlers, ModifyUser));\r\n WhistleBlowEditItemMessage.sortWhistleBlowEditItemMessages(this.messages);\r\n FileAttachment.sortFileAttachments(this.attachments);\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { IdTitleNode, IIdTitleNode } from \"../common/idTitleNode\";\r\nimport { IWhistleBlowCategoryListItem, WhistleBlowCategoryListItem } from \"../whistleBlowCategory/whistleBlowCategoryListItem\";\r\nimport { IWhistleBlowEditItem, WhistleBlowEditItem } from \"./whistleBlowEditItem\";\r\n\r\nexport interface IWhistleBlowEdit {\r\n canReadInformantData: boolean;\r\n canEditInformantData: boolean;\r\n whistleBlow: IWhistleBlowEditItem;\r\n units: IIdTitleNode[];\r\n categories: IWhistleBlowCategoryListItem[];\r\n}\r\n\r\nexport class WhistleBlowEdit implements IWhistleBlowEdit {\r\n canReadInformantData: boolean;\r\n canEditInformantData: boolean;\r\n whistleBlow: WhistleBlowEditItem;\r\n units: IdTitleNode[];\r\n categories: WhistleBlowCategoryListItem[];\r\n\r\n constructor();\r\n constructor(obj: IWhistleBlowEdit);\r\n constructor(obj?: any) {\r\n this.canReadInformantData = obj && obj.canReadInformantData || false;\r\n this.canEditInformantData = obj && obj.canEditInformantData || false;\r\n this.whistleBlow = new WhistleBlowEditItem(obj ? obj.whistleBlow : null);\r\n this.units = Base.getTypedArray(obj ? obj.units : null, IdTitleNode);\r\n this.categories = Base.getTypedArray(obj ? obj.categories : null, WhistleBlowCategoryListItem);\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { EditItem, IEditItem } from \"../common/editItem\";\r\nimport { IModifyUser, ModifyUser } from \"../user/modifyUser\";\r\n\r\nexport interface IWhistleBlowChannelEditItem extends IEditItem {\r\n pageName: string;\r\n privacyPolicyUrl: string;\r\n adminUsers: IModifyUser[];\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class WhistleBlowChannelEditItem extends EditItem implements IWhistleBlowChannelEditItem {\r\n pageName: string;\r\n privacyPolicyUrl: string;\r\n adminUsers: ModifyUser[];\r\n modifyUser: ModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IWhistleBlowChannelEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.pageName = obj && obj.pageName || \"\";\r\n this.privacyPolicyUrl = obj && obj.privacyPolicyUrl || \"\";\r\n this.adminUsers = Base.getTypedArray(obj ? obj.adminUsers : null, ModifyUser);\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { EditItem, IEditItem } from \"../common/editItem\";\r\nimport { IIdTitle } from \"../common/idTitle\";\r\nimport { WhistleBlowChannelResourceType } from \"../enums\";\r\nimport { IModifyUser, ModifyUser } from \"../user/modifyUser\";\r\n\r\nclass IndexCache {\r\n private static indexes: { [name: string]: number } = {};\r\n\r\n static initialize() {\r\n this.indexes = {};\r\n }\r\n\r\n static findIndex(id: string, cultures: IIdTitle[]): number {\r\n let result = this.indexes[id];\r\n if (Base.isNullOrUndefined(result)) {\r\n result = cultures.findIndex(i => i.id === id);\r\n this.indexes[id] = result;\r\n }\r\n return result;\r\n }\r\n}\r\n\r\nexport interface IWhistleBlowChannelEditResourceItem extends IEditItem {\r\n resourceType: WhistleBlowChannelResourceType;\r\n cultureCode: string;\r\n content: string;\r\n activeState: number;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class WhistleBlowChannelEditResourceItem extends EditItem implements IWhistleBlowChannelEditResourceItem {\r\n resourceType: WhistleBlowChannelResourceType;\r\n cultureCode: string;\r\n content: string;\r\n activeState: number;\r\n modifyUser: IModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IWhistleBlowChannelEditResourceItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.resourceType = obj && obj.resourceType || WhistleBlowChannelResourceType.Text;\r\n this.cultureCode = obj && obj.cultureCode || \"\";\r\n this.content = obj && obj.content || \"\";\r\n this.activeState = obj && obj.activeState || 0;\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n\r\n static sortWhistleBlowChannelEditResourceItems(items: IWhistleBlowChannelEditResourceItem[], cultures: IIdTitle[]): IWhistleBlowChannelEditResourceItem[] {\r\n if (!items && items.length < 2) return items;\r\n IndexCache.initialize();\r\n return items.sort((a: IWhistleBlowChannelEditResourceItem, b: IWhistleBlowChannelEditResourceItem) => {\r\n const result = (!a || !b) ? 0 : Base.numCompare(a.resourceType, b.resourceType);\r\n if (result !== 0) return result;\r\n return (!a || !b) ? 0 : Base.numCompare(IndexCache.findIndex(a.cultureCode, cultures), IndexCache.findIndex(b.cultureCode, cultures));\r\n });\r\n }\r\n}\r\n\r\nexport class WhistleBlowChannelEditResourceItemSave extends EditItem {\r\n resourceType: WhistleBlowChannelResourceType;\r\n cultureCode: string;\r\n content: string;\r\n activeState: number;\r\n\r\n constructor();\r\n constructor(obj: IWhistleBlowChannelEditResourceItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.resourceType = obj && obj.resourceType || WhistleBlowChannelResourceType.Text;\r\n this.cultureCode = obj && obj.cultureCode || \"\";\r\n this.content = obj && obj.content || \"\";\r\n this.activeState = obj && obj.activeState || 0;\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { IdTitle, IIdTitle } from \"../common/idTitle\";\r\nimport { IWhistleBlowChannelEditItem, WhistleBlowChannelEditItem } from \"./whistleBlowChannelEditItem\";\r\nimport { IWhistleBlowChannelEditResourceItem, WhistleBlowChannelEditResourceItem } from \"./whistleBlowChannelEditResourceItem\";\r\n\r\nexport interface IWhistleBlowChannelEdit {\r\n whistleBlowApplicationUrl: string;\r\n whistleBlowChannel: IWhistleBlowChannelEditItem;\r\n resources: IWhistleBlowChannelEditResourceItem[];\r\n cultures: IIdTitle[];\r\n}\r\n\r\nexport class WhistleBlowChannelEdit implements IWhistleBlowChannelEdit {\r\n whistleBlowApplicationUrl: string;\r\n whistleBlowChannel: WhistleBlowChannelEditItem;\r\n resources: WhistleBlowChannelEditResourceItem[];\r\n cultures: IdTitle[];\r\n\r\n constructor();\r\n constructor(obj: IWhistleBlowChannelEdit);\r\n constructor(obj?: any) {\r\n this.whistleBlowApplicationUrl = obj && obj.whistleBlowApplicationUrl || \"\";\r\n this.whistleBlowChannel = new WhistleBlowChannelEditItem(obj ? obj.whistleBlowChannel : null);\r\n this.resources = Base.getTypedArray(obj ? obj.resources : null, WhistleBlowChannelEditResourceItem);\r\n this.cultures = Base.getTypedArray(obj ? obj.cultures : null, IdTitle);\r\n }\r\n}","import { Base } from \"./../../framework/base\";\r\nimport { EnumHelper, WhistleBlowSeverity, WhistleBlowState, WhistleBlowArchiveState } from \"../enums\";\r\nimport { IModifyUser, ModifyUser } from \"../user/modifyUser\";\r\n\r\nexport interface IWhistleBlowListItem {\r\n id: string;\r\n unitCode: string;\r\n code: string;\r\n date: number;\r\n title: string;\r\n state: WhistleBlowState;\r\n archiveState: WhistleBlowArchiveState;\r\n severity: WhistleBlowSeverity;\r\n anonymous: boolean;\r\n categoryCode: string;\r\n createDate: number;\r\n resolvedDate: number;\r\n toBeReceivedDate: number;\r\n toBeReceivedDateUrgency: number;\r\n toBeRespondedDate: number;\r\n toBeRespondedDateUrgency: number;\r\n unreadMessageCount: number;\r\n handlers: IModifyUser[];\r\n\r\n stateStr: string;\r\n severityStr: string;\r\n}\r\n\r\nexport class WhistleBlowListItem implements IWhistleBlowListItem {\r\n id: string;\r\n unitCode: string;\r\n code: string;\r\n date: number;\r\n title: string;\r\n state: WhistleBlowState;\r\n archiveState: WhistleBlowArchiveState;\r\n severity: WhistleBlowSeverity;\r\n anonymous: boolean;\r\n categoryCode: string;\r\n createDate: number;\r\n resolvedDate: number;\r\n toBeReceivedDate: number;\r\n toBeReceivedDateUrgency: number;\r\n toBeRespondedDate: number;\r\n toBeRespondedDateUrgency: number;\r\n unreadMessageCount: number;\r\n handlers: ModifyUser[];\r\n\r\n stateStr: string;\r\n severityStr: string;\r\n\r\n constructor();\r\n constructor(obj: IWhistleBlowListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.unitCode = obj && obj.unitCode || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.date = obj && obj.date || 0;\r\n this.title = obj && obj.title || \"\";\r\n this.state = obj && obj.state || WhistleBlowState.New;\r\n this.archiveState = obj && obj.archiveState || WhistleBlowArchiveState.NotArchived;\r\n this.severity = obj && obj.severity || WhistleBlowSeverity.Unspecified;\r\n this.anonymous = obj && obj.anonymous || false;\r\n this.categoryCode = obj && obj.categoryCode || \"\";\r\n this.createDate = obj && obj.createDate || 0;\r\n this.resolvedDate = obj && obj.resolvedDate || 0;\r\n this.toBeReceivedDate = obj && obj.toBeReceivedDate || 0;\r\n this.toBeReceivedDateUrgency = obj && obj.toBeReceivedDateUrgency || 0;\r\n this.toBeRespondedDate = obj && obj.toBeRespondedDate || 0;\r\n this.toBeRespondedDateUrgency = obj && obj.toBeRespondedDateUrgency || 0;\r\n this.unreadMessageCount = obj && obj.unreadMessageCount || 0;\r\n this.handlers = ModifyUser.sortModifyUsers(Base.getTypedArray(obj ? obj.handlers : null, ModifyUser));\r\n\r\n this.stateStr = EnumHelper.WhistleBlowStateToStr(this.state);\r\n if (!this.categoryCode) {\r\n this.categoryCode = \"-\";\r\n }\r\n if (this.severity === WhistleBlowSeverity.Unspecified) {\r\n this.severityStr = \"-\";\r\n } else {\r\n this.severityStr = EnumHelper.WhistleBlowSeverityToStr(this.severity);\r\n }\r\n }\r\n\r\n static sortWhistleBlowListItems(items: IWhistleBlowListItem[], column: string, asc: boolean): IWhistleBlowListItem[] {\r\n if (!items && items.length < 2) return items;\r\n if (column === \"code\") {\r\n return items.sort((a: IWhistleBlowListItem, b: IWhistleBlowListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.code, b.code)); });\r\n } else if (column === \"date\") {\r\n return items.sort((a: IWhistleBlowListItem, b: IWhistleBlowListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.date, b.date)); });\r\n } else if (column === \"severity\") {\r\n return items.sort((a: IWhistleBlowListItem, b: IWhistleBlowListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.severity, b.severity)); });\r\n } else if (column === \"anonymous\") {\r\n return items.sort((a: IWhistleBlowListItem, b: IWhistleBlowListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.boolCompare(a.anonymous, b.anonymous)); });\r\n } else if (column === \"category\") {\r\n return items.sort((a: IWhistleBlowListItem, b: IWhistleBlowListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.categoryCode, b.categoryCode)); });\r\n } else if (column === \"toBeReceivedDate\") {\r\n return items.sort((a: IWhistleBlowListItem, b: IWhistleBlowListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.toBeReceivedDate, b.toBeReceivedDate)); });\r\n } else if (column === \"toBeResponsedDate\") {\r\n return items.sort((a: IWhistleBlowListItem, b: IWhistleBlowListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.toBeRespondedDate, b.toBeRespondedDate)); });\r\n } else if (column === \"unreadMessageCount\") {\r\n return items.sort((a: IWhistleBlowListItem, b: IWhistleBlowListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.unreadMessageCount, b.unreadMessageCount)); });\r\n } else {\r\n return items.sort((a: IWhistleBlowListItem, b: IWhistleBlowListItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.state, b.state)); });\r\n }\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { ListItems } from \"../../framework/listItems\";\r\nimport { IWhistleBlowListItem, WhistleBlowListItem } from \"./whistleBlowListItem\";\r\n\r\nexport interface IWhistleBlowListItems extends ListItems {\r\n}\r\n\r\nexport class WhistleBlowListItems extends ListItems implements IWhistleBlowListItems {\r\n constructor();\r\n constructor(obj: IWhistleBlowListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, WhistleBlowListItem);\r\n }\r\n}","import { EditItem, IEditItem } from \"./../common/editItem\";\r\nimport { IModifyUser, ModifyUser } from \"./../user/modifyUser\";\r\n\r\nexport interface IWhistleBlowCategoryEditItem extends IEditItem {\r\n code: string;\r\n comment: string;\r\n activeState: number;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class WhistleBlowCategoryEditItem extends EditItem implements IWhistleBlowCategoryEditItem {\r\n code: string;\r\n comment: string;\r\n activeState: number;\r\n modifyUser: IModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IWhistleBlowCategoryEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.code = obj && obj.code || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.activeState = obj && obj.activeState || 0;\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { IWhistleBlowCategoryEditItem, WhistleBlowCategoryEditItem } from \"./whistleBlowCategoryEditItem\";\r\n\r\nexport interface IWhistleBlowCategoryEdit {\r\n familiarization: IWhistleBlowCategoryEditItem;\r\n}\r\n\r\nexport class WhistleBlowCategoryEdit implements IWhistleBlowCategoryEdit {\r\n familiarization: WhistleBlowCategoryEditItem;\r\n\r\n constructor();\r\n constructor(obj: IWhistleBlowCategoryEdit);\r\n constructor(obj?: any) {\r\n this.familiarization = new WhistleBlowCategoryEditItem(obj ? obj.familiarization : null);\r\n }\r\n}","import { Base } from \"./../../framework/base\";\r\nimport { ListItems } from \"./../../framework/listItems\";\r\nimport { IWhistleBlowCategoryListItem, WhistleBlowCategoryListItem } from \"./whistleBlowCategoryListItem\";\r\n\r\nexport interface IWhistleBlowCategoryListItems extends ListItems { }\r\n\r\nexport class WhistleBlowCategoryListItems extends ListItems implements IWhistleBlowCategoryListItems {\r\n constructor();\r\n constructor(obj: IWhistleBlowCategoryListItems);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, WhistleBlowCategoryListItem);\r\n }\r\n}","import { IModifyUser, ModifyUser } from \"../user/modifyUser\";\r\n\r\nexport interface IWhistleBlowEventLogListItem {\r\n id: string;\r\n eventType: number;\r\n eventTypeStr: string;\r\n description: string;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class WhistleBlowEventLogListItem implements IWhistleBlowEventLogListItem {\r\n id: string;\r\n eventType: number;\r\n eventTypeStr: string;\r\n description: string;\r\n modifyUser: IModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IWhistleBlowEventLogListItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.eventType = obj && obj.eventType || 0;\r\n this.eventTypeStr = obj && obj.eventTypeStr || \"\";\r\n this.description = obj && obj.description || \"\";\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { ListItems } from \"../../framework/listItems\";\r\nimport { IWhistleBlowEventLogListItem, WhistleBlowEventLogListItem } from \"./whistleBlowEventLogListItem\";\r\n\r\nexport interface IWhistleBlowEventLogListItems extends ListItems {\r\n}\r\n\r\nexport class WhistleBlowEventLogListItems extends ListItems implements IWhistleBlowEventLogListItems {\r\n constructor();\r\n constructor(obj: IWhistleBlowEventLogListItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.items = Base.getTypedArray(obj ? obj.items : null, WhistleBlowEventLogListItem);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IdTitle, IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { IdTitleNode, IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { IWhistleBlowCategoryListItem, WhistleBlowCategoryListItem } from \"ui/Scripts/source/models/whistleBlowCategory/whistleBlowCategoryListItem\";\r\nimport { IPagePanel } from \"../common/pagePanel\";\r\nimport { RecordPagePanel } from \"../record/recordPagePanel\";\r\n\r\nexport interface IWhistleBlowPageData {\r\n panels: IPagePanel[];\r\n units: IIdTitleNode[];\r\n categories: IWhistleBlowCategoryListItem[];\r\n handlers: IIdTitle[];\r\n}\r\n\r\nexport class WhistleBlowPageData implements IWhistleBlowPageData {\r\n panels: RecordPagePanel[];\r\n units: IdTitleNode[];\r\n categories: WhistleBlowCategoryListItem[];\r\n handlers: IdTitle[];\r\n\r\n constructor();\r\n constructor(obj: IWhistleBlowPageData);\r\n constructor(obj?: any) {\r\n this.panels = Base.getTypedArray(obj ? obj.panels : null, RecordPagePanel);\r\n this.units = Base.getTypedArray(obj ? obj.units : null, IdTitleNode);\r\n this.categories = Base.getTypedArray(obj ? obj.categories : null, WhistleBlowCategoryListItem);\r\n this.handlers = Base.getTypedArray(obj ? obj.handlers : null, IdTitle);\r\n }\r\n}\r\n","import { ContentPagePanelType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IPagePanel, PagePanel } from \"../common/pagePanel\";\r\n\r\nexport class WhistleBlowPagePanel extends PagePanel implements IPagePanel {\r\n getTitle(): string {\r\n switch (this.panelType) {\r\n case ContentPagePanelType.Statistics:\r\n return Translations.WhistleBlow;\r\n case ContentPagePanelType.MyFiltersAndReports:\r\n return Translations.MyFiltersAndReports;\r\n case ContentPagePanelType.SharedFiltersAndReports:\r\n return Translations.SharedFiltersAndReports;\r\n case ContentPagePanelType.StandardFiltersAndReports:\r\n return Translations.StandardFiltersAndReports;\r\n default:\r\n return \"\";\r\n }\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IPagePanel } from \"../common/pagePanel\";\r\nimport { CompanyMenuItem, ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { IWhistleBlowListItems, WhistleBlowListItems } from \"ui/Scripts/source/models/whistleBlow/whistleBlowListItems\";\r\nimport { ISavedListFilter, SavedListFilter } from \"../common/savedListFilter\";\r\nimport { IWhistleBlowPageData, WhistleBlowPageData } from \"./whistleBlowPageData\";\r\nimport { WhistleBlowPagePanel } from \"./whistleBlowPagePanel\";\r\nimport { ISavedChartPanel, SavedChartPanel } from \"../chart/savedChartPanel\";\r\n\r\nexport interface IWhistleBlowPage extends IWhistleBlowPageData {\r\n canEditPermssions: boolean;\r\n maxAttachmentsTotalSize: number;\r\n validAdditionalPermissions: number[];\r\n panels: IPagePanel[];\r\n chartPanels: ISavedChartPanel[];\r\n companies: ICompanyMenuItem[];\r\n list: IWhistleBlowListItems;\r\n companyFilters: ISavedListFilter[];\r\n userFilters: ISavedListFilter[];\r\n}\r\n\r\nexport class WhistleBlowPage extends WhistleBlowPageData implements IWhistleBlowPage {\r\n canEditPermssions: boolean;\r\n maxAttachmentsTotalSize: number;\r\n validAdditionalPermissions: number[];\r\n panels: WhistleBlowPagePanel[];\r\n chartPanels: SavedChartPanel[];\r\n companies: CompanyMenuItem[];\r\n list: WhistleBlowListItems;\r\n companyFilters: SavedListFilter[];\r\n userFilters: SavedListFilter[];\r\n\r\n constructor();\r\n constructor(obj: IWhistleBlowPage);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.canEditPermssions = obj && obj.canEditPermssions || false;\r\n this.maxAttachmentsTotalSize = obj && obj.maxAttachmentsTotalSize || 0;\r\n this.validAdditionalPermissions = obj && obj.validAdditionalPermissions || [];\r\n this.panels = Base.getTypedArray(obj ? obj.panels : null, WhistleBlowPagePanel);\r\n this.chartPanels = Base.getTypedArray(obj ? obj.chartPanels : null, SavedChartPanel);\r\n this.companies = Base.getTypedArray(obj ? obj.companies : null, CompanyMenuItem);\r\n this.list = new WhistleBlowListItems(obj && obj.list || null);\r\n this.companyFilters = Base.getTypedArray(obj ? obj.companyFilters : null, SavedListFilter);\r\n this.userFilters = Base.getTypedArray(obj ? obj.userFilters : null, SavedListFilter);\r\n }\r\n}\r\n","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IdTitle, IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { ITaskDataRow, TaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskEditTypeItem, TaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\n\r\nexport interface IReportGenerated extends IIdTitle {\r\n downloadId: string;\r\n fileName: string;\r\n content: string;\r\n mediaType: string;\r\n listWidth: number;\r\n taskType: ITaskEditTypeItem;\r\n dataRows: ITaskDataRow[];\r\n}\r\n\r\nexport class ReportGenerated extends IdTitle implements IReportGenerated {\r\n downloadId: string;\r\n fileName: string;\r\n content: string;\r\n mediaType: string;\r\n listWidth: number;\r\n taskType: TaskEditTypeItem;\r\n dataRows: TaskDataRow[];\r\n\r\n constructor();\r\n constructor(obj: IReportGenerated);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.downloadId = obj && obj.downloadId || \"\";\r\n this.fileName = obj && obj.fileName || \"\";\r\n this.content = obj && obj.content || \"\";\r\n this.mediaType = obj && obj.mediaType || \"\";\r\n this.listWidth = obj && obj.listWidth || 0;\r\n this.taskType = new TaskEditTypeItem(obj ? obj.taskType : null);\r\n this.dataRows = Base.getTypedArray(obj ? obj.dataRows : null, TaskDataRow);\r\n for (const dataRow of this.dataRows) {\r\n dataRow.initializeCols(this.taskType);\r\n }\r\n }\r\n}","import { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { ModifyUserItems } from \"ui/Scripts/source/models/user/modifyUserItems\";\r\nimport { WhistleBlowEdit } from \"ui/Scripts/source/models/whistleBlow/whistleBlowEdit\";\r\nimport { WhistleBlowChannelEdit } from \"ui/Scripts/source/models/whistleBlowChannel/whistleBlowChannelEdit\";\r\nimport { WhistleBlowListItems } from \"ui/Scripts/source/models/whistleBlow/whistleBlowListItems\";\r\nimport { WhistleBlowCategoryEdit } from \"ui/Scripts/source/models/whistleBlowCategory/whistleBlowCategoryEdit\";\r\nimport { WhistleBlowCategoryListItems } from \"ui/Scripts/source/models/whistleBlowCategory/whistleBlowCategoryListItems\";\r\nimport { WhistleBlowEventLogListItems } from \"ui/Scripts/source/models/whistleBlow/whistleBlowEventLogListItems\";\r\nimport { AbortDictionary, getApiCall, getFileApiCall, postApiCall } from \"./tokenService\";\r\nimport { WhistleBlowPage } from \"../whistleBlow/whistleBlowPage\";\r\nimport { UnitNodePermissions } from \"../unit/unitNodePermissions\";\r\nimport { UnitNodeDefaultHandlers } from \"../unit/unitNodeDefaultHandlers\";\r\nimport { UserListItems } from \"../user/userListItems\";\r\nimport { ModuleUnits } from \"../unit/moduleUnits\";\r\nimport { WhistleBlowPageData } from \"../whistleBlow/whistleBlowPageData\";\r\nimport { SaveSuccessItems } from \"ui/Scripts/source/models/common/saveSuccessItems\";\r\nimport { ReportItems } from \"../report/reportItems\";\r\nimport { ReportGenerated } from \"../report/reportGenerated\";\r\nimport { IReportParameterValue } from \"../report/reportParameterValue\";\r\nimport { IPagePanel } from \"../common/pagePanel\";\r\nimport { ISavedChartPanel } from \"../chart/savedChartPanel\";\r\nimport { UserGroupUserSaveSuccess } from \"../userGroup/userGroupEditUserSaveSuccess\";\r\nimport { FrontToDoItems } from \"../front/frontToDoItems\";\r\nimport { UnitModuleSaveResult } from \"../unit/unitModuleSaveResult\";\r\nimport { ReportChartData } from \"../report/reportChartData\";\r\n\r\n//Abort\r\nconst commonAborts = new AbortDictionary();\r\nconst reportAborts = new AbortDictionary();\r\nconst chartAborts = new AbortDictionary();\r\n\r\n// #region WhistleBlowPage\r\nexport const getWhistleBlowPage = (): Promise => {\r\n return getApiCall(\"api/whistleblow\", WhistleBlowPage);\r\n};\r\n\r\nexport const getWhistleBlowPageData = (companyId: string): Promise => {\r\n return getApiCall(\"api/whistleblow/pagedata?id=\" + companyId, WhistleBlowPageData);\r\n};\r\n\r\nexport const getWhistleBlowListItems = (companyId: string, pageSize: number, page: number, filter: string, startDate: number, endDate: number, unitIds: string[], categoryIds: string[], handlerUserCodes: string[],\r\n state: number, severity: number, resolution: number, source: number, anonymity: number, dynamicTime: number, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n reportAborts.abortAll();\r\n chartAborts.abortAll();\r\n return postApiCall(\"api/whistleblow/list\", WhistleBlowListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n startDate,\r\n endDate,\r\n filter: filter || \"\",\r\n unitIds,\r\n categoryIds,\r\n handlerUserCodes,\r\n state,\r\n severity,\r\n resolution,\r\n source,\r\n anonymity,\r\n dynamicTime\r\n }));\r\n};\r\n// #endregion WhistleBlowPage\r\n\r\n// #region Edit\r\nexport const getWhistleBlowEdit = (id: string): Promise => {\r\n return getApiCall(\"api/whistleblow/edit?id=\" + id, WhistleBlowEdit);\r\n};\r\n\r\nexport const saveWhistleBlowEdit = (data: any): Promise => {\r\n return postApiCall(\"api/whistleblow/editsave\", SaveSuccess, JSON.stringify(data));\r\n};\r\n\r\nexport const saveWhistleBlowNew = (data: any): Promise => {\r\n return postApiCall(\"api/whistleblow/newsave\", SaveSuccess, JSON.stringify(data));\r\n};\r\n\r\nexport const removeWhistleBlow = (id: string): Promise => {\r\n return postApiCall(\"api/whistleblow/remove?id=\" + id, ApiSuccess);\r\n};\r\n\r\nexport const getDefaultWhistleBlowHandlersForUnit = (unitId: string): Promise => {\r\n return getApiCall(\"api/whistleblow/unitdefaulthandlers?id=\" + unitId, ModifyUserItems);\r\n};\r\n\r\nexport const getWhistleblowPrint = (id: string): Promise => {\r\n return getFileApiCall(\"api/whistleblow/print?id=\" + id);\r\n};\r\n// #endregion Edit\r\n\r\n// #region Edit Attachment\r\nexport const whistleBlowEditRemoveAttachments = (data: any): Promise => {\r\n return postApiCall(\"api/whistleblow/editremoveattachments\", ApiSuccess, JSON.stringify(data));\r\n};\r\n\r\nexport const whistleBlowEditAddAttachments = (data: any): Promise => {\r\n return postApiCall(\"api/whistleblow/editaddattachments\", SaveSuccessItems, JSON.stringify(data));\r\n};\r\n// #endregion Edit Attachment\r\n\r\n// #region Edit Message\r\nexport const whistleBlowEditAddMessage = (data: any): Promise => {\r\n return postApiCall(\"api/whistleblow/editaddmessage\", SaveSuccess, JSON.stringify(data));\r\n};\r\n\r\nexport const sendWhistleBlowMessageReadReceipts = (whistleBlowId: string, ids: string[], internalMessage: boolean): Promise => {\r\n return postApiCall(\"api/whistleblow/sendreadreceipts\", ApiSuccess, JSON.stringify({\r\n whistleBlowId,\r\n ids,\r\n internalMessage\r\n }));\r\n};\r\n// #endregion Edit Message\r\n\r\n// #region Edit Handler\r\nexport const getHandlersSelectUserListItems = (whistleBlowId: string, unitId: string, pageSize: number, page: number, filter: string,\r\n ignoreUserIds: string[], ignoreUserCodes: string[], activityState: number, ignoreRecordUserConnected: boolean, doNotIgnoreRecordUserConnectedUserCode: string,\r\n sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/whistleblow/selecthandlers\", UserListItems, JSON.stringify({\r\n whistleBlowId,\r\n unitId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\",\r\n ignoreUserIds,\r\n ignoreUserCodes,\r\n ignoreRecordUserConnected,\r\n doNotIgnoreRecordUserConnectedUserCode,\r\n activityState\r\n }));\r\n};\r\n\r\nexport const whistleBlowEditAddHandlers = (whistleBlowId: string, userCodes: string[]): Promise => {\r\n return postApiCall(\"api/whistleblow/editaddhandlers\", ApiSuccess, JSON.stringify({\r\n whistleBlowId,\r\n userCodes\r\n }));\r\n};\r\n\r\nexport const whistleBlowEditRemoveHandlers = (whistleBlowId: string, userCodes: string[]): Promise => {\r\n return postApiCall(\"api/whistleblow/editremovehandlers\", ApiSuccess, JSON.stringify({\r\n whistleBlowId,\r\n userCodes\r\n }));\r\n};\r\n// #endregion Edit Handler\r\n\r\n// #region Edit EventLog\r\nexport const getWhistleBlowEventLogListItems = (whistleBlowId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/whistlebloweventLog/list\", WhistleBlowEventLogListItems, JSON.stringify({\r\n whistleBlowId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\"\r\n }));\r\n};\r\n// #endregion Edit EventLog\r\n\r\n// #region Archiving\r\nexport const archiveWhistleBlows = (obj: any): Promise => {\r\n return postApiCall(\"api/whistleblow/archive\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\n// #endregion Archiving\r\n\r\n// #region Module WhistleBlowChannel\r\nexport const getWhistleBlowChannelEdit = (companyId: string): Promise => {\r\n return getApiCall(\"api/whistleblowchannel/edit?id=\" + companyId, WhistleBlowChannelEdit);\r\n};\r\n\r\nexport const saveWhistleBlowChannelEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/whistleblowchannel/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const whistleChannelRemoveAdmins = (obj: any): Promise => {\r\n return postApiCall(\"api/whistleblowchannel/editremoveadmins\", UserGroupUserSaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const whistleChannelAddAdmins = (obj: any): Promise => {\r\n return postApiCall(\"api/whistleblowchannel/editaddadmins\", UserGroupUserSaveSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Module WhistleBlowChannel\r\n\r\n// #region Module Permissions\r\nexport const getUnitNodePermissions = (companyId: string): Promise => {\r\n return getApiCall(\"api/whistleblow/module/permissions?id=\" + companyId, UnitNodePermissions);\r\n};\r\n\r\nexport const saveUnitNodePermissions = (obj: any): Promise => {\r\n return postApiCall(\"api/whistleblow/module/savepermissions\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Module Permissions\r\n\r\n// #region Module units\r\nexport const getUnits = (companyId: string): Promise => {\r\n return getApiCall(\"api/whistleblow/module/units?id=\" + companyId, ModuleUnits);\r\n};\r\n\r\nexport const saveUnits = (obj: any): Promise => {\r\n return postApiCall(\"api/whistleblow/module/saveunits\", UnitModuleSaveResult, JSON.stringify(obj));\r\n};\r\n// #endregion Module units\r\n\r\n// #region DefaultHandlers\r\nexport const getUnitNodeDefaultHandlers = (companyId: string): Promise => {\r\n return getApiCall(\"api/whistleblow/module/defaulthandlers?id=\" + companyId, UnitNodeDefaultHandlers);\r\n};\r\n\r\nexport const saveUnitNodeDefaultHandlers = (obj: any): Promise => {\r\n return postApiCall(\"api/whistleblow/module/savedefaulthandlers\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const defaultHandlersGetSelectUserListItems = (companyId: string, unitId: string, pageSize: number, page: number, filter: string,\r\n ignoreUserIds: string[], ignoreUserCodes: string[], activityState: number, ignoreRecordUserConnected: boolean, doNotIgnoreRecordUserConnectedUserCode: string,\r\n sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/whistleblow/module/defaulthandlersselectuserslist\", UserListItems, JSON.stringify({\r\n companyId,\r\n unitId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\",\r\n ignoreUserIds,\r\n ignoreUserCodes,\r\n ignoreRecordUserConnected,\r\n doNotIgnoreRecordUserConnectedUserCode,\r\n activityState\r\n }));\r\n};\r\n// #endregion DefaultHandlers\r\n\r\n// #region Report\r\nexport const getWhistleBlowPageReportItems = (companyId: string): Promise => {\r\n const operationId = \"getWhistleBlowPageReportItems\" + (companyId ?? \"\");\r\n commonAborts.abort(operationId);\r\n return getApiCall(\"api/whistleblow/reports?id=\" + companyId ?? \"\", ReportItems, (id: string) => {\r\n commonAborts.add(operationId, id);\r\n }).finally(() => {\r\n commonAborts.remove(operationId);\r\n });\r\n};\r\n\r\nexport const getReportGenerated = (reportId: string, reportName: string, startDate: number, endDate: number, unitIds: string[], categoryIds: string[], handlerUserCodes: string[],\r\n state: number, severity: number, resolution: number, source: number, anonymity: number, dynamicTime: number, parameterValues: IReportParameterValue[]): Promise => {\r\n reportAborts.abortAll();\r\n chartAborts.abortAll();\r\n return postApiCall(\"api/whistleblow/createreport\", ReportGenerated, JSON.stringify({\r\n reportId,\r\n reportName,\r\n startDate,\r\n endDate,\r\n unitIds,\r\n categoryIds,\r\n handlerUserCodes,\r\n state,\r\n severity,\r\n resolution,\r\n source,\r\n anonymity,\r\n dynamicTime,\r\n parameterValues\r\n }), (abortId: string) => {\r\n reportAborts.add(reportId, abortId);\r\n }).finally(() => {\r\n reportAborts.remove(reportId);\r\n });\r\n};\r\n\r\nexport const getChart = (reportId: string, chartId: string, startDate: number, endDate: number, dynamicTime: number, unitIds: string[], categoryIds: string[], handlerUserCodes: string[],\r\n state: number, severity: number, resolution: number, source: number, anonymity: number, parameterValues: IReportParameterValue[]): Promise => {\r\n const reportChartId = reportId + \"#\" + chartId;\r\n chartAborts.abort(reportChartId);\r\n reportAborts.abortAll();\r\n return postApiCall(\"api/whistleblow/createchart\", ReportChartData, JSON.stringify({\r\n reportId,\r\n chartId,\r\n startDate,\r\n endDate,\r\n dynamicTime,\r\n unitIds,\r\n categoryIds,\r\n handlerUserCodes,\r\n state,\r\n severity,\r\n resolution,\r\n source,\r\n anonymity,\r\n parameterValues\r\n }), (abortId: string) => {\r\n chartAborts.add(reportChartId, abortId);\r\n }).finally(() => {\r\n chartAborts.remove(reportChartId);\r\n });\r\n};\r\n// #endregion Report\r\n\r\n// #region Dashboard\r\nexport const saveWhistleBlowPanels = (panels: IPagePanel[]): Promise => {\r\n return postApiCall(\"api/whistleblow/savepanels\", ApiSuccess, JSON.stringify({ panels }));\r\n};\r\n\r\nexport const saveWhistleBlowChartPanels = (panels: ISavedChartPanel[]): Promise => {\r\n return postApiCall(\"api/whistleblow/savechartpanels\", ApiSuccess, JSON.stringify({ panels }));\r\n};\r\n\r\nexport const getWhistleBlowToDoItems = (): Promise => {\r\n return getApiCall(\"api/whistleblow/todoitems\", FrontToDoItems);\r\n};\r\n// #endregion Dashboard\r\n\r\n// #region Module WhistleBlowCategories\r\nexport const getWhistleBlowCategoryListItems = (companyId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/whistleblow/module/category/list\", WhistleBlowCategoryListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\"\r\n }));\r\n};\r\n\r\nexport const getWhistleBlowCategoryEdit = (companyId: string, whistleBlowCategoryId: string): Promise => {\r\n return getApiCall(\"api/whistleblow/module/category/edit?id=\" + whistleBlowCategoryId + \"&companyId=\" + companyId, WhistleBlowCategoryEdit);\r\n};\r\n\r\nexport const saveWhistleBlowCategoryEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/whistleblow/module/category/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeWhistleBlowCategories = (obj: any): Promise => {\r\n return postApiCall(\"api/whistleblow/module/category/remove\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion Module WhistleBlowCategories\r\n","import { createBrowserHistory } from \"history\";\r\n \r\nexport const customHistory = createBrowserHistory({ basename: appConfig.rootUrl });","import { ThunkAction, ThunkDispatch } from \"redux-thunk\";\r\nimport * as storeTypes from \"./storeTypes\";\r\nimport * as storeActions from \"./storeActions\";\r\nimport * as tokenService from \"../services/tokenService\";\r\nimport * as frontService from \"../services/frontService\";\r\nimport * as instantMessageService from \"../services/instantMessageService\";\r\nimport * as calendarTaskService from \"../services/calendarTaskService\";\r\nimport * as companyService from \"../services/companyService\";\r\nimport * as companyGroupService from \"../services/companyGroupService\";\r\nimport * as logService from \"../services/logService\";\r\nimport * as documentService from \"../services/documentService\";\r\nimport * as eventService from \"../services/eventService\";\r\nimport * as recordService from \"../services/recordService\";\r\nimport * as messageService from \"../services/messageService\";\r\nimport * as taskService from \"../services/taskService\";\r\nimport * as userService from \"../services/userService\";\r\nimport * as userGroupService from \"../services/userGroupService\";\r\nimport * as whistleBlowService from \"../services/whistleBlowService\";\r\nimport { customHistory } from \"../../framework/customHistory\";\r\nimport { appIsUpdated, isInstanceOfIApiError } from \"../services/baseService\";\r\nimport { SessionState } from \"../session/sessionState\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ITypedOption } from \"../common/typedOption\";\r\n\r\nexport const handleApiError = (error: any, dispatch: ThunkDispatch) => {\r\n if (isInstanceOfIApiError(error)) {\r\n if (error.status === 401) {\r\n customHistory.push(\"/login\");\r\n }\r\n if (appIsUpdated(error.message)) {\r\n return;\r\n }\r\n dispatch(storeActions.showErrorMessage(error.message));\r\n } else {\r\n if (appIsUpdated(error)) {\r\n return;\r\n }\r\n dispatch(storeActions.showErrorMessage(error));\r\n }\r\n};\r\n\r\n// User\r\nexport type LogonThunkDispatch = ThunkDispatch\r\n\r\nexport const logout = (): ThunkAction => (dispatch, getState) => {\r\n tokenService.logout();\r\n};\r\n\r\n//Session\r\nexport const setCulture = (culture: string): ThunkAction => (dispatch, getState) => {\r\n dispatch(storeActions.fetchStart());\r\n return frontService.setCulture(culture)\r\n .then(\r\n success => {\r\n Translations.setCulture(culture);\r\n const applicationState = getState();\r\n const sessionState = new SessionState(applicationState.session.state);\r\n sessionState.culture = culture;\r\n dispatch(storeActions.setSessionsState(sessionState));\r\n dispatch(storeActions.showSuccessMessage(success.message));\r\n // customHistory.push(\"/front\");\r\n location.reload();\r\n },\r\n error => {\r\n handleApiError(error, dispatch);\r\n })\r\n .finally(() => dispatch(storeActions.fetchEnd()));\r\n};\r\n\r\nexport const saveUserParameters = (parameters: ITypedOption[]): ThunkAction => (dispatch, getState) => {\r\n return frontService.saveUserParameters(parameters)\r\n .then(\r\n success => {\r\n const applicationState = getState();\r\n const sessionState = new SessionState(applicationState.session.state);\r\n sessionState.setUserParameters(parameters);\r\n dispatch(storeActions.setSessionsState(sessionState));\r\n },\r\n error => {\r\n handleApiError(error, dispatch);\r\n });\r\n};\r\n\r\nexport const refreshSessionState = (): ThunkAction => (dispatch, getState) => {\r\n dispatch(storeActions.fetchStart());\r\n return frontService.getSessionState()\r\n .then(\r\n newSessionState => {\r\n dispatch(storeActions.setSessionsState(new SessionState(newSessionState)));\r\n },\r\n error => {\r\n handleApiError(error, dispatch);\r\n })\r\n .finally(() => dispatch(storeActions.fetchEnd()));\r\n};\r\n\r\n// Front\r\nexport type FrontThunkDispatch = ThunkDispatch\r\n\r\nexport const getFront = (): ThunkAction => (dispatch, getState) => {\r\n //dispatch(storeActions.fetchStart());\r\n return frontService.getFrontPage()\r\n .then(\r\n front => {\r\n dispatch(storeActions.frontSuccess(front));\r\n },\r\n error => {\r\n handleApiError(error, dispatch);\r\n dispatch(storeActions.frontFailure());\r\n })\r\n .finally(\r\n //() => dispatch(storeActions.fetchEnd())\r\n );\r\n};\r\n\r\n// CalendarTasks\r\nexport type CalendarTasksThunkDispatch = ThunkDispatch\r\n\r\nexport const getCalendarTasksPage = (): ThunkAction => (dispatch, getState) => {\r\n dispatch(storeActions.fetchStart());\r\n return calendarTaskService.getCalendarTaskPage()\r\n .then(\r\n calendarTaskPage => {\r\n dispatch(storeActions.calendarTasksSuccess(calendarTaskPage));\r\n },\r\n error => {\r\n handleApiError(error, dispatch);\r\n dispatch(storeActions.calendarTasksFailure());\r\n })\r\n .finally(() =>\r\n dispatch(storeActions.fetchEnd())\r\n );\r\n};\r\n\r\n// Events\r\nexport type DocumentsThunkDispatch = ThunkDispatch\r\n\r\nexport const getDocumentPage = (): ThunkAction => (dispatch, getState) => {\r\n dispatch(storeActions.fetchStart());\r\n return documentService.getDocumentPage()\r\n .then(\r\n documentPage => {\r\n dispatch(storeActions.documentsSuccess(documentPage));\r\n },\r\n error => {\r\n handleApiError(error, dispatch);\r\n dispatch(storeActions.documentsFailure());\r\n })\r\n .finally(() =>\r\n dispatch(storeActions.fetchEnd())\r\n );\r\n};\r\n\r\n// Events\r\nexport type EventsThunkDispatch = ThunkDispatch\r\n\r\nexport const getEventPage = (): ThunkAction => (dispatch, getState) => {\r\n dispatch(storeActions.fetchStart());\r\n return eventService.getEventPage()\r\n .then(\r\n eventPage => {\r\n dispatch(storeActions.eventsSuccess(eventPage));\r\n },\r\n error => {\r\n handleApiError(error, dispatch);\r\n dispatch(storeActions.eventsFailure());\r\n })\r\n .finally(() =>\r\n dispatch(storeActions.fetchEnd())\r\n );\r\n};\r\n\r\n// Records\r\nexport type RecordsThunkDispatch = ThunkDispatch\r\n\r\nexport const getRecordsPage = (): ThunkAction => (dispatch, getState) => {\r\n dispatch(storeActions.fetchStart());\r\n return recordService.getRecordPage()\r\n .then(\r\n recordPage => {\r\n dispatch(storeActions.recordsSuccess(recordPage));\r\n },\r\n error => {\r\n handleApiError(error, dispatch);\r\n dispatch(storeActions.recordsFailure());\r\n })\r\n .finally(() =>\r\n dispatch(storeActions.fetchEnd())\r\n );\r\n};\r\n\r\n// Companies\r\nexport type CompaniesThunkDispatch = ThunkDispatch\r\n\r\nexport const getCompaniesPage = (): ThunkAction => (dispatch, getState) => {\r\n dispatch(storeActions.fetchStart());\r\n return companyService.getCompanyPage()\r\n .then(\r\n companyPage => {\r\n dispatch(storeActions.companiesSuccess(companyPage));\r\n },\r\n error => {\r\n handleApiError(error, dispatch);\r\n dispatch(storeActions.companiesFailure());\r\n })\r\n .finally(() =>\r\n dispatch(storeActions.fetchEnd())\r\n );\r\n};\r\n\r\n// CompanyGroups\r\nexport type CompanyGroupsThunkDispatch = ThunkDispatch\r\n\r\nexport const getCompanyGroupsPage = (): ThunkAction => (dispatch, getState) => {\r\n dispatch(storeActions.fetchStart());\r\n return companyGroupService.getCompanyGroupPage()\r\n .then(\r\n companyGroupPage => {\r\n dispatch(storeActions.companyGroupsSuccess(companyGroupPage));\r\n },\r\n error => {\r\n handleApiError(error, dispatch);\r\n dispatch(storeActions.companyGroupsFailure());\r\n })\r\n .finally(() =>\r\n dispatch(storeActions.fetchEnd())\r\n );\r\n};\r\n\r\n// Messages\r\nexport type MessagesThunkDispatch = ThunkDispatch\r\n\r\nexport const getMessagePage = (): ThunkAction => (dispatch, getState) => {\r\n dispatch(storeActions.fetchStart());\r\n return messageService.getMessagePage()\r\n .then(\r\n messagePage => {\r\n dispatch(storeActions.messagesSuccess(messagePage));\r\n },\r\n error => {\r\n handleApiError(error, dispatch);\r\n dispatch(storeActions.messagesFailure());\r\n })\r\n .finally(() =>\r\n dispatch(storeActions.fetchEnd())\r\n );\r\n};\r\n\r\n// Tasks\r\nexport type TasksThunkDispatch = ThunkDispatch\r\n\r\nexport const getTaskPage = (): ThunkAction => (dispatch, getState) => {\r\n dispatch(storeActions.fetchStart());\r\n return taskService.getTaskPage()\r\n .then(\r\n taskPage => {\r\n dispatch(storeActions.tasksSuccess(taskPage));\r\n },\r\n error => {\r\n handleApiError(error, dispatch);\r\n dispatch(storeActions.tasksFailure());\r\n })\r\n .finally(() =>\r\n dispatch(storeActions.fetchEnd())\r\n );\r\n};\r\n\r\n// Users\r\nexport type UsersThunkDispatch = ThunkDispatch\r\n\r\nexport const getUsersPage = (): ThunkAction => (dispatch, getState) => {\r\n dispatch(storeActions.fetchStart());\r\n return userService.getUsersPage()\r\n .then(\r\n usersPage => {\r\n dispatch(storeActions.usersSuccess(usersPage));\r\n },\r\n error => {\r\n handleApiError(error, dispatch);\r\n dispatch(storeActions.usersFailure());\r\n })\r\n .finally(() =>\r\n dispatch(storeActions.fetchEnd())\r\n );\r\n};\r\n\r\n// UserGroups\r\nexport type UserGroupsThunkDispatch = ThunkDispatch\r\n\r\nexport const getUserGroupsPage = (): ThunkAction => (dispatch, getState) => {\r\n dispatch(storeActions.fetchStart());\r\n return userGroupService.getUserGroupPage()\r\n .then(\r\n userGroupPage => {\r\n dispatch(storeActions.userGroupsSuccess(userGroupPage));\r\n },\r\n error => {\r\n handleApiError(error, dispatch);\r\n dispatch(storeActions.userGroupsFailure());\r\n })\r\n .finally(() =>\r\n dispatch(storeActions.fetchEnd())\r\n );\r\n};\r\n\r\n// Log\r\nexport type LogThunkDispatch = ThunkDispatch\r\n\r\nexport const getLogPage = (): ThunkAction => (dispatch, getState) => {\r\n dispatch(storeActions.fetchStart());\r\n return logService.getLogPage()\r\n .then(\r\n logPage => {\r\n dispatch(storeActions.logSuccess(logPage));\r\n },\r\n error => {\r\n handleApiError(error, dispatch);\r\n dispatch(storeActions.logFailure());\r\n })\r\n .finally(() =>\r\n dispatch(storeActions.fetchEnd())\r\n );\r\n};\r\n\r\n// Instant Message\r\nexport type InstantMessageThunkDispatch = ThunkDispatch\r\n\r\nexport const getInstantMessagePage = (): ThunkAction => (dispatch, getState) => {\r\n dispatch(storeActions.fetchStart());\r\n return instantMessageService.getInstantMessagePage()\r\n .then(\r\n instantMessagePage => {\r\n dispatch(storeActions.instantMessageSuccess(instantMessagePage));\r\n },\r\n error => {\r\n handleApiError(error, dispatch);\r\n dispatch(storeActions.instantMessageFailure());\r\n })\r\n .finally(() =>\r\n dispatch(storeActions.fetchEnd())\r\n );\r\n};\r\n\r\n// WhistleBlow\r\nexport type WhistleBlowThunkDispatch = ThunkDispatch\r\n\r\nexport const getWhistleBlowPage = (): ThunkAction => (dispatch, getState) => {\r\n dispatch(storeActions.fetchStart());\r\n return whistleBlowService.getWhistleBlowPage()\r\n .then(\r\n whistleBlowPage => {\r\n dispatch(storeActions.whistleBlowSuccess(whistleBlowPage));\r\n },\r\n error => {\r\n handleApiError(error, dispatch);\r\n dispatch(storeActions.whistleBlowFailure());\r\n })\r\n .finally(() =>\r\n dispatch(storeActions.fetchEnd())\r\n );\r\n};","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ISavedListFilter, SavedListFilter } from \"./savedListFilter\";\r\n\r\nexport interface IListFilterItem extends ISavedListFilter {\r\n isShared: boolean;\r\n isUserFilter: boolean;\r\n\r\n getHash(): string;\r\n getIsShared(): boolean;\r\n getIsUserLevel(): boolean;\r\n}\r\n\r\nexport class ListFilterItem extends SavedListFilter implements IListFilterItem {\r\n isShared: boolean;\r\n isUserFilter: boolean;\r\n\r\n constructor();\r\n constructor(obj: IListFilterItem);\r\n constructor(obj: ISavedListFilter);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.isShared = obj && obj.isShared || false;\r\n this.isUserFilter = obj && obj.isUserFilter || false;\r\n }\r\n\r\n getHash(): string {\r\n return super.getHash() + \"#\" + this.isShared.toString() + \"#\" + this.isUserFilter.toString();\r\n }\r\n \r\n getIsShared(): boolean {\r\n return this.isShared;\r\n }\r\n\r\n getIsUserLevel(): boolean {\r\n return this.isUserFilter;\r\n }\r\n\r\n static getHash(items: IListFilterItem[]): string {\r\n if (!items && items.length < 1) return \"\";\r\n return items.map(i => i.getHash()).join(\",\");\r\n }\r\n\r\n static createListFilterItem(id: string, title: string, generalFilter: any, sortColumn: string, sortOrderIsAsc: boolean, sortOrder: number = 0): IListFilterItem {\r\n const result = new ListFilterItem();\r\n result.id = id;\r\n result.title = title;\r\n result.generalFilter = generalFilter;\r\n result.sortOrder = sortOrder;\r\n result.sortColumn = sortColumn;\r\n result.sortOrderIsAsc = sortOrderIsAsc;\r\n return result;\r\n }\r\n\r\n static createListFilterItemFromSavedListFilter(savedListFilter: ISavedListFilter, isShared: boolean): IListFilterItem {\r\n const result = new ListFilterItem(savedListFilter);\r\n result.isShared = isShared;\r\n result.isUserFilter = true;\r\n return result;\r\n }\r\n\r\n static sortListFilterItems(items: IListFilterItem[]): IListFilterItem[] {\r\n if (!items && items.length < 2) return items;\r\n return items.sort((a: IListFilterItem, b: IListFilterItem) => {\r\n if (!a || !b) return 0;\r\n let result = Base.numCompare(a.isUserFilter ? 0 : 1, b.isUserFilter ? 0 : 1);\r\n if (result !== 0) return result;\r\n result = Base.numCompare(a.isShared ? 1 : 0, b.isShared ? 1 : 0);\r\n if (result !== 0) return result;\r\n result = Base.numCompare(a.sortOrder, b.sortOrder);\r\n if (result !== 0) return result;\r\n return Base.strCompare(a.title, b.title);\r\n });\r\n }\r\n\r\n static getListFilterItemSortColumn(listItemFilter: IListFilterItem): string {\r\n return listItemFilter && listItemFilter.sortColumn ? listItemFilter.sortColumn : \"\";\r\n };\r\n\r\n static getListFilterItemSortOrderIsAsc(listItemFilter: IListFilterItem): boolean {\r\n return listItemFilter && !!listItemFilter.sortOrderIsAsc;\r\n };\r\n\r\n static getFilterProps(listItemFilter: IListFilterItem, defaultSortColumn: string, defaultSortOrderIsAsc: boolean, getStateFilterPropsFromGeneralFilter: (generalFilter: any) => T): T & { sortColumn: string, sortOrderIsAsc: boolean } {\r\n let sortColumn = defaultSortColumn;\r\n let sortOrderIsAsc = defaultSortOrderIsAsc;\r\n const filterSortColumn = ListFilterItem.getListFilterItemSortColumn(listItemFilter);\r\n if (filterSortColumn) {\r\n sortColumn = filterSortColumn;\r\n sortOrderIsAsc = ListFilterItem.getListFilterItemSortOrderIsAsc(listItemFilter);\r\n }\r\n return {\r\n ...getStateFilterPropsFromGeneralFilter(listItemFilter.generalFilter),\r\n sortColumn,\r\n sortOrderIsAsc\r\n };\r\n };\r\n\r\n static getListFilterItems(companySavedFilters: ISavedListFilter[], userSavedFilters: ISavedListFilter[]): IListFilterItem[] {\r\n const result: IListFilterItem[] = [];\r\n const companyFilters = companySavedFilters ?? [];\r\n for (const companyFilter of companyFilters) {\r\n result.push(ListFilterItem.createListFilterItemFromSavedListFilter(companyFilter, true));\r\n }\r\n const userFilters = userSavedFilters ?? [];\r\n for (const userFilter of userFilters) {\r\n result.push(ListFilterItem.createListFilterItemFromSavedListFilter(userFilter, false));\r\n }\r\n ListFilterItem.sortListFilterItems(result);\r\n return result;\r\n };\r\n}","// AvatarImage\r\n// ***********************************************************************************************************************\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport { Avatar, Box, IconButton, Tooltip, useTheme } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { useRef, useState } from \"react\";\r\nimport { Base } from \"../../../../framework/base\";\r\nimport { Translations } from \"../../../../models/translations\";\r\n\r\nconst avatarColors = [\r\n \"#bfc9ca\",\r\n \"#1abc9c\",\r\n \"#e8f8f5\",\r\n \"#d1f2eb\",\r\n \"#a3e4d7\",\r\n \"#76d7c4\",\r\n \"#48c9b0\",\r\n \"#16a085\",\r\n \"#e8f6f3\",\r\n \"#d0ece7\",\r\n \"#a2d9ce\",\r\n \"#73c6b6\",\r\n \"#45b39d\",\r\n \"#2ecc71\",\r\n \"#eafaf1\",\r\n \"#d5f5e3\",\r\n \"#abebc6\",\r\n \"#82e0aa\",\r\n \"#58d68d\",\r\n \"#27ae60\",\r\n \"#e9f7ef\",\r\n \"#d4efdf\",\r\n \"#a9dfbf\",\r\n \"#7dcea0\",\r\n \"#52be80\",\r\n \"#3498db\",\r\n \"#ebf5fb\",\r\n \"#d6eaf8\",\r\n \"#aed6f1\",\r\n \"#85c1e9\",\r\n \"#5dade2\",\r\n \"#2980b9\",\r\n \"#eaf2f8\",\r\n \"#d4e6f1\",\r\n \"#a9cce3\",\r\n \"#7fb3d5\",\r\n \"#5499c7\",\r\n \"#9b59b6\",\r\n \"#f5eef8\",\r\n \"#ebdef0\",\r\n \"#d7bde2\",\r\n \"#c39bd3\",\r\n \"#af7ac5\",\r\n \"#8e44ad\",\r\n \"#f4ecf7\",\r\n \"#e8daef\",\r\n \"#d2b4de\",\r\n \"#bb8fce\",\r\n \"#a569bd\",\r\n \"#ebedef\",\r\n \"#d6dbdf\",\r\n \"#aeb6bf\",\r\n \"#85929e\",\r\n \"#eaecee\",\r\n \"#d5d8dc\",\r\n \"#abb2b9\",\r\n \"#808b96\",\r\n \"#f1c40f\",\r\n \"#fef9e7\",\r\n \"#fcf3cf\",\r\n \"#f9e79f\",\r\n \"#f7dc6f\",\r\n \"#f4d03f\",\r\n \"#f39c12\",\r\n \"#fef5e7\",\r\n \"#fdebd0\",\r\n \"#fad7a0\",\r\n \"#f8c471\",\r\n \"#f5b041\",\r\n \"#e67e22\",\r\n \"#fdf2e9\",\r\n \"#fae5d3\",\r\n \"#f5cba7\",\r\n \"#f0b27a\",\r\n \"#eb984e\",\r\n \"#d35400\",\r\n \"#fbeee6\",\r\n \"#f6ddcc\",\r\n \"#edbb99\",\r\n \"#e59866\",\r\n \"#dc7633\",\r\n \"#e74c3c\",\r\n \"#fdedec\",\r\n \"#fadbd8\",\r\n \"#f5b7b1\",\r\n \"#f1948a\",\r\n \"#ec7063\",\r\n \"#c0392b\",\r\n \"#f9ebea\",\r\n \"#f2d7d5\",\r\n \"#e6b0aa\",\r\n \"#d98880\",\r\n \"#cd6155\",\r\n \"#ecf0f1\",\r\n \"#fdfefe\",\r\n \"#fbfcfc\",\r\n \"#f7f9f9\",\r\n \"#f4f6f7\",\r\n \"#f0f3f4\",\r\n \"#bdc3c7\",\r\n \"#f8f9f9\",\r\n \"#f2f3f4\",\r\n \"#e5e7e9\",\r\n \"#d7dbdd\",\r\n \"#cacfd2\",\r\n \"#95a5a6\",\r\n \"#f4f6f6\",\r\n \"#eaeded\",\r\n \"#d5dbdb\",\r\n //\"#bfc9ca\",\r\n \"#aab7b8\",\r\n \"#7f8c8d\",\r\n \"#f2f4f4\",\r\n \"#e5e8e8\",\r\n \"#ccd1d1\",\r\n];\r\n\r\nexport interface IAvatarImageProp {\r\n id?: string;\r\n border?: boolean;\r\n name?: string;\r\n icon?: React.ReactNode;\r\n image?: string;\r\n editable?: boolean;\r\n fileInputName?: string;\r\n showName?: boolean;\r\n tooltip?: string;\r\n removeTooltip?: string;\r\n longPressMs?: number;\r\n size?: number;\r\n logo?: boolean;\r\n marginRight?: number | string;\r\n marginLeft?: number | string;\r\n onClick?: () => void;\r\n onChange?: (file: File) => void;\r\n onClear?: () => void;\r\n onLongPress?: () => void;\r\n onError?: (message: string) => void;\r\n}\r\n\r\nexport interface IAvatarImageState {\r\n file: File;\r\n backgroundNumber: number;\r\n}\r\n\r\nexport const AvatarImage = ({\r\n id,\r\n border,\r\n name,\r\n icon,\r\n image,\r\n editable,\r\n fileInputName,\r\n showName,\r\n tooltip,\r\n removeTooltip,\r\n longPressMs,\r\n size,\r\n logo,\r\n marginRight,\r\n marginLeft,\r\n onClick,\r\n onChange,\r\n onClear,\r\n onLongPress,\r\n onError,\r\n}: IAvatarImageProp) => {\r\n const pressTimer = useRef(0);\r\n const theme = useTheme();\r\n const inputRef = useRef(null);\r\n\r\n const [state, setState] = useState({\r\n file: null,\r\n backgroundNumber: Base.strToHashNumber(id, 114),\r\n });\r\n\r\n const clearPressTimer = () => {\r\n clearTimeout(pressTimer.current);\r\n pressTimer.current = 0;\r\n };\r\n\r\n const handleLinePress = (ev) => {\r\n //Set timer\r\n pressTimer.current = window.setTimeout(() => {\r\n //long press\r\n clearPressTimer();\r\n onLongPress();\r\n }, longPressMs);\r\n };\r\n\r\n const handleLineRelease = (ev) => {\r\n //short press\r\n if (pressTimer.current > 0) {\r\n clearPressTimer();\r\n if (onClick) {\r\n onClick();\r\n }\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n setState((old) => ({\r\n ...old,\r\n backgroundNumber: Base.strToHashNumber(image || icon ? \"\" : id, 114),\r\n }));\r\n }, [id, image]);\r\n\r\n const handleFileChange = (e: React.ChangeEvent) => {\r\n if (\r\n !editable ||\r\n Base.isNullOrUndefined(e.target.files) ||\r\n e.target.files.length < 1\r\n ) {\r\n return;\r\n }\r\n const file = e.target.files[0];\r\n if (Base.isImageFile(file)) {\r\n onChange(file);\r\n } else {\r\n onError(Translations.SelectImageFile);\r\n }\r\n };\r\n\r\n const handleClick = (e: React.MouseEvent) => {\r\n if (onClick) {\r\n e.stopPropagation();\r\n onClick();\r\n }\r\n\r\n if (editable) {\r\n inputRef.current.click();\r\n }\r\n };\r\n\r\n let displayName = name ? name.trim() : \"\";\r\n if (displayName.length > 2 && displayName[0] === \"'\" && displayName[displayName.length - 1] === \"'\") {\r\n displayName = displayName.substring(1, displayName.length - 2);\r\n }\r\n const names = displayName.split(\" \");\r\n const avatarColor =\r\n avatarColors[(state.backgroundNumber - 1).toString(10)] ||\r\n (logo ? \"rgba(0, 0, 0, 0)\" : theme.palette.grey[200]);\r\n const fontSize = size > 59 ? \"1.25rem\" : size > 40 ? \".75rem\" : \".6875rem\";\r\n\r\n const avatarElement =\r\n \r\n {icon ?? (displayName\r\n ? names[0]\r\n ? names[0][0] + (names[1] ? names[1][0] : \"\")\r\n : \"\"\r\n : \"?\"\r\n ).toUpperCase()}\r\n ;\r\n\r\n return (\r\n \r\n {(editable && tooltip\r\n ? {avatarElement}\r\n : avatarElement\r\n )}\r\n {/* \r\n \r\n {icon ?? (displayName\r\n ? names[0]\r\n ? names[0][0] + (names[1] ? names[1][0] : \"\")\r\n : \"\"\r\n : \"?\"\r\n ).toUpperCase()}\r\n \r\n */}\r\n {!!editable && !!image && !!onClear\r\n ? (\r\n \r\n \r\n {\r\n e.stopPropagation();\r\n onClear();\r\n }\r\n : null\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n )\r\n : null}\r\n {!!editable && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n","// CompanyItem\r\n// ***********************************************************************************************************************\r\nimport { Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\n\r\nexport interface ICompanyItemProp {\r\n classes?: boolean;\r\n company: ICompanyMenuItem;\r\n}\r\n\r\nexport class CompanyItem extends React.Component {\r\n render() {\r\n const props = this.props;\r\n const company = props.company;\r\n if (!company) return null;\r\n return (\r\n <>\r\n \r\n {company.name}\r\n \r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { Base } from \"../../../../framework/base\";\r\nimport { ClickAwayListener, Divider, MenuItem, Select, SxProps, Theme, Tooltip } from \"@mui/material\";\r\n\r\nexport interface IDropdownAction {\r\n disabled?: boolean;\r\n classes?: string;\r\n divider?: boolean;\r\n selected?: boolean;\r\n icon?: React.ReactNode;\r\n title: string | React.ReactNode;\r\n textTitle?: string;\r\n onClick: () => void;\r\n}\r\n\r\n// DropdownMenu\r\n// ***********************************************************************************************************************\r\nexport interface IDropdownMenuProp {\r\n actions: IDropdownAction[];\r\n menuRight?: boolean;\r\n selectMode?: boolean;\r\n onToggleDropodown: () => void;\r\n}\r\n\r\nexport class DropdownMenu extends React.Component {\r\n private dropdownMenuDiv: HTMLDivElement;\r\n\r\n scrollToActiveMenuItem = () => {\r\n if (!this.props.selectMode || !this.dropdownMenuDiv) return;\r\n const elements = this.dropdownMenuDiv.getElementsByClassName(\"selected\");\r\n if (elements.length > 0 && elements[0]) {\r\n const y = (elements[0] as HTMLDivElement).offsetTop;\r\n this.dropdownMenuDiv.scrollTo({\r\n top: y,\r\n left: 0,\r\n behavior: \"auto\"\r\n });\r\n }\r\n };\r\n\r\n componentDidMount(): void {\r\n this.scrollToActiveMenuItem();\r\n }\r\n\r\n handleActionClick = (ev: React.MouseEvent, action: IDropdownAction) => {\r\n ev.preventDefault();\r\n if (!action) return;\r\n if (action.disabled) return;\r\n this.props.onToggleDropodown();\r\n action.onClick();\r\n };\r\n \r\n render() {\r\n const props = this.props;\r\n const actions: (string | React.ReactNode)[] = [];\r\n for (let i = 0; i < props.actions.length; i++) {\r\n const action = props.actions[i];\r\n if (action.divider) {\r\n actions.push({action.title});\r\n continue;\r\n }\r\n if (action.onClick === null) {\r\n continue;\r\n }\r\n actions.push(\r\n this.handleActionClick(ev, action) }\r\n selected={action.selected}\r\n sx={{\r\n \"textDecoration\": action.disabled ? \"line-through\" : \"none\",\r\n \"&:hover\": {\r\n textDecoration: action.disabled ? \"line-through\" : \"none\",\r\n }\r\n }}\r\n >\r\n {action.title}\r\n \r\n );\r\n }\r\n return (\r\n <>{ actions }\r\n );\r\n }\r\n}\r\n\r\n// Dropdown\r\n// ***********************************************************************************************************************\r\nexport interface IDropdownProp {\r\n index?: number;\r\n autoFocus?: boolean;\r\n autoHeight?: boolean;\r\n menuRight?: boolean;\r\n classes?: string;\r\n buttonClasses?: string;\r\n disabled?: boolean;\r\n selectMode?: boolean;\r\n selectedTitle: string | React.ReactNode;\r\n startIcon?: React.ReactNode;\r\n sx?: SxProps;\r\n tooltip?: string;\r\n actions: IDropdownAction[];\r\n}\r\n\r\nexport interface IDropdownState {\r\n open: boolean;\r\n}\r\n\r\nexport class Dropdown extends React.Component {\r\n _isMounted: boolean;\r\n dropdownId: string;\r\n\r\n constructor(props: IDropdownProp) {\r\n super(props);\r\n this.dropdownId = Base.getGuid();\r\n this.state = {\r\n open: false\r\n };\r\n }\r\n\r\n dropdownClickEvent = (ev: MouseEvent) => {\r\n if (!this._isMounted) return;\r\n const element = ev.target as HTMLElement;\r\n const multiSelect = element.closest(\"[data-id='\" + this.dropdownId + \"']\");\r\n if (!multiSelect) {\r\n this.setState({\r\n open: false\r\n });\r\n }\r\n };\r\n\r\n handleKeyPress = (e) => {\r\n const props = this.props;\r\n const key: string = e.key;\r\n if (Base.isNullOrUndefined(key)) return;\r\n let firstMatchBeforeSelected: IDropdownAction = null;\r\n let firstMatchAfterSelected: IDropdownAction = null;\r\n let selectedFound = false;\r\n for (const action of props.actions) {\r\n if (action.disabled) continue;\r\n const title = typeof action.title === \"string\" ? action.title : action.textTitle;\r\n if (!title || title.length < 1) continue;\r\n if (!selectedFound && !firstMatchBeforeSelected && title[0].equalIgnoreCase(key)) {\r\n firstMatchBeforeSelected = action;\r\n }\r\n if (action.selected) {\r\n selectedFound = true;\r\n continue;\r\n }\r\n if (!selectedFound) continue;\r\n if (title[0].equalIgnoreCase(key)) {\r\n firstMatchAfterSelected = action;\r\n break;\r\n }\r\n }\r\n const firstMatch = firstMatchAfterSelected ?? firstMatchBeforeSelected;\r\n if (!firstMatch) return;\r\n firstMatch.onClick();\r\n return true;\r\n };\r\n\r\n handleToggleDropdown = () => {\r\n if (this.props.disabled) return;\r\n this.setState({\r\n open: !this.state.open\r\n });\r\n };\r\n\r\n handleDropdownClose = () => {\r\n this.setState({ open: false });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const disabled = !!props.disabled;\r\n return (\r\n \r\n \r\n props.selectedTitle}\r\n autoFocus={props.autoFocus}\r\n onClick={this.handleToggleDropdown}\r\n onKeyPress={props.selectMode ? this.handleKeyPress : null}\r\n disabled={disabled}\r\n size=\"small\"\r\n fullWidth\r\n >\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}","// PageNavMenuCompanyItem\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { CompanyItem } from \"../CompanyItem\";\r\nimport { Box, Typography } from \"@mui/material\";\r\nimport { Dropdown } from \"ui/Scripts/source/components/framework/Dropdown/Dropdown\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\n\r\nexport interface IPageNavMenuItemCompanyProp {\r\n classes?: boolean;\r\n companies: ICompanyMenuItem[];\r\n hidden?: boolean;\r\n activeCompanyId: string;\r\n onChangeActiveCompany: (companyId: string) => void;\r\n}\r\n\r\nexport class PageNavMenuCompanyItem extends React.Component {\r\n render() {\r\n const props = this.props;\r\n if (props.hidden) return null;\r\n const companies = props.companies;\r\n if (!companies || companies.length < 2) return null;\r\n const selectedCompany = companies.find((company) => company.id === props.activeCompanyId);\r\n\r\n return (\r\n <>\r\n {Translations.Company}\r\n \r\n \r\n }\r\n selectMode={true}\r\n actions={props.companies.map((company) => {\r\n return {\r\n title: ,\r\n textTitle: company.name,\r\n selected: props.activeCompanyId === company.id,\r\n disabled: !company.active,\r\n onClick: () => props.onChangeActiveCompany(company.id)\r\n };\r\n })}\r\n />\r\n \r\n \r\n );\r\n }\r\n}","import CircleIcon from \"@mui/icons-material/Circle\";\r\nimport { keyframes, Tooltip } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\n\r\nconst blink = keyframes`\r\n 50% { opacity: 0.1; }\r\n`;\r\n\r\nexport const NewMessageIcon = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","import BusinessOutlinedIcon from \"@mui/icons-material/BusinessOutlined\";\r\nimport ChecklistIcon from \"@mui/icons-material/Checklist\";\r\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\r\nimport GridViewOutlinedIcon from \"@mui/icons-material/GridViewOutlined\";\r\nimport ImportContactsOutlinedIcon from \"@mui/icons-material/ImportContactsOutlined\";\r\nimport InsertDriveFileOutlinedIcon from \"@mui/icons-material/InsertDriveFileOutlined\";\r\nimport ListAltOutlinedIcon from \"@mui/icons-material/ListAltOutlined\";\r\nimport MeetingRoomIcon from \"@mui/icons-material/MeetingRoom\";\r\nimport MessageOutlinedIcon from \"@mui/icons-material/MessageOutlined\";\r\nimport PeopleAltOutlinedIcon from \"@mui/icons-material/PeopleAltOutlined\";\r\nimport PersonOutlineOutlinedIcon from \"@mui/icons-material/PersonOutlineOutlined\";\r\nimport QuickreplyIcon from \"@mui/icons-material/Quickreply\";\r\nimport VisibilityOutlinedIcon from \"@mui/icons-material/VisibilityOutlined\";\r\nimport CalendarMonthOutlined from \"@mui/icons-material/CalendarMonthOutlined\";\r\nimport { SvgIconProps } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum SectionType {\r\n Front = \"0\",\r\n CurrentTopics = \"1\",\r\n Documents = \"2\",\r\n Events = \"3\",\r\n Tasks = \"4\",\r\n UserRecords = \"5\",\r\n CompanyGroups = \"6\",\r\n Companies = \"7\",\r\n UserGroups = \"8\",\r\n Users = \"9\",\r\n Log = \"10\",\r\n ExternalSystems = \"11\",\r\n InstantMessages = \"12\",\r\n WhistleBlow = \"13\",\r\n CalendarTasks = \"14\",\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\nexport const SectionIcon = ({\r\n type,\r\n ...props\r\n}: SvgIconProps & { type: SectionType }) =>\r\n <>\r\n {type === SectionType.Front && }\r\n {type === SectionType.CurrentTopics && }\r\n {type === SectionType.Documents && }\r\n {type === SectionType.Events && }\r\n {type === SectionType.Tasks && }\r\n {type === SectionType.UserRecords && }\r\n {type === SectionType.CompanyGroups && }\r\n {type === SectionType.Companies && }\r\n {type === SectionType.UserGroups && }\r\n {type === SectionType.Users && }\r\n {type === SectionType.Log && }\r\n {type === SectionType.ExternalSystems && }\r\n {type === SectionType.InstantMessages && }\r\n {type === SectionType.WhistleBlow && }\r\n {type === SectionType.CalendarTasks && }\r\n \r\n;\r\n","// eslint-disable-next-line no-unused-vars\r\nimport * as React from \"react\";\r\nimport { MenuItem as MuiMenuItem, styled } from \"@mui/material\";\r\n\r\nexport const MenuItem = styled(MuiMenuItem)(\r\n ({ theme }) => `\r\n margin: 4px 0;\r\n \r\n &.Mui-selected { \r\n border-right: 4px solid ${theme.palette.primary.main}; \r\n }\r\n `,\r\n);","/* global JSX */\r\n/// \r\nimport { Box, Divider, ListItemIcon, ListItemText, Menu, MenuItem, MenuList, Paper, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { IInstantMessageListItem } from \"ui/Scripts/source/models/instantMessage/instantMessageListItem\";\r\nimport { SignalRConnectionManager } from \"ui/Scripts/source/models/signalR/signalRConnectionManager\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport LogoEsalkku from \"../../../../../Content/devel/images/logo_eSalkku.png\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { customHistory } from \"../../../framework/customHistory\";\r\nimport { ICodeNameUrl } from \"../../../models/common/codeNameUrl\";\r\nimport * as frontService from \"../../../models/services/frontService\";\r\nimport { IAppSessionState } from \"../../../models/store/storeTypes\";\r\nimport { PageNavMenuCompanyItem } from \"../../company/Company/PageNavMenuItemCompany\";\r\nimport { NewMessageIcon } from \"../../framework/Icon/NewMessageIcon\";\r\nimport { SectionIcon, SectionType } from \"../../framework/Icon/SectionIcon\";\r\nimport * as Styled from \"./NavigationMenu.styles\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum HeaderMenuItem {\r\n Front = \"0\",\r\n CurrentTopics = \"1\",\r\n Documents = \"2\",\r\n Events = \"3\",\r\n Tasks = \"4\",\r\n UserRecords = \"5\",\r\n CompanyGroups = \"6\",\r\n Companies = \"7\",\r\n UserGroups = \"8\",\r\n Users = \"9\",\r\n Log = \"10\",\r\n ExternalSystems = \"11\",\r\n InstantMessages = \"12\",\r\n WhistleBlow = \"13\",\r\n CalendarTasks = \"14\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n//CultureButton\r\nexport interface ICultureButtonProp {\r\n classes: string;\r\n tooltip: string;\r\n onClick: () => void;\r\n}\r\n\r\nexport class CultureButton extends React.Component {\r\n handleClick = (e: any) => {\r\n const props = this.props;\r\n e.preventDefault();\r\n e.stopPropagation();\r\n props.onClick();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n return (\r\n
this.handleClick(e)} className={\"cultureButton\" + (props.classes ? \" \" + props.classes : \"\")} title={props.tooltip}>
\r\n );\r\n }\r\n}\r\n\r\n//HeaderItem\r\nexport interface IHeaderItemProp {\r\n active: boolean;\r\n classes?: string;\r\n iconClasses?: string;\r\n icon?: React.ReactNode;\r\n disabled?: boolean;\r\n eventsExist?: boolean;\r\n text: string;\r\n onClick: () => void;\r\n}\r\n\r\nexport class HeaderItem extends React.Component {\r\n handleClick = (e: any) => {\r\n const props = this.props;\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (props.disabled) return;\r\n props.onClick();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n return (\r\n this.handleClick(e)}>\r\n {props.icon}\r\n {props.text}\r\n {!!props.eventsExist &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\n//ExternalSystemDropdown\r\nexport interface IExternalSystemDropdownProp {\r\n disabled?: boolean;\r\n text: string;\r\n intraModules: ICodeNameUrl[];\r\n intraRestModules: ICodeNameUrl[];\r\n externalSystems: ICodeNameUrl[];\r\n}\r\n\r\nexport interface IExternalSystemDropdownState {\r\n editMode: boolean;\r\n items: JSX.Element[];\r\n}\r\n\r\nexport const ExternalSystemDropdown = ({ externalSystems, intraModules, intraRestModules, text, disabled }: IExternalSystemDropdownProp) => {\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n const open = Boolean(anchorEl);\r\n const [state, setState] = useState({\r\n editMode: false,\r\n items: [],\r\n });\r\n \r\n let dropdownId: string;\r\n\r\n const handleClick = (event: React.MouseEvent) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n \r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n \r\n useEffect(() => {\r\n setState((old) => ({\r\n ...old,\r\n items: getItems({ intraModules, intraRestModules, externalSystems, text, disabled })\r\n }));\r\n }, [intraModules, intraRestModules, externalSystems, text]);\r\n\r\n const handleOtpLogin = async (ev: React.MouseEvent, url: string, code: string) => {\r\n ev.preventDefault();\r\n if (!code) return;\r\n const success = await frontService.getOtp(code);\r\n window.open(url + success.otp, \"_blank\");\r\n };\r\n\r\n const getItems = (props: INavMenuItemDropdownProp): JSX.Element[] => {\r\n const items: JSX.Element[] = [];\r\n for (const intraModule of props.intraModules) {\r\n items.push({intraModule.name});\r\n }\r\n for (const intraModule of props.intraRestModules) {\r\n items.push( handleOtpLogin(ev, intraModule.url, intraModule.code) } title={intraModule.name}>{intraModule.name});\r\n }\r\n if (props.externalSystems.length > 0) {\r\n if (props.intraModules.length > 0 || props.intraRestModules.length > 0) {\r\n items.push();\r\n }\r\n for (const intraModule of props.externalSystems) {\r\n items.push({intraModule.name});\r\n }\r\n }\r\n return items;\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n {text}\r\n \r\n \r\n {state.items}\r\n \r\n \r\n );\r\n};\r\n\r\n//NavMenuItem\r\nexport interface INavMenuItemProp {\r\n classes?: string;\r\n active?: boolean;\r\n disabled?: boolean;\r\n text: string;\r\n onClick: () => void;\r\n}\r\n\r\nexport class NavMenuItem extends React.Component {\r\n handleClick = (e: any) => {\r\n const props = this.props;\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (props.disabled) return;\r\n props.onClick();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n return (\r\n
this.handleClick(e)}>\r\n
{props.text}
\r\n
\r\n );\r\n }\r\n}\r\n\r\n//NavMenuItemDropdown\r\nexport interface INavMenuItemDropdownProp {\r\n classes?: string;\r\n disabled?: boolean;\r\n text: string;\r\n intraModules: ICodeNameUrl[];\r\n intraRestModules: ICodeNameUrl[];\r\n externalSystems: ICodeNameUrl[];\r\n}\r\n\r\nexport interface INavMenuItemDropdownState {\r\n editMode: boolean;\r\n items: JSX.Element[];\r\n}\r\n\r\nexport class NavMenuItemDropdown extends React.Component {\r\n getItems = (props: INavMenuItemDropdownProp): JSX.Element[] => {\r\n const items: JSX.Element[] = [];\r\n for (const intraModule of props.intraModules) {\r\n items.push({intraModule.name});\r\n }\r\n for (const intraModule of props.intraRestModules) {\r\n items.push( this.handleOtpLogin(ev, intraModule.url, intraModule.code) } title={intraModule.name} target=\"_blank\" >{intraModule.name});\r\n }\r\n for (const intraModule of props.externalSystems) {\r\n items.push({intraModule.name});\r\n }\r\n return items;\r\n };\r\n\r\n constructor(props: INavMenuItemDropdownProp) {\r\n super(props);\r\n this.state = {\r\n editMode: false,\r\n items: this.getItems(props)\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps: INavMenuItemDropdownProp, prevState: INavMenuItemDropdownState): void {\r\n const props = this.props;\r\n const prevIntraModulesHash = prevProps.intraModules ? JSON.stringify(prevProps.intraModules) : \"\";\r\n const prevIntraRestModulesHash = prevProps.intraModules ? JSON.stringify(prevProps.intraRestModules) : \"\";\r\n const prevExternalSystemsHash = prevProps.intraModules ? JSON.stringify(prevProps.externalSystems) : \"\";\r\n const intraModulesHash = props.intraModules ? JSON.stringify(props.intraModules) : \"\";\r\n const intraRestModulesHash = props.intraModules ? JSON.stringify(props.intraRestModules) : \"\";\r\n const externalSystemsHash = props.intraModules ? JSON.stringify(props.externalSystems) : \"\";\r\n if (prevIntraModulesHash === intraModulesHash && prevIntraRestModulesHash === intraRestModulesHash && prevExternalSystemsHash === externalSystemsHash) return;\r\n this.setState({\r\n items: this.getItems(props)\r\n });\r\n }\r\n\r\n handleOtpLogin = async (ev: React.MouseEvent, url: string, code: string) => {\r\n ev.preventDefault();\r\n if (!code) return;\r\n const success = await frontService.getOtp(code);\r\n window.open(url + success.otp, \"_blank\");\r\n };\r\n\r\n handleToggleDropdown = (ev: any) => {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n this.setState({\r\n editMode: !this.state.editMode\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n
\r\n
{props.text}
\r\n {state.editMode &&\r\n
\r\n {state.items}\r\n
\r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\n//Header\r\nexport interface IHeaderProp {\r\n appState: IAppSessionState;\r\n activeMenuItem: HeaderMenuItem;\r\n companies?: ICompanyMenuItem[];\r\n activeCompanyId?: string;\r\n onNavigateOutCheck?: () => Promise;\r\n onChangeActiveCompany?: (companyId: string) => void;\r\n}\r\n\r\nexport interface IHeaderState {\r\n showUserProfileDialog: boolean;\r\n}\r\n\r\nexport class NavigationMenu extends React.Component {\r\n private signalRConnectionManager: SignalRConnectionManager;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showUserProfileDialog: null\r\n };\r\n }\r\n\r\n updateInstantMessageListLine = (item: IInstantMessageListItem) => {\r\n if (!item || this.props.activeMenuItem === HeaderMenuItem.InstantMessages) return;\r\n const newInstantMessages = this.props.appState.newInstantMessages.filter(i => i.id !== item.id);\r\n newInstantMessages.push(item);\r\n AppUtils.setNewInstantMessages(newInstantMessages);\r\n };\r\n\r\n componentDidMount(): void {\r\n //SignalR\r\n this.signalRConnectionManager = new SignalRConnectionManager();\r\n this.signalRConnectionManager.openConnection(appConfig.rootUrl, {\r\n onUpdateInstantMessageListLine: this.updateInstantMessageListLine\r\n });\r\n }\r\n\r\n componentWillUnmount(): void {\r\n //SignalR\r\n this.signalRConnectionManager.closeConnection();\r\n }\r\n\r\n canNavigateOut = async (): Promise => {\r\n const props = this.props;\r\n if (!props.onNavigateOutCheck) return Base.getPromiseResult(true);\r\n return await props.onNavigateOutCheck();\r\n };\r\n\r\n handleOwnerClick = () => {\r\n };\r\n\r\n handleGoToFrontPage = () => {\r\n this.canNavigateOut()\r\n .then(result => {\r\n if (!result) return;\r\n customHistory.push(\"/front\");\r\n });\r\n };\r\n\r\n handleGoToMessagePage = () => {\r\n this.canNavigateOut()\r\n .then(result => {\r\n if (!result) return;\r\n customHistory.push(\"/new/message\");\r\n });\r\n };\r\n\r\n handleGoToDocumentPage = () => {\r\n this.canNavigateOut()\r\n .then(result => {\r\n if (!result) return;\r\n customHistory.push(\"/new/document\");\r\n });\r\n };\r\n\r\n handleGoToEventPage = () => {\r\n this.canNavigateOut()\r\n .then(result => {\r\n if (!result) return;\r\n customHistory.push(\"/new/event\");\r\n });\r\n };\r\n\r\n handleGoToTaskPage = () => {\r\n this.canNavigateOut()\r\n .then(result => {\r\n if (!result) return;\r\n customHistory.push(\"/new/task\");\r\n });\r\n };\r\n\r\n handleGoToRecordPage = () => {\r\n this.canNavigateOut()\r\n .then(result => {\r\n if (!result) return;\r\n customHistory.push(\"/new/record\");\r\n });\r\n };\r\n \r\n handleGoToCompanyGroupPage = () => {\r\n this.canNavigateOut()\r\n .then(result => {\r\n if (!result) return;\r\n customHistory.push(\"/new/companygroup\");\r\n });\r\n };\r\n\r\n handleGoToCompaniesPage = () => {\r\n this.canNavigateOut()\r\n .then(result => {\r\n if (!result) return;\r\n customHistory.push(\"/new/company\");\r\n });\r\n };\r\n\r\n handleGoToUserGroupsPage = () => {\r\n this.canNavigateOut()\r\n .then(result => {\r\n if (!result) return;\r\n customHistory.push(\"/new/usergroup\");\r\n });\r\n };\r\n\r\n handleGoToUsersPage = () => {\r\n this.canNavigateOut()\r\n .then(result => {\r\n if (!result) return;\r\n customHistory.push(\"/new/user\");\r\n });\r\n };\r\n\r\n handleGoToLogPage = () => {\r\n this.canNavigateOut()\r\n .then(result => {\r\n if (!result) return;\r\n customHistory.push(\"/new/log\");\r\n });\r\n };\r\n\r\n handleGoToInstantMessagePage = async () => {\r\n const result = this.canNavigateOut();\r\n if (!result) return;\r\n customHistory.push(\"/new/instantmessage\");\r\n };\r\n\r\n handleGoToWhistleBlowPage = () => {\r\n this.canNavigateOut()\r\n .then(result => {\r\n if (!result) return;\r\n customHistory.push(\"/new/whistleblow\");\r\n });\r\n };\r\n\r\n handleGoToCalendarTaskPage = () => {\r\n this.canNavigateOut()\r\n .then(result => {\r\n if (!result) return;\r\n customHistory.push(\"/new/calendar\");\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const sessionState = props.appState?.state;\r\n if (!sessionState) return null;\r\n const showExternalSystems = (sessionState.intraModules.length > 0 || sessionState.intraRestModules.length > 0 || sessionState.externalSystems.length > 0);\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.companies && (\r\n \r\n )}\r\n \r\n {Translations.Menu}\r\n \r\n }\r\n text={Translations.FrontPage}\r\n onClick={this.handleGoToFrontPage}\r\n />\r\n {sessionState.canUseMessages &&\r\n }\r\n text={Translations.CurrentTopics}\r\n onClick={this.handleGoToMessagePage}\r\n />\r\n }\r\n {sessionState.canUseCalendarTasks &&\r\n }\r\n text={Translations.Calendar}\r\n onClick={this.handleGoToCalendarTaskPage}\r\n />\r\n }\r\n {sessionState.canUseInstantMessages &&\r\n }\r\n text={Translations.InstantMessagesMenuTitle}\r\n eventsExist={this.props.appState.newInstantMessages.length > 0}\r\n onClick={this.handleGoToInstantMessagePage}\r\n />\r\n }\r\n {sessionState.canUseDocuments &&\r\n }\r\n text={Translations.Documents}\r\n onClick={this.handleGoToDocumentPage}\r\n />\r\n }\r\n {sessionState.canUseEvents &&\r\n }\r\n text={Translations.Events}\r\n onClick={this.handleGoToEventPage}\r\n />\r\n }\r\n {sessionState.canUseTasks &&\r\n }\r\n text={Translations.Tasks}\r\n onClick={this.handleGoToTaskPage}\r\n />\r\n }\r\n {(sessionState.canUseRecords || sessionState.canUseOwnRecord) &&\r\n }\r\n text={sessionState.canUseRecords ? Translations.Resources : Translations.RecordUser}\r\n onClick={this.handleGoToRecordPage}\r\n />\r\n }\r\n {sessionState.canUseCompanyGroups &&\r\n }\r\n text={Translations.CompanyGroups}\r\n onClick={this.handleGoToCompanyGroupPage}\r\n />\r\n }\r\n {sessionState.canUseCompanies &&\r\n }\r\n text={sessionState.isSuperAdmin ? Translations.Companies : Translations.Company}\r\n onClick={this.handleGoToCompaniesPage}\r\n />\r\n }\r\n {sessionState.canUseUserGroups &&\r\n }\r\n text={Translations.UserGroups}\r\n onClick={this.handleGoToUserGroupsPage}\r\n />\r\n }\r\n {sessionState.canUseUsers &&\r\n }\r\n text={Translations.Users}\r\n onClick={this.handleGoToUsersPage}\r\n />\r\n }\r\n {sessionState.canUseLogs &&\r\n }\r\n text={Translations.Log}\r\n onClick={this.handleGoToLogPage}\r\n />\r\n }\r\n {sessionState.canUseWhistleBlow &&\r\n }\r\n text={Translations.WhistleBlow}\r\n onClick={this.handleGoToWhistleBlowPage}\r\n />\r\n }\r\n {showExternalSystems &&\r\n \r\n }\r\n {showExternalSystems &&\r\n \r\n }\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","/* global JSX */\r\n// Button\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { DialogButtonType, DialogButtonSize } from \"./../../models/enums\";\r\n\r\nexport interface IButtonProp {\r\n autoFocus?: boolean;\r\n buttonType: DialogButtonType;\r\n buttonSize?: DialogButtonSize;\r\n disabled?: boolean;\r\n hidden?: boolean;\r\n icon?: string;\r\n index?: number;\r\n classes?: string;\r\n preventDefault?: boolean;\r\n stopPropagation?: boolean;\r\n title?: string | JSX.Element;\r\n tooltip?: string;\r\n onClick: (index?: number) => void;\r\n}\r\n\r\nexport class Button extends React.Component {\r\n static callOnClick(onClick: () => void) {\r\n const activeElement: any = document.activeElement;\r\n if (activeElement && activeElement.blur) {\r\n activeElement.blur();\r\n window.setTimeout(() => {\r\n onClick();\r\n }, 50);\r\n } else {\r\n onClick();\r\n }\r\n }\r\n\r\n handleClick = (e) => {\r\n const props = this.props;\r\n if (!!props.disabled || !props.onClick) return;\r\n if (props.stopPropagation) {\r\n e.stopPropagation();\r\n }\r\n if (props.preventDefault) {\r\n e.preventDefault();\r\n }\r\n Button.callOnClick(props.onClick);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n if (props.hidden) return null;\r\n const tooltip = props.tooltip ? props.tooltip : (typeof props.title === \"string\" ? props.title : null);\r\n const buttonTypeClass = props.buttonType === DialogButtonType.Danger\r\n ? \"btn-danger\"\r\n : (props.buttonType === DialogButtonType.Primary\r\n ? \"btn-primary\"\r\n : (props.buttonType === DialogButtonType.Default\r\n ? \"btn-default\"\r\n : \"\"));\r\n const buttonSizeClass = !props.buttonSize\r\n ? \"\"\r\n : (props.buttonSize === DialogButtonSize.Small\r\n ? \" btn-sm\"\r\n : (props.buttonSize === DialogButtonSize.Large\r\n ? \" btn-lg\"\r\n : \" btn-vsm\"));\r\n const buttonClasses = \"btn \" + buttonTypeClass + buttonSizeClass + (props.classes ? \" \" + props.classes : \"\") + (props.disabled ? \" disabled\" : \"\");\r\n return (\r\n \r\n );\r\n }\r\n}","/* global JSX */\r\n// CheckBox\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\n\r\nexport interface ICheckBoxProp {\r\n title: string | JSX.Element;\r\n classes?: string;\r\n inline?: boolean;\r\n disabled?: boolean;\r\n hidden?: boolean;\r\n labelClasses?: string;\r\n noPadding?: boolean;\r\n name?: string;\r\n checked: boolean;\r\n indeterminate?: boolean;\r\n onClick?: (e: any) => void;\r\n onClickBoolean?: (checked: boolean) => void;\r\n}\r\n\r\nexport class CheckBox extends React.Component {\r\n private chkBox: HTMLInputElement;\r\n\r\n handleClick = (e) => {\r\n const props = this.props;\r\n e.stopPropagation();\r\n if (props.disabled || !props.onClickBoolean) return;\r\n props.onClickBoolean(e.target.checked);\r\n };\r\n\r\n //To prevent react warning message\r\n handleChange = (e) => {\r\n };\r\n\r\n componentDidMount(): void {\r\n this.chkBox.indeterminate = !!this.props.indeterminate && !this.props.checked;\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (!!prevProps.indeterminate !== !!this.props.indeterminate || prevProps.checked !== this.props.checked) {\r\n this.chkBox.indeterminate = !!this.props.indeterminate && !this.props.checked;\r\n }\r\n }\r\n\r\n render() {\r\n const props = this.props;\r\n if (props.hidden) return null;\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n}","/* global JSX */\r\nimport * as React from \"react\";\r\nimport { CheckBox } from \"./checkbox\";\r\nimport { ToolButton } from \"./toolButton\";\r\nimport { IdTitleNode, IIdTitleNode } from \"./../../models/common/idTitleNode\";\r\nimport { Base } from \"./../../framework/base\";\r\nimport { Translations } from \"./../../models/translations\";\r\n\r\nexport interface IDropdownAction {\r\n disabled?: boolean;\r\n classes?: string;\r\n divider?: boolean;\r\n selected?: boolean;\r\n icon?: React.ReactNode;\r\n title: string | JSX.Element;\r\n textTitle?: string;\r\n onClick: () => void;\r\n}\r\n\r\n// DropdownMenu\r\n// ***********************************************************************************************************************\r\nexport interface IDropdownMenuProp {\r\n actions: IDropdownAction[];\r\n menuRight?: boolean;\r\n selectMode?: boolean;\r\n onToggleDropodown: () => void;\r\n}\r\n\r\nexport class DropdownMenu extends React.Component {\r\n private dropdownMenuDiv: HTMLDivElement;\r\n\r\n scrollToActiveMenuItem = () => {\r\n if (!this.props.selectMode || !this.dropdownMenuDiv) return;\r\n const elements = this.dropdownMenuDiv.getElementsByClassName(\"selected\");\r\n if (elements.length > 0 && elements[0]) {\r\n const y = (elements[0] as HTMLDivElement).offsetTop;\r\n this.dropdownMenuDiv.scrollTo({\r\n top: y,\r\n left: 0,\r\n behavior: \"auto\"\r\n });\r\n }\r\n };\r\n\r\n componentDidMount(): void {\r\n this.scrollToActiveMenuItem();\r\n }\r\n\r\n handleActionClick = (ev: React.MouseEvent, action: IDropdownAction) => {\r\n ev.preventDefault();\r\n if (!action) return;\r\n if (action.disabled) return;\r\n this.props.onToggleDropodown();\r\n action.onClick();\r\n };\r\n \r\n render() {\r\n const props = this.props;\r\n const actions: (string | JSX.Element)[] = [];\r\n for (let i = 0; i < props.actions.length; i++) {\r\n const action = props.actions[i];\r\n if (action.divider) {\r\n actions.push(
);\r\n continue;\r\n }\r\n if (action.onClick === null) {\r\n continue;\r\n }\r\n actions.push( this.handleActionClick(ev, action) }>{action.title});\r\n }\r\n return (\r\n
{ this.dropdownMenuDiv = elem; }}>\r\n {actions}\r\n
\r\n );\r\n }\r\n}\r\n\r\n// Dropdown\r\n// ***********************************************************************************************************************\r\nexport interface IDropdownProp {\r\n index?: number;\r\n autoFocus?: boolean;\r\n autoHeight?: boolean;\r\n menuRight?: boolean;\r\n classes?: string;\r\n buttonClasses?: string;\r\n disabled?: boolean;\r\n selectMode?: boolean;\r\n selectedTitle: string | JSX.Element;\r\n tooltip?: string;\r\n actions: IDropdownAction[];\r\n}\r\n\r\nexport interface IDropdownState {\r\n open: boolean;\r\n}\r\n\r\nexport class Dropdown extends React.Component {\r\n _isMounted: boolean;\r\n dropdownId: string;\r\n\r\n constructor(props: IDropdownProp) {\r\n super(props);\r\n this.dropdownId = Base.getGuid();\r\n this.state = {\r\n open: false\r\n };\r\n }\r\n\r\n dropdownClickEvent = (ev: MouseEvent) => {\r\n if (!this._isMounted) return;\r\n const element = ev.target as HTMLElement;\r\n const multiSelect = element.closest(\"[data-id='\" + this.dropdownId + \"']\");\r\n if (!multiSelect) {\r\n this.setState({\r\n open: false\r\n });\r\n }\r\n };\r\n\r\n handleKeyPress = (e) => {\r\n const props = this.props;\r\n //console.log(\"handleKeyPress\", e.key);\r\n const key: string = e.key;\r\n if (Base.isNullOrUndefined(key)) return;\r\n let firstMatchBeforeSelected: IDropdownAction = null;\r\n let firstMatchAfterSelected: IDropdownAction = null;\r\n let selectedFound = false;\r\n for (const action of props.actions) {\r\n if (action.disabled) continue;\r\n const title = typeof action.title === \"string\" ? action.title : action.textTitle;\r\n if (!title || title.length < 1) continue;\r\n if (!selectedFound && !firstMatchBeforeSelected && title[0].equalIgnoreCase(key)) {\r\n firstMatchBeforeSelected = action;\r\n }\r\n if (action.selected) {\r\n selectedFound = true;\r\n continue;\r\n }\r\n if (!selectedFound) continue;\r\n if (title[0].equalIgnoreCase(key)) {\r\n firstMatchAfterSelected = action;\r\n break;\r\n }\r\n }\r\n const firstMatch = firstMatchAfterSelected ?? firstMatchBeforeSelected;\r\n if (!firstMatch) return;\r\n firstMatch.onClick();\r\n return true;\r\n };\r\n\r\n componentDidMount(): void {\r\n window.addEventListener(\"click\", this.dropdownClickEvent, true);\r\n this._isMounted = true;\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this._isMounted = false;\r\n window.removeEventListener(\"click\", this.dropdownClickEvent);\r\n }\r\n\r\n handleToggleDropdown = () => {\r\n if (this.props.disabled) return;\r\n this.setState({\r\n open: !this.state.open\r\n });\r\n };\r\n\r\n handleActionClick = (ev: React.MouseEvent, action: IDropdownAction) => {\r\n ev.preventDefault();\r\n if (!action) return;\r\n if (action.disabled) return;\r\n this.handleToggleDropdown();\r\n action.onClick();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const disabled = !!props.disabled;\r\n const dropdownClasses = \"dropdown\" + (props.classes ? \" \" + props.classes : \"\") + (disabled ? \" disabled\" : \"\") + (props.selectMode ? \" select\" : \"\") + (props.autoHeight ? \" autoHeight\" : \"\");\r\n const buttonClasses = \"btn btn-default dropdown-toggle\" + (!Base.isNullOrEmpty(props.buttonClasses) ? \" \" + props.buttonClasses : \"\") + (disabled ? \" disabled\" : \"\");\r\n return (\r\n
\r\n \r\n {state.open &&\r\n \r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\n// CheckBoxDropdown\r\n// ***********************************************************************************************************************\r\nexport interface ICheckBoxDropdownItem {\r\n classes?: string;\r\n disabled?: boolean;\r\n id: string;\r\n getTitle(): string;\r\n}\r\n\r\nexport interface ICheckBoxDropdownProp {\r\n autoFocus?: boolean;\r\n classes?: string;\r\n buttonClasses?: string;\r\n disabled?: boolean;\r\n menuRight?: boolean;\r\n required?: boolean;\r\n selectedIds: string[];\r\n toggleAll?: boolean;\r\n toggleAllId?: string;\r\n values: ICheckBoxDropdownItem[];\r\n onChange: (selectedIds: string[]) => void;\r\n}\r\n\r\nexport interface ICheckBoxDropdownState {\r\n open: boolean;\r\n selectedValueTitles: string;\r\n}\r\n\r\nexport class CheckBoxDropdown extends React.Component {\r\n _isMounted: boolean;\r\n dropdownId: string;\r\n\r\n private selectedValueTitles = (props: ICheckBoxDropdownProp): string => {\r\n const selecedValues = props.values.filter(i => props.selectedIds.indexOf(i.id) >= 0);\r\n return selecedValues.map(i => i.getTitle()).join(\", \");\r\n };\r\n\r\n constructor(props: ICheckBoxDropdownProp) {\r\n super(props);\r\n this.dropdownId = Base.getGuid();\r\n this.state = {\r\n open: false,\r\n selectedValueTitles: this.selectedValueTitles(props)\r\n };\r\n }\r\n\r\n dropdownClickEvent = (ev: MouseEvent) => {\r\n if (!this._isMounted) return;\r\n const element = ev.target as HTMLElement;\r\n const multiSelect = element.closest(\"[data-id='\" + this.dropdownId + \"']\");\r\n if (!multiSelect) {\r\n this.setState({\r\n open: false\r\n });\r\n }\r\n };\r\n\r\n componentDidMount(): void {\r\n window.addEventListener(\"click\", this.dropdownClickEvent, true);\r\n this._isMounted = true;\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this._isMounted = false;\r\n window.removeEventListener(\"click\", this.dropdownClickEvent);\r\n }\r\n\r\n componentDidUpdate(prevProps: ICheckBoxDropdownProp, prevState: ICheckBoxDropdownState): void {\r\n const selectedValueTitles = this.selectedValueTitles(this.props);\r\n if (prevState.selectedValueTitles === selectedValueTitles) return;\r\n this.setState({\r\n selectedValueTitles\r\n });\r\n }\r\n\r\n private getSelectedIds = (select: HTMLSelectElement): string[] => {\r\n const ids: string[] = [];\r\n for (let i = 0, l = select.selectedOptions.length; i < l; i++) {\r\n ids.push(select.selectedOptions[i].value);\r\n }\r\n return ids;\r\n };\r\n\r\n handleChange = (event) => {\r\n this.props.onChange(this.getSelectedIds(event.target as HTMLSelectElement));\r\n };\r\n\r\n handleClearClick = () => {\r\n const props = this.props;\r\n if (props.disabled) return;\r\n props.onChange([]);\r\n };\r\n\r\n handleToggleDropdown = () => {\r\n this.setState({\r\n open: !this.state.open\r\n });\r\n };\r\n\r\n handleCheckboxClickBoolean = (id: string, checked: boolean) => {\r\n //console.log(\"handleCheckboxClickBoolean\", checked)\r\n const props = this.props;\r\n let selectedIds: string[];\r\n if (props.toggleAll) {\r\n selectedIds = Base.getToggledMultiSelectIds(props.values, props.selectedIds, id, checked, props.toggleAllId ?? \"\");\r\n } else {\r\n selectedIds = props.selectedIds.filter(i => i !== id);\r\n if (checked) {\r\n selectedIds.push(id);\r\n }\r\n }\r\n props.onChange(selectedIds);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n
\r\n
\r\n
{state.selectedValueTitles}
\r\n {state.open &&\r\n
\r\n {props.values.map((value) =>\r\n -1}\r\n title={value.getTitle()}\r\n onClickBoolean={(checked: boolean) => this.handleCheckboxClickBoolean(value.id, checked)}\r\n />\r\n )}\r\n
\r\n }\r\n
\r\n \r\n {!props.disabled && !props.required && props.selectedIds && props.selectedIds.length > 0 && !props.toggleAll &&\r\n \r\n }\r\n {!props.disabled &&\r\n \r\n }\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\n// TreeCheckBoxDropdownItems\r\n// ***********************************************************************************************************************\r\nexport interface ITreeCheckBoxDropdownChildProp {\r\n isActive: boolean;\r\n item: ITreeCheckBoxDropdownItem;\r\n level: number;\r\n selectedIds: string[];\r\n singleSelect: boolean;\r\n onToggleItem: (item: ITreeCheckBoxDropdownItem, checked: boolean, hasChildren: boolean) => void;\r\n}\r\n\r\nclass TreeCheckBoxDropdownChild extends React.Component {\r\n render() {\r\n const props = this.props;\r\n const item = props.item;\r\n const hasChildren = item.hasChildren();\r\n const selected = props.selectedIds.indexOf(item.id) > -1;\r\n const disabled = item.disabled || !item.active;\r\n return (\r\n
\r\n {!props.singleSelect &&\r\n
{ e.stopPropagation(); e.preventDefault(); props.onToggleItem(item, !selected, hasChildren); }}>\r\n props.onToggleItem(item, value, hasChildren)}\r\n />\r\n
\r\n }\r\n {!!props.singleSelect &&\r\n
props.onToggleItem(item, true, false)}>\r\n
{item.title}
\r\n
\r\n }\r\n {item.children.map((childItem) =>\r\n \r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport interface ITreeCheckBoxDropdownItem extends IIdTitleNode {\r\n classes?: string;\r\n disabled?: boolean;\r\n}\r\n\r\nexport interface ITreeCheckBoxDropdownItemsProp {\r\n classes?: string;\r\n disabled?: boolean;\r\n selectedIds: string[];\r\n singleSelect?: boolean;\r\n toggleAllId?: string;\r\n values: ITreeCheckBoxDropdownItem[];\r\n onChange: (selectedIds: string[]) => void;\r\n onToggleDropdown?: () => void;\r\n}\r\n\r\nexport class TreeCheckBoxDropdownItems extends React.Component {\r\n handleToggleItem = (item: ITreeCheckBoxDropdownItem, checked: boolean, hasChildren: boolean) => {\r\n if (!item) return;\r\n const disabled = item.disabled || !item.active;\r\n if (disabled) return;\r\n const props = this.props;\r\n const id = item.id;\r\n const allId = props.toggleAllId ?? Base.emptyGuid;\r\n let activeItemIds = props.selectedIds.filter(i => i !== allId);\r\n if (hasChildren) {\r\n const parent = IdTitleNode.getById(props.values, id);\r\n if (!parent) return;\r\n const childIds = parent.getActiveChildIds();\r\n activeItemIds = activeItemIds.filter(i => childIds.indexOf(i) < 0 && i !== id);\r\n if (checked) {\r\n activeItemIds.push(id);\r\n activeItemIds = activeItemIds.concat(childIds);\r\n }\r\n } else {\r\n if (id === allId) {\r\n if (checked) {\r\n props.onChange([allId]);\r\n return;\r\n } else if (activeItemIds.length < 1 && props.values.length > 1) {\r\n activeItemIds.push(props.values[1].id);\r\n }\r\n } else {\r\n if (checked) {\r\n if (activeItemIds.indexOf(id) < 0) {\r\n activeItemIds.push(id);\r\n }\r\n } else {\r\n activeItemIds = activeItemIds.filter(i => i !== id);\r\n }\r\n }\r\n }\r\n if (activeItemIds.length < 1) {\r\n activeItemIds.push(allId);\r\n }\r\n props.onChange(activeItemIds);\r\n };\r\n\r\n handleSetSingleItem = (item: ITreeCheckBoxDropdownItem) => {\r\n const props = this.props;\r\n if (!item) return;\r\n const disabled = item.disabled || !item.active;\r\n if (disabled) return;\r\n props.onChange([item.id]);\r\n if (!props.onToggleDropdown) return;\r\n props.onToggleDropdown();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const singleSelect = !!props.singleSelect;\r\n return (\r\n
\r\n {props.values.map((item) => {\r\n const hasChildren = item.hasChildren();\r\n const selected = props.selectedIds.indexOf(item.id) > -1;\r\n const disabled = item.disabled || !item.active;\r\n return
\r\n {!singleSelect &&\r\n
{ e.stopPropagation(); e.preventDefault(); this.handleToggleItem(item, !selected, hasChildren); }}>\r\n this.handleToggleItem(item, value, hasChildren)}\r\n />\r\n
\r\n }\r\n {singleSelect &&\r\n
this.handleSetSingleItem(item)}>\r\n
{item.title}
\r\n
\r\n }\r\n {item.children.map((childItem) =>\r\n this.handleSetSingleItem(item)}\r\n />\r\n )}\r\n
;\r\n })}\r\n
\r\n );\r\n }\r\n}\r\n\r\n// TreeCheckBoxDropdown\r\n// ***********************************************************************************************************************\r\nexport interface ITreeCheckBoxDropdownProp {\r\n autoFocus?: boolean;\r\n classes?: string;\r\n buttonClasses?: string;\r\n disabled?: boolean;\r\n menuRight?: boolean;\r\n required?: boolean;\r\n selectedIds: string[];\r\n singleSelect?: boolean;\r\n toggleAllId?: string;\r\n hideParentsInSelection?: boolean;\r\n values: ITreeCheckBoxDropdownItem[];\r\n onChange: (selectedIds: string[]) => void;\r\n}\r\n\r\nexport interface ITreeCheckBoxDropdownState {\r\n open: boolean;\r\n selectedValueTitles: string;\r\n}\r\n\r\nexport class TreeCheckBoxDropdown extends React.Component {\r\n _isMounted: boolean;\r\n dropdownId: string;\r\n\r\n private selectedValueTitles = (props: ITreeCheckBoxDropdownProp): string => {\r\n let selecedValues = IdTitleNode.getByIds(props.values, props.selectedIds);\r\n if (props.hideParentsInSelection) {\r\n selecedValues = selecedValues.filter(i => !i.hasChildren());\r\n }\r\n return selecedValues.map(i => i.getTitle()).join(\", \");\r\n };\r\n\r\n constructor(props: ITreeCheckBoxDropdownProp) {\r\n super(props);\r\n this.dropdownId = Base.getGuid();\r\n this.state = {\r\n open: false,\r\n selectedValueTitles: this.selectedValueTitles(props)\r\n };\r\n }\r\n\r\n dropdownClickEvent = (ev: MouseEvent) => {\r\n if (!this._isMounted) return;\r\n const element = ev.target as HTMLElement;\r\n const multiSelect = element.closest(\"[data-id='\" + this.dropdownId + \"']\");\r\n if (!multiSelect) {\r\n this.setState({\r\n open: false\r\n });\r\n }\r\n };\r\n\r\n componentDidMount(): void {\r\n window.addEventListener(\"click\", this.dropdownClickEvent, true);\r\n this._isMounted = true;\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this._isMounted = false;\r\n window.removeEventListener(\"click\", this.dropdownClickEvent);\r\n }\r\n\r\n componentDidUpdate(prevProps: ITreeCheckBoxDropdownProp, prevState: ITreeCheckBoxDropdownState): void {\r\n const selectedValueTitles = this.selectedValueTitles(this.props);\r\n if (prevState.selectedValueTitles === selectedValueTitles) return;\r\n this.setState({\r\n selectedValueTitles\r\n });\r\n }\r\n\r\n handleClearClick = () => {\r\n const props = this.props;\r\n if (props.disabled) return;\r\n props.onChange([]);\r\n };\r\n\r\n handleToggleDropdown = () => {\r\n this.setState({\r\n open: !this.state.open\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n
\r\n
\r\n
{state.selectedValueTitles}
\r\n {state.open &&\r\n \r\n }\r\n
\r\n \r\n {!props.disabled && !props.required && props.selectedIds && props.selectedIds.length > 0 &&\r\n \r\n }\r\n {!props.disabled &&\r\n \r\n }\r\n \r\n
\r\n );\r\n }\r\n}\r\n","/* global JSX */\r\n//ToolButton\r\n//***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { Base } from \"./../../framework/base\";\r\nimport { Button } from \"./button\";\r\nimport { DropdownMenu, IDropdownAction } from \"./dropdown\";\r\n\r\nexport interface IToolButtonProp {\r\n removeDefaultClasses?: boolean;\r\n stopPropagation?: boolean;\r\n title?: string | JSX.Element;\r\n classes?: string;\r\n tooltip?: string;\r\n disabled?: boolean;\r\n onClick: () => void;\r\n}\r\n\r\nexport class ToolButton extends React.Component {\r\n handleClick = (e) => {\r\n const props = this.props;\r\n if (!!props.disabled || !props.onClick) return;\r\n if (props.stopPropagation) {\r\n e.stopPropagation();\r\n }\r\n Button.callOnClick(props.onClick);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const hasTitle = !!props.title;\r\n const tooltip = props.tooltip ? props.tooltip : (typeof props.title === \"string\" ? props.title : null);\r\n const buttonClasses = (props.removeDefaultClasses ? \"\" : \"btn btn-tool\") + (props.classes ? \" \" + props.classes : \"\") + (props.disabled ? \" disabled\" : \"\") + (hasTitle ? \" text\" : \"\");\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport interface IToolAddFileButtonProp {\r\n removeDefaultClasses?: boolean;\r\n stopPropagation?: boolean;\r\n accept?: string;\r\n title?: string | JSX.Element;\r\n tooltip?: string;\r\n classes?: string;\r\n disabled?: boolean;\r\n fileInputName: string;\r\n onChange: (fileList: FileList) => void;\r\n}\r\n\r\nexport class ToolAddFileButton extends React.Component {\r\n handleClick = (e) => {\r\n const props = this.props;\r\n if (props.stopPropagation) {\r\n e.stopPropagation();\r\n }\r\n };\r\n\r\n handleChange = (e: React.ChangeEvent) => {\r\n const props = this.props;\r\n if (props.disabled) return;\r\n if (props.stopPropagation) {\r\n e.stopPropagation();\r\n }\r\n if (!e.target.files || e.target.files.length < 1) return;\r\n this.props.onChange(e.target.files);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const hasTitle = !!props.title;\r\n const tooltip = props.tooltip ? props.tooltip : (typeof props.title === \"string\" ? props.title : null);\r\n const buttonClasses = (props.removeDefaultClasses ? \"\" : \"btn btn-tool\") + (props.classes ? \" \" + props.classes : \"\") + (props.disabled ? \" disabled\" : \"\") + (hasTitle ? \" text\" : \"\");\r\n if (!props.disabled) {\r\n return (\r\n \r\n );\r\n }\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport interface IToolButtonDropdownProp {\r\n actions: IDropdownAction[];\r\n buttonClasses?: string;\r\n classes?: string;\r\n disabled?: boolean;\r\n menuRight?: boolean;\r\n removeDefaultClasses?: boolean;\r\n stopPropagation?: boolean;\r\n title?: string | JSX.Element;\r\n tooltip?: string;\r\n}\r\n\r\nexport interface IToolButtonDropdownState {\r\n open: boolean;\r\n}\r\n\r\nexport class ToolButtonDropdown extends React.Component {\r\n _isMounted: boolean;\r\n dropdownId: string;\r\n\r\n constructor(props: IToolButtonDropdownProp) {\r\n super(props);\r\n this.dropdownId = Base.getGuid();\r\n this.state = {\r\n open: false\r\n };\r\n }\r\n\r\n dropdownClickEvent = (ev: MouseEvent) => {\r\n if (!this._isMounted) return;\r\n const element = ev.target as HTMLElement;\r\n const multiSelect = element.closest(\"[data-id='\" + this.dropdownId + \"']\");\r\n if (!multiSelect) {\r\n this.setState({\r\n open: false\r\n });\r\n }\r\n };\r\n\r\n componentDidMount(): void {\r\n window.addEventListener(\"click\", this.dropdownClickEvent, true);\r\n this._isMounted = true;\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this._isMounted = false;\r\n window.removeEventListener(\"click\", this.dropdownClickEvent);\r\n }\r\n\r\n handleToggleDropdown = () => {\r\n if (this.props.disabled) return;\r\n const obj = this;\r\n Button.callOnClick(() => {\r\n if (!this._isMounted) return;\r\n obj.setState({\r\n open: !obj.state.open\r\n });\r\n });\r\n };\r\n\r\n handleActionClick = (ev: React.MouseEvent, action: IDropdownAction) => {\r\n ev.preventDefault();\r\n if (!action) return;\r\n if (action.disabled) return;\r\n this.handleToggleDropdown();\r\n action.onClick();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n
\r\n \r\n {state.open &&\r\n \r\n }\r\n
\r\n\r\n );\r\n }\r\n}\r\n","// AvatarImage\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { Base } from \"./../../framework/base\";\r\nimport { Translations } from \"./../../models/translations\";\r\nimport { ToolButton } from \"./toolButton\";\r\n\r\nexport interface IAvatarImageProp {\r\n id?: string;\r\n border?: boolean;\r\n name?: string;\r\n image?: string;\r\n classes?: string;\r\n editable?: boolean;\r\n fileInputName?: string;\r\n showName?: boolean;\r\n tooltip?: string;\r\n removeTooltip?: string;\r\n imageClass?: string;\r\n longPressMs?: number;\r\n onClick?: () => void;\r\n onChange?: (file: File) => void;\r\n onClear?: () => void;\r\n onLongPress?: () => void;\r\n onError?: (message: string) => void;\r\n}\r\n\r\nexport interface IAvatarImageState {\r\n file: File;\r\n backgroupdNumber: number;\r\n}\r\n\r\nexport class AvatarImage extends React.Component {\r\n private pressTimer: number = 0;\r\n\r\n clearPressTimer = () => {\r\n clearTimeout(this.pressTimer);\r\n this.pressTimer = 0;\r\n };\r\n\r\n handleLinePress = (ev) => {\r\n const obj = this;\r\n //Set timer\r\n this.pressTimer = window.setTimeout(() => {\r\n //long press\r\n obj.clearPressTimer();\r\n obj.props.onLongPress();\r\n }, obj.props.longPressMs);\r\n };\r\n\r\n handleLineRelease = (ev) => {\r\n const props = this.props;\r\n //short press\r\n if (this.pressTimer > 0) {\r\n this.clearPressTimer();\r\n if (props.onClick) {\r\n props.onClick();\r\n }\r\n }\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { file: null, backgroupdNumber: Base.strToHashNumber(props.id, 114) };\r\n }\r\n\r\n componentDidUpdate(prevProps: IAvatarImageProp) {\r\n const props = this.props;\r\n if (prevProps.id === props.id) return;\r\n this.setState({ backgroupdNumber: Base.strToHashNumber(props.id, 114) });\r\n }\r\n\r\n handleFileChange = (e: React.ChangeEvent) => {\r\n const props = this.props;\r\n if (!props.editable || Base.isNullOrUndefined(e.target.files) || e.target.files.length < 1) return;\r\n const file = e.target.files[0];\r\n if (Base.isImageFile(file)) {\r\n props.onChange(file);\r\n } else {\r\n props.onError(Translations.SelectImageFile);\r\n }\r\n };\r\n\r\n handleClear = () => {\r\n this.props.onClear();\r\n };\r\n \r\n render() {\r\n const props = this.props;\r\n const name = props.name ? props.name.trim() : \"\";\r\n const names = name.split(\" \");\r\n const fileInputName = props.fileInputName ? props.fileInputName : \"image\";\r\n const removeTooltip = props.removeTooltip ? props.removeTooltip : Translations.Remove;\r\n return (\r\n
{ e.stopPropagation(); props.onClick(); } : null}\r\n onTouchStart={props.onLongPress && props.editable ? this.handleLinePress : null}\r\n onTouchEnd={props.onLongPress && props.editable ? this.handleLineRelease : null}\r\n onMouseDown={props.onLongPress && props.editable ? this.handleLinePress : null}\r\n onMouseUp={props.onLongPress && props.editable ? this.handleLineRelease : null}\r\n onMouseLeave={props.onLongPress && props.editable ? this.handleLineRelease : null}\r\n >\r\n \r\n
\r\n );\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { FileType } from \"../enums\";\r\nimport { IFileAttachment } from \"./fileAttachment\";\r\n\r\nexport interface ISaveAttachmentBase64 {\r\n name: string;\r\n content: string;\r\n category: number;\r\n fieldName: string;\r\n lastModified: number;\r\n}\r\n\r\nexport class SaveAttachmentBase64 implements ISaveAttachmentBase64 {\r\n name: string;\r\n content: string;\r\n category: number;\r\n fieldName: string;\r\n lastModified: number;\r\n\r\n constructor();\r\n constructor(obj?: any) {\r\n this.name = obj && obj.name || \"\";\r\n this.content = obj && obj.content || \"\";\r\n this.category = obj && obj.category || 0;\r\n this.fieldName = obj && obj.fieldName || \"\";\r\n this.lastModified = obj && obj.lastModified || 0;\r\n }\r\n\r\n static async fromFileAttachment(fieldName: string, fileAttachment: IFileAttachment): Promise {\r\n if (!fileAttachment) return null;\r\n const attachment = new SaveAttachmentBase64();\r\n attachment.name = fileAttachment.name;\r\n attachment.content = await Base.blobToBase64WithoutHeader(fileAttachment.file);\r\n attachment.category = fileAttachment.category;\r\n attachment.fieldName = fieldName;\r\n attachment.lastModified = fileAttachment.lastModified;\r\n return attachment;\r\n }\r\n \r\n static async fromFileAttachments(fileAttachments: IFileAttachment[], fieldName: string = null): Promise {\r\n const promises: Promise[] = [];\r\n for (let i = 0; i < fileAttachments.length; i++) {\r\n const fileAttachment = fileAttachments[i];\r\n if (!fileAttachment) continue;\r\n promises.push(SaveAttachmentBase64.fromFileAttachment(fieldName ?? (fileAttachment.type === FileType.Image ? \"photo\" : \"\"), fileAttachment));\r\n }\r\n const result: SaveAttachmentBase64[] = [];\r\n const newAttachments = await Promise.all(promises);\r\n for (const newAttachment of newAttachments) {\r\n if (Base.isNullOrUndefined(newAttachment)) continue;\r\n result.push(newAttachment);\r\n }\r\n return result;\r\n }\r\n}","//SaveData\r\ninterface IHashValue {\r\n n: string;\r\n v: any;\r\n}\r\n\r\nexport class SaveDataObj {\r\n obj: object;\r\n hash: string;\r\n\r\n constructor() {\r\n this.obj = {};\r\n this.hash = \"\";\r\n }\r\n\r\n append(name: string, value: any) {\r\n this.obj[name] = value;\r\n //this.hash = this.hash + JSON.stringify({ n: name, v: value });\r\n const hashValues: IHashValue[] = this.hash ? JSON.parse(this.hash) : [];\r\n hashValues.push({ n: name, v: value });\r\n this.hash = JSON.stringify(hashValues);\r\n }\r\n\r\n static updateHashValue(hash: string, name: string, value: any): string {\r\n const hashValues: IHashValue[] = hash ? JSON.parse(hash) : [];\r\n let hashValue = hashValues.find(i => i.n === name);\r\n if (!hashValue) {\r\n hashValue = { n: \"\", v: null };\r\n hashValues.push(hashValue);\r\n }\r\n hashValue.v = value;\r\n return JSON.stringify(hashValues);\r\n }\r\n}","import * as React from \"react\";\r\nimport { Button, ButtonProps } from \"@mui/material\";\r\nimport { forwardRef, Ref, useRef } from \"react\";\r\n\r\nexport interface IAppButtonProps extends ButtonProps {\r\n enableDoubleClickForOnClick?: boolean;\r\n}\r\n\r\nexport const AppButton = forwardRef((props: IAppButtonProps, ref: Ref) => {\r\n const clickTimer = useRef(0);\r\n\r\n const clearPressTimer = () => {\r\n clearTimeout(clickTimer.current);\r\n clickTimer.current = 0;\r\n };\r\n \r\n const handleClick = (event: React.MouseEvent) => {\r\n if (clickTimer.current) return;\r\n clickTimer.current = window.setTimeout(() => {\r\n clearPressTimer();\r\n }, 500);\r\n props.onClick(event);\r\n };\r\n\r\n return (\r\n \r\n );\r\n});\r\n\r\nAppButton.displayName = \"AppButton\";","import CheckCircleOutlinedIcon from \"@mui/icons-material/CheckCircleOutlined\";\r\nimport React from \"react\";\r\nimport { AppButton, IAppButtonProps } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\nexport const ConfirmationButton = (props: IAppButtonProps) => (\r\n } {...props}>\r\n {props.children}\r\n \r\n);\r\n","import React from \"react\";\r\nimport { AppButton, IAppButtonProps } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\nexport const DangerButton = (props: IAppButtonProps) => {\r\n if (!props.onClick) return null;\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n","import { Paper, PaperProps } from \"@mui/material\";\r\nimport React, { useEffect } from \"react\";\r\nimport Draggable, { DraggableData, DraggableEvent } from \"react-draggable\";\r\n\r\ninterface DraggablePaperProps {\r\n id?: string;\r\n maxHeight?: number | string;\r\n centerOnResize?: boolean;\r\n props?: PaperProps;\r\n}\r\n\r\nexport const DraggablePaper = ({ id, maxHeight, centerOnResize, props }: DraggablePaperProps) => {\r\n const widgetContainerRef = React.useRef(null);\r\n const [widgetState, setWidgetState] = React.useState({\r\n position: { x: 0, y: 0 },\r\n bounds: { left: 0, top: 0, bottom: 0, right: 0 },\r\n });\r\n\r\n useEffect(() => {\r\n const handleResize = (_entries) => {\r\n if (centerOnResize) {\r\n setWidgetState((old) => ({\r\n ...old,\r\n position: { x: 0, y: 0 },\r\n }));\r\n }\r\n };\r\n\r\n if (!widgetContainerRef.current) return;\r\n\r\n const resizeObserver = new ResizeObserver(handleResize);\r\n resizeObserver.observe(widgetContainerRef.current);\r\n \r\n return () => {\r\n if (widgetContainerRef.current) {\r\n resizeObserver.unobserve(widgetContainerRef.current);\r\n } else {\r\n resizeObserver.disconnect();\r\n }\r\n };\r\n }, [widgetContainerRef.current]);\r\n\r\n const onStart = (_event: DraggableEvent, uiData: DraggableData) => {\r\n const { clientWidth, clientHeight } = window?.document?.documentElement;\r\n const targetRect = widgetContainerRef?.current?.getBoundingClientRect();\r\n if (targetRect) {\r\n setWidgetState((prevState) => ({\r\n ...prevState,\r\n bounds: {\r\n left: -targetRect?.left + uiData?.x,\r\n right: clientWidth - (targetRect?.right - uiData?.x),\r\n top: -targetRect?.top + uiData?.y,\r\n bottom: clientHeight - (targetRect?.bottom - uiData?.y),\r\n },\r\n }));\r\n }\r\n };\r\n \r\n const onStop = (_event: DraggableEvent, uiData: DraggableData) => {\r\n //console.log(uiData);\r\n setWidgetState((prevState) => ({\r\n ...prevState,\r\n position: { x: uiData?.x, y: uiData?.y },\r\n }));\r\n };\r\n \r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","import React from \"react\";\r\nimport { DialogProps, Dialog } from \"@mui/material\";\r\n\r\nexport const AppBaseDialog = (props: DialogProps) => {\r\n const handleClose = (event, reason) => {\r\n if (reason && reason === \"backdropClick\") return;\r\n props.onClose(event, reason);\r\n };\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};","import CloseIcon from \"@mui/icons-material/Close\";\r\nimport {\r\n Box,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n IconButton,\r\n PaperProps,\r\n Tooltip,\r\n} from \"@mui/material\";\r\nimport React, { ReactNode, useCallback } from \"react\";\r\nimport { ConfirmationButton } from \"../../Button/ConfirmationButton\";\r\nimport { DangerButton } from \"../../Button/DangerButton\";\r\nimport { DraggablePaper } from \"../DraggablePaper\";\r\nimport { AppBaseDialog } from \"../AppBaseDialog\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\nexport interface IDialogButton {\r\n title?: any;\r\n disabled?: boolean;\r\n tooltip?: string;\r\n icon?: ReactNode;\r\n variant?: \"text\" | \"outlined\" | \"contained\" | \"confirmation\" | \"danger\";\r\n color?: string;\r\n onClick: (id?: string) => void;\r\n}\r\n\r\nexport interface DialogProps {\r\n id: string;\r\n open?: boolean;\r\n hide?: boolean;\r\n disableEnforceFocus?: boolean;\r\n dataId?: string;\r\n maxHeight?: number | string;\r\n maxWidth?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"xxl\";\r\n title: string | ReactNode;\r\n body: string | ReactNode;\r\n buttons?: IDialogButton[];\r\n actions?: ReactNode | ReactNode[];\r\n centerOnResize?: boolean;\r\n dialogTabs?: ReactNode;\r\n overflowY?: \"visible\" | \"hidden\" | \"auto\";\r\n onClose?: () => void;\r\n}\r\n\r\nexport const Dialog = ({\r\n id,\r\n open = true,\r\n title,\r\n body,\r\n buttons,\r\n actions,\r\n dataId,\r\n maxWidth = \"sm\",\r\n maxHeight,\r\n centerOnResize,\r\n dialogTabs,\r\n overflowY = \"auto\",\r\n onClose = null,\r\n disableEnforceFocus\r\n}: DialogProps) => {\r\n const getPaper = useCallback(\r\n (props: PaperProps) => (\r\n \r\n ),\r\n [id, maxHeight]\r\n );\r\n\r\n return (\r\n \r\n \r\n {title}\r\n \r\n theme.palette.grey[500],\r\n }}\r\n >\r\n \r\n \r\n {dialogTabs ? {dialogTabs} : null}\r\n \r\n \r\n {body}\r\n \r\n \r\n {(buttons || actions) && (\r\n \r\n {buttons &&\r\n buttons.length &&\r\n buttons\r\n .filter((button) => !!button.onClick)\r\n .map((button, i) => (\r\n \r\n \r\n {button.variant === \"confirmation\" && (\r\n button.onClick()}\r\n disabled={button.disabled}\r\n >\r\n {button.title}\r\n \r\n )}\r\n {button.variant === \"danger\" && (\r\n \r\n button.onClick()}\r\n disabled={button.disabled}\r\n >\r\n {button.title}\r\n \r\n \r\n )}\r\n {button.variant !== \"danger\" &&\r\n button.variant !== \"confirmation\" && (\r\n button.onClick()}\r\n startIcon={button.icon}\r\n disabled={button.disabled}\r\n >\r\n {button.title}\r\n \r\n )}\r\n \r\n \r\n ))}\r\n {actions || null}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport const CkEditorDialog = (props: DialogProps) => (\r\n \r\n);","import { Grid, GridProps } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\nexport const GridRow = (props: GridProps) => (\r\n \r\n {props.children}\r\n \r\n);\r\n","// AvatarName\r\n// ***********************************************************************************************************************\r\nimport CircleIcon from \"@mui/icons-material/Circle\";\r\nimport { Box, Tooltip, Typography } from \"@mui/material\";\r\nimport React, { ReactNode } from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\nexport interface IAvatarNameProp {\r\n classes?: string;\r\n code?: string;\r\n date?: number;\r\n name: string;\r\n picture: string;\r\n suffixElement?: ReactNode;\r\n}\r\n\r\nexport class AvatarName extends React.Component {\r\n render() {\r\n const props = this.props;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {(props.name ?? \"\")}\r\n \r\n {props.date && (\r\n \r\n )}\r\n \r\n {(props.date ? Base.timeToDateStr(props.date) : \"\")}\r\n \r\n \r\n \r\n {props.suffixElement}\r\n \r\n );\r\n }\r\n}","// ModifyUserInfo\r\n// ***********************************************************************************************************************\r\nimport React, { ReactNode } from \"react\";\r\nimport { IModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { AvatarName } from \"../AvatarName\";\r\n\r\nexport interface IModifyUserInfoProp {\r\n classes?: string;\r\n modifyUser: IModifyUser;\r\n suffixElement?: ReactNode;\r\n}\r\n\r\nexport class ModifyUserInfo extends React.Component {\r\n render() {\r\n const props = this.props;\r\n if (!props.modifyUser || !props.modifyUser.date) return null;\r\n const modifyUser = props.modifyUser;\r\n return (\r\n \r\n );\r\n }\r\n}","// UserChangePasswordDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as userService from \"../../../models/services/userService\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { FormField } from \"../../framework/FormField\";\r\n\r\n//UserChangePasswordDialog\r\nexport interface IUserChangePasswordDialogProp {\r\n classes?: string;\r\n minPasswordLength: number;\r\n rowId: string;\r\n onOk: (rowId: string) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IUserChangePasswordDialogState {\r\n oldPassword: string;\r\n newPassword: string;\r\n newPasswordConfirmation: string;\r\n}\r\n\r\nexport class UserChangePasswordDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IUserChangePasswordDialogProp) {\r\n super(props);\r\n this.state = {\r\n oldPassword: \"\",\r\n newPassword: \"\",\r\n newPasswordConfirmation: \"\",\r\n };\r\n const saveData = this.getSaveDataFromState(props, this.state);\r\n this.orgStateHash = saveData.hash;\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"o_p\") {\r\n this.setState({ oldPassword: value });\r\n } else if (name === \"n_p\") {\r\n this.setState({ newPassword: value });\r\n } else if (name === \"n_pc\") {\r\n this.setState({ newPasswordConfirmation: value });\r\n }\r\n };\r\n\r\n getSaveDataFromState = (props: IUserChangePasswordDialogProp, state: IUserChangePasswordDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"rowId\", props.rowId);\r\n result.append(\"oldPassword\", state.oldPassword);\r\n result.append(\"newPassword\", state.newPassword);\r\n result.append(\"newPasswordConfirmation\", state.newPasswordConfirmation);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.oldPassword) {\r\n AppUtils.showErrorMessage(Translations.PasswordMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (!state.newPassword) {\r\n AppUtils.showErrorMessage(Translations.NewPasswordMustBeDefined);\r\n return resolve(false);\r\n }\r\n const errorMessage = Base.isValidPassword(state.newPassword, this.props.minPasswordLength);\r\n if (errorMessage) {\r\n AppUtils.showErrorMessage(errorMessage);\r\n return resolve(false);\r\n }\r\n if (!state.newPasswordConfirmation || state.newPassword !== state.newPasswordConfirmation) {\r\n AppUtils.showErrorMessage(Translations.PasswordConfirmationDoesNotMatchPassword);\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = await AppUtils.callService(() => userService.changePassword(saveData.obj));\r\n if (!result) return;\r\n props.onOk(result.rowId);\r\n };\r\n\r\n handleSave = () => {\r\n this.saveToDb();\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.saveToDb();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n render() {\r\n const state = this.state;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n buttons={[\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: this.handleCancel },\r\n { title: Translations.Save, variant: \"confirmation\", onClick: this.handleSave },\r\n ]}\r\n onClose={this.handleCancel}/>\r\n );\r\n }\r\n}","import LockIcon from \"@mui/icons-material/Lock\";\r\nimport React from \"react\";\r\nimport { AppButton, IAppButtonProps } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\nexport const ChangePasswordButton = (props: IAppButtonProps) => (\r\n }\r\n {...props}\r\n >\r\n {props.children}\r\n \r\n);\r\n","// UserProfileDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Checkbox, FormControlLabel, Grid, MenuItem, Select, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/avatarImage\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { FileAttachment, IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { ConfirmationDialogResult, InstantMessageUserInvitationAcceptType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { SaveAttachmentBase64 } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/saveAttachmentBase64\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as userService from \"../../../models/services/userService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport { IUserProfileEditItem } from \"../../../models/user/userProfileEditItem\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { ModifyUserInfo } from \"../../framework/User/ModifyUserInfo\";\r\nimport { UserChangePasswordDialog } from \"../UserChangePasswordDialog/UserChangePasswordDialog\";\r\nimport { ChangePasswordButton } from \"source/components/framework/Button/ChangePasswordButton\";\r\n\r\n//UserProfileDialog\r\nexport interface IUserProfileDialogProp {\r\n sessionState: ISessionState;\r\n classes?: string;\r\n onRefreshSessionState: () => void;\r\n onOk: () => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IUserProfileDialogState {\r\n isLoading: boolean;\r\n file: IFileAttachment;\r\n picture: string;\r\n resetPicture: boolean;\r\n userProfile: IUserProfileEditItem;\r\n rowId: string;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n emailNotificationType: number;\r\n pushNotificationType: number;\r\n instantMessageUserInvitationAcceptType: number;\r\n showChangePasswordDialog: boolean;\r\n minPasswordLength: number;\r\n}\r\n\r\nexport class UserProfileDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IUserProfileDialogProp) {\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n userProfile: null,\r\n file: null,\r\n picture: \"\",\r\n resetPicture: false,\r\n rowId: \"\",\r\n firstName: \"\",\r\n lastName: \"\",\r\n email: \"\",\r\n emailNotificationType: 0,\r\n pushNotificationType: 0,\r\n instantMessageUserInvitationAcceptType: 0,\r\n showChangePasswordDialog: false,\r\n minPasswordLength: 8\r\n };\r\n }\r\n\r\n loadUserProfile = async () => {\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => userService.getUserProfileEdit(), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const userProfile = result.userProfile;\r\n const state = {\r\n ...this.state,\r\n userProfile,\r\n picture: userProfile.picture,\r\n resetPicture: !userProfile.picture,\r\n rowId: userProfile.rowId,\r\n firstName: userProfile.firstName,\r\n lastName: userProfile.lastName,\r\n email: userProfile.email,\r\n emailNotificationType: userProfile.emailNotificationType,\r\n pushNotificationType: userProfile.pushNotificationType,\r\n instantMessageUserInvitationAcceptType: userProfile.instantMessageUserInvitationAcceptType,\r\n minPasswordLength: result.minPasswordLength\r\n };\r\n this.setState(state);\r\n const saveData = await this.getSaveDataFromState(this.props, state);\r\n this.orgStateHash = saveData.hash;\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadUserProfile();\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"firstName\") {\r\n this.setState({ firstName: value });\r\n } else if (name === \"lastName\") {\r\n this.setState({ lastName: value });\r\n } else if (name === \"email\") {\r\n this.setState({ email: value });\r\n } else if (name === \"instantMessageUserInvitationAcceptType\") {\r\n this.setState({ instantMessageUserInvitationAcceptType: value.toInteger() });\r\n }\r\n };\r\n\r\n handleSetPicture = async (file: File) => {\r\n if (!file) return;\r\n const attachment = await FileAttachment.fileToFileAttachment(file, 0);\r\n if (!attachment) return;\r\n if (!AppUtils.validateFileAttachment(attachment)) return;\r\n this.setState({ file: attachment, resetPicture: false, picture: attachment.thumbnail });\r\n };\r\n\r\n handleRemovePicture = () => {\r\n this.setState({ file: null, resetPicture: true, picture: \"\" });\r\n };\r\n\r\n handleOnChangePassword = () => {\r\n this.setState({\r\n showChangePasswordDialog: true\r\n });\r\n };\r\n\r\n handleUserChangePasswordDialogOk = (rowId: string) => {\r\n this.setState({\r\n showChangePasswordDialog: false,\r\n rowId\r\n });\r\n this.orgStateHash = SaveDataObj.updateHashValue(this.orgStateHash, \"rowId\", rowId);\r\n };\r\n\r\n handleUserChangePasswordDialogCancel = () => {\r\n this.setState({\r\n showChangePasswordDialog: false\r\n });\r\n };\r\n\r\n getSaveDataFromState = async (props: IUserProfileDialogProp, state: IUserProfileDialogState): Promise => {\r\n const result = new SaveDataObj();\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"firstName\", state.firstName);\r\n result.append(\"lastName\", state.lastName);\r\n result.append(\"email\", state.email);\r\n result.append(\"emailNotificationType\", state.emailNotificationType);\r\n result.append(\"pushNotificationType\", state.pushNotificationType);\r\n result.append(\"instantMessageUserInvitationAcceptType\", state.instantMessageUserInvitationAcceptType);\r\n result.append(\"resetImage\", state.resetPicture);\r\n if (state.file) {\r\n result.append(\"attachments\", await SaveAttachmentBase64.fromFileAttachments([state.file]));\r\n }\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.firstName) {\r\n AppUtils.showErrorMessage(Translations.FirstNameMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (!state.lastName) {\r\n AppUtils.showErrorMessage(Translations.LastNameMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (!Base.isValidEmailAddress(state.email)) {\r\n AppUtils.showErrorMessage(Translations.EmailAddressMustBeValid);\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return;\r\n const saveData = await this.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = await AppUtils.callService(() => userService.saveUserProfile(saveData.obj));\r\n if (!result) return;\r\n props.onRefreshSessionState();\r\n props.onOk();\r\n };\r\n\r\n handleSave = () => {\r\n this.saveToDb();\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel((await this.getSaveDataFromState(props, state)).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.saveToDb();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.userProfile) return null;\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n { store.customStore.dispatch(storeActions.showErrorMessage(message)); }}\r\n />\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0}\r\n onChange={(_e, checked: boolean) => {\r\n this.setState({ emailNotificationType: checked ? 1 : 0 });\r\n }}\r\n />\r\n }\r\n slotProps={{ typography: { variant: \"body2\" } }}\r\n />\r\n 0}\r\n onChange={(_e, checked: boolean) => {\r\n this.setState({ pushNotificationType: checked ? 1 : 0 });\r\n }}\r\n />\r\n }\r\n slotProps={{ typography: { variant: \"body2\" } }}\r\n />\r\n \r\n \r\n \r\n {props.sessionState.canUseInstantMessages &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n {Translations.ChangePassword}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {state.showChangePasswordDialog &&\r\n \r\n }\r\n \r\n }\r\n buttons={[\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: this.handleCancel },\r\n { title: Translations.Save, variant: \"confirmation\", onClick: this.handleSave },\r\n ]}\r\n onClose={this.handleCancel}/>\r\n );\r\n }\r\n}","import * as React from \"react\";\r\n\r\nexport const SvgFlagEn = ({\r\n ...props\r\n}: React.SVGProps) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);","import * as React from \"react\";\r\n\r\nexport const SvgFlagFi = ({\r\n ...props\r\n}: React.SVGProps) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n);","import React from \"react\";\r\n\r\nexport const SvgReport = ({\r\n ...props\r\n}: React.SVGProps) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);","import * as React from \"react\";\r\n\r\nexport const SvgReportSmall = ({ ...props }: React.SVGProps) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n","import * as React from \"react\";\r\nimport { MouseEvent } from \"react\";\r\nimport { Box, Divider, ListItemIcon, ListItemText, Menu, MenuItem } from \"@mui/material\";\r\nimport { IDropdownAction } from \"../../Dropdown/Dropdown\";\r\n\r\nexport interface IToolButtonDropdownMenuProp {\r\n anchorEl: null | HTMLElement;\r\n actions: IDropdownAction[];\r\n onClose: () => void;\r\n}\r\n\r\nexport const ToolButtonDropdownMenu = (props: IToolButtonDropdownMenuProp) => {\r\n const menuOpen = Boolean(props.anchorEl);\r\n\r\n const handleCloseMenu = () => {\r\n props.onClose();\r\n };\r\n\r\n const handleActionClick = (event: MouseEvent, action: IDropdownAction) => {\r\n if (!action) return;\r\n if (action.disabled) return;\r\n handleCloseMenu();\r\n action.onClick();\r\n };\r\n \r\n return (\r\n e.stopPropagation() }>\r\n \r\n {props.actions.map((action, index) => action.onClick && (\r\n action.divider\r\n ? \r\n : ( handleActionClick(event, action)} disabled={action.disabled}>\r\n {action.icon && {action.icon}}\r\n {action.title}\r\n )\r\n ))}\r\n \r\n \r\n );\r\n};","import ExpandLessIcon from \"@mui/icons-material/ExpandLess\";\r\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\r\nimport { Button, IconButton, ListItemText, Tooltip } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { MouseEvent, ReactNode, useEffect, useState } from \"react\";\r\nimport { IDropdownAction } from \"../../dropdown\";\r\nimport { ToolButtonDropdownMenu } from \"../ToolButtonDropdownMenu\";\r\n\r\nexport interface IToolButtonDropdownProp {\r\n actions: IDropdownAction[];\r\n variant?: \"text\" | \"outlined\" | \"contained\" | \"icon\" | \"danger\";\r\n icon?: ReactNode;\r\n endIcon?: ReactNode;\r\n fullWidth?: boolean;\r\n buttonClasses?: string;\r\n classes?: string;\r\n disabled?: boolean;\r\n menuRight?: boolean; //TODO: IMPLEMENT RELATIVE POSITION TO RIGHT FROM THE BUTTON\r\n removeDefaultClasses?: boolean;\r\n stopPropagation?: boolean;\r\n title?: string | ReactNode;\r\n tooltip?: string;\r\n margin?: string | number;\r\n size?: \"small\" | \"medium\" | \"large\";\r\n getActions?: () => Promise;\r\n}\r\n\r\nexport interface IToolButtonDropdownState {\r\n open: boolean;\r\n}\r\n\r\nexport const ToolButtonDropdown = ({ actions, variant = \"icon\", icon, disabled, title, tooltip, fullWidth = false, margin, size = \"medium\", getActions }: IToolButtonDropdownProp) => {\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n const [state, setState] = useState({ open: false, actions: [] });\r\n\r\n useEffect(() => {\r\n setState({ open: Boolean(anchorEl), actions });\r\n }, [actions]);\r\n\r\n const handleToggleClick = async (event: MouseEvent) => {\r\n const element = event.currentTarget;\r\n setAnchorEl(event.currentTarget);\r\n if (!getActions) {\r\n setState((old) => ({\r\n ...old,\r\n open: Boolean(element)\r\n }));\r\n return;\r\n }\r\n const result = await getActions();\r\n if (!result) return;\r\n setState({ open: Boolean(element), actions: result });\r\n };\r\n\r\n // const handleClose = () => {\r\n // setAnchorEl(null);\r\n // };\r\n\r\n // const handleActionClick = (event: MouseEvent, action: IDropdownAction) => {\r\n // if (!action) return;\r\n // if (action.disabled) return;\r\n // action.onClick();\r\n // handleClose();\r\n // };\r\n\r\n return (\r\n
\r\n \r\n <>\r\n {variant !== \"icon\" && (\r\n : }\r\n sx={{ margin }}\r\n size={size}\r\n >\r\n {title}\r\n \r\n )}\r\n {variant === \"icon\" && (\r\n \r\n {icon}\r\n \r\n )}\r\n \r\n \r\n setAnchorEl(null)}\r\n />\r\n {/* \r\n {state.actions.map((action, index) => action.onClick && (\r\n action.divider\r\n ? \r\n : ( handleActionClick(event, action)} disabled={action.disabled}>\r\n {action.icon && {action.icon}}\r\n {action.title}\r\n )\r\n ))}\r\n */}\r\n
\r\n );\r\n};\r\n","import LogoutIcon from \"@mui/icons-material/Logout\";\r\nimport PersonIcon from \"@mui/icons-material/Person\";\r\nimport { Stack, SvgIcon } from \"@mui/material\";\r\nimport React, { useState } from \"react\";\r\nimport * as frontService from \"source/models/services/frontService\";\r\nimport { UserProfileDialog } from \"source/components/user/UserProfileDialog/UserProfileDialog\";\r\nimport { IAppSessionState } from \"source/models/store/storeTypes\";\r\nimport { SvgFlagEn, SvgFlagFi } from \"source/shared/icons\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { ToolButtonDropdown } from \"ui/Scripts/source/components/framework/Button/ToolButtonDropdown\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { CultureCode } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\n\r\nexport interface IUserMenuProp {\r\n appState: IAppSessionState;\r\n onLogout: () => void;\r\n onNavigateOutCheck?: () => Promise;\r\n onSetCulture: (culture: string) => void;\r\n onRefreshSessionState: () => void;\r\n}\r\n\r\nexport const UserMenu = (props: IUserMenuProp) => {\r\n const [showUserProfileDialog, setShowUserProfileDialog] = useState(false);\r\n \r\n const sessionState = props.appState?.state;\r\n\r\n const handleUserProfileClick = () => {\r\n if (!props.appState?.state?.canUseSystem()) return;\r\n setShowUserProfileDialog(true);\r\n };\r\n\r\n const handleUserProfileDialogOk = () => {\r\n setShowUserProfileDialog(false);\r\n };\r\n\r\n const handleUserProfileDialogCancel = () => {\r\n setShowUserProfileDialog(false);\r\n };\r\n\r\n const canNavigateOut = async (): Promise => {\r\n if (!props.onNavigateOutCheck) return Base.getPromiseResult(true);\r\n return await props.onNavigateOutCheck();\r\n };\r\n\r\n const handleLogOutClick = () => {\r\n canNavigateOut().then((result) => {\r\n if (!result) return;\r\n if (!props.onLogout) return;\r\n props.onLogout();\r\n });\r\n };\r\n\r\n const changeCompany = async (companyId: string) => {\r\n const result = await AppUtils.callService(() => frontService.setActiveCompany(companyId));\r\n if (!result) return;\r\n window.location.href = appConfig.rootUrl + \"Front\";\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n {appConfig.culture === \"fi\" ? : }\r\n \r\n }\r\n actions={[\r\n {\r\n title: Translations.LanguageFinnish,\r\n onClick: () => props.onSetCulture(CultureCode.Fi),\r\n icon: (\r\n \r\n \r\n \r\n ),\r\n disabled: !sessionState.canUseSystem(),\r\n },\r\n {\r\n title: Translations.LanguageEnglish,\r\n onClick: () => props.onSetCulture(CultureCode.En),\r\n icon: (\r\n \r\n \r\n \r\n ),\r\n },\r\n ]}\r\n />\r\n {!sessionState.isSuperAdmin && sessionState.allowedCompanies.length > 1 &&\r\n }\r\n actions={sessionState.allowedCompanies.map((company) => {\r\n return {\r\n title: company.name,\r\n icon: ,\r\n onClick: () => changeCompany(company.id)\r\n };\r\n })}\r\n />\r\n }\r\n \r\n }\r\n actions={[\r\n {\r\n title: Translations.UserProfile,\r\n onClick: handleUserProfileClick,\r\n icon: ,\r\n disabled: !sessionState.canUseSystem(),\r\n },\r\n {\r\n title: Translations.LogOut,\r\n onClick: handleLogOutClick,\r\n icon: ,\r\n },\r\n ]}\r\n />\r\n \r\n {showUserProfileDialog && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n","import { Box, BoxProps } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\nexport const PageContainer = (props: BoxProps) => (\r\n \r\n {props.children}\r\n \r\n);\r\n","import { Box, BoxProps } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\nexport const PageContent = (props: BoxProps) => (\r\n \r\n {props.children}\r\n \r\n);\r\n","import { Box } from \"@mui/material\";\r\nimport React, { ReactNode } from \"react\";\r\n\r\ninterface PageTopBarProps {\r\n children?: ReactNode;\r\n justiftContent?: \"space-between\" | \"flex-end\";\r\n}\r\n\r\nexport const PageTopBar = ({ children, justiftContent = \"flex-end\" }: PageTopBarProps) => (\r\n \r\n {children}\r\n \r\n);\r\n","// eslint-disable-next-line no-unused-vars\r\nimport * as React from \"react\";\r\nimport styled from \"@emotion/styled\";\r\nimport { Typography, Tabs as MuiTabs } from \"@mui/material\";\r\n\r\nexport const Tabs = styled(MuiTabs)`\r\n .MuiTabs-scroller {\r\n max-width: calc(100vw - 912px);\r\n }\r\n`;\r\n\r\nexport const TabLabel = styled(Typography)`\r\n overflow: hidden;\r\n text-overflow: ellipsis; \r\n white-space: nowrap;\r\n max-width: 150px;\r\n`;","import { Tab, Tooltip } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { IListFilterItem } from \"../../../../models/common/listFilterItem\";\r\nimport * as Styled from \"./FilterTabs.styles\";\r\n\r\ninterface FilterTabsProps {\r\n items: IListFilterItem[];\r\n standardFilters: IListFilterItem[];\r\n selectedId?: string;\r\n selectedSavedId?: string;\r\n onSetActiveItem: (reportId: string) => void;\r\n onSetActiveStandardItem: (reportId: string) => void;\r\n}\r\n\r\nexport const FilterTabs = ({ items, standardFilters, selectedId, selectedSavedId, onSetActiveItem, onSetActiveStandardItem }: FilterTabsProps) => {\r\n return (\r\n \r\n {(standardFilters && standardFilters.length) && standardFilters.map(item => (\r\n onSetActiveStandardItem(item.id)} />\r\n ))}\r\n {(items && items.length) && items.map(item => (\r\n 20 ? {item.title} : item.title} onClick={() => onSetActiveItem(item.id)} />\r\n ))}\r\n \r\n );\r\n};\r\n","// eslint-disable-next-line no-unused-vars\r\nimport * as React from \"react\";\r\nimport { MenuItem as MuiMenuItem, styled } from \"@mui/material\";\r\n\r\nexport const MenuItem = styled(MuiMenuItem)(\r\n ({ theme }) => `\r\n &.Mui-selected { \r\n border-right: 3px solid ${theme.palette.primary.main}; \r\n }\r\n `\r\n);\r\n","import { ListItemText } from \"@mui/material\";\r\nimport React, { ReactNode } from \"react\";\r\nimport * as Styled from \"./PageNavMenuItem.styles\";\r\n\r\nexport interface IPageNavMenuItemProp {\r\n classes?: string;\r\n hidden?: boolean;\r\n isActive: boolean;\r\n title: string | ReactNode;\r\n subElement?: ReactNode;\r\n stopPropagation?: boolean;\r\n onToggleMenuItem: () => void;\r\n}\r\n\r\nexport class PageNavMenuItem extends React.Component {\r\n handleClick = (e) => {\r\n const props = this.props;\r\n if (props.stopPropagation) {\r\n e.stopPropagation();\r\n }\r\n props.onToggleMenuItem();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n if (props.hidden) return null;\r\n return (\r\n \r\n {props.title}\r\n {props.subElement}\r\n \r\n );\r\n }\r\n}","import { List } from \"@mui/material\";\r\nimport React, { ReactNode } from \"react\";\r\nimport { PageNavMenuItem } from \"../PageNavMenuItem\";\r\n\r\nexport interface IPageNavMenuItem {\r\n classes?: string;\r\n hidden?: boolean;\r\n id: string;\r\n title: string | ReactNode;\r\n subElement?: ReactNode;\r\n}\r\n\r\nexport interface IPageNavMenuItemsProp {\r\n classes?: string;\r\n activeId: string;\r\n items: IPageNavMenuItem[];\r\n onToggleMenuItem: (id: string) => void;\r\n}\r\n\r\nexport class PageNavMenuItems extends React.Component {\r\n render() {\r\n const props = this.props;\r\n return (\r\n \r\n {props.items.map((item) =>\r\n \r\n );\r\n }\r\n}","import { Typography } from \"@mui/material\";\r\nimport React, { ReactNode } from \"react\";\r\n\r\nexport interface IPanelTitleProp {\r\n title: string | ReactNode;\r\n classes?: string;\r\n}\r\n\r\nexport const PanelTitle = ({ title, classes }: IPanelTitleProp) => (\r\n \r\n {title}\r\n \r\n);\r\n","import { Alert, Card, CardContent } from \"@mui/material\";\r\nimport React, { ReactNode } from \"react\";\r\nimport { PanelTitle } from \"../../Panel/PanelTitle\";\r\n\r\ninterface DialogSettingsCardProps {\r\n title?: string;\r\n info?: string;\r\n cardContent?: ReactNode;\r\n content?: ReactNode;\r\n showCard?: boolean;\r\n}\r\n\r\nexport const DialogSettingsCard = ({\r\n title,\r\n info,\r\n cardContent,\r\n content,\r\n showCard = true,\r\n}: DialogSettingsCardProps) => (\r\n \r\n \r\n {title ? : null}\r\n {info ? {info} : null}\r\n {cardContent}\r\n \r\n {content}\r\n \r\n);\r\n","import { Tooltip } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\ninterface IListStateIconProps {\r\n tooltip: string;\r\n icon: React.ElementType;\r\n color?: string;\r\n noMargin?: boolean;\r\n onClick?: () => void;\r\n}\r\n\r\nexport const ListStateIcon = (props: IListStateIconProps) => {\r\n const Icon = props.icon;\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","import BuildIcon from \"@mui/icons-material/Build\";\r\nimport React from \"react\";\r\nimport { ListStateIcon } from \"../ListStateIcon/ListStateIcon\";\r\n\r\ninterface ListStateIconToolProps {\r\n color?: string;\r\n noMargin?: boolean;\r\n tooltip?: string;\r\n }\r\n \r\nexport const ListStateIconTool = ({\r\n noMargin,\r\n tooltip,\r\n color,\r\n}: ListStateIconToolProps) => (\r\n \r\n);\r\n","// UnitPermissionTree\r\n// ***********************************************************************************************************************\r\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\r\nimport HomeIcon from \"@mui/icons-material/Home\";\r\nimport { Box, Grid, ListItemButton, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ListStateIconTool } from \"source/components/framework/List/ListStateIconTool\";\r\nimport { EnumHelper, GroupPermissionLevel } from \"ui/Scripts/source/models/enums\";\r\nimport { IUnitNode } from \"../../../../models/unit/unitNode\";\r\n\r\nexport interface IUnitPermissionTreeProp {\r\n classes?: string;\r\n level?: number;\r\n unitNode: IUnitNode;\r\n selectedId?: string;\r\n isFirstNode: boolean;\r\n accessRightNoneTitle: string;\r\n accessRightReadTitle: string;\r\n accessRightWriteTitle: string;\r\n additionalPermissionTitle: string[];\r\n height?: string | number;\r\n getAdditionalPermissionInUse: (permission: number, additionalPermissionIndex: number) => boolean;\r\n onClick: (id: string) => void;\r\n onOpen: (id: string) => void;\r\n}\r\n\r\nexport class UnitPermissionTree extends React.Component {\r\n static defaultProps = {\r\n height: \"calc(100vh - 462px)\"\r\n };\r\n\r\n handleUnitNodeClick = (e) => {\r\n const props = this.props;\r\n e.stopPropagation();\r\n props.onClick(props.unitNode.id);\r\n };\r\n \r\n handleUnitNodeDoubleClick = (e) => {\r\n const props = this.props;\r\n if (e) {\r\n e.stopPropagation();\r\n }\r\n props.onOpen(props.unitNode.id);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const unitNode = props.unitNode;\r\n if (!unitNode) return null;\r\n const hasChildren = unitNode.children.length > 0;\r\n const hasVisibleChildren = hasChildren;\r\n const isRoot = unitNode.getIsRoot();\r\n let selectedId = props.selectedId;\r\n if (!props.selectedId && isRoot) {\r\n selectedId = unitNode.id;\r\n }\r\n const permission = unitNode.permission.permission;\r\n const permissionText = (EnumHelper.isGreaterOrEqualThan(permission, GroupPermissionLevel.Write)\r\n ? props.accessRightWriteTitle\r\n : (EnumHelper.isEqual(permission, GroupPermissionLevel.Read) ? props.accessRightReadTitle : props.accessRightNoneTitle)) +\r\n (props.getAdditionalPermissionInUse(permission, 0) && unitNode.permission.additionalPermissionA > 0 ? \" + \" + props.additionalPermissionTitle[0] : \"\") +\r\n (props.getAdditionalPermissionInUse(permission, 1) && unitNode.permission.additionalPermissionB > 0 ? \" + \" + props.additionalPermissionTitle[1] : \"\") +\r\n (props.getAdditionalPermissionInUse(permission, 2) && unitNode.permission.additionalPermissionC > 0 ? \" + \" + props.additionalPermissionTitle[2] : \"\");\r\n return (\r\n \r\n 0 ? \" hasPartners\" : \"\")}\r\n onClick={this.handleUnitNodeClick}\r\n onDoubleClick={this.handleUnitNodeDoubleClick}\r\n >\r\n \r\n \r\n \r\n {(!isRoot && !props.isFirstNode) &&\r\n <>\r\n {hasVisibleChildren\r\n ? (\r\n \r\n )\r\n : (\r\n \r\n )}\r\n \r\n }\r\n \r\n \r\n \r\n {unitNode.name}\r\n \r\n {unitNode.partnerCompanyIds.length > 0 && *}\r\n \r\n \r\n \r\n this.handleUnitNodeDoubleClick(null)}>\r\n {unitNode.permission.isExplicitPermission &&\r\n \r\n }\r\n {permissionText\r\n ? \r\n {permissionText}\r\n \r\n : \" \"}\r\n \r\n \r\n \r\n \r\n {unitNode.children.map((childUnitNode) =>\r\n \r\n )}\r\n \r\n );\r\n }\r\n}","import { Box } from \"@mui/material\";\r\nimport React, { ReactNode } from \"react\";\r\n\r\nexport interface ActionContainerProps {\r\n leftItems?: ReactNode;\r\n rightItems?: ReactNode;\r\n margin?: string;\r\n}\r\n\r\nexport const ActionContainer = ({ leftItems, rightItems, margin = \"1rem 0\" }: ActionContainerProps) => {\r\n return (\r\n \r\n \r\n {leftItems}\r\n \r\n \r\n {rightItems}\r\n \r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { IconButton, IconButtonProps, Tooltip } from \"@mui/material\";\r\nimport { forwardRef, Ref, useRef } from \"react\";\r\n\r\ninterface IAppToolButtonProps extends IconButtonProps {\r\n tooltip?: string\r\n enableDoubleClickForOnClick?: boolean;\r\n icon: React.ReactNode;\r\n}\r\n\r\nexport const AppToolButton = forwardRef((props: IAppToolButtonProps, ref: Ref) => {\r\n const clickTimer = useRef(0);\r\n\r\n const clearPressTimer = () => {\r\n clearTimeout(clickTimer.current);\r\n clickTimer.current = 0;\r\n };\r\n \r\n const handleClick = (event: React.MouseEvent) => {\r\n if (clickTimer.current) return;\r\n clickTimer.current = window.setTimeout(() => {\r\n clearPressTimer();\r\n }, 500);\r\n props.onClick(event);\r\n };\r\n\r\n const buttonElement = {props.icon};\r\n\r\n if (props.tooltip) {\r\n return (\r\n \r\n \r\n {buttonElement}\r\n \r\n \r\n );\r\n }\r\n\r\n return (buttonElement);\r\n});\r\n\r\nAppToolButton.displayName = \"AppToolButton\";","import ContentCopyIcon from \"@mui/icons-material/ContentCopy\";\r\nimport { IconButtonProps } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppToolButton } from \"ui/Scripts/source/components/framework/Button/AppToolButton\";\r\n\r\ninterface ICopyToolButtonProps extends IconButtonProps {\r\n tooltip?: string;\r\n}\r\n\r\nexport const CopyToolButton = (props: ICopyToolButtonProps) => (\r\n }\r\n />\r\n);\r\n","import OpenInNewIcon from \"@mui/icons-material/OpenInNew\";\r\nimport { IconButtonProps } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppEditIcon } from \"../../Icon/AppEditIcon\";\r\nimport { AppToolButton } from \"ui/Scripts/source/components/framework/Button/AppToolButton\";\r\n\r\ntype IEditToolButtonProps = IconButtonProps & {\r\n openButton?: boolean\r\n tooltip?: string;\r\n}\r\n\r\nexport const EditToolButton = ({ openButton, tooltip, ...props }: IEditToolButtonProps) => (\r\n : }\r\n />\r\n);\r\n","import ContentPasteIcon from \"@mui/icons-material/ContentPaste\";\r\nimport { IconButtonProps } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppToolButton } from \"ui/Scripts/source/components/framework/Button/AppToolButton\";\r\n\r\ninterface IPasteToolButtonProps extends IconButtonProps {\r\n tooltip?: string;\r\n}\r\n\r\nexport const PasteToolButton = (props: IPasteToolButtonProps) => (\r\n }\r\n />\r\n);\r\n","import { Box } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { CopyToolButton } from \"source/components/framework/Button/CopyToolButton\";\r\nimport { EditToolButton } from \"source/components/framework/Button/EditToolButton\";\r\nimport { PasteToolButton } from \"source/components/framework/Button/PasteToolButton\";\r\n\r\ninterface ListIconButtonsPermissionProps {\r\n editTooltip?: string;\r\n copyTooltip?: string;\r\n pasteTooltip?: string;\r\n editDisabled?: boolean;\r\n copyDisabled?: boolean;\r\n pasteDisabled?: boolean;\r\n onEdit?: () => void;\r\n onCopy?: () => void;\r\n onPaste?: () => void;\r\n}\r\n\r\nexport const ListIconButtonsPermission = ({\r\n editTooltip,\r\n copyTooltip,\r\n pasteTooltip,\r\n editDisabled,\r\n copyDisabled,\r\n pasteDisabled,\r\n onEdit,\r\n onCopy,\r\n onPaste,\r\n}: ListIconButtonsPermissionProps) => (\r\n \r\n {onEdit && (\r\n \r\n )}\r\n {onCopy && (\r\n \r\n )}\r\n {onPaste && (\r\n \r\n )}\r\n \r\n);\r\n","import { Typography, TypographyProps } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\nexport const EllipsisTypography = (props: TypographyProps) => (\r\n \r\n {props.children}\r\n \r\n);\r\n","/* global JSX */\r\n// ListCardRow\r\n// ***********************************************************************************************************************\r\nimport { Grid } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { EllipsisTypography } from \"../../Typography/EllipsisTypography\";\r\n\r\n// ListCardValueRow\r\nexport interface IListCardColData {\r\n size?: number;\r\n style?: any;\r\n title?: string | JSX.Element;\r\n titleClasses?: string;\r\n value?: string | JSX.Element;\r\n valueClasses?: string;\r\n tooltip?: string;\r\n}\r\n\r\nexport interface IListCardRowData {\r\n style?: any;\r\n cols?: IListCardColData[];\r\n content?: string | JSX.Element;\r\n contentClasses?: string;\r\n tooltip?: string;\r\n}\r\n\r\nexport interface IListCardRowProp extends IListCardRowData {\r\n id?: string;\r\n checked?: boolean;\r\n index: number;\r\n onCheckboxChange?: (id: string, checked: boolean) => void;\r\n}\r\n\r\nexport class ListCardRow extends React.Component {\r\n handleCheckboxChange = (e) => {\r\n const props = this.props;\r\n e.stopPropagation();\r\n if (!props.id) return;\r\n props.onCheckboxChange(props.id, e.target.checked);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const stringContent = !!props.content && typeof props.content === \"string\";\r\n const cols = props.cols ? props.cols : [];\r\n return (\r\n \r\n {cols.map((col, i) =>\r\n \r\n {col.title\r\n ? (typeof col.title === \"string\"\r\n ? \r\n {!!props.onCheckboxChange && i === 0 &&\r\n \r\n }\r\n {col.title}\r\n \r\n : col.title)\r\n : null\r\n }\r\n {!Base.isNullOrUndefined(col.value)\r\n ? (typeof col.value === \"string\"\r\n ? {col.value}\r\n : col.value)\r\n : null\r\n }\r\n \r\n )}\r\n {props.content\r\n ? (stringContent\r\n ?
{props.content}
\r\n : props.content)\r\n : null\r\n }\r\n
\r\n );\r\n }\r\n}","import { Typography, TypographyProps } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\nexport const ClipTypography = (props: TypographyProps) => (\r\n \r\n {props.children}\r\n \r\n);\r\n","/* global JSX */\r\n// ListColumn\r\n// ***********************************************************************************************************************\r\nimport ArrowDownwardIcon from \"@mui/icons-material/ArrowDownward\";\r\nimport ArrowUpwardIcon from \"@mui/icons-material/ArrowUpward\";\r\nimport { Box, Checkbox, Grid } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ClipTypography } from \"../../Typography/ClipTypography\";\r\n\r\nexport interface IListColumnData {\r\n style?: any;\r\n styleClass?: string; //Used in task dynamic forms: list view and excel report\r\n content: string | JSX.Element;\r\n size?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\r\n tooltip?: string;\r\n padding?: string | number;\r\n hidden?: boolean;\r\n}\r\n\r\n// ListHeaderColumn\r\nexport interface IListHeaderColumnData extends IListColumnData {\r\n column?: string;\r\n defaultChecked?: boolean;\r\n}\r\n\r\nexport interface IListHeaderColumnProp extends IListHeaderColumnData {\r\n sortColumn?: string;\r\n sortOrderIsAsc?: boolean;\r\n defaultChecked?: boolean;\r\n onClick?: (column: string) => void;\r\n onCheckboxChange?: (column: string, checked: boolean) => void;\r\n}\r\n\r\nexport class ListHeaderColumn extends React.Component {\r\n static defaultProps = {\r\n padding: \"9px 0\"\r\n };\r\n\r\n handleClick = (e) => {\r\n const props = this.props;\r\n if (!props.column) return;\r\n e.preventDefault();\r\n e.stopPropagation();\r\n props.onClick(props.column);\r\n };\r\n\r\n handleCheckboxChange = (e) => {\r\n const props = this.props;\r\n e.stopPropagation();\r\n props.onCheckboxChange(props.column, e.target.checked);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const spanClass = props.sortColumn ? (\"sort \" + (props.column === props.sortColumn ? (props.sortOrderIsAsc ? \"asc\" : \"desc\") : \"\")) : \"\";\r\n return (\r\n \r\n \r\n {!!props.onCheckboxChange &&\r\n \r\n }\r\n {(typeof props.content === \"string\"\r\n ? {props.content}\r\n : props.content)\r\n }\r\n {props.sortColumn === props.column && props.sortOrderIsAsc && (\r\n \r\n )}\r\n {props.sortColumn === props.column && !props.sortOrderIsAsc && (\r\n \r\n )}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\n// ListValueColumn\r\nexport interface IListValueColumnData extends IListColumnData {\r\n disabled?: boolean;\r\n errors?: string[];\r\n}\r\n\r\nexport interface IListValueColumnProp extends IListValueColumnData {\r\n id?: string;\r\n checked?: boolean;\r\n valueClasses?: string;\r\n onValueClick?: (id: string) => void;\r\n onCheckboxChange?: (id: string, checked: boolean) => void;\r\n}\r\n\r\nexport class ListValueColumn extends React.Component {\r\n handleCheckboxChange = (e) => {\r\n const props = this.props;\r\n e.stopPropagation();\r\n if (!props.id) return;\r\n props.onCheckboxChange(props.id, e.target.checked);\r\n };\r\n\r\n handleValueClick = (e) => {\r\n const props = this.props;\r\n if (!props.onValueClick) return;\r\n //e.stopPropagation();\r\n if (!props.id) return;\r\n props.onValueClick(props.id);\r\n };\r\n\r\n //To prevent react warning message\r\n handleChange = (e) => {\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const hasErrors = props.errors && props.errors.length > 0;\r\n let tooltip = props.tooltip ?? (typeof props.content === \"string\" ? props.content : \"\");\r\n if (hasErrors) {\r\n tooltip = props.errors.join(\",\");\r\n }\r\n return (\r\n \r\n \r\n {!!props.onCheckboxChange &&\r\n \r\n }\r\n {(typeof props.content === \"string\"\r\n ? {props.content}\r\n : props.content)\r\n }\r\n \r\n \r\n );\r\n }\r\n}","// eslint-disable-next-line no-unused-vars\r\nimport * as React from \"react\";\r\nimport { Card, CardProps, alpha, styled } from \"@mui/material\";\r\n\r\nexport const CardContainer = styled(Card)<\r\n CardProps & { selected?: boolean; disabled?: boolean }\r\n>(\r\n ({ theme, selected, disabled }) => `\r\n background-color: ${\r\n !disabled\r\n ? selected\r\n ? alpha(\r\n theme.palette.primary.main,\r\n theme.palette.action.selectedOpacity\r\n )\r\n : undefined\r\n : theme.palette.action.hover\r\n};\r\n cursor: pointer;\r\n text-decoration: ${disabled ? \"line-through\" : \"none\"};\r\n margin: .5rem;\r\n border: 1px solid;\r\n border-color: ${theme.palette.divider};\r\n\r\n &:hover {\r\n background: ${\r\n selected\r\n ? alpha(\r\n theme.palette.primary.main,\r\n theme.palette.action.selectedOpacity +\r\n theme.palette.action.hoverOpacity\r\n )\r\n : theme.palette.action.hover\r\n};\r\n }\r\n `\r\n);\r\n","/* global JSX */\r\n// ListLine\r\n// ***********************************************************************************************************************\r\nimport { Box, Card, CardContent, Grid, alpha } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IListCardRowData, ListCardRow } from \"../ListCardRow\";\r\nimport { IListHeaderColumnData, IListValueColumnData, ListHeaderColumn, ListValueColumn } from \"../ListColumn\";\r\nimport * as Styled from \"./ListLine.styles\";\r\n\r\n// ListHeaderLine\r\nexport interface IListHeaderLineData {\r\n classes?: string;\r\n defaultChecked?: boolean;\r\n columns: IListHeaderColumnData[];\r\n}\r\n\r\nexport interface IListHeaderLineProp {\r\n classes?: string;\r\n sortColumn?: string;\r\n sortOrderIsAsc?: boolean;\r\n defaultChecked?: boolean;\r\n columns: IListHeaderColumnData[];\r\n onClick?: (column: string) => void;\r\n onCheckboxChange?: (column: string, checked: boolean) => void;\r\n}\r\n\r\nexport class ListHeaderLine extends React.Component {\r\n render() {\r\n const props = this.props;\r\n // const lineClass = \"row headerLine line\" + (props.classes ? \" \" + props.classes : \"\");\r\n return (\r\n \r\n {props.columns.filter(i => !i.hidden).map((column, i) =>\r\n \r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\n// ListValueLine\r\nexport interface IListValueLineData {\r\n classes?: string;\r\n columns: IListValueColumnData[];\r\n details?: JSX.Element;\r\n hoverElement?: JSX.Element;\r\n id?: string;\r\n unselectable?: boolean;\r\n style?: any;\r\n}\r\n\r\nexport interface IListValueLineProp extends IListValueLineData {\r\n selected?: boolean;\r\n checked?: boolean;\r\n onCheckboxChange?: (column: string, checked: boolean) => void;\r\n onClick?: (id: string) => void;\r\n onDoubleClick?: (id: string) => void;\r\n onLongPress?: (id: string) => void;\r\n}\r\n\r\nexport interface IListValueLineState {\r\n hovered: boolean;\r\n}\r\n\r\nexport class ListValueLine extends React.Component {\r\n private pressTimer: number = 0;\r\n private startY: number = 0;\r\n private clickTimer: number = 0;\r\n \r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n hovered: false\r\n };\r\n }\r\n\r\n clearPressTimer = () => {\r\n clearTimeout(this.pressTimer);\r\n this.pressTimer = 0;\r\n };\r\n\r\n handleLinePress = (ev) => {\r\n const obj = this;\r\n // Get coordinates\r\n let y: number;\r\n if (ev.targetTouches) {\r\n // Prefer Touch Events\r\n y = ev.targetTouches[0].clientY;\r\n } else {\r\n // Either Mouse event or Pointer Event\r\n y = ev.clientY;\r\n }\r\n this.startY = y;\r\n // Set timer\r\n this.pressTimer = window.setTimeout(() => {\r\n // long press\r\n obj.clearPressTimer();\r\n obj.props.onLongPress(this.props.id);\r\n }, appConfig.longPressMs);\r\n };\r\n\r\n handleLineRelease = (ev) => {\r\n // short press\r\n if (this.pressTimer > 0) {\r\n this.clearPressTimer();\r\n // Calculate finger movement\r\n let lastY = 0;\r\n if (ev.changedTouches && ev.changedTouches.length > 0) {\r\n lastY = ev.changedTouches[ev.changedTouches.length - 1].clientY;\r\n } else if (ev.clientX) {\r\n lastY = ev.clientY;\r\n }\r\n const yDiff = this.startY - lastY;\r\n if (Math.abs(yDiff) < 10) {\r\n if (this.props.unselectable) return;\r\n this.props.onClick(this.props.id);\r\n }\r\n }\r\n };\r\n\r\n clearClickTimer = () => {\r\n clearTimeout(this.clickTimer);\r\n this.clickTimer = 0;\r\n };\r\n\r\n handleClick = () => {\r\n const props = this.props;\r\n if (props.unselectable) return;\r\n if (!props.onDoubleClick) {\r\n props.onClick(props.id);\r\n return;\r\n }\r\n if (this.clickTimer > 0) {\r\n this.clearClickTimer();\r\n props.onDoubleClick(props.id);\r\n return;\r\n }\r\n this.clickTimer = window.setTimeout(() => {\r\n this.clearClickTimer();\r\n props.onClick(props.id);\r\n }, 300);\r\n };\r\n \r\n render() {\r\n const props = this.props;\r\n const lineClass = \"row valueLine line\" + (props.selected ? \" selected\" : \"\") + (props.hoverElement ? \" hoverElement\" : \"\") + (this.state.hovered ? \" hovered\" : \"\") +\r\n (props.classes ? \" \" + props.classes : \"\") + (props.unselectable ? \" unselectable\" : \"\");\r\n const disabled = lineClass.includes(\"disabled\");\r\n const notNullColumns = props.columns.filter(i => !Base.isNullOrUndefined(i));\r\n if (!props.onLongPress) {\r\n const visibleColumns = notNullColumns.filter(i => !i?.hidden);\r\n return (\r\n this.setState({ hovered: true })}\r\n onMouseLeave={() => this.setState({ hovered: false })}\r\n sx={(theme) => ({\r\n \"borderBottom\": \"1px solid\",\r\n \"borderColor\": theme.palette.divider,\r\n \"padding\": !props.onCheckboxChange ? \"8.5px 0\" : 0,\r\n \"background\": disabled || props.unselectable\r\n ? theme.palette.action.hover\r\n : props.selected\r\n ? alpha(\r\n theme.palette.primary.main,\r\n theme.palette.action.selectedOpacity\r\n )\r\n : undefined,\r\n \"display\": \"flex\",\r\n \"flexWrap\": \"wrap\",\r\n \"cursor\": !props.unselectable\r\n ? \"pointer\"\r\n : \"default\",\r\n \"position\": \"relative\",\r\n \"textDecoration\": disabled ? \"line-through\" : \"none\",\r\n \"&:hover\": {\r\n \"background\": props.selected\r\n ? alpha(\r\n theme.palette.primary.main,\r\n theme.palette.action.selectedOpacity +\r\n theme.palette.action.hoverOpacity\r\n )\r\n : theme.palette.action.hover\r\n },\r\n ...props.style\r\n })}\r\n >\r\n \r\n {visibleColumns.map((column, i) =>\r\n j.errors && j.errors.length > 0)}\r\n key={i}\r\n onCheckboxChange={i === 0 ? props.onCheckboxChange : null}\r\n />\r\n )}\r\n {this.state.hovered && props.hoverElement &&\r\n <>\r\n {props.hoverElement}\r\n \r\n }\r\n \r\n {props.details &&\r\n e.stopPropagation()} sx={{ width: \"100%\", margin: \"10px 10px 0 10px\" }}>\r\n \r\n {props.details}\r\n \r\n \r\n }\r\n \r\n );\r\n } else {\r\n return (\r\n this.setState({ hovered: true })}\r\n onMouseLeave={(ev) => {\r\n this.handleLineRelease(ev);\r\n this.setState({ hovered: false });\r\n }}\r\n sx={(theme) => ({\r\n \"borderBottom\": \"1px solid\",\r\n \"borderColor\": theme.palette.divider,\r\n \"padding\": 0,\r\n \"background\": disabled || props.unselectable\r\n ? theme.palette.action.hover\r\n : undefined,\r\n \"display\": \"flex\",\r\n \"flexWrap\": \"wrap\",\r\n \"cursor\": \"pointer\",\r\n \"position\": \"relative\",\r\n \"textDecoration\": disabled ? \"line-through\" : \"none\",\r\n \"&:hover\": {\r\n \"background\": theme.palette.action.hover\r\n }\r\n })}\r\n >\r\n {notNullColumns.map((column, i) =>\r\n i.errors && i.errors.length > 0)}\r\n key={i}\r\n padding={props.onCheckboxChange ? 0 : \"9px 0\"}\r\n onCheckboxChange={i === 0 ? props.onCheckboxChange : null}\r\n />\r\n )}\r\n {this.state.hovered && props.hoverElement &&\r\n <>\r\n {props.hoverElement}\r\n \r\n }\r\n {props.details &&\r\n e.stopPropagation()} sx={{ width: \"100%\", margin: \"10px 1rem 0 1rem\" }}>\r\n \r\n {props.details}\r\n \r\n \r\n }\r\n \r\n );\r\n }\r\n }\r\n}\r\n\r\n// ListCard\r\nexport interface IListCardData {\r\n sm?: number;\r\n rows: IListCardRowData[];\r\n id?: string;\r\n subTitle?: string;\r\n}\r\n\r\nexport interface IListCardProp extends IListCardData {\r\n selected?: boolean;\r\n checked?: boolean;\r\n onCheckboxChange?: (column: string, checked: boolean) => void;\r\n onClick?: (id: string) => void;\r\n onDoubleClick?: (id: string) => void;\r\n onLongPress?: (id: string) => void;\r\n}\r\n\r\nexport class ListCard extends React.Component {\r\n private pressTimer: number = 0;\r\n private startY: number = 0;\r\n\r\n clearPressTimer = () => {\r\n clearTimeout(this.pressTimer);\r\n this.pressTimer = 0;\r\n };\r\n\r\n handleLinePress = (ev) => {\r\n const obj = this;\r\n // Get coordinates\r\n let y: number;\r\n if (ev.targetTouches) {\r\n // Prefer Touch Events\r\n y = ev.targetTouches[0].clientY;\r\n } else {\r\n // Either Mouse event or Pointer Event\r\n y = ev.clientY;\r\n }\r\n this.startY = y;\r\n // Set timer\r\n this.pressTimer = window.setTimeout(() => {\r\n // long press\r\n obj.clearPressTimer();\r\n obj.props.onLongPress(this.props.id);\r\n }, appConfig.longPressMs);\r\n };\r\n\r\n handleLineRelease = (ev) => {\r\n // short press\r\n if (this.pressTimer > 0) {\r\n this.clearPressTimer();\r\n // Calculate finger movement\r\n let lastY = 0;\r\n if (ev.changedTouches && ev.changedTouches.length > 0) {\r\n lastY = ev.changedTouches[ev.changedTouches.length - 1].clientY;\r\n } else if (ev.clientX) {\r\n lastY = ev.clientY;\r\n }\r\n const yDiff = this.startY - lastY;\r\n if (Math.abs(yDiff) < 10) {\r\n this.props.onClick(this.props.id);\r\n }\r\n }\r\n };\r\n \r\n render() {\r\n const props = this.props;\r\n if (props.subTitle) {\r\n return (\r\n ({\r\n \"marginTop\": \"1rem\",\r\n \"borderTop\": \"1px solid\",\r\n \"borderBottom\": \"1px solid\",\r\n \"borderColor\": theme.palette.divider,\r\n \"padding\": \"9px\",\r\n \"paddingLeft\": \"15px\",\r\n \"background\": theme.palette.action.hover,\r\n \"cursor\": \"default\",\r\n \"position\": \"relative\",\r\n \"width\": \"100%\"\r\n })}\r\n >\r\n {props.subTitle}\r\n \r\n );\r\n }\r\n const validRows = props.rows.filter(i => !Base.isNullOrUndefined(i));\r\n if (!props.onLongPress) {\r\n return (\r\n \r\n props.onClick(props.id) : null}\r\n onDoubleClick={props.onDoubleClick ? () => props.onDoubleClick(props.id) : null}\r\n >\r\n \r\n {validRows.map((row, i) =>\r\n \r\n )}\r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n {validRows.map((row, i) =>\r\n \r\n )}\r\n \r\n );\r\n }\r\n }\r\n}","import { Box, CircularProgress, alpha, circularProgressClasses } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\ninterface CircularLoadingProps {\r\n size?: \"sm\" | \"lg\";\r\n}\r\n\r\nexport const CircularLoading = ({ size = \"sm\" }: CircularLoadingProps) => {\r\n return (\r\n \r\n ({\r\n color: alpha(theme.palette.primary.main, 0.4),\r\n })}\r\n size={size === \"lg\" ? 80 : 40}\r\n value={100}\r\n />\r\n \r\n \r\n );\r\n};\r\n","import { Box } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { CircularLoading } from \"../CircularLoading\";\r\n\r\ninterface ILocalLoadingProps {\r\n size?: \"sm\" | \"lg\";\r\n}\r\n\r\nexport const LocalLoading = (props: ILocalLoadingProps) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","/* global JSX */\r\n// List\r\n// ***********************************************************************************************************************\r\n/// \r\nimport { Alert, Box, Grid } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base, IIdItem } from \"ui/Scripts/source/framework/base\";\r\nimport { IListCardData, IListHeaderLineData, IListValueLineData, ListCard, ListHeaderLine, ListValueLine } from \"../ListLine\";\r\nimport { LocalLoading } from \"../../Loading/LocalLoading\";\r\n\r\nexport interface IListUsingComponentState {\r\n items: T[];\r\n hasMore: boolean;\r\n selectedId: string;\r\n detailsItem: T;\r\n showEditDialog: boolean;\r\n editDialogId: string;\r\n editDialogHasPrevious: boolean;\r\n editDialogHasNext: boolean;\r\n}\r\n\r\n//type TListSetState = >(state: Pick, K>) => void;\r\n//type TListSetState = , P>(state: ((prevState: Readonly>, props: Readonly

) => (Pick, K> | IListUsingComponentState | null)) | (Pick, K> | IListUsingComponentState | null), callback?: () => void) => void;\r\n \r\ninterface IListProps {\r\n intialized: boolean;\r\n isLoading: boolean;\r\n hasMore: boolean;\r\n globalLoadingInUse?: boolean;\r\n header?: IListHeaderLineData;\r\n lines?: IListValueLineData[];\r\n customLines?: React.ReactNode[];\r\n lineDetails?: JSX.Element;\r\n noDataMessage?: string;\r\n noDataMessageThreshold?: number;\r\n cards?: IListCardData[];\r\n multiSelect?: boolean;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n doubleClickDisabled?: boolean;\r\n selectedId: string;\r\n checkedIds?: string[];\r\n selectedColumn?: string;\r\n height?: string;\r\n onSetSelectedIds: (selectedId: string, checkedIds: string[]) => void;\r\n onSearchLines: (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => void;\r\n onOpenLine?: (id: string) => void;\r\n onLongPress?: (id: string) => void;\r\n onColumnClick?: (column: string) => void;\r\n}\r\n\r\nexport interface IListState {\r\n lineDetailsVisible: boolean;\r\n}\r\n\r\nexport class List extends React.Component {\r\n private containerDiv: HTMLDivElement;\r\n private listDiv: HTMLDivElement;\r\n \r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n lineDetailsVisible: false\r\n };\r\n }\r\n\r\n handleScrollSub = Base.debounce((obj: List) => {\r\n const props = obj.props;\r\n if (props.isLoading || !props.hasMore) return;\r\n if (obj.listDiv.offsetHeight - (obj.containerDiv.clientHeight + obj.containerDiv.scrollTop) < 10) {\r\n props.onSearchLines(props.sortColumn, props.sortOrderIsAsc, true);\r\n }\r\n }, 100);\r\n \r\n handleScroll = (event) => {\r\n this.handleScrollSub(this);\r\n };\r\n\r\n componentDidMount(): void {\r\n this.containerDiv.addEventListener(\"scroll\", this.handleScroll);\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this.containerDiv.removeEventListener(\"scroll\", this.handleScroll);\r\n }\r\n\r\n static getListItems(stateItems: T[], stateSelectedId: string, stateCheckedIds: string[], dbItems: T[], resetItems: boolean, refreshList: boolean): { items: T[]; selectedId: string; checkedIds: string[]; } {\r\n let items: T[];\r\n if (!resetItems && !refreshList) {\r\n const oldIds = {};\r\n for (let j = 0; j < stateItems.length; j++) {\r\n oldIds[stateItems[j].id] = true;\r\n }\r\n const oldItems = stateItems.slice(0);\r\n const newItems = dbItems.filter(i => Object.prototype.isPrototypeOf.call(oldIds, i.id) ? false : (oldIds[i.id] = true));\r\n items = [...oldItems, ...newItems];\r\n } else {\r\n items = dbItems;\r\n }\r\n return {\r\n items,\r\n selectedId: items.findIndex(i => i.id === stateSelectedId) > -1 ? stateSelectedId : \"\",\r\n checkedIds: items.filter(i => stateCheckedIds.indexOf(i.id) > -1).map(i => i.id)\r\n };\r\n }\r\n\r\n static getSelectedIds = (selectedId: string, checkedIds: string[]): string[] => {\r\n let result = [];\r\n if (checkedIds && checkedIds.length > 0) {\r\n result = checkedIds.slice(0);\r\n } else if (selectedId) {\r\n result.push(selectedId);\r\n }\r\n return result;\r\n };\r\n\r\n // #region generic operations\r\n // static setState3 = >(state: Pick, K>) => {\r\n \r\n // };\r\n\r\n // static setState4 = (state: Pick, keyof IListUsingComponentState>) => {\r\n \r\n // };\r\n\r\n // static getStateChange = >(state: Pick, K>) => {\r\n // List.setState3({ showEditDialog: false, editDialogId: Base.emptyGuid });\r\n // List.setState4({ showEditDialog: false, editDialogId: Base.emptyGuid });\r\n // return { showEditDialog: true };\r\n // };\r\n\r\n static getShowEditDialogStateChange = >(state: IListUsingComponentState, id: string): Pick, K> => {\r\n const isNew = id === Base.emptyGuid;\r\n const index = isNew\r\n ? 0\r\n : state.items.findIndex(i => i.id === id);\r\n if (index < 0) return {} as Pick, K>;\r\n return {\r\n showEditDialog: true,\r\n editDialogId: id,\r\n editDialogHasPrevious: index > 0,\r\n editDialogHasNext: isNew ? false : index < state.items.length - 1 || state.hasMore,\r\n selectedId: isNew ? state.selectedId : id,\r\n detailsItem: isNew ? null : state.items[index]\r\n } as unknown as Pick, K>;\r\n };\r\n\r\n static getEditDialogItemByIndexStateChange = >(state: IListUsingComponentState, index: number, searchItems: () => void): Pick, K> => {\r\n if (index < 0) return {} as Pick, K>;\r\n if (index >= state.items.length) {\r\n if (!state.hasMore) return {} as Pick, K>;\r\n searchItems();\r\n return {} as Pick, K>;\r\n } else {\r\n return {\r\n selectedId: state.items[index].id,\r\n detailsItem: state.items[index],\r\n editDialogId: state.items[index].id,\r\n editDialogHasPrevious: index > 0,\r\n editDialogHasNext: index < state.items.length - 1 || state.hasMore\r\n } as unknown as Pick, K>;\r\n }\r\n };\r\n\r\n static moveToPrevious = (state: { selectedId: string, items: T[] }, setEditDialogItemByIndex: (index: number) => void): void => {\r\n if (!state.selectedId) return;\r\n const index = state.items.findIndex(i => i.id === state.selectedId);\r\n if (index < 0) return;\r\n setEditDialogItemByIndex(index - 1);\r\n };\r\n\r\n static moveToNext = (state: { selectedId: string, items: T[] }, setEditDialogItemByIndex: (index: number) => void): void => {\r\n if (!state.selectedId) return;\r\n const index = state.items.findIndex(i => i.id === state.selectedId);\r\n if (index < 0) return;\r\n setEditDialogItemByIndex(index + 1);\r\n };\r\n // #endregion generic operations\r\n\r\n // #region Header\r\n handleChangeSortColumn = (sortColumn: string) => {\r\n const props = this.props;\r\n const oldSortColumn = props.sortColumn;\r\n const sortOrderIsAsc = oldSortColumn === sortColumn ? !props.sortOrderIsAsc : true;\r\n if (props.onColumnClick) {\r\n props.onColumnClick(sortColumn);\r\n }\r\n props.onSearchLines(sortColumn, sortOrderIsAsc, false);\r\n };\r\n\r\n getIdsOnColumnCheckboxChange = (lines: IListValueLineData[], checked: boolean) => {\r\n let selectedId = \"\";\r\n let checkedIds: string[] = [];\r\n if (checked && lines && lines.length) {\r\n const validLines = lines.filter(i => !i.unselectable && !i.columns.find(j => j.errors && j.errors.length > 0));\r\n checkedIds = validLines.map(i => {\r\n return i.id;\r\n });\r\n selectedId = checkedIds[0];\r\n }\r\n return {\r\n selectedId,\r\n checkedIds\r\n };\r\n };\r\n\r\n getIdsOnLineCheckboxChange = (aSelectedId: string, aCheckedIds: string[], id: string, checked: boolean) => {\r\n let selectedId = aSelectedId;\r\n const checkedIds = aCheckedIds ? aCheckedIds.slice(0) : [];\r\n const index = checkedIds.indexOf(id);\r\n if (checked && index < 0) {\r\n checkedIds.push(id);\r\n } else if (!checked && index > -1) {\r\n checkedIds.splice(index, 1);\r\n }\r\n if (!checked && id === selectedId) {\r\n selectedId = \"\";\r\n }\r\n if (!selectedId && checkedIds.length === 1) {\r\n selectedId = checkedIds[0];\r\n }\r\n return {\r\n selectedId,\r\n checkedIds\r\n };\r\n };\r\n\r\n handleChangeColumnCheckbox = (column: string, checked: boolean) => {\r\n const props = this.props;\r\n const result = this.getIdsOnColumnCheckboxChange(props.lines, checked);\r\n props.onSetSelectedIds(result.selectedId, result.checkedIds);\r\n };\r\n // #endregion Header\r\n\r\n // #region Line\r\n handleLineClick = (id: string) => {\r\n const props = this.props;\r\n if (Base.isNullOrUndefined(id) || !props.onSetSelectedIds) return;\r\n props.onSetSelectedIds(id, props.checkedIds);\r\n this.setState({\r\n lineDetailsVisible: id !== props.selectedId ? true : !this.state.lineDetailsVisible\r\n });\r\n };\r\n\r\n handleChangeLineCheckbox = (id: string, checked: boolean) => {\r\n const props = this.props;\r\n if (!props.onSetSelectedIds) return;\r\n const result = this.getIdsOnLineCheckboxChange(props.selectedId, props.checkedIds, id, checked);\r\n props.onSetSelectedIds(result.selectedId, result.checkedIds);\r\n };\r\n // #endregion Line\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n {(!props.globalLoadingInUse && (!props.intialized || props.isLoading)) && (\r\n \r\n )}\r\n {props.header &&\r\n !Base.isNullOrUndefined(i) && !i.hidden).map(i => {\r\n return {\r\n style: i.style,\r\n content: i.content,\r\n size: i.size,\r\n tooltip: i.tooltip,\r\n column: i.column,\r\n styleClass: i.styleClass\r\n };\r\n })}\r\n onClick={this.handleChangeSortColumn}\r\n onCheckboxChange={props.multiSelect ? this.handleChangeColumnCheckbox : null}\r\n />\r\n }\r\n { this.containerDiv = elem; }}>\r\n { this.listDiv = elem as unknown as HTMLDivElement; }}>\r\n {(props.intialized && !!props.noDataMessage && (!props.lines || props.lines.length < (props.noDataMessageThreshold ?? 1)) && (!props.cards || props.cards.length < (props.noDataMessageThreshold ?? 1))) &&\r\n {props.noDataMessage}\r\n }\r\n {(props.intialized &&\r\n (props.lines && props.lines.map((line, i) =>\r\n -1}\r\n details={props.selectedId === line.id && state.lineDetailsVisible ? props.lineDetails : null}\r\n unselectable={line.unselectable}\r\n hoverElement={line.hoverElement}\r\n style={line.style}\r\n onCheckboxChange={props.multiSelect ? this.handleChangeLineCheckbox : null}\r\n onClick={this.handleLineClick}\r\n onDoubleClick={!props.doubleClickDisabled ? props.onOpenLine : null}\r\n onLongPress={props.onLongPress}\r\n />\r\n )))}\r\n {(props.intialized && props.cards && (\r\n \r\n {props.cards.map((card, i) =>\r\n -1}\r\n onCheckboxChange={props.multiSelect ? this.handleChangeLineCheckbox : null}\r\n onClick={this.handleLineClick}\r\n onDoubleClick={props.onOpenLine}\r\n onLongPress={props.onLongPress}\r\n />\r\n )}\r\n \r\n ))}\r\n {props.intialized && props.customLines && props.customLines.map((line) => line)}\r\n \r\n \r\n \r\n );\r\n }\r\n}","//ListSearchFilter\r\n//***********************************************************************************************************************\r\nimport SearchIcon from \"@mui/icons-material/Search\";\r\nimport ClearIcon from \"@mui/icons-material/Clear\";\r\nimport { Box, Stack, TextField, Tooltip } from \"@mui/material\";\r\nimport React, { ReactNode } from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\nexport interface IListSearchFilterProp {\r\n active?: boolean;\r\n classes?: string;\r\n inline?: boolean;\r\n searchFilter: string;\r\n onSearchClick: (searchFilter: string) => void;\r\n appendElements?: ReactNode[];\r\n}\r\n\r\nexport interface IListSearchFilterState {\r\n searchFilter: string;\r\n}\r\n\r\nexport class ListSearchFilter extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { searchFilter: props.searchFilter };\r\n }\r\n\r\n handleChange = (event) => {\r\n this.setState({ searchFilter: event.target.value });\r\n };\r\n\r\n handleClick = () => {\r\n this.props.onSearchClick(this.state.searchFilter);\r\n };\r\n\r\n handleKeyPress = (e) => {\r\n if (e.key === \"Enter\") {\r\n this.props.onSearchClick(this.state.searchFilter);\r\n }\r\n };\r\n\r\n handleClear = () => {\r\n this.setState({ searchFilter: \"\" });\r\n this.props.onSearchClick(\"\");\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }}\r\n />\r\n {!!props.appendElements && props.appendElements.length > 0 &&\r\n \r\n {props.appendElements.map(element =>\r\n element\r\n )}\r\n \r\n }\r\n \r\n );\r\n }\r\n}","//SelectCompanyDialog\r\n//***********************************************************************************************************************\r\nimport { Box, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { CompanyActiveState, EnumHelper } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Base } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/framework/base\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { infiniteListPageSize } from \"../../../models/common/webConsts\";\r\nimport { ICompanyListItem } from \"../../../models/company/companyListItem\";\r\nimport { CompanyListItems, ICompanyListItems } from \"../../../models/company/companyListItems\";\r\nimport * as companyService from \"../../../models/services/companyService\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\n\r\n//SelectCompanyDialog\r\nexport interface ISelectCompanyDialogProps {\r\n classes?: string;\r\n records?: ICompanyListItems;\r\n ignoreCompanyIds?: string[];\r\n ignoreCompanyGroupId?: string;\r\n multiSelect?: boolean;\r\n title?: string;\r\n onOk: (companies: ICompanyListItem[]) => void;\r\n onCancel: () => void;\r\n onGetCompanyListItems?: (pageSize: number, page: number, filter: string, companyGroupIds: string[],\r\n activityState: number, sortColumn: string, sortOrderIsAsc: boolean,\r\n ignoreCompanyGroupId: string, ignoreCompanyIds: string[]) => Promise\r\n}\r\n\r\nexport interface ISelectCompanyDialogState {\r\n intialized: boolean;\r\n isLoading: boolean;\r\n waitingPreloadedData: boolean;\r\n pageSize: number;\r\n page: number;\r\n hasMore: boolean;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n items: ICompanyListItem[];\r\n selectedId: string;\r\n checkedIds: string[];\r\n}\r\n\r\nexport class SelectCompanyDialog extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n intialized: !!props.records,\r\n isLoading: false,\r\n waitingPreloadedData: !props.records,\r\n pageSize: props.records ? props.records.pageSize : infiniteListPageSize,\r\n page: props.records ? props.records.page : 1,\r\n hasMore: props.records ? props.records.hasMore : true,\r\n filter: \"\",\r\n sortColumn: \"name\",\r\n sortOrderIsAsc: true,\r\n items: props.records ? props.records.items : [],\r\n selectedId: null,\r\n checkedIds: [],\r\n };\r\n }\r\n\r\n searchItems = async (pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n this.setState({ isLoading: true });\r\n const onGetCompanyListItems = props.onGetCompanyListItems ?? companyService.getCompanyListItems;\r\n const result = await AppUtils.callService(() => onGetCompanyListItems(!refreshList ? pageSize : (page * infiniteListPageSize), !refreshList ? page : 1, filter, null, 0, sortColumn, sortOrderIsAsc, props.ignoreCompanyGroupId, props.ignoreCompanyIds),\r\n false, true, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const items = List.getListItems(state.items, state.selectedId, state.checkedIds, result.items, resetItems, refreshList);\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n selectedId: items.selectedId,\r\n checkedIds: items.checkedIds,\r\n });\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n if (this.props.records) return;\r\n this.searchItems(state.pageSize, 1, state.filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: ISelectCompanyDialogProps, prevState: ISelectCompanyDialogState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.waitingPreloadedData) {\r\n if (!props.records) return;\r\n this.setState({\r\n intialized: true,\r\n waitingPreloadedData: false,\r\n page: props.records.page,\r\n hasMore: props.records.hasMore,\r\n items: props.records.items,\r\n pageSize: props.records.pageSize,\r\n sortColumn: props.records.sortColumn,\r\n sortOrderIsAsc: props.records.sortOrderIsAsc\r\n });\r\n } else {\r\n const prevIgnoreCompanyGroupId = prevProps.ignoreCompanyGroupId ? prevProps.ignoreCompanyGroupId : \"\";\r\n const ignoreCompanyGroupId = props.ignoreCompanyGroupId ? props.ignoreCompanyGroupId : \"\";\r\n if (ignoreCompanyGroupId === prevIgnoreCompanyGroupId && Base.equalStrArrays(prevProps.ignoreCompanyIds, props.ignoreCompanyIds)) return;\r\n this.searchItems(state.pageSize, 1, state.filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n handleCancel = () => {\r\n this.props.onCancel();\r\n };\r\n\r\n handleOk = () => {\r\n const state = this.state;\r\n const ids = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n if (ids.length < 1) return;\r\n const items = state.items.filter(i => ids.indexOf(i.id) > -1);\r\n if (items.length < 1) return;\r\n this.props.onOk(items);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n \r\n }\r\n />\r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 4,\r\n column: \"code\",\r\n content:\r\n \r\n \r\n {item.code}\r\n \r\n },\r\n { size: 5, column: \"name\", content: item.name },\r\n { size: 3, column: \"activeState\", content: item.activeStateStr },\r\n ],\r\n id: item.id,\r\n classes: EnumHelper.isEqual(item.activeState, CompanyActiveState.NotInUse) ? \"disabled\" : \"\"\r\n };\r\n })}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n />\r\n \r\n }\r\n buttons={[\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: this.handleCancel },\r\n { title: Translations.OK, variant: \"confirmation\", onClick: this.handleOk },\r\n ]}\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","import { Typography } from \"@mui/material\";\r\nimport React, { ReactNode } from \"react\";\r\n\r\ninterface FormSectionTitleProps {\r\n children?: ReactNode;\r\n margin?: string | number;\r\n}\r\n\r\nexport const FormSectionTitle = ({\r\n children,\r\n margin = \"1rem 0 .5rem 0\",\r\n}: FormSectionTitleProps) => (\r\n \r\n {children}\r\n \r\n);\r\n","import { IconButtonProps } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppDownloadIcon } from \"../../Icon/AppDownloadIcon\";\r\nimport { AppToolButton } from \"ui/Scripts/source/components/framework/Button/AppToolButton\";\r\n\r\ninterface IDownloadToolButtonProps extends IconButtonProps {\r\n tooltip?: string;\r\n}\r\n\r\nexport const DownloadToolButton = (props: IDownloadToolButtonProps) => (\r\n }\r\n />\r\n);\r\n","import { IconButtonProps } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppRemoveIcon } from \"../../Icon/AppRemoveIcon\";\r\nimport { AppToolButton } from \"ui/Scripts/source/components/framework/Button/AppToolButton\";\r\n\r\ninterface IRemoveToolButtonProps extends IconButtonProps {\r\n tooltip?: string\r\n}\r\n\r\nexport const RemoveToolButton = (props: IRemoveToolButtonProps) => (\r\n }\r\n />\r\n);\r\n","import { IconButtonProps } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppPrintIcon } from \"../../Icon/AppPrintIcon\";\r\nimport { AppToolButton } from \"ui/Scripts/source/components/framework/Button/AppToolButton\";\r\n\r\ninterface IPrintToolButtonProps extends IconButtonProps {\r\n tooltip?: string\r\n}\r\n\r\nexport const PrintToolButton = (props: IPrintToolButtonProps) => (\r\n }\r\n />\r\n);\r\n","import React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppAddIcon } from \"../../Icon/AppAddIcon\";\r\nimport { AppToolButton } from \"ui/Scripts/source/components/framework/Button/AppToolButton\";\r\nimport { IconButtonProps } from \"@mui/material\";\r\n\r\ninterface IAddToolButtonProps extends IconButtonProps {\r\n tooltip?: string\r\n}\r\n\r\nexport const AddToolButton = (props: IAddToolButtonProps) => (\r\n }\r\n />\r\n);\r\n","import { Box } from \"@mui/material\";\r\nimport React, { MouseEvent } from \"react\";\r\nimport { ToolButtonDropdown } from \"ui/Scripts/source/components/framework/Button/ToolButtonDropdown\";\r\nimport { IDropdownAction } from \"ui/Scripts/source/components/framework/dropdown\";\r\nimport { DownloadToolButton } from \"source/components/framework/Button/DownloadToolButton\";\r\nimport { RemoveToolButton } from \"source/components/framework/Button/RemoveToolButton\";\r\nimport { PrintToolButton } from \"source/components/framework/Button/PrintToolButton\";\r\nimport { AppAddIcon } from \"source/components/framework/Icon/AppAddIcon\";\r\nimport { AddToolButton } from \"source/components/framework/Button/AddToolButton\";\r\nimport { EditToolButton } from \"source/components/framework/Button/EditToolButton\";\r\n\r\ninterface ListIconButtonsItemProps {\r\n prefixElement?: React.ReactNode;\r\n addTooltip?: string;\r\n editTooltip?: string;\r\n removeTooltip?: string;\r\n downloadTooltip?: string;\r\n printTooltip?: string;\r\n addDisabled?: boolean;\r\n editDisabled?: boolean;\r\n removeDisabled?: boolean;\r\n downloadDisabled?: boolean;\r\n printDisabled?: boolean;\r\n addActions?: IDropdownAction[];\r\n onAdd?: (event: MouseEvent) => void;\r\n onEdit?: (event: MouseEvent) => void;\r\n onRemove?: (event: MouseEvent) => void;\r\n onDownload?: (event: MouseEvent) => void;\r\n onPrint?: (event: MouseEvent) => void;\r\n}\r\n\r\nexport const ListIconButtonsItem = ({\r\n prefixElement,\r\n addTooltip,\r\n editTooltip,\r\n removeTooltip,\r\n downloadTooltip,\r\n printTooltip,\r\n addDisabled,\r\n editDisabled,\r\n removeDisabled,\r\n downloadDisabled,\r\n printDisabled,\r\n addActions,\r\n onAdd,\r\n onEdit,\r\n onRemove,\r\n onDownload,\r\n onPrint,\r\n}: ListIconButtonsItemProps) => (\r\n \r\n {prefixElement}\r\n {onAdd && (\r\n \r\n )}\r\n {addActions && addActions.length > 0 && (\r\n }\r\n menuRight={true}\r\n />\r\n )}\r\n {onEdit && (\r\n \r\n )}\r\n {onDownload && (\r\n \r\n )}\r\n {onRemove && (\r\n \r\n )}\r\n {onPrint && (\r\n \r\n )}\r\n \r\n);\r\n","// UnitGroupPermissionDialogPartnerCompanyList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/avatarImage\";\r\nimport { CompanyActiveState, EnumHelper } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Base } from \"../../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/framework/base\";\r\nimport { CompanyListItem, ICompanyListItem } from \"../../../../models/company/companyListItem\";\r\nimport { CompanyListItems } from \"../../../../models/company/companyListItems\";\r\nimport { SelectCompanyDialog } from \"../../../company/SelectCompanyDialog/SelectCompanyDialog\";\r\nimport { List } from \"../../../framework/List/List\";\r\nimport { ActionContainer } from \"../../ActionContainer\";\r\nimport { FormSectionTitle } from \"../../Form/FormSectionTitle\";\r\nimport { ListIconButtonsItem } from \"../../List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\n\r\n// UnitGroupPermissionDialogPartnerCompanyList\r\nexport interface UnitGroupPermissionDialogPartnerCompanyListProp {\r\n isReadOnly?: boolean;\r\n availableCompanies: ICompanyListItem[];\r\n companies: ICompanyListItem[];\r\n title: string;\r\n onRemoved: (ids: string[]) => void;\r\n onAdded: (users: ICompanyListItem[]) => void;\r\n}\r\n\r\ninterface IUnitGroupPermissionDialogPartnerCompanyListState {\r\n // List\r\n isLoading: boolean;\r\n companies: ICompanyListItem[];\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n selectedId: string;\r\n checkedIds: string[];\r\n\r\n // Dialog\r\n showSelectCompanyDialog: boolean;\r\n}\r\n\r\nexport class UnitGroupPermissionDialogPartnerCompanyList extends React.Component {\r\n constructor(props: UnitGroupPermissionDialogPartnerCompanyListProp) {\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n companies: props.companies ? props.companies.slice(0) : [],\r\n filter: \"\",\r\n sortColumn: \"name\",\r\n sortOrderIsAsc: true,\r\n selectedId: null,\r\n checkedIds: [],\r\n showSelectCompanyDialog: false,\r\n };\r\n }\r\n\r\n filteredList = (filter: string, column: string, asc: boolean) => {\r\n const props = this.props;\r\n let companies = props.companies ? props.companies.slice(0) : [];\r\n if (filter) {\r\n const lowFilter = filter.toLowerCase();\r\n companies = companies.filter(i => i.code.toLowerCase().indexOf(lowFilter) > -1 || i.name.toLowerCase().indexOf(lowFilter) > -1);\r\n }\r\n CompanyListItem.sortCompanyListItems(companies, column, asc);\r\n this.setState({\r\n filter,\r\n sortColumn: column,\r\n sortOrderIsAsc: asc,\r\n companies,\r\n });\r\n };\r\n\r\n componentDidUpdate(prevProps: UnitGroupPermissionDialogPartnerCompanyListProp, prevState: IUnitGroupPermissionDialogPartnerCompanyListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (Base.equalStrArrays(prevProps.availableCompanies ? prevProps.availableCompanies.map(i => i.id) : [], props.availableCompanies ? props.availableCompanies.map(i => i.id) : []) &&\r\n Base.equalStrArrays(prevProps.companies ? prevProps.companies.map(i => i.id) : [], props ? props.companies.map(i => i.id) : [])) return;\r\n this.filteredList(state.filter, state.sortColumn, state.sortOrderIsAsc);\r\n }\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.filteredList(state.filter, sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n if (selectedIds.length < 1) return;\r\n props.onRemoved(selectedIds);\r\n };\r\n \r\n handleAdd = () => {\r\n this.setState({\r\n showSelectCompanyDialog: true\r\n });\r\n };\r\n\r\n // #region SelectCompanyDialog\r\n handleGetCompanyListItems = (pageSize: number, page: number, filter: string, companyGroupIds: string[],\r\n activityState: number, sortColumn: string, sortOrderIsAsc: boolean,\r\n ignoreCompanyGroupId: string, ignoreCompanyIds: string[]): Promise => {\r\n const props = this.props;\r\n let availableCompanies = (props.availableCompanies ? props.availableCompanies.slice(0) : []).filter(i => ignoreCompanyIds.indexOf(i.id) < 0);\r\n if (filter) {\r\n const lowFilter = filter.toLowerCase();\r\n availableCompanies = availableCompanies.filter(i => i.code.toLowerCase().indexOf(lowFilter) > -1 || i.name.toLowerCase().indexOf(lowFilter) > -1);\r\n }\r\n CompanyListItem.sortCompanyListItems(availableCompanies, sortColumn, sortOrderIsAsc);\r\n const result = new CompanyListItems();\r\n result.items = availableCompanies;\r\n return Base.getPromiseResult(result);\r\n };\r\n\r\n handleSelectCompanyDialogOk = async (companies: ICompanyListItem[]) => {\r\n const props = this.props;\r\n if (!companies || companies.length < 1) return;\r\n this.setState({\r\n showSelectCompanyDialog: false\r\n });\r\n props.onAdded(companies);\r\n };\r\n\r\n handleSelectCompanyDialogCancel = () => {\r\n this.setState({\r\n showSelectCompanyDialog: false\r\n });\r\n };\r\n // #endregion SelectCompanyDialog\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n {props.title ?? Translations.Partners}\r\n }\r\n rightItems={\r\n \r\n }\r\n />\r\n {\r\n return {\r\n columns: [\r\n {\r\n classes: \"col code\",\r\n column: \"code\",\r\n size: 12,\r\n content:\r\n \r\n \r\n {item.name}\r\n \r\n }\r\n ],\r\n id: item.id,\r\n classes: EnumHelper.isEqual(item.activeState, CompanyActiveState.NotInUse) ? \"disabled\" : \"\"\r\n };\r\n })}\r\n noDataMessage={Translations.AddPartners}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n />\r\n {state.showSelectCompanyDialog &&\r\n i.id)}\r\n title={Translations.SelectEventPartner}\r\n onOk={this.handleSelectCompanyDialogOk}\r\n onCancel={this.handleSelectCompanyDialogCancel}\r\n onGetCompanyListItems={this.handleGetCompanyListItems}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","// UnitGroupPermissionDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { ConfirmationDialogResult, EnumHelper, GroupPermissionLevel } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../../framework/saveData\";\r\nimport { IUnitNode } from \"../../../../models/unit/unitNode\";\r\nimport { IUnitPermissionUserGroup } from \"../../../../models/userGroup/unitPermissionUserGroup\";\r\nimport { Dialog } from \"../../Dialog/Dialog\";\r\nimport { Box, Checkbox, FormControlLabel, Grid, Radio, Stack } from \"@mui/material\";\r\nimport { CheckBox } from \"ui/Scripts/source/components/framework/checkbox\";\r\nimport { ICompanyListItem } from \"../../../../models/company/companyListItem\";\r\nimport { GridRow } from \"../../Grid/GridRow\";\r\nimport { PanelTitle } from \"../../Panel/PanelTitle\";\r\nimport { UnitGroupPermissionDialogPartnerCompanyList } from \"../UnitGroupPermissionDialogPartnerCompanyList\";\r\n\r\n//UnitGroupPermissionDialog\r\nexport interface IUnitGroupPermissionDialogProp {\r\n classes?: string;\r\n unitNode: IUnitNode;\r\n companyGroup: IUnitPermissionUserGroup;\r\n userGroup: IUnitPermissionUserGroup;\r\n accessRightNoneTitle: string;\r\n accessRightReadTitle: string;\r\n accessRightWriteTitle: string;\r\n additionalPermissionTitle: string[];\r\n partnerCompaniesTitle?: string;\r\n partnerCompanies?: ICompanyListItem[];\r\n getAdditionalPermissionInUse: (permission: number, additionalPermissionIndex: number) => boolean;\r\n onOk: (permission: number, additionalPermissionA: number, additionalPermissionB: number, additionalPermissionC: number, clearSubUnitPermissions: boolean, copyPermissionToAllSameLevelUnits: boolean, partnerIds: string[]) => void;\r\n onRemove: () => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IUnitGroupPermissionDialogState {\r\n unitPartnerCompanies: ICompanyListItem[];\r\n partnerCompanies: ICompanyListItem[];\r\n permission: number;\r\n nonExplicitPermission: number;\r\n additionalPermission: number[];\r\n hasSiblings: boolean;\r\n clearSubUnitPermissions: boolean;\r\n copyPermissionToAllSameLevelUnits: boolean;\r\n}\r\n\r\nexport class UnitGroupPermissionDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IUnitGroupPermissionDialogProp) {\r\n super(props);\r\n const nonExplicitGroupPermission = props.unitNode.getEffectiveNonExplicitPermission(props.companyGroup, props.userGroup);\r\n const effectiveUnitNodeCompanyIds = props.unitNode.getEffectiveUnitNodeCompanyIds(props.userGroup);\r\n this.state = {\r\n unitPartnerCompanies: (props.partnerCompanies ?? []).filter(i => props.unitNode.partnerCompanyIds.indexOf(i.id) > -1),\r\n permission: Math.min(props.userGroup ? props.unitNode.permission.permission : props.unitNode.permission.companyGroupPermission, Math.min(props.unitNode.maxPermissionLevel, GroupPermissionLevel.Write)),\r\n nonExplicitPermission: Math.min(props.userGroup ? nonExplicitGroupPermission.permission : nonExplicitGroupPermission.companyGroupPermission, GroupPermissionLevel.Write),\r\n additionalPermission: [\r\n Math.min(props.userGroup ? props.unitNode.permission.additionalPermissionA : props.unitNode.permission.companyGroupAdditionalPermissionA, Math.min(props.unitNode.maxPermissionLevelA, 1)),\r\n Math.min(props.userGroup ? props.unitNode.permission.additionalPermissionB : props.unitNode.permission.companyGroupAdditionalPermissionB, Math.min(props.unitNode.maxPermissionLevelB, 1)),\r\n Math.min(props.userGroup ? props.unitNode.permission.additionalPermissionC : props.unitNode.permission.companyGroupAdditionalPermissionC, Math.min(props.unitNode.maxPermissionLevelC, 1))\r\n ],\r\n partnerCompanies: (props.partnerCompanies ?? []).filter(i => effectiveUnitNodeCompanyIds.companyIds.indexOf(i.id) > -1),\r\n hasSiblings: !props.unitNode.getIsRoot() && props.unitNode.hasSiblings(),\r\n clearSubUnitPermissions: false,\r\n copyPermissionToAllSameLevelUnits: false\r\n };\r\n const saveData = this.getSaveDataFromState(props, this.state);\r\n this.orgStateHash = saveData.hash;\r\n }\r\n\r\n // #region Partner Companies\r\n handleCompaniesRemoved = (ids: string[]) => {\r\n if (!ids || ids.length < 1) return;\r\n this.setState({\r\n partnerCompanies: this.state.partnerCompanies.filter(i => ids.indexOf(i.id) < 0)\r\n });\r\n };\r\n \r\n handleCompaniesAdded = (newCompanies: ICompanyListItem[]) => {\r\n const state = this.state;\r\n this.setState({\r\n partnerCompanies: state.partnerCompanies.filter(i => newCompanies.findIndex(j => j.id === i.id) < 0).concat(newCompanies)\r\n });\r\n };\r\n // #endregion Partner Companies\r\n\r\n handleSetPermission = (checked: boolean, permission: number) => {\r\n if (!checked) return;\r\n this.setState({\r\n permission\r\n });\r\n };\r\n\r\n handleSetAdditionalPermission = (checked: boolean, additionalPermissionIndex: number) => {\r\n const additionalPermission = this.state.additionalPermission.slice(0);\r\n additionalPermission[additionalPermissionIndex] = checked ? 1 : 0;\r\n this.setState({\r\n additionalPermission\r\n });\r\n };\r\n\r\n getAdditionalPermissionInUse = (additionalPermissionIndex: number): boolean => {\r\n return this.props.getAdditionalPermissionInUse(this.state.permission, additionalPermissionIndex);\r\n };\r\n\r\n handleSetClearSubUnitPermissions = (checked: boolean) => {\r\n this.setState({\r\n clearSubUnitPermissions: checked\r\n });\r\n };\r\n\r\n handleSetCopyPermissionToAllSameLevelUnits = (checked: boolean) => {\r\n this.setState({\r\n copyPermissionToAllSameLevelUnits: checked\r\n });\r\n };\r\n\r\n getSaveDataFromState = (props: IUnitGroupPermissionDialogProp, state: IUnitGroupPermissionDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"permission\", state.permission);\r\n result.append(\"additionalPermissionA\", state.additionalPermission[0]);\r\n result.append(\"additionalPermissionB\", state.additionalPermission[1]);\r\n result.append(\"additionalPermissionC\", state.additionalPermission[2]);\r\n result.append(\"partnerCompanyIds\", state.partnerCompanies.map(i => i.id));\r\n result.append(\"clearSubUnitPermissions\", state.clearSubUnitPermissions);\r\n result.append(\"copyPermissionToAllSameLevelUnits\", state.copyPermissionToAllSameLevelUnits);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n save = async () => {\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return;\r\n this.props.onOk(\r\n state.permission,\r\n this.getAdditionalPermissionInUse(0) ? state.additionalPermission[0] : 0,\r\n this.getAdditionalPermissionInUse(1) ? state.additionalPermission[1] : 0,\r\n this.getAdditionalPermissionInUse(2) ? state.additionalPermission[2] : 0,\r\n state.clearSubUnitPermissions,\r\n state.copyPermissionToAllSameLevelUnits,\r\n state.partnerCompanies.map(i => i.id)\r\n );\r\n };\r\n\r\n handleSave = () => {\r\n this.save();\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.save();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const additionalPermissionAInUse = this.getAdditionalPermissionInUse(0);\r\n const additionalPermissionBInUse = this.getAdditionalPermissionInUse(1);\r\n const additionalPermissionCInUse = this.getAdditionalPermissionInUse(2);\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {!!props.accessRightNoneTitle && EnumHelper.isGreaterOrEqualThan(props.unitNode.maxPermissionLevel, GroupPermissionLevel.None) &&\r\n this.handleSetPermission(checked, GroupPermissionLevel.None)}\r\n />\r\n }\r\n sx={{ marginBottom: 0 }}\r\n />\r\n }\r\n {!!props.accessRightReadTitle && EnumHelper.isGreaterOrEqualThan(props.unitNode.maxPermissionLevel, GroupPermissionLevel.Read) &&\r\n this.handleSetPermission(checked, GroupPermissionLevel.Read)}\r\n />\r\n }\r\n sx={{ marginBottom: 0 }}\r\n />\r\n }\r\n {!!props.accessRightWriteTitle && EnumHelper.isGreaterOrEqualThan(props.unitNode.maxPermissionLevel, GroupPermissionLevel.Write) &&\r\n this.handleSetPermission(checked, GroupPermissionLevel.Write)}\r\n />\r\n }\r\n sx={{ marginBottom: 0 }}\r\n />\r\n }\r\n \r\n \r\n {(additionalPermissionAInUse || additionalPermissionBInUse || additionalPermissionCInUse) &&\r\n \r\n \r\n {additionalPermissionAInUse &&\r\n 0}\r\n onChange={(_e, checked: boolean) => this.handleSetAdditionalPermission(checked, 0)}\r\n />\r\n }\r\n />\r\n }\r\n {additionalPermissionBInUse &&\r\n 0}\r\n onChange={(_e, checked: boolean) => this.handleSetAdditionalPermission(checked, 1)}\r\n />\r\n }\r\n />\r\n }\r\n {additionalPermissionCInUse &&\r\n 0}\r\n onClickBoolean={(checked: boolean) => this.handleSetAdditionalPermission(checked, 2)}\r\n />\r\n }\r\n {(state.unitPartnerCompanies.length > 0 || state.partnerCompanies.length > 0) &&\r\n \r\n }\r\n \r\n }\r\n \r\n {(props.unitNode.hasChildren() || state.hasSiblings) &&\r\n \r\n }\r\n {props.unitNode.hasChildren() &&\r\n this.handleSetClearSubUnitPermissions(v)}\r\n />\r\n }\r\n />\r\n }\r\n {state.hasSiblings &&\r\n this.handleSetCopyPermissionToAllSameLevelUnits(v)}\r\n />\r\n }\r\n />\r\n }\r\n \r\n \r\n \r\n }\r\n buttons={[\r\n { title: Translations.Remove, variant: \"danger\", onClick: props.unitNode.hasExplicitPermission(null, props.userGroup.code) && !(props.unitNode.getIsRoot() && !props.userGroup.code) ? props.onRemove : null },\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: this.handleCancel },\r\n { title: Translations.OK, variant: \"confirmation\", onClick: this.handleSave },\r\n ]}\r\n onClose={this.handleCancel}/>\r\n );\r\n }\r\n}","// UnitApplicationPermissions\r\n// ***********************************************************************************************************************\r\nimport { Box, FormControlLabel, Grid, Radio, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Dropdown } from \"ui/Scripts/source/components/framework/Dropdown/Dropdown\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { EnumHelper, GroupType, UserGroupType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport * as store from \"../../../../framework/customStore\";\r\nimport { ICompanyListItem } from \"../../../../models/company/companyListItem\";\r\nimport * as storeActions from \"../../../../models/store/storeActions\";\r\nimport { IUnitNode, UnitNode } from \"../../../../models/unit/unitNode\";\r\nimport { IUnitNodePermission } from \"../../../../models/unit/unitNodePermission\";\r\nimport { IUnitPermissionUserGroup, UnitPermissionUserGroup } from \"../../../../models/userGroup/unitPermissionUserGroup\";\r\nimport { UnitPermissionTree } from \"../../../unit/Unit/UnitPermissionTree\";\r\nimport { ActionContainer } from \"../../ActionContainer\";\r\nimport { GridRow } from \"../../Grid/GridRow\";\r\nimport { ListIconButtonsPermission } from \"../../List/ListIconButtons/ListIconButtonsPermission\";\r\nimport { ListHeaderLine } from \"../../List/ListLine\";\r\nimport { UnitGroupPermissionDialog } from \"../UnitGroupPermissionDialog\";\r\n\r\nexport interface IUnitApplicationPermissionsProp {\r\n classes?: string;\r\n companyId: string;\r\n unitId: string;\r\n disabled?: boolean;\r\n groups: IUnitPermissionUserGroup[];\r\n hideAllUsers?: boolean;\r\n hideUserGroups?: boolean;\r\n unitNode: IUnitNode;\r\n accessRightNoneTitle: string;\r\n accessRightReadTitle: string;\r\n accessRightWriteTitle: string;\r\n additionalPermissionTitle: string[];\r\n validAdditionalPermissions: number[];\r\n partnerCompaniesTitle?: string;\r\n partnerCompanies?: ICompanyListItem[];\r\n onChangeSaveUnitNode: (saveUnitNode: IUnitNode) => void;\r\n cardView?: boolean;\r\n}\r\n\r\ninterface IUnitApplicationPermissionsState {\r\n additionalPermissionInUse: boolean[];\r\n groups: IUnitPermissionUserGroup[];\r\n allUsersGroup: boolean;\r\n userGroupType: UserGroupType;\r\n userGroups: IUnitPermissionUserGroup[];\r\n userGroup: IUnitPermissionUserGroup;\r\n copiedPermissions: { [id: string]: IUnitNodePermission; };\r\n permissionsCopied: boolean;\r\n unitNode: IUnitNode;\r\n displayUnitNode: IUnitNode;\r\n editUnitNode: IUnitNode;\r\n selectedUnitId: string;\r\n showUnitGroupPermissionDialog: boolean;\r\n unitGroupPermissionDialogUserGroup: IUnitPermissionUserGroup;\r\n}\r\n\r\nexport class UnitApplicationPermissions extends React.Component {\r\n setFixedGroupNames = (groups: IUnitPermissionUserGroup[]) => {\r\n const fixedGroups = groups.filter(i => !!i.code && Base.equalInt(i.type, UserGroupType.Fixed));\r\n for (const group of fixedGroups) {\r\n group.groupNames = groups.filter(i => Base.equalInt(i.type, UserGroupType.Normal) && group.groupCodes.indexOf(i.code) > -1).map(i => i.name).sort();\r\n }\r\n };\r\n\r\n static getUserGroups = (groups: IUnitPermissionUserGroup[], allUsersGroup: boolean, userGroupType: UserGroupType): IUnitPermissionUserGroup[] => {\r\n if (allUsersGroup) {\r\n return groups.filter(i => !i.code && Base.equalInt(i.type, UserGroupType.Normal));\r\n } else {\r\n return groups.filter(i => !!i.code && Base.equalInt(i.type, userGroupType));\r\n }\r\n };\r\n\r\n constructor(props: IUnitApplicationPermissionsProp) {\r\n super(props);\r\n const groups = this.props.groups.map(i => new UnitPermissionUserGroup(i));\r\n this.setFixedGroupNames(groups);\r\n const userGroups = UnitApplicationPermissions.getUserGroups(groups, !props.hideAllUsers, !props.hideUserGroups ? UserGroupType.Normal : UserGroupType.Fixed);\r\n const userGroup = userGroups.length > 0 ? userGroups[0] : new UnitPermissionUserGroup();\r\n const unitNode = new UnitNode(props.unitNode);\r\n unitNode.setEffectivePermissions(null, userGroup);\r\n this.state = {\r\n additionalPermissionInUse: [\r\n !!props.additionalPermissionTitle[0] && unitNode.maxPermissionLevelA > 0,\r\n !!props.additionalPermissionTitle[1] && unitNode.maxPermissionLevelB > 0,\r\n !!props.additionalPermissionTitle[2] && unitNode.maxPermissionLevelC > 0\r\n ],\r\n groups,\r\n unitNode,\r\n displayUnitNode: unitNode.getUnitNodeById(props.unitId),\r\n editUnitNode: null,\r\n allUsersGroup: true,\r\n userGroupType: UserGroupType.Normal,\r\n userGroups,\r\n userGroup,\r\n permissionsCopied: false,\r\n copiedPermissions: {},\r\n selectedUnitId: props.unitId,\r\n showUnitGroupPermissionDialog: false,\r\n unitGroupPermissionDialogUserGroup: null\r\n };\r\n }\r\n\r\n runLongTask = (task: () => IUnitNode): IUnitNode => {\r\n if (!task) return null;\r\n store.customStore.dispatch(storeActions.fetchStart());\r\n try {\r\n return task();\r\n } finally {\r\n store.customStore.dispatch(storeActions.fetchEnd());\r\n }\r\n };\r\n\r\n getUpdatedUnitNode = (userGroup: IUnitPermissionUserGroup): IUnitNode => {\r\n if (!userGroup) return this.state.unitNode;\r\n return this.runLongTask(() => {\r\n const unitNode = new UnitNode(this.state.unitNode);\r\n unitNode.setEffectivePermissions(null, userGroup);\r\n return unitNode;\r\n });\r\n };\r\n\r\n userGroupChange = (userGroupCode: string) => {\r\n const props = this.props;\r\n const userGroup = this.state.userGroups.find(i => i.code === userGroupCode);\r\n if (!userGroup) return;\r\n const unitNode = this.getUpdatedUnitNode(userGroup);\r\n this.setState({\r\n userGroup,\r\n unitNode,\r\n displayUnitNode: unitNode.getUnitNodeById(props.unitId),\r\n });\r\n };\r\n\r\n handleChangeUserGroupTypeAll = (checked: boolean) => {\r\n if (!checked) return;\r\n const props = this.props;\r\n const userGroups = UnitApplicationPermissions.getUserGroups(this.state.groups, true, UserGroupType.Normal);\r\n const userGroup = userGroups.length > 0 ? userGroups[0] : new UnitPermissionUserGroup();\r\n const unitNode = this.getUpdatedUnitNode(userGroup);\r\n this.setState({\r\n allUsersGroup: true,\r\n userGroups,\r\n userGroup,\r\n unitNode,\r\n displayUnitNode: unitNode.getUnitNodeById(props.unitId),\r\n });\r\n };\r\n\r\n handleChangeUserGroupType = (checked: boolean, userGroupType: UserGroupType) => {\r\n if (!checked) return;\r\n const props = this.props;\r\n const userGroups = UnitApplicationPermissions.getUserGroups(this.state.groups, false, userGroupType);\r\n const userGroup = userGroups.length > 0 ? userGroups[0] : new UnitPermissionUserGroup();\r\n const unitNode = this.getUpdatedUnitNode(userGroup);\r\n this.setState({\r\n allUsersGroup: false,\r\n userGroupType,\r\n userGroups,\r\n userGroup,\r\n unitNode,\r\n displayUnitNode: unitNode.getUnitNodeById(props.unitId),\r\n });\r\n };\r\n \r\n editPermission = (id: string) => {\r\n const state = this.state;\r\n if (!id) return;\r\n const userGroup = state.userGroups.find(i => i.code === state.userGroup.code);\r\n if (!userGroup) return;\r\n const editUnitNode = state.unitNode.getUnitNodeById(id);\r\n if (!editUnitNode) return;\r\n this.setState({\r\n showUnitGroupPermissionDialog: true,\r\n editUnitNode,\r\n unitGroupPermissionDialogUserGroup: userGroup\r\n });\r\n };\r\n\r\n handleUnitNodeClick = (id: string) => {\r\n if (!id) return;\r\n this.setState({\r\n selectedUnitId: id\r\n });\r\n };\r\n\r\n handleEditPermission = (id: string) => {\r\n this.editPermission(id);\r\n };\r\n\r\n copyPermissionToSiblings = (unitNode: UnitNode, companyGroup: IUnitPermissionUserGroup, userGroup: IUnitPermissionUserGroup, permission: number, additionalPermissionA: number, additionalPermissionB: number, additionalPermissionC: number) => {\r\n if (!unitNode.hasSiblings()) return;\r\n const siblings = unitNode.getSiblings();\r\n for (let i = 0; i < siblings.length; i++) {\r\n siblings[i].setGroupPermission(companyGroup, userGroup, permission, additionalPermissionA, additionalPermissionB, additionalPermissionC, false);\r\n }\r\n };\r\n\r\n getAdditionalPermissionIsDisabled = (permission: number, additionalPermissionIndex: number) :boolean => {\r\n const props = this.props;\r\n const index = permission * 3 + additionalPermissionIndex;\r\n if (props.validAdditionalPermissions.length <= index) return true;\r\n return props.validAdditionalPermissions[index] < 1;\r\n };\r\n\r\n getAdditionalPermissionInUse = (permission: number, additionalPermissionIndex: number): boolean => {\r\n const state = this.state;\r\n return state.additionalPermissionInUse[additionalPermissionIndex] && !this.getAdditionalPermissionIsDisabled(permission, additionalPermissionIndex);\r\n };\r\n\r\n handleUnitGroupPermissionDialogOk = (permission: number, additionalPermissionA: number, additionalPermissionB: number, additionalPermissionC: number, clearSubUnitPermissions: boolean, copyPermissionToAllSameLevelUnits: boolean, partnerIds: string[]) => {\r\n const obj = this;\r\n const state = this.state;\r\n const props = this.props;\r\n this.runLongTask(() => {\r\n const unitNode = new UnitNode(state.unitNode);\r\n const editUnitNode = unitNode.getUnitNodeById(state.editUnitNode.id);\r\n if (!editUnitNode) return;\r\n editUnitNode.setGroupPermission(null, state.unitGroupPermissionDialogUserGroup, permission, additionalPermissionA, additionalPermissionB, additionalPermissionC, clearSubUnitPermissions);\r\n editUnitNode.setGroupPermissionCompanyIds(state.unitGroupPermissionDialogUserGroup, partnerIds);\r\n let updateUnitNode = editUnitNode;\r\n if (copyPermissionToAllSameLevelUnits) {\r\n this.copyPermissionToSiblings(editUnitNode, null, state.unitGroupPermissionDialogUserGroup, permission, additionalPermissionA, additionalPermissionB, additionalPermissionC);\r\n updateUnitNode = editUnitNode.parent;\r\n }\r\n updateUnitNode.setEffectivePermissions(null, state.unitGroupPermissionDialogUserGroup);\r\n const displayUnitNode = unitNode.getUnitNodeById(props.unitId);\r\n obj.setState({\r\n showUnitGroupPermissionDialog: false,\r\n unitNode,\r\n displayUnitNode: unitNode.getUnitNodeById(props.unitId),\r\n });\r\n props.onChangeSaveUnitNode(displayUnitNode);\r\n return unitNode;\r\n });\r\n };\r\n\r\n handleUnitGroupPermissionDialogCancel = () => {\r\n this.setState({\r\n showUnitGroupPermissionDialog: false\r\n });\r\n };\r\n\r\n handleUnitGroupPermissionDialogRemove = () => {\r\n const state = this.state;\r\n const props = this.props;\r\n const unitNode = new UnitNode(state.unitNode);\r\n const editUnitNode = unitNode.getUnitNodeById(state.selectedUnitId);\r\n if (!editUnitNode) return;\r\n editUnitNode.removeGroupPermission(GroupType.UserGroup, state.unitGroupPermissionDialogUserGroup.code);\r\n editUnitNode.setEffectivePermissions(null, state.unitGroupPermissionDialogUserGroup);\r\n const displayUnitNode = unitNode.getUnitNodeById(props.unitId);\r\n this.setState({\r\n showUnitGroupPermissionDialog: false,\r\n unitNode,\r\n displayUnitNode,\r\n });\r\n props.onChangeSaveUnitNode(displayUnitNode);\r\n };\r\n\r\n handleCopyPermissions = () => {\r\n const state = this.state;\r\n const displayUnitNode = state.displayUnitNode;\r\n if (!displayUnitNode) return;\r\n const copiedPermissions: { [id: string]: IUnitNodePermission; } = {};\r\n this.setState({\r\n copiedPermissions: displayUnitNode.getNodePermissions(null, state.userGroup.code, copiedPermissions),\r\n permissionsCopied: true\r\n });\r\n };\r\n\r\n handlePastePermissions = () => {\r\n const obj = this;\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.permissionsCopied) return;\r\n const userGroup = state.userGroups.find(i => i.code === state.userGroup.code);\r\n if (!userGroup) return;\r\n const unitNode = new UnitNode(state.unitNode);\r\n const displayUnitNode = unitNode.getUnitNodeById(props.unitId);\r\n if (!displayUnitNode) return;\r\n return this.runLongTask(() => {\r\n const unitNode = new UnitNode(this.state.unitNode);\r\n displayUnitNode.setGroupPermissions(null, userGroup, state.copiedPermissions);\r\n displayUnitNode.setEffectivePermissions(null, userGroup);\r\n obj.setState({\r\n unitNode,\r\n displayUnitNode\r\n });\r\n props.onChangeSaveUnitNode(displayUnitNode);\r\n return unitNode;\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n \r\n {!props.hideAllUsers &&\r\n \r\n this.handleChangeUserGroupTypeAll(checked)}\r\n />\r\n }\r\n />\r\n \r\n }\r\n {!props.hideUserGroups &&\r\n \r\n this.handleChangeUserGroupType(checked, UserGroupType.Normal)}\r\n />\r\n }\r\n />\r\n \r\n }\r\n {(!props.hideAllUsers || !props.hideUserGroups) &&\r\n \r\n this.handleChangeUserGroupType(checked, UserGroupType.Fixed)}\r\n />\r\n }\r\n />\r\n \r\n }\r\n \r\n {\r\n const groupNames = Base.getStringWithSeparators(userGroup.groupNames, \", \");\r\n return {\r\n title: {userGroup.name}{groupNames &&  ({groupNames})},\r\n textTitle: userGroup.name + (groupNames ? \" (\" + groupNames + \")\" : \"\"),\r\n selected: userGroup.code === state.userGroup.code,\r\n onClick: () => this.userGroupChange(userGroup.code)\r\n };\r\n })}\r\n />\r\n }\r\n rightItems={\r\n this.handleEditPermission(state.selectedUnitId)}\r\n onCopy={this.handleCopyPermissions}\r\n onPaste={this.handlePastePermissions}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n {(props.partnerCompanies ?? []).length > 0 &&\r\n \r\n *\r\n {Translations.UnitIsRelatedToEventPartner}\r\n \r\n }\r\n \r\n {state.showUnitGroupPermissionDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","import { IUnitNodePermissionCompanyGroupPermission, UnitNodePermissionCompanyGroupPermission } from \"./unitNodePermissionCompanyGroupPermission\";\r\n\r\nexport interface IUnitSummaryUserGroup {\r\n name: string;\r\n type: number;\r\n permission: IUnitNodePermissionCompanyGroupPermission;\r\n}\r\n\r\nexport class UnitSummaryUserGroup implements IUnitSummaryUserGroup {\r\n name: string;\r\n type: number;\r\n permission: UnitNodePermissionCompanyGroupPermission;\r\n\r\n constructor();\r\n constructor(obj?: any) {\r\n this.name = obj && obj.name || \"\";\r\n this.type = obj && obj.type || 0;\r\n this.permission = obj && obj.permission || new UnitNodePermissionCompanyGroupPermission();\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IUnitPermissionUserGroup } from \"../userGroup/unitPermissionUserGroup\";\r\nimport { UnitNode } from \"./unitNode\";\r\nimport { IUnitSummaryUserGroup, UnitSummaryUserGroup } from \"./unitSummaryUserGroup\";\r\n\r\nexport interface IUnitSummaryNode {\r\n id: string;\r\n name: string;\r\n userGroups: IUnitSummaryUserGroup[];\r\n children: IUnitSummaryNode[];\r\n\r\n setUserGroupPermissions(permissionUserGroup: IUnitPermissionUserGroup, permissionUnitNode: UnitNode);\r\n}\r\n\r\nexport class UnitSummaryNode implements IUnitSummaryNode {\r\n id: string;\r\n name: string;\r\n userGroups: UnitSummaryUserGroup[];\r\n children: UnitSummaryNode[];\r\n\r\n constructor();\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.userGroups = Base.getTypedArray(obj ? obj.userGroups : null, UnitSummaryUserGroup);\r\n this.children = Base.getTypedArray(obj ? obj.children : null, UnitSummaryNode);\r\n }\r\n\r\n setUserGroupPermissions(permissionUserGroup: IUnitPermissionUserGroup, permissionUnitNode: UnitNode) {\r\n const userGroup = new UnitSummaryUserGroup();\r\n userGroup.name = permissionUserGroup.name;\r\n userGroup.type = permissionUserGroup.type;\r\n userGroup.permission = permissionUnitNode.permission;\r\n this.userGroups.push(userGroup);\r\n for (let i = 0; i < this.children.length; i++) {\r\n this.children[i].setUserGroupPermissions(permissionUserGroup, permissionUnitNode.children[i]);\r\n }\r\n }\r\n}","// UnitPermissionSummaryTable\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { EnumHelper, GroupPermissionLevel, UserGroupType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IUnitSummaryNode } from \"../../../../models/unit/unitSummaryNode\";\r\nimport { List } from \"../../../framework/List/List\";\r\nimport { PanelTitle } from \"../../../framework/Panel/PanelTitle\";\r\nimport { Box } from \"@mui/material\";\r\n\r\nexport interface IUnitPermissionSummaryTableProp {\r\n classes?: string;\r\n unitNode: IUnitSummaryNode;\r\n parentName: string;\r\n accessRightNoneTitle: string;\r\n accessRightReadTitle: string;\r\n accessRightWriteTitle: string;\r\n additionalPermissionTitle: string[];\r\n additionalPermissionsInUse: boolean;\r\n showInheritedPermissions: boolean;\r\n showUserGroups: boolean;\r\n showUsers: boolean;\r\n filter: string;\r\n getAdditionalPermissionInUse: (permission: number, additionalPermissionIndex: number) => boolean;\r\n}\r\n\r\nexport class UnitPermissionSummaryTable extends React.Component {\r\n render() {\r\n const props = this.props;\r\n const unitNode = props.unitNode;\r\n if (!unitNode) return null;\r\n const filterLow = props.filter.toLowerCase();\r\n const userGroups = unitNode.userGroups.filter(i => (props.showInheritedPermissions || i.permission.isExplicitPermission) &&\r\n (props.showUserGroups && i.type === UserGroupType.Normal || props.showUsers && i.type === UserGroupType.Fixed) &&\r\n (!props.filter || i.name.toLowerCase().indexOf(filterLow) > -1));\r\n const unitTitle = Translations.Unit + \": \" + (props.parentName ? props.parentName + \" / \" : \"\") + unitNode.name;\r\n return (\r\n

\r\n {userGroups.length > 0 &&\r\n \r\n \r\n {\r\n const permission = userGroup.permission.permission;\r\n const permissionText = (EnumHelper.isGreaterOrEqualThan(permission, GroupPermissionLevel.Write)\r\n ? props.accessRightWriteTitle\r\n : (EnumHelper.isEqual(permission, GroupPermissionLevel.Read) ? props.accessRightReadTitle : props.accessRightNoneTitle));\r\n const additionalPermissionText = (props.getAdditionalPermissionInUse(permission, 0) && userGroup.permission.additionalPermissionA > 0 ? \" + \" + props.additionalPermissionTitle[0] : \"\") +\r\n (props.getAdditionalPermissionInUse(permission, 1) && userGroup.permission.additionalPermissionB > 0 ? \" + \" + props.additionalPermissionTitle[1] : \"\") +\r\n (props.getAdditionalPermissionInUse(permission, 2) && userGroup.permission.additionalPermissionC > 0 ? \" + \" + props.additionalPermissionTitle[2] : \"\");\r\n return {\r\n columns: [\r\n { size: props.additionalPermissionsInUse ? 4 : 6, content: userGroup.name },\r\n { size: props.additionalPermissionsInUse ? 3 : 6, content: permissionText },\r\n props.additionalPermissionsInUse ? { size: 5, content: additionalPermissionText } : null\r\n ],\r\n id: userGroup.name,\r\n classes: userGroup.permission.isExplicitPermission ? \"\" : \"inherited\"\r\n };\r\n })\r\n }\r\n sortColumn={\"\"}\r\n sortOrderIsAsc={true}\r\n selectedId={\"\"}\r\n onSetSelectedIds={null}\r\n onSearchLines={null}\r\n />\r\n \r\n }\r\n {unitNode.children.map((childUnitNode) =>\r\n \r\n )}\r\n
\r\n );\r\n }\r\n}","// UnitPermissionSummaryDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Checkbox, FormControlLabel, Stack } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { UserGroupType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IUnitNode, UnitNode } from \"../../../../models/unit/unitNode\";\r\nimport { IUnitSummaryNode, UnitSummaryNode } from \"../../../../models/unit/unitSummaryNode\";\r\nimport { IUnitPermissionUserGroup, UnitPermissionUserGroup } from \"../../../../models/userGroup/unitPermissionUserGroup\";\r\nimport { ActionContainer } from \"../../../framework/ActionContainer\";\r\nimport { Dialog } from \"../../../framework/Dialog/Dialog\";\r\nimport { ListSearchFilter } from \"../../../framework/List/ListSearchFilter\";\r\nimport { UnitPermissionSummaryTable } from \"../UnitPermissionSummaryTable\";\r\nimport { UnitApplicationPermissions } from \"source/components/framework/Unit/UnitApplicationPermissions\";\r\n\r\n//UnitPermissionSummaryDialog\r\nexport interface IUnitPermissionSummaryDialogProp {\r\n classes?: string;\r\n groups: IUnitPermissionUserGroup[];\r\n hideAllUsers?: boolean;\r\n hideUserGroups?: boolean;\r\n unitNode: IUnitNode;\r\n accessRightNoneTitle: string;\r\n accessRightReadTitle: string;\r\n accessRightWriteTitle: string;\r\n additionalPermissionTitle: string[];\r\n validAdditionalPermissions: number[];\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IUnitPermissionSummaryDialogState {\r\n summaryNode: IUnitSummaryNode;\r\n additionalPermissionInUse: boolean[];\r\n additionalPermissionsInUse: boolean;\r\n showInheritedPermissions: boolean;\r\n showUserGroups: boolean;\r\n showUsers: boolean;\r\n filter: string;\r\n}\r\n\r\nexport class UnitPermissionSummaryDialog extends React.Component {\r\n getBaseUnitSummaryNode = (unitNode: IUnitNode): UnitSummaryNode => {\r\n const result = new UnitSummaryNode();\r\n result.id = unitNode.id;\r\n result.name = unitNode.name;\r\n for (const child of unitNode.children) {\r\n result.children.push(this.getBaseUnitSummaryNode(child));\r\n }\r\n return result;\r\n };\r\n\r\n getUnitSummaryNode = (unitNode: IUnitNode, userGroups: IUnitPermissionUserGroup[]): UnitSummaryNode => {\r\n const result = this.getBaseUnitSummaryNode(unitNode);\r\n for (const userGroup of userGroups) {\r\n const userGroupUnitNode = new UnitNode(unitNode);\r\n userGroupUnitNode.setEffectivePermissions(null, userGroup);\r\n result.setUserGroupPermissions(userGroup, userGroupUnitNode);\r\n }\r\n return result;\r\n };\r\n\r\n constructor(props: IUnitPermissionSummaryDialogProp) {\r\n super(props);\r\n const additionalPermissionInUse = [\r\n !!props.additionalPermissionTitle[0] && props.unitNode.maxPermissionLevelA > 0,\r\n !!props.additionalPermissionTitle[1] && props.unitNode.maxPermissionLevelB > 0,\r\n !!props.additionalPermissionTitle[2] && props.unitNode.maxPermissionLevelC > 0\r\n ];\r\n this.state = {\r\n summaryNode: null,\r\n additionalPermissionInUse,\r\n additionalPermissionsInUse: additionalPermissionInUse[0] || additionalPermissionInUse[1] || additionalPermissionInUse[2],\r\n showInheritedPermissions: false,\r\n showUserGroups: true,\r\n showUsers: true,\r\n filter: \"\"\r\n };\r\n }\r\n\r\n componentDidMount(): void {\r\n const props = this.props;\r\n const groups = props.groups.map(i => new UnitPermissionUserGroup(i));\r\n //const userGroups = UnitApplicationPermissions.getUserGroups(groups, !props.hideAllUsers, !props.hideUserGroups ? UserGroupType.Normal : UserGroupType.Fixed);\r\n const userGroups: IUnitPermissionUserGroup[] = (!props.hideAllUsers ? UnitApplicationPermissions.getUserGroups(groups, true, UserGroupType.Normal) : [])\r\n .concat(!props.hideUserGroups ? UnitApplicationPermissions.getUserGroups(groups, false, UserGroupType.Normal) : [])\r\n .concat(UnitApplicationPermissions.getUserGroups(groups, false, UserGroupType.Fixed));\r\n this.setState({\r\n summaryNode: this.getUnitSummaryNode(props.unitNode, userGroups)\r\n });\r\n }\r\n\r\n getAdditionalPermissionIsDisabled = (permission: number, additionalPermissionIndex: number) :boolean => {\r\n const props = this.props;\r\n const index = permission * 3 + additionalPermissionIndex;\r\n if (props.validAdditionalPermissions.length <= index) return true;\r\n return props.validAdditionalPermissions[index] < 1;\r\n };\r\n\r\n getAdditionalPermissionInUse = (permission: number, additionalPermissionIndex: number): boolean => {\r\n const state = this.state;\r\n return state.additionalPermissionInUse[additionalPermissionIndex] && !this.getAdditionalPermissionIsDisabled(permission, additionalPermissionIndex);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.summaryNode) return null;\r\n return (\r\n \r\n \r\n {\r\n this.setState({ showInheritedPermissions: checked });\r\n }}\r\n />\r\n }\r\n sx={{ marginBottom: \".5rem\" }}\r\n />\r\n {!props.hideUserGroups &&\r\n {\r\n this.setState({ showUserGroups: checked });\r\n }}\r\n />\r\n }\r\n />\r\n }\r\n {!props.hideUserGroups && !props.hideAllUsers &&\r\n {\r\n this.setState({ showUsers: checked });\r\n }}\r\n />\r\n }\r\n />\r\n }\r\n \r\n this.setState({ filter })}\r\n />\r\n } />\r\n \r\n \r\n \r\n \r\n }\r\n buttons={[\r\n { title: Translations.Close, variant: \"outlined\", onClick: props.onCancel }\r\n ]}\r\n onClose={props.onCancel}\r\n />\r\n );\r\n }\r\n}","// UnitPermissionSettings - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../../framework/saveData\";\r\nimport { IUnitNode } from \"../../../../models/unit/unitNode\";\r\nimport { IUnitNodePermissions } from \"../../../../models/unit/unitNodePermissions\";\r\nimport { IUnitPermissionUserGroup } from \"../../../../models/userGroup/unitPermissionUserGroup\";\r\nimport { ConfirmationButton } from \"../../../framework/Button/ConfirmationButton\";\r\nimport { DialogSettingsCard } from \"../../../framework/Container/DialogSettingsCard\";\r\nimport { UnitApplicationPermissions } from \"../../../framework/Unit/UnitApplicationPermissions\";\r\nimport { UnitPermissionSummaryDialog } from \"../UnitPermissionSummaryDialog\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\n//UnitPermissionSettings\r\nexport interface IUnitPermissionSettingsProp {\r\n classes?: string;\r\n companyId: string;\r\n hideAllUsers?: boolean;\r\n hideUserGroups?: boolean;\r\n unitNodePermissions: IUnitNodePermissions;\r\n accessRightNoneTitle?: string;\r\n accessRightReadTitle?: string;\r\n accessRightWriteTitle?: string;\r\n accessRightWriteHidden?: boolean;\r\n additionalPermissionATitle?: string;\r\n additionalPermissionBTitle?: string;\r\n additionalPermissionCTitle?: string;\r\n validAdditionalPermissions?: number[];\r\n partnerCompaniesTitle?: string;\r\n cardView?: boolean;\r\n onSave: (obj: any) => Promise;\r\n onOk: (closeDialog: boolean) => void;\r\n onCancel: (closeDialog: boolean) => void;\r\n}\r\n\r\nexport interface IUnitPermissionSettingsState {\r\n accessRightNoneTitle: string;\r\n accessRightReadTitle: string;\r\n accessRightWriteTitle: string;\r\n additionalPermissionATitle: string;\r\n additionalPermissionBTitle: string;\r\n additionalPermissionCTitle: string;\r\n validAdditionalPermissions: number[];\r\n userGroups: IUnitPermissionUserGroup[];\r\n unitNode: IUnitNode;\r\n saveUnitNode: IUnitNode;\r\n showPermissionsSummary: boolean;\r\n}\r\n\r\nexport class UnitPermissionSettings extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n getStateFromProps = (props: IUnitPermissionSettingsProp) => {\r\n const unitNodePermissions = props.unitNodePermissions;\r\n const userGroups = unitNodePermissions?.userGroups?.slice(0) ?? [];\r\n return {\r\n accessRightNoneTitle: props.accessRightNoneTitle ? props.accessRightNoneTitle : Translations.AccessRightNone,\r\n accessRightReadTitle: props.accessRightReadTitle ? props.accessRightReadTitle : \"\",\r\n accessRightWriteTitle: props.accessRightWriteHidden ? \"\" : (props.accessRightWriteTitle ? props.accessRightWriteTitle : Translations.AccessRightWrite),\r\n additionalPermissionATitle: props.additionalPermissionATitle ? props.additionalPermissionATitle : \"\",\r\n additionalPermissionBTitle: props.additionalPermissionBTitle ? props.additionalPermissionBTitle : \"\",\r\n additionalPermissionCTitle: props.additionalPermissionCTitle ? props.additionalPermissionCTitle : \"\",\r\n validAdditionalPermissions: props.validAdditionalPermissions ? props.validAdditionalPermissions : [],\r\n userGroups,\r\n unitNode: unitNodePermissions?.unitNode,\r\n saveUnitNode: unitNodePermissions?.unitNode,\r\n showPermissionsSummary: false\r\n };\r\n };\r\n\r\n constructor(props: IUnitPermissionSettingsProp) {\r\n super(props);\r\n this.state = this.getStateFromProps(props);\r\n const saveData = this.getSaveDataFromState(props, this.state);\r\n this.orgStateHash = saveData.hash;\r\n }\r\n\r\n getSaveDataFromState = (props: IUnitPermissionSettingsProp, state: IUnitPermissionSettingsState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"permissions\", state.saveUnitNode?.getJsonUnitNodeSaves([], null, null) ?? []);\r\n return result;\r\n };\r\n\r\n componentDidUpdate(prevProps: IUnitPermissionSettingsProp, prevState: IUnitPermissionSettingsState) {\r\n const props = this.props;\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n const prevUnitNodeId = prevProps.unitNodePermissions?.unitNode?.id ?? \"\";\r\n const unitNodeId = props.unitNodePermissions?.unitNode?.id ?? \"\";\r\n if (companyId === prevCompanyId && prevUnitNodeId === unitNodeId) return;\r\n const newState = this.getStateFromProps(props);\r\n this.setState(newState);\r\n this.orgStateHash = this.getSaveDataFromState(props, newState).hash;\r\n }\r\n\r\n handleChangeSaveUnitNode = (saveUnitNode: IUnitNode) => {\r\n this.setState({\r\n saveUnitNode\r\n });\r\n };\r\n\r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (closeDialog: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = await AppUtils.callService(() => props.onSave(saveData.obj));\r\n if (!result) return;\r\n // Save new hash since the window stays open in some scenarios\r\n this.orgStateHash = saveData.hash;\r\n props.onOk(closeDialog);\r\n };\r\n\r\n handleSave = () => {\r\n this.saveToDb(true);\r\n };\r\n\r\n handleCancel = async (closeDialog: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return false;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n await this.saveToDb(closeDialog);\r\n } else {\r\n props.onCancel(closeDialog);\r\n }\r\n\r\n return true;\r\n };\r\n\r\n handleShowPermissions = () => {\r\n this.setState({\r\n showPermissionsSummary: true\r\n });\r\n };\r\n\r\n handleHidePermissions = () => {\r\n this.setState({\r\n showPermissionsSummary: false\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.unitNode) return null;\r\n return (\r\n \r\n \r\n \r\n } />\r\n {state.showPermissionsSummary &&\r\n \r\n }\r\n \r\n \r\n {Translations.SetPermissions}\r\n \r\n this.handleCancel(true)} sx={{ marginRight: \".5rem\" }}>{Translations.Close}\r\n {Translations.Save}\r\n \r\n \r\n \r\n );\r\n }\r\n}","import React from \"react\";\r\nimport { ListStateIcon } from \"../ListStateIcon/ListStateIcon\";\r\nimport CheckCircleIcon from \"@mui/icons-material/CheckCircle\";\r\n\r\ninterface ListStateIconSuccessProps {\r\n noMargin?: boolean;\r\n color?: string;\r\n tooltip?: string;\r\n}\r\n\r\nexport const ListStateIconSuccess = (props: ListStateIconSuccessProps) => (\r\n \r\n);\r\n","import { Link, LinkProps } from \"@mui/material\";\r\nimport React, { ReactEventHandler, Ref, forwardRef } from \"react\";\r\n\r\ninterface IListLinkValueProps extends LinkProps {\r\n inactive?: boolean;\r\n}\r\n\r\nconst ListLinkValue = forwardRef(\r\n (\r\n props: IListLinkValueProps,\r\n ref: Ref\r\n ) => (\r\n }\r\n ref={ref}\r\n {...props}\r\n >\r\n {props.children}\r\n \r\n )\r\n);\r\n\r\nListLinkValue.displayName = \"ListLinkValue\";\r\n\r\nexport default ListLinkValue;\r\n","import { Chip, Tooltip } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { ListLinkValue } from \"source/components/framework/List/ListLinkValue\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\ninterface ITaskStateListChipProps {\r\n code: string;\r\n color: string;\r\n inactive?: boolean;\r\n fullWidth?: boolean;\r\n onClick?: () => void;\r\n}\r\n\r\nexport const TaskStateListChip = (props: ITaskStateListChipProps) => (\r\n \r\n {props.code}\r\n : props.code}\r\n size=\"small\"\r\n sx={{ backgroundColor: props.color, color: Base.invertColor(props.color, true), width: props.fullWidth ? \"100%\" : null }}\r\n />\r\n \r\n);\r\n","import LockOpen from \"@mui/icons-material/LockOpen\";\r\nimport { IconButtonProps } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppToolButton } from \"ui/Scripts/source/components/framework/Button/AppToolButton\";\r\n\r\nexport const UnlockToolButton = (props: IconButtonProps) => (\r\n }\r\n />\r\n);\r\n","import DoubleArrowOutlinedIcon from \"@mui/icons-material/DoubleArrowOutlined\";\r\nimport LockIcon from \"@mui/icons-material/Lock\";\r\nimport AccountCircle from \"@mui/icons-material/AccountCircle\";\r\nimport { Box, IconButton, Tooltip } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { UnlockToolButton } from \"../../Button/UnlockToolButton\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\ninterface DialogItemsNavProps {\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n createUser?: IModifyUser;\r\n modifyUser?: IModifyUser;\r\n deleteUser?: IModifyUser;\r\n lockedUser?: IModifyUser;\r\n isLockedToOtherUser?: boolean;\r\n onUnlockAndLockToMe?: () => void;\r\n onPrevious: () => Promise;\r\n onNext: () => Promise;\r\n}\r\n\r\nexport const DialogItemsNav = ({\r\n hasPrevious,\r\n hasNext,\r\n createUser,\r\n modifyUser,\r\n deleteUser,\r\n lockedUser,\r\n isLockedToOtherUser,\r\n onUnlockAndLockToMe,\r\n onPrevious,\r\n onNext,\r\n}: DialogItemsNavProps) => (\r\n \r\n {!!onPrevious &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {!!onNext &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n {isLockedToOtherUser &&\r\n \r\n {(onUnlockAndLockToMe\r\n ? \r\n : \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {(!!createUser || !!modifyUser || !!deleteUser) &&\r\n \r\n \r\n \r\n \r\n {!!createUser &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {!!modifyUser &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {!!deleteUser &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n \r\n \r\n);\r\n","import React from \"react\";\r\nimport { Checkbox, FormControlLabel } from \"@mui/material\";\r\n\r\ninterface IFormCheckBoxProps {\r\n title: string;\r\n checked: boolean;\r\n disabled?: boolean;\r\n onChange: (checked: boolean) => void;\r\n}\r\n\r\nexport const FormCheckBox = (props: IFormCheckBoxProps) => {\r\n return (\r\n {\r\n props.onChange(checked);\r\n }}\r\n />\r\n }\r\n />\r\n );\r\n};","// eslint-disable-next-line no-unused-vars\r\nimport * as React from \"react\";\r\nimport styled from \"@emotion/styled\";\r\n\r\nexport const ColorPickerDiv = styled.div`\r\n position: relative;\r\n\r\n button:first-of-type, .MuiButtonGroup-firstButton {\r\n border-radius: 0 .25rem .25rem 0;\r\n }\r\n`;\r\n\r\nexport const ColorBoxDiv = styled.div`\r\n cursor: pointer;\r\n border: 1px solid #BEBEBE;\r\n border-radius: 4px;\r\n height: 40px;\r\n`;\r\n\r\nexport const PickerContainer = styled.div`\r\n position: absolute;\r\n top: 40px;\r\n left: 0;\r\n z-index: 1001;\r\n\r\n .compact-picker {\r\n & > .flexbox-fix {\r\n display: none !important;\r\n }\r\n }\r\n`;\r\n","import { ClickAwayListener } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ColorResult, CompactPicker } from \"react-color\";\r\nimport { ColorBoxDiv, ColorPickerDiv, PickerContainer } from \"./ColorPicker.styles\";\r\n\r\n// ColorPicker\r\n// ***********************************************************************************************************************\r\nexport interface IColorPickerProp {\r\n autoFocus?: boolean;\r\n classes?: string;\r\n disabled?: boolean;\r\n openAlignRight?: boolean;\r\n value: string;\r\n requiredColors?: string[];\r\n onChange(value: string);\r\n}\r\n\r\nexport interface IColorPickerState {\r\n open: boolean;\r\n colors: string[];\r\n}\r\n\r\nexport class ColorPicker extends React.Component {\r\n defaultColors = [\r\n \"#4D4D4D\", \"#999999\", \"#FFFFFF\", \"#F44E3B\", \"#FE9200\", \"#FCDC00\", \"#DBDF00\", \"#A4DD00\", \"#68CCCA\", \"#73D8FF\", \"#AEA1FF\", \"#FDA1FF\",\r\n \"#333333\", \"#808080\", \"#cccccc\", \"#D33115\", \"#E27300\", \"#FCC400\", \"#B0BC00\", \"#68BC00\", \"#16A5A5\", \"#009CE0\", \"#7B64FF\", \"#FA28FF\",\r\n \"#000000\", \"#666666\", \"#B3B3B3\", \"#9F0500\", \"#C45100\", \"#FB9E00\", \"#808900\", \"#194D33\", \"#0C797D\", \"#0062B1\", \"#653294\", \"#AB149E\"\r\n ];\r\n\r\n constructor(props: IColorPickerProp) {\r\n super(props);\r\n const colors = this.defaultColors.slice(0);\r\n for (const color of props.requiredColors ?? []) {\r\n if (colors.indexOf(color) > -1) continue;\r\n colors.push(color);\r\n }\r\n this.state = {\r\n open: false,\r\n colors\r\n };\r\n }\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n this.setState({ open: false })}>\r\n \r\n this.setState({ open: !state.open })}>\r\n {state.open &&\r\n \r\n {\r\n props.onChange(color.hex);\r\n this.setState({ open: false });\r\n }}\r\n />\r\n \r\n }\r\n \r\n \r\n );\r\n }\r\n}","import { Box } from \"@mui/material\";\r\nimport React, { ReactNode } from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { DangerButton } from \"../../Button/DangerButton\";\r\nimport { ConfirmationButton } from \"../../Button/ConfirmationButton\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\ninterface IDialogButtonsProps {\r\n isNew?: boolean;\r\n prefixNode?: ReactNode;\r\n printDisabled?: boolean;\r\n removeDisabled?: boolean;\r\n saveDisabled?: boolean;\r\n cancelTitle?: string;\r\n removeTitle?: string;\r\n saveTitle?: string;\r\n onCancel: () => void;\r\n onPrint?: () => Promise;\r\n onRemove?: () => Promise;\r\n onSave?: () => Promise | Promise | void;\r\n}\r\n\r\nexport const DialogButtons = ({\r\n isNew,\r\n prefixNode,\r\n printDisabled,\r\n removeDisabled,\r\n saveDisabled,\r\n cancelTitle,\r\n removeTitle,\r\n saveTitle,\r\n onCancel,\r\n onPrint,\r\n onRemove,\r\n onSave\r\n}: IDialogButtonsProps) => (\r\n \r\n {prefixNode}\r\n {!!onRemove &&\r\n {removeTitle ?? Translations.Remove}\r\n }\r\n {!!onPrint &&\r\n {Translations.Print}\r\n }\r\n {!cancelTitle ? (isNew || !onSave ? Translations.Cancel : Translations.Close) : cancelTitle}\r\n {!!onSave &&\r\n {saveTitle ?? Translations.Save}\r\n }\r\n \r\n);\r\n","import { Box, Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult, DatabaseRecordType, EnumHelper } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../../../framework/appUtils\";\r\nimport * as store from \"../../../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../../../framework/saveData\";\r\nimport * as calendarTaskService from \"../../../../../models/services/calendarTaskService\";\r\nimport * as storeActions from \"../../../../../models/store/storeActions\";\r\nimport { Dialog } from \"../../../../framework/Dialog/Dialog\";\r\nimport { DialogItemsNav } from \"../../../../framework/Dialog/DialogItemsNav\";\r\nimport { FormField } from \"../../../../framework/FormField\";\r\nimport { GridRow } from \"../../../../framework/Grid/GridRow\";\r\nimport { ModifyUserInfo } from \"../../../../framework/User/ModifyUserInfo\";\r\nimport { FormCheckBox } from \"source/components/framework/FormCheckBox\";\r\nimport { ColorPicker } from \"source/components/framework/ColorPicker/ColorPicker\";\r\nimport { DialogButtons } from \"source/components/framework/Dialog/DialogButtons\";\r\nimport { ICalendarTaskCategoryEditItem } from \"ui/Scripts/source/models/calendarTaskCategory/calendarTaskCategoryEditItem\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\nexport interface ICalendarTaskCategoryDialogProp {\r\n id: string;\r\n companyId: string;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onOk: () => void;\r\n onCancel: () => void;\r\n onRemove: (ids: string[]) => Promise;\r\n onRefreshList: () => Promise;\r\n}\r\n\r\nexport interface ICalendarTaskCategoryDialogState {\r\n code: string;\r\n comment: string;\r\n color: string;\r\n sortOrder: string;\r\n databaseRecordType: DatabaseRecordType;\r\n activeState: number;\r\n \r\n item: ICalendarTaskCategoryEditItem;\r\n rowId: string;\r\n}\r\n\r\nexport class CalendarTaskCategoryDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: ICalendarTaskCategoryDialogProp) {\r\n super(props);\r\n this.state = {\r\n item: null,\r\n code: \"\",\r\n comment: \"\",\r\n color: \"\",\r\n sortOrder: \"0\",\r\n databaseRecordType: null,\r\n activeState: 0,\r\n rowId: \"\",\r\n };\r\n }\r\n\r\n loadData = async () => {\r\n const props = this.props;\r\n const result = await AppUtils.callService(() => calendarTaskService.getCalendarTaskCategoryEdit(props.companyId, props.id), false);\r\n if (!result) return;\r\n const item = result.item;\r\n const state = {\r\n ...this.state,\r\n item,\r\n code: item.code,\r\n comment: item.comment,\r\n color: item.color,\r\n sortOrder: item.sortOrder.toString(10),\r\n databaseRecordType: item.databaseRecordType,\r\n activeState: item.activeState,\r\n rowId: item.rowId\r\n };\r\n this.setState(state);\r\n const saveData = this.getSaveDataFromState(this.props, state);\r\n this.orgStateHash = saveData.hash;\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadData();\r\n }\r\n\r\n async componentDidUpdate(prevProps: ICalendarTaskCategoryDialogProp, prevState: ICalendarTaskCategoryDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if (prevProps.companyId === props.companyId && prevProps.id === props.id) return;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb()) return;\r\n props.onRefreshList();\r\n }\r\n this.loadData();\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"code\") {\r\n this.setState({ code: value });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n } else if (name === \"sortOrder\") {\r\n this.setState({ sortOrder: value });\r\n }\r\n };\r\n\r\n getSaveDataFromState = (props: ICalendarTaskCategoryDialogProp, state: ICalendarTaskCategoryDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.item.id);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"code\", state.code);\r\n result.append(\"comment\", state.comment);\r\n result.append(\"color\", state.color);\r\n result.append(\"sortOrder\", state.sortOrder.toInteger());\r\n result.append(\"databaseRecordType\", state.databaseRecordType);\r\n result.append(\"activeState\", state.activeState);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.code) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.NameMustBeDefined));\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n return !!(await AppUtils.callService(() => calendarTaskService.saveCalendarTaskCategoryEdit(saveData.obj)));\r\n };\r\n\r\n handleSave = async () => {\r\n if (!await this.saveToDb()) return;\r\n this.props.onOk();\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.item.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveCalendarTaskCategoryParameter, state.item.code), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await props.onRemove([state.item.id]);\r\n if (!result) return;\r\n props.onOk();\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut(this.getSaveDataFromState(props, this.state).hash, this.orgStateHash, this.saveToDb, props.onRefreshList);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.item) return null;\r\n const isNew = state.item.isNew();\r\n const databaseRecordTypeSpecified = !Base.isNullOrUndefined(state.databaseRecordType);\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ color })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {databaseRecordTypeSpecified &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n 0}\r\n disabled={databaseRecordTypeSpecified}\r\n onChange={(checked: boolean) => { this.setState({ activeState: checked ? 1 : 0 }); }}\r\n />\r\n \r\n \r\n \r\n {!isNew &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { infiniteListPageSize } from \"../../../../models/common/webConsts\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport * as calendarTaskService from \"../../../../models/services/calendarTaskService\";\r\nimport { IListUsingComponentState, List } from \"../../../framework/List/List\";\r\nimport { SaveDataObj } from \"source/framework/saveData\";\r\nimport { DialogSettingsCard } from \"source/components/framework/Container/DialogSettingsCard\";\r\nimport { ActionContainer } from \"source/components/framework/ActionContainer\";\r\nimport { ListSearchFilter } from \"source/components/framework/List/ListSearchFilter\";\r\nimport { ListIconButtonsItem } from \"source/components/framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { ListStateIconSuccess } from \"source/components/framework/List/ListStateIconSuccess\";\r\nimport { ICalendarTaskCategoryListItem } from \"ui/Scripts/source/models/calendarTaskCategory/calendarTaskCategoryListItem\";\r\nimport { TaskStateListChip } from \"source/components/task/TaskStateListChip\";\r\nimport { CalendarTaskCategoryDialog } from \"./CalendarTaskCategoryDialog\";\r\n\r\nexport interface ICalendarTaskCategoryListProp {\r\n companyId: string;\r\n}\r\n\r\ninterface ICalendarTaskCategoryListState extends IListUsingComponentState {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n pageSize: number;\r\n page: number;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n checkedIds: string[];\r\n canRemove: boolean;\r\n}\r\n\r\nexport class CalendarTaskCategoryList extends React.Component {\r\n constructor(props: ICalendarTaskCategoryListProp) {\r\n super(props);\r\n this.state = {\r\n intialized: false,\r\n isLoading: false,\r\n page: 1,\r\n hasMore: true,\r\n filter: \"\",\r\n pageSize: infiniteListPageSize,\r\n sortColumn: \"inUse\",\r\n sortOrderIsAsc: false,\r\n items: [],\r\n selectedId: null,\r\n checkedIds: [],\r\n canRemove: false,\r\n showEditDialog: false,\r\n editDialogId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false,\r\n detailsItem: null\r\n };\r\n }\r\n\r\n getCanRemove = (items: ICalendarTaskCategoryListItem[], selectedId: string, checkedIds: string[]): boolean => {\r\n const selectedIds = List.getSelectedIds(selectedId, checkedIds);\r\n return items.filter(i => selectedIds.indexOf(i.id) > -1 && i.isRemovable).length > 0;\r\n };\r\n\r\n searchItems = async (pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean, moveNext: boolean = false, setEditDialogData: boolean = true) => {\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => calendarTaskService.getCalendarTaskCategoryListItems(this.props.companyId, !refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1, filter, sortColumn, sortOrderIsAsc), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const state = this.state;\r\n const items = List.getListItems(state.items, state.selectedId, state.checkedIds, result.items, resetItems, refreshList);\r\n let selectedId = items.selectedId;\r\n let index = items.items.findIndex(i => i.id === selectedId);\r\n let selectedItem = index > -1 ? items.items[index] : null;\r\n if (moveNext && selectedItem && index < items.items.length - 1) {\r\n index = index + 1;\r\n selectedItem = items.items[index];\r\n selectedId = items.items[index].id;\r\n }\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n selectedId,\r\n checkedIds: items.checkedIds,\r\n canRemove: this.getCanRemove(items.items, selectedId, items.checkedIds),\r\n editDialogId: setEditDialogData ? (moveNext && selectedItem ? selectedItem.id : \"\") : state.editDialogId,\r\n editDialogHasPrevious: setEditDialogData ? index > 0 : state.editDialogHasPrevious,\r\n editDialogHasNext: setEditDialogData ? (index < items.items.length - 1 || result.hasMore) : state.editDialogHasNext,\r\n });\r\n };\r\n\r\n refreshList = async (setEditDialogData: boolean = true) => {\r\n const state = this.state;\r\n await this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, true, false, setEditDialogData);\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: ICalendarTaskCategoryListProp, prevState: ICalendarTaskCategoryListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n if (companyId === prevCompanyId) return;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds,\r\n canRemove: this.getCanRemove(this.state.items, selectedId, checkedIds)\r\n });\r\n };\r\n\r\n handleAdd = () => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, Base.emptyGuid));\r\n };\r\n\r\n handleOpenLine = (id: string) => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, id));\r\n };\r\n\r\n handleEditDialogOk = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n this.refreshList();\r\n };\r\n\r\n handleEditDialogCancel = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n };\r\n\r\n getRemoveSaveData = (props: ICalendarTaskCategoryListProp, ids: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"ids\", ids);\r\n return result;\r\n };\r\n\r\n remove = async (ids: string[]): Promise => {\r\n const props = this.props;\r\n if (ids.length < 1) return;\r\n const saveData = this.getRemoveSaveData(props, ids);\r\n // Call server\r\n const result = await AppUtils.callService(() => calendarTaskService.removeCalendarTaskCategories(saveData.obj));\r\n if (!result) return null;\r\n this.refreshList();\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n const selectedItems = state.items.filter(i => selectedIds.indexOf(i.id) > -1);\r\n if (selectedItems.length < 1) return;\r\n if (await AppUtils.showConfirmationDialog(selectedItems.length > 1\r\n ? Translations.DoYouReallyWantToRemoveSelectedCalendarTaskCategories\r\n : String.format(Translations.DoYouReallyWantToRemoveCalendarTaskCategoryParameter, selectedItems[0].code), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n this.remove(selectedIds);\r\n }\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n this.setState(List.getEditDialogItemByIndexStateChange(this.state, index, () => this.searchItems(state.pageSize, state.page + 1, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false, true)));\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n }\r\n rightItems={\r\n \r\n }\r\n />\r\n }\r\n content={\r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 5,\r\n content: this.handleOpenLine(item.id)}\r\n />\r\n },\r\n { size: 5, content: item.comment },\r\n { size: 2, content: item.activeState < 1 ? null : }\r\n ],\r\n id: item.id,\r\n classes: item.activeState < 1 ? \"disabled\" : \"\"\r\n };\r\n })}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpenLine}\r\n />\r\n } />\r\n {(state.showEditDialog && !!state.editDialogId) &&\r\n this.refreshList(false)}\r\n onPrevious={() => List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","// TaskSettingsDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Grid } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport * as calendarTaskService from \"../../../models/services/calendarTaskService\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { IUnitNodePermissions } from \"../../../models/unit/unitNodePermissions\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { IPageNavMenuItem, PageNavMenuItems } from \"../../framework/PageNav/PageNavMenuItems\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { UnitPermissionSettings } from \"source/components/unit/Unit/UnitPermissionSettings\";\r\nimport { CalendarTaskCategoryList } from \"./CalendarTaskCategoryList\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum CalendarTaskSettingsDialogMenuItem {\r\n Permissions = \"1\",\r\n Categories = \"2\",\r\n DefaultCategories = \"3\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n//CalendarTaskSettingsDialog\r\nexport interface ICalendarTaskSettingsDialogProp {\r\n sessionState: ISessionState;\r\n companyId: string;\r\n classes?: string;\r\n settingsActions: IPageNavMenuItem[];\r\n onClose: (refreshView: boolean) => void;\r\n}\r\n\r\nexport interface ICalendarTaskSettingsDialogState {\r\n // Permissions\r\n unitNodePermissions: IUnitNodePermissions;\r\n\r\n activeMenuItem: CalendarTaskSettingsDialogMenuItem;\r\n}\r\n\r\nexport class CalendarTaskSettingsDialog extends React.Component {\r\n private permissionsRef = React.createRef();\r\n\r\n constructor(props: ICalendarTaskSettingsDialogProp) {\r\n super(props);\r\n this.state = {\r\n unitNodePermissions: null,\r\n activeMenuItem: CalendarTaskSettingsDialogMenuItem.Permissions,\r\n };\r\n }\r\n\r\n async componentDidMount(): Promise {\r\n await this.loadPermissions();\r\n }\r\n\r\n // #region Permissions\r\n onUnitPermissionSettingsCancel = async (): Promise => {\r\n return await this.permissionsRef.current.handleCancel(false);\r\n };\r\n\r\n loadPermissions = async () => {\r\n const result = await AppUtils.callService(() => calendarTaskService.getUnitNodePermissions(this.props.companyId), false);\r\n if (!result) return;\r\n this.setState({\r\n unitNodePermissions: result\r\n });\r\n };\r\n\r\n handleUnitPermissionSettingsSave = async (obj: any) => {\r\n const result = await calendarTaskService.saveUnitNodePermissions(obj);\r\n this.loadPermissions();\r\n return result;\r\n };\r\n // #endregion Permissions\r\n\r\n handleSubViewOk = (_closeDialog: boolean) => {\r\n };\r\n\r\n handleToggleActiveMenuItem = async (menuItem: CalendarTaskSettingsDialogMenuItem) => {\r\n const state = this.state;\r\n if (state.activeMenuItem === menuItem) return;\r\n //Check current tab cancel\r\n if (state.activeMenuItem === CalendarTaskSettingsDialogMenuItem.Permissions) {\r\n if (!await this.onUnitPermissionSettingsCancel()) return;\r\n }\r\n //Load new tab data\r\n if (menuItem === CalendarTaskSettingsDialogMenuItem.Permissions) {\r\n await this.loadPermissions();\r\n }\r\n //Set new tab active\r\n this.setState({\r\n activeMenuItem: menuItem\r\n });\r\n };\r\n\r\n handleCancel = async (closeDialog: boolean) => {\r\n if (!closeDialog) return;\r\n this.props.onClose(true);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n this.handleCancel(true)}\r\n body={\r\n \r\n \r\n \r\n \r\n \r\n {state.activeMenuItem === CalendarTaskSettingsDialogMenuItem.Permissions && (\r\n \r\n )}\r\n {(state.activeMenuItem === CalendarTaskSettingsDialogMenuItem.Categories || state.activeMenuItem === CalendarTaskSettingsDialogMenuItem.DefaultCategories) &&\r\n \r\n }\r\n \r\n \r\n }\r\n buttons={\r\n state.activeMenuItem !== CalendarTaskSettingsDialogMenuItem.Permissions\r\n ? [{ title: Translations.Close, variant: \"outlined\", onClick: () => this.handleCancel(true) }]\r\n : null\r\n }\r\n />\r\n );\r\n }\r\n}","import { ToggleButton, ToggleButtonProps, Tooltip } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\ninterface IAppToggleButtonProps extends ToggleButtonProps {\r\n tooltip?: string\r\n}\r\n\r\nexport const AppToggleButton = (props: IAppToggleButtonProps) => {\r\n const buttonElement = {props.children};\r\n\r\n if (props.tooltip) {\r\n return (\r\n \r\n \r\n {buttonElement}\r\n \r\n \r\n );\r\n }\r\n\r\n return (buttonElement);\r\n};","import PreviewOutlinedIcon from \"@mui/icons-material/PreviewOutlined\";\r\nimport { ToggleButtonProps } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppToggleButton } from \"../AppToggleButton\";\r\n\r\nexport const PreviewToggleButton = (props: ToggleButtonProps) => (\r\n \r\n \r\n \r\n);\r\n","import { ListItemIcon, ListItemText, Menu, MenuItem } from \"@mui/material\";\r\nimport React, { MouseEvent, useRef, useState } from \"react\";\r\nimport { IDropdownAction } from \"ui/Scripts/source/components/framework/Dropdown/Dropdown\";\r\nimport { AppAddIcon } from \"../../Icon/AppAddIcon\";\r\nimport { AppButton, IAppButtonProps } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\ninterface IAddButtonAction extends IDropdownAction {\r\n fileInputAccept?: string;\r\n fileInputName?: string;\r\n onAddFilesClick?: (fileList: FileList) => void;\r\n}\r\n\r\ninterface IAddButtonMenuItemProps {\r\n action: IAddButtonAction;\r\n disabled?: boolean;\r\n index: number;\r\n onClose: () => void;\r\n}\r\n\r\nconst AddButtonMenuItem = (props: IAddButtonMenuItemProps) => {\r\n const inputRef = useRef(null);\r\n\r\n const handleActionClick = (event: any, action: IAddButtonAction) => {\r\n if (!action) return;\r\n if (props.disabled || action.disabled) return;\r\n event.stopPropagation();\r\n action.onClick();\r\n props.onClose();\r\n };\r\n\r\n const handleFileActionChange = (e: React.ChangeEvent, action: IAddButtonAction) => {\r\n if (props.disabled || action.disabled) return;\r\n if (!e.target.files || e.target.files.length < 1) return;\r\n action.onAddFilesClick(e.target.files);\r\n props.onClose();\r\n };\r\n\r\n const action = props.action;\r\n\r\n return (\r\n inputRef.current.click() : (event) => handleActionClick(event, action)}>\r\n {action.icon && {action.icon}}\r\n {action.title}\r\n {!!action.onAddFilesClick &&\r\n handleFileActionChange(e, action)} />\r\n }\r\n \r\n );\r\n};\r\n\r\ninterface IAddButtonProps extends IAppButtonProps {\r\n actions?: IAddButtonAction[];\r\n}\r\n\r\nexport const AddButton = (props: IAddButtonProps) => {\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n const open = Boolean(anchorEl);\r\n\r\n const handleToggleClick = (event: MouseEvent) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n return (\r\n <>\r\n } {...props} onClick={props.actions ? handleToggleClick : props.onClick}>\r\n {props.children}\r\n \r\n {props.actions &&\r\n \r\n {props.actions.map((action, index) => (\r\n \r\n ))}\r\n \r\n }\r\n \r\n );\r\n};\r\n","import React from \"react\";\r\nimport { AppSettingsIcon } from \"../../Icon/AppSettingsIcon\";\r\nimport { AppButton, IAppButtonProps } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\nexport const SettingsButton = (props: IAppButtonProps) => (\r\n } {...props}>\r\n {props.children}\r\n \r\n);\r\n","import {\r\n Box,\r\n ClickAwayListener,\r\n Paper,\r\n Popper,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport { DateCalendar, LocalizationProvider } from \"@mui/x-date-pickers\";\r\nimport { AdapterMoment } from \"@mui/x-date-pickers/AdapterMoment\";\r\nimport { PickerSelectionState } from \"@mui/x-date-pickers/internals\";\r\nimport * as moment from \"moment\";\r\nimport React from \"react\";\r\n\r\nconst getLanguageLocale = (culture: string) => {\r\n switch (culture) {\r\n case \"fi\":\r\n return \"fi\";\r\n case \"en\":\r\n case \"en-US\":\r\n return \"en\";\r\n case \"sv\":\r\n return \"se\";\r\n }\r\n};\r\n\r\ninterface CalendarDatePickerProps {\r\n title?: string;\r\n referenceDate?: Date;\r\n onChange: (value: any) => void;\r\n}\r\n\r\nexport const CalendarDatePicker = (props: CalendarDatePickerProps) => {\r\n const [open, setOpen] = React.useState(false);\r\n const anchorRef = React.useRef(null);\r\n\r\n const handleClick = () => {\r\n setOpen((old) => !old);\r\n };\r\n\r\n const handleClose = (event: Event | React.SyntheticEvent) => {\r\n if (anchorRef.current && anchorRef.current.contains(event.target as HTMLElement)) {\r\n return;\r\n }\r\n\r\n setOpen(false);\r\n };\r\n\r\n const handleChange = (value: any, selectionState: PickerSelectionState) => {\r\n if (selectionState === \"finish\") {\r\n setOpen(false);\r\n props.onChange(value);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n {props.title}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import { Typography, TypographyProps } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\ntype MultirowEllipsisTypographyProps = TypographyProps & {\r\n maxRows?: number;\r\n};\r\n\r\nexport const MultirowEllipsisTypography = ({\r\n maxRows,\r\n sx,\r\n ...props\r\n}: MultirowEllipsisTypographyProps) => (\r\n \r\n {props.children}\r\n \r\n);\r\n","import CloseIcon from \"@mui/icons-material/Close\";\r\nimport { Box, ClickAwayListener, IconButton, Popper, Typography } from \"@mui/material\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport * as calendarTaskService from \"source/models/services/calendarTaskService\";\r\nimport { ToolButtonDropdown } from \"ui/Scripts/source/components/framework/Button/ToolButtonDropdown\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { DangerButton } from \"../../Button/DangerButton\";\r\nimport { EllipsisTypography } from \"../../Typography/EllipsisTypography\";\r\nimport { MultirowEllipsisTypography } from \"../../Typography/MultirowEllipsisTypography\";\r\nimport { ICalendarItem } from \"../Calendar\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\ninterface CalendarItemDetailPopupProps {\r\n anchorEl?: HTMLElement;\r\n event: ICalendarItem;\r\n onOpenDialog: (id: string) => void;\r\n onRemoveItem: (id: string) => void;\r\n onClose: () => void;\r\n}\r\n\r\nexport const CalendarItemDetailPopup = (props: CalendarItemDetailPopupProps) => {\r\n const [state, setState] = useState({\r\n isLoading: true,\r\n canSaveCalendarTask: false,\r\n canRemoveCalendarTask: false,\r\n });\r\n\r\n const handleClickAway = (event: MouseEvent | TouchEvent) => {\r\n event.stopPropagation();\r\n event.stopImmediatePropagation();\r\n props.onClose();\r\n };\r\n\r\n useEffect(() => {\r\n const loadData = async () => {\r\n const result = await AppUtils.callService(() => calendarTaskService.getCalendarTaskPermissions(props.event.companyId, props.event.id, props.event.recordId, props.event.databaseRecordType), false, false, () => setState((old) => ({ ...old, isLoading: false })));\r\n if (!result) return;\r\n setState((old) => ({\r\n ...old,\r\n isLoading: false,\r\n canSaveCalendarTask: result.canSaveCalendarTask,\r\n canRemoveCalendarTask: result.canRemoveCalendarTask\r\n }));\r\n };\r\n\r\n loadData();\r\n }, [props.event.companyId, props.event.id]);\r\n \r\n if (state.isLoading) return null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {Translations.CalendarTask}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.event?.title}\r\n \r\n \r\n {props.event?.formatedDate}\r\n \r\n \r\n {props.event?.location}\r\n \r\n \r\n {props.event?.parentId &&\r\n <>\r\n props.onRemoveItem(props.event?.id) },\r\n { title: Translations.CalendarTaskRemoveSeries, onClick: () => props.onRemoveItem(props.event?.parentId) },\r\n ]}\r\n margin=\"0 1rem 0 0\"\r\n title={Translations.Remove}\r\n menuRight={true}\r\n size=\"small\"\r\n />\r\n props.onOpenDialog(props.event?.id) },\r\n { title: state.canSaveCalendarTask ? Translations.CalendarTaskEditSeries : Translations.CalendarTaskOpenSeries, onClick: () => props.onOpenDialog(props.event?.parentId) },\r\n ]}\r\n title={Translations.Edit}\r\n menuRight={true}\r\n size=\"small\"\r\n />\r\n \r\n }\r\n {!props.event?.parentId &&\r\n <>\r\n props.onRemoveItem(props.event?.id)}\r\n size=\"small\"\r\n sx={{ marginRight: \".25rem\" }}\r\n >\r\n {Translations.Remove}\r\n \r\n props.onOpenDialog(props.event?.id)}>\r\n {state.canSaveCalendarTask ? Translations.Edit : Translations.Open}\r\n \r\n \r\n }\r\n \r\n \r\n \r\n );\r\n};\r\n","import { VisibilityOffOutlined } from \"@mui/icons-material\";\r\nimport React from \"react\";\r\nimport { ListStateIcon } from \"../ListStateIcon/ListStateIcon\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\n\r\ninterface IListStateIconPrivateProps {\r\n noMargin?: boolean;\r\n tooltip?: string;\r\n}\r\n\r\nexport const ListStateIconPrivate = (props: IListStateIconPrivateProps) => {\r\n return (\r\n \r\n );\r\n};\r\n","import { EventClickArg, EventContentArg, EventDropArg, EventMountArg } from \"@fullcalendar/core\";\r\nimport fiLocale from \"@fullcalendar/core/locales/fi\";\r\nimport dayGridPlugin from \"@fullcalendar/daygrid\";\r\nimport interactionPlugin, { DateClickArg } from \"@fullcalendar/interaction\";\r\nimport momentPlugin from \"@fullcalendar/moment\";\r\nimport FullCalendar from \"@fullcalendar/react\";\r\nimport ArrowBackIosNewIcon from \"@mui/icons-material/ArrowBackIosNew\";\r\nimport ArrowForwardIosIcon from \"@mui/icons-material/ArrowForwardIos\";\r\nimport {\r\n Box,\r\n ToggleButton,\r\n ToggleButtonGroup\r\n} from \"@mui/material\";\r\nimport * as moment from \"moment\";\r\nimport React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { CalendarDatePicker } from \"./CalendarDatePicker\";\r\nimport { CalendarItemDetailPopup } from \"./CalendarItemDetailPopup\";\r\nimport { ListStateIconPrivate } from \"../List/ListStateIconPrivate\";\r\nimport { DatabaseRecordType } from \"ui/Scripts/source/models/enums\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\nimport { AppToolButton } from \"ui/Scripts/source/components/framework/Button/AppToolButton\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum CalendarViewType {\r\n Day = \"dayGridDay\",\r\n Week = \"dayGridWeek\",\r\n Month = \"dayGridMonth\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\nexport interface ICalendarItem {\r\n id: string;\r\n companyId: string;\r\n recordId: string;\r\n databaseRecordType: DatabaseRecordType;\r\n title: string;\r\n start: string;\r\n end: string;\r\n color: string;\r\n allDay: boolean;\r\n editable: boolean;\r\n location?: string;\r\n formatedDate?: string;\r\n parentId?: string;\r\n}\r\n\r\nexport type CalendarRefProps = {\r\n moveToDate: (date: moment.Moment) => void;\r\n moveToPrev: () => void;\r\n moveToNext: () => void;\r\n};\r\n\r\ninterface CalendarProps {\r\n height?: string;\r\n events: ICalendarItem[];\r\n onGetEvents: (startDate: number, endDate: number) => void; //UTC dates\r\n onDateClick: (date: number) => void;\r\n onEventClick: (id: string) => void;\r\n onEventRemove: (id: string) => void;\r\n onSetEventStartDate: (id: string, startDate: number) => Promise;\r\n}\r\n\r\ninterface CalendarState {\r\n title: string;\r\n viewType: CalendarViewType;\r\n referenceDate?: Date;\r\n detailsVisible: boolean;\r\n detailsEvent?: ICalendarItem;\r\n detailsAnchor?: HTMLElement;\r\n}\r\n\r\nexport const Calendar = forwardRef(({ height = \"calc(100vh - 380px)\", ...props }: CalendarProps, ref) => {\r\n const calendarRef = useRef();\r\n\r\n const getEvents = (start: Date, end: Date) => {\r\n props.onGetEvents(start.getTime(), end.getTime());\r\n };\r\n\r\n const handleDateChange = (date: moment.Moment) => {\r\n const calendarApi = calendarRef?.current?.getApi();\r\n calendarApi.gotoDate(date.toISOString());\r\n setState((old) => ({\r\n ...old,\r\n title: calendarApi.view?.title,\r\n referenceDate: calendarApi.getDate(),\r\n }));\r\n getEvents(calendarApi.view.activeStart, calendarApi.view.activeEnd);\r\n };\r\n\r\n const handlePrev = () => {\r\n const calendarApi = calendarRef?.current?.getApi();\r\n calendarApi.prev();\r\n setState((old) => ({\r\n ...old,\r\n title: calendarApi.view?.title,\r\n referenceDate: calendarApi.getDate(),\r\n }));\r\n getEvents(calendarApi.view.activeStart, calendarApi.view.activeEnd);\r\n };\r\n\r\n const handleNext = () => {\r\n const calendarApi = calendarRef?.current?.getApi();\r\n calendarApi.next();\r\n setState((old) => ({\r\n ...old,\r\n title: calendarApi.view?.title,\r\n referenceDate: calendarApi.getDate(),\r\n }));\r\n getEvents(calendarApi.view.activeStart, calendarApi.view.activeEnd);\r\n };\r\n\r\n useImperativeHandle(ref, () => {\r\n return {\r\n moveToDate(date: moment.Moment) {\r\n handleDateChange(date);\r\n },\r\n moveToPrev() {\r\n handlePrev();\r\n },\r\n moveToNext() {\r\n handleNext();\r\n },\r\n };\r\n }, []);\r\n\r\n const [state, setState] = useState({\r\n title: \"\",\r\n viewType: CalendarViewType.Month,\r\n detailsVisible: false,\r\n });\r\n \r\n const isDblClick = useRef(false);\r\n\r\n useEffect(() => {\r\n setState((old) => ({\r\n ...old,\r\n title: calendarRef?.current?.getApi().view.title,\r\n }));\r\n }, [calendarRef?.current?.getApi().view.title]);\r\n\r\n const handleToday = () => {\r\n const calendarApi = calendarRef?.current?.getApi();\r\n calendarApi.today();\r\n setState((old) => ({\r\n ...old,\r\n title: calendarApi.view?.title,\r\n referenceDate: calendarApi.getDate(),\r\n }));\r\n getEvents(calendarApi.view.activeStart, calendarApi.view.activeEnd);\r\n };\r\n\r\n const handleChangeView = (viewType: CalendarViewType) => {\r\n if (!viewType) return; //viewType may be null!\r\n const calendarApi = calendarRef?.current?.getApi();\r\n const date = calendarApi.getDate();\r\n calendarApi.changeView(viewType);\r\n setState((old) => ({\r\n ...old,\r\n title: calendarApi.view?.title,\r\n viewType\r\n }));\r\n getEvents(calendarApi.view.activeStart, calendarApi.view.activeEnd);\r\n calendarApi.gotoDate(date);\r\n calendarApi.select(date);\r\n };\r\n\r\n const handleEventClick = (event: EventClickArg) => {\r\n setState((old) => ({\r\n ...old,\r\n detailsVisible: true,\r\n detailsEvent: props.events?.find((item) => item.id === event.event.id),\r\n detailsAnchor: event.el,\r\n }));\r\n };\r\n\r\n const handleEventDoubleClick = (event: EventMountArg) => {\r\n props.onEventClick(event.event.id);\r\n };\r\n\r\n const handleDateClick = (arg: DateClickArg) => {\r\n if (isDblClick.current) {\r\n isDblClick.current = false;\r\n props.onDateClick(arg.date.getTime());\r\n } else {\r\n isDblClick.current = true;\r\n setTimeout(() => { isDblClick.current = false; }, 200);\r\n const calendarApi = calendarRef?.current?.getApi();\r\n calendarApi.gotoDate(arg.date);\r\n calendarApi.select(arg.date);\r\n setState((old) => ({\r\n ...old,\r\n title: calendarApi.view.title,\r\n }));\r\n }\r\n };\r\n\r\n const handleEventDrop = (event: EventDropArg) => {\r\n if (!event.event?.start) return;\r\n props.onSetEventStartDate(event.event.id, event.event.start.getTime());\r\n };\r\n\r\n const renderEventContent = (eventContent: EventContentArg) => (\r\n <>\r\n {!!eventContent.event.extendedProps && !!eventContent.event.extendedProps.private &&\r\n \r\n \r\n \r\n }\r\n
\r\n
{eventContent.timeText}
\r\n
{eventContent.event.title}
\r\n \r\n );\r\n\r\n // This is called too often...\r\n // const handleEvents = (arg: EventSourceFuncArg, successCallback: (eventInputs: EventInput[]) => void, failureCallback: (error: Error) => void) => {\r\n // if (isCalling.current) return;\r\n // isCalling.current = true;\r\n // //console.log(\"handleEvents 1\", arg.start, arg.end, arg.timeZone);\r\n // props.onGetEvents(arg.start.getTime(), arg.end.getTime())\r\n // .then(events => {\r\n // //console.log(\"handleEvents 2\", events);\r\n // successCallback(events);\r\n // })\r\n // .finally(() => {\r\n // isCalling.current = false;\r\n // });\r\n // };\r\n \r\n return (\r\n <>\r\n \r\n \r\n \r\n {Translations.Today}\r\n \r\n } />\r\n \r\n } />\r\n \r\n \r\n handleChangeView(value)}\r\n >\r\n {Base.upperCaseFirst(Translations.Day)}\r\n {Translations.Week}\r\n {Translations.Month}\r\n \r\n \r\n \r\n {\r\n event.el.addEventListener(\"dblclick\", () => {\r\n handleEventDoubleClick(event);\r\n });\r\n }}\r\n />\r\n {state.detailsVisible &&\r\n setState((old) => ({ ...old, detailsVisible: false }))}\r\n />\r\n }\r\n \r\n );\r\n});\r\nCalendar.displayName = \"Calendar\";","import FilterAltOutlinedIcon from \"@mui/icons-material/FilterAltOutlined\";\r\nimport React from \"react\";\r\nimport { AppButton, IAppButtonProps } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\ninterface IFilterButtonProps extends IAppButtonProps {\r\n iconcolor?:\r\n | \"inherit\"\r\n | \"action\"\r\n | \"disabled\"\r\n | \"primary\"\r\n | \"secondary\"\r\n | \"error\"\r\n | \"info\"\r\n | \"success\"\r\n | \"warning\"\r\n | null;\r\n}\r\n\r\nexport const FilterButton = (props: IFilterButtonProps) => (\r\n }\r\n {...props}\r\n >\r\n {props.children}\r\n \r\n);","import React from \"react\";\r\nimport { AppPrintIcon } from \"../../Icon/AppPrintIcon\";\r\nimport { AppButton, IAppButtonProps } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\nexport const PrintButton = (props: IAppButtonProps) => (\r\n }\r\n {...props}\r\n >\r\n {props.children}\r\n \r\n);\r\n","import CachedOutlinedIcon from \"@mui/icons-material/CachedOutlined\";\r\nimport React from \"react\";\r\nimport { AppButton, IAppButtonProps } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\nexport const RefreshButton = (props: IAppButtonProps) => (\r\n }\r\n {...props}\r\n >\r\n {props.children}\r\n \r\n);","import { Box } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { FilterButton } from \"../../Button/FilterButton\";\r\nimport { PrintButton } from \"../../Button/PrintButton\";\r\nimport { RefreshButton } from \"../../Button/RefreshButton\";\r\n\r\ninterface ListActionButtonsProps {\r\n filterIsSet?: boolean;\r\n filterDisabled?: boolean;\r\n printDisabled?: boolean;\r\n refreshDisabled?: boolean;\r\n onFilter?: () => void;\r\n onPrint?: () => void;\r\n onRefresh?: () => void;\r\n}\r\n\r\nexport const ListActionButtons = ({\r\n filterIsSet,\r\n filterDisabled,\r\n printDisabled,\r\n refreshDisabled,\r\n onFilter,\r\n onPrint,\r\n onRefresh,\r\n}: ListActionButtonsProps) => (\r\n \r\n {onFilter\r\n ? (\r\n \r\n {Translations.FilterCondition}\r\n \r\n )\r\n : null}\r\n {onPrint\r\n ? (\r\n \r\n {Translations.Print}\r\n \r\n )\r\n : null}\r\n {onRefresh\r\n ? (\r\n \r\n {Translations.RefreshList}\r\n \r\n )\r\n : null}\r\n \r\n);\r\n","import { Paper, PaperProps } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\nexport const ListContainer = (props: PaperProps) => (\r\n \r\n {props.children}\r\n
\r\n);\r\n","import { Box, BoxProps } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\nexport const ListSearchContainer = (props: BoxProps) => (\r\n \r\n {props.children}\r\n \r\n);\r\n","import { Box, Typography } from \"@mui/material\";\r\nimport React, { ReactNode } from \"react\";\r\n\r\ninterface PageTitleProps {\r\n title: string;\r\n subTitle?: string;\r\n width?: string;\r\n position?: \"fixed\" | \"absolute\";\r\n padding?: string | number;\r\n children: ReactNode;\r\n}\r\n\r\nexport const PageTitle = ({\r\n title,\r\n subTitle,\r\n width,\r\n position = \"fixed\",\r\n padding,\r\n children,\r\n}: PageTitleProps) => {\r\n return (\r\n ({\r\n position,\r\n width: position === \"fixed\" ? \"calc(100% - 192px)\" : \"100%\",\r\n left: position === \"fixed\" ? \"192px\" : \"0\",\r\n marginTop: \"48px\",\r\n padding: padding ?? \"24px\",\r\n zIndex: 99,\r\n backgroundColor: theme.palette.background.default,\r\n })}\r\n >\r\n \r\n \r\n {title}\r\n \r\n \r\n {children}\r\n \r\n {!!subTitle &&\r\n \r\n {subTitle}\r\n \r\n }\r\n \r\n \r\n );\r\n};\r\n","import { Badge, Tab, Tabs } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\ninterface IDialogTab {\r\n id: string;\r\n title: string;\r\n badgeContent?: number;\r\n disabled?: boolean;\r\n hidden?: boolean;\r\n}\r\n\r\ninterface IPageTabsProps {\r\n activeTabId: string;\r\n tabs: IDialogTab[];\r\n onChangeTab: (tabId: string) => void;\r\n}\r\n\r\nexport const DialogTabs = ({\r\n activeTabId,\r\n tabs,\r\n onChangeTab,\r\n}: IPageTabsProps) => {\r\n const handleChangeViewTab = (\r\n _event: React.SyntheticEvent,\r\n newValue: string\r\n ) => {\r\n onChangeTab(newValue);\r\n };\r\n\r\n return (\r\n \r\n {tabs.map(\r\n (tab) =>\r\n !tab.hidden && (\r\n 0\r\n ? (\r\n \r\n {tab.title}\r\n \r\n )\r\n : (\r\n tab.title\r\n )\r\n }\r\n value={tab.id}\r\n disabled={tab.disabled}\r\n />\r\n )\r\n )}\r\n \r\n );\r\n};","import { getFileApiCall, getFileBlobApiCall } from \"./tokenService\";\r\n\r\nexport const getAttachment = (id: string): Promise => {\r\n return getFileApiCall(\"api/attachment?id=\" + id);\r\n};\r\n\r\nexport const download = (id: string, companyId: string): Promise => {\r\n return getFileApiCall(\"api/download?id=\" + id + \"&companyId=\" + companyId);\r\n};\r\n\r\nexport const downloadBlob = (id: string, companyId: string): Promise => {\r\n return getFileBlobApiCall(\"api/download?id=\" + id + \"&companyId=\" + companyId);\r\n};","import React, { ReactNode } from \"react\";\r\nimport { Stack } from \"@mui/material\";\r\n\r\nexport interface IPopupMenuProps {\r\n children: ReactNode;\r\n top?: string | number;\r\n right?: string | number;\r\n}\r\n\r\nexport const PopupMenu = ({ children, top = 0, right = 0 }: IPopupMenuProps) => {\r\n return (\r\n {\r\n e.stopPropagation();\r\n }}\r\n >\r\n {children}\r\n \r\n );\r\n};","// eslint-disable-next-line no-unused-vars\r\nimport * as React from \"react\";\r\nimport styled from \"@emotion/styled\";\r\nimport { FileType } from \"ui/Scripts/source/models/enums\";\r\n\r\nexport const Container = styled.div`\r\n position: relative;\r\n`;\r\n\r\nconst getBannerColor = (status: FileType) => {\r\n switch (status) {\r\n case FileType.Pdf:\r\n return \"#D03E3E\";\r\n case FileType.Image:\r\n return \"#156DEE\";\r\n case FileType.Html:\r\n return \"#156DEE\";\r\n case FileType.Excel:\r\n return \"#0A823A\";\r\n case FileType.Word:\r\n return \"#185ABD\";\r\n case FileType.PowerPoint:\r\n return \"#C13B1A\";\r\n case FileType.Archive:\r\n return \"#EFCD34\";\r\n case FileType.Document:\r\n return \"#434549\";\r\n default:\r\n return \"#848688\";\r\n }\r\n};\r\n\r\nexport const Label = styled.div<{ fileType: FileType, size: \"medium\" | \"large\" }>`\r\n position: absolute;\r\n width: ${({ size }) => size === \"medium\" ? \"22px\" : \"33px\"};\r\n height: ${({ size }) => size === \"medium\" ? \"10px\" : \"16px\"};\r\n top: ${({ size }) => size === \"medium\" ? \"8px\" : \"10px\"};\r\n font-size: ${({ size }) => size === \"medium\" ? \"10px\" : \"14px\"};\r\n line-height: ${({ size }) => size === \"medium\" ? \"11px\" : \"16px\"};\r\n color: #fff;\r\n text-align: center;\r\n background: ${({ fileType }) => getBannerColor(fileType)}\r\n`;","import React from \"react\";\r\nimport { FileType } from \"ui/Scripts/source/models/enums\";\r\nimport * as Styled from \"./AttachmentIcon.styles\";\r\nimport { SvgIcon } from \"@mui/material\";\r\nimport { SvgReportSmall } from \"../../../shared/icons\";\r\n\r\ninterface AttachmentIconProps {\r\n fileType: FileType;\r\n color?: string;\r\n strokeColor?: string;\r\n size?: \"medium\" | \"large\"\r\n}\r\n\r\nconst getFileType = (fileType: FileType) => {\r\n switch (fileType) {\r\n case FileType.Excel:\r\n return \"XLS\";\r\n case FileType.Html:\r\n return \"HTM\";\r\n case FileType.Image:\r\n return \"IMG\";\r\n case FileType.Pdf:\r\n return \"PDF\";\r\n case FileType.PowerPoint:\r\n return \"PPT\";\r\n case FileType.Text:\r\n return \"TXT\";\r\n case FileType.Word:\r\n return \"DOC\";\r\n case FileType.Archive:\r\n return \"ZIP\";\r\n case FileType.Document:\r\n return \"D\";\r\n }\r\n};\r\n\r\nexport const AttachmentIcon = ({\r\n fileType,\r\n color = \"#e9f0fa\",\r\n strokeColor = \"#848688\",\r\n size = \"medium\"\r\n}: AttachmentIconProps) => (\r\n \r\n \r\n \r\n \r\n {getFileType(fileType)}\r\n \r\n);\r\n","import React from \"react\";\r\nimport { AppUploadIcon } from \"../../Icon/AppUploadIcon\";\r\nimport { AppButton, IAppButtonProps } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\nexport const UploadButton = (props: IAppButtonProps) => (\r\n } {...props}>\r\n {props.children}\r\n \r\n);\r\n","/* global JSX */\r\nimport PhotoCameraOutlinedIcon from \"@mui/icons-material/PhotoCameraOutlined\";\r\nimport { Box, Stack, Tooltip, Typography, alpha } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { useDropzone } from \"react-dropzone\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\n// import { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AttachmentImageSize, FileType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { DownloadToolButton } from \"../../framework/Button/DownloadToolButton\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { PopupMenu } from \"../../framework/PopupMenu\";\r\nimport { EllipsisTypography } from \"../../framework/Typography/EllipsisTypography\";\r\nimport { AttachmentIcon } from \"../AttachmentIcon\";\r\nimport { RemoveToolButton } from \"source/components/framework/Button/RemoveToolButton\";\r\nimport { UploadButton } from \"source/components/framework/Button/UploadButton\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\ntype AttachmentListDirection = \"column\" | \"row\";\r\n\r\n//AttachmentImage\r\nexport interface IAttachmentImageProp {\r\n imageSize?: AttachmentImageSize;\r\n lateThreshold: number;\r\n attachment: IFileAttachment;\r\n selectedId?: string;\r\n isReadOnly?: boolean;\r\n ignoreAspectRatio?: boolean;\r\n onClick?: (id: string) => void;\r\n onDoubleClick?: (id: string) => void;\r\n onDownload?: (id: string) => void;\r\n onRemove?: (id: string) => void;\r\n}\r\n\r\nexport const AttachmentImage = ({\r\n imageSize,\r\n lateThreshold,\r\n attachment,\r\n selectedId,\r\n isReadOnly,\r\n ignoreAspectRatio,\r\n onClick,\r\n onDoubleClick,\r\n onDownload,\r\n onRemove,\r\n}: IAttachmentImageProp) => {\r\n const timeToleranceInJsTicks = 500;\r\n const isLate = !Base.isNullOrUndefined(lateThreshold) && attachment.modifyDate > (lateThreshold + timeToleranceInJsTicks);\r\n const [hovered, setHovered] = React.useState(false);\r\n \r\n return (\r\n { onClick(attachment.id); } : null}\r\n onDoubleClick={onDoubleClick ? () => { onDoubleClick(attachment.id); } : null}\r\n title={attachment.name + \" (\" + Base.intToFileSizeStr(attachment.size, false) + \", \" + Base.timeToDateStr(attachment.modifyDate) + \")\"}\r\n onMouseEnter={() => setHovered(true)}\r\n onMouseLeave={() => setHovered(false)}\r\n sx={(theme) => ({\r\n \"cursor\": \"default\",\r\n \"display\": \"flex\",\r\n \"justifyContent\": \"center\",\r\n \"alignItems\": \"center\",\r\n \"height\": imageSize === AttachmentImageSize.Large ? \"auto\" : \"111px\",\r\n \"width\": imageSize === AttachmentImageSize.Large ? \"100%\" : \"145px\",\r\n \"aspectRatio\": (imageSize === AttachmentImageSize.Large && !ignoreAspectRatio) ? 1.31 : undefined,\r\n \"padding\": (imageSize === AttachmentImageSize.Large && !ignoreAspectRatio) ? undefined : \".5rem 0\",\r\n \"position\": \"relative\",\r\n \"borderRadius\": \"8px\",\r\n \"&:hover\": {\r\n background: attachment.id === selectedId\r\n ? alpha(\r\n theme.palette.primary.main,\r\n theme.palette.action.selectedOpacity +\r\n theme.palette.action.hoverOpacity\r\n )\r\n : theme.palette.action.hover\r\n }\r\n })}\r\n >\r\n \r\n {hovered && (\r\n \r\n onDownload(attachment.id)}>\r\n {!isReadOnly && (\r\n onRemove(attachment.id)} />\r\n )}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\n//AttachmentListLine\r\nexport interface IAttachmentListLineProp {\r\n lateThreshold: number;\r\n attachment: IFileAttachment;\r\n selectedId?: string;\r\n isReadOnly?: boolean;\r\n direction: AttachmentListDirection;\r\n onDownload: (id: string) => void;\r\n onRemove?: (id: string) => void;\r\n}\r\n\r\nexport const AttachmentListLine = ({\r\n attachment,\r\n lateThreshold,\r\n isReadOnly,\r\n direction,\r\n onDownload,\r\n onRemove\r\n}: IAttachmentListLineProp) => {\r\n const timeToleranceInJsTicks = 500;\r\n const isLate = !Base.isNullOrUndefined(lateThreshold) && attachment.modifyDate > (lateThreshold + timeToleranceInJsTicks);\r\n return (\r\n ({\r\n \"cursor\": \"default\",\r\n \"display\": \"flex\",\r\n \"alignItems\": \"center\",\r\n \"justifyContent\": \"space-between\",\r\n \"width\": direction === \"column\" ? \"100%\" : undefined,\r\n \"maxWidth\": \"100%\",\r\n \"paddingLeft\": \".5rem\",\r\n \"&:hover\": {\r\n background: theme.palette.action.hover,\r\n },\r\n })}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n {attachment.name}\r\n {Base.intToFileSizeStr(attachment.size, false)}\r\n \r\n {isLate &&\r\n {Base.timeToDateStr(attachment.modifyDate)}\r\n }\r\n \r\n \r\n \r\n onDownload(attachment.id)} />\r\n {!isReadOnly && (\r\n onRemove(attachment.id)} />\r\n )}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\n//AttachmentList\r\nexport interface IAttachmentListProp {\r\n title: string | JSX.Element;\r\n imageSize?: AttachmentImageSize;\r\n accept?: string;\r\n classes?: string;\r\n lateThreshold?: number;\r\n attachments: IFileAttachment[];\r\n isReadOnly?: boolean;\r\n canShowCamera?: boolean;\r\n margin?: string | number;\r\n size?: \"sm\" | \"md\",\r\n hideThumbnails?: boolean;\r\n direction?: AttachmentListDirection;\r\n ignoreAspectRatio?: boolean;\r\n onRemoveAttachment: (id: string) => void;\r\n onDownloadAttachment: (id: string) => void;\r\n onAddAttachments: (fileList: FileList) => void;\r\n onAddPhoto?: () => void;\r\n}\r\n\r\nexport const AttachmentList = ({\r\n attachments,\r\n title,\r\n accept,\r\n canShowCamera,\r\n classes,\r\n isReadOnly,\r\n lateThreshold,\r\n margin,\r\n size = \"sm\",\r\n imageSize,\r\n hideThumbnails,\r\n direction = \"column\",\r\n ignoreAspectRatio,\r\n onAddAttachments,\r\n onDownloadAttachment,\r\n onRemoveAttachment,\r\n onAddPhoto\r\n}: IAttachmentListProp) => {\r\n const fileUploadRef = React.useRef(null);\r\n\r\n const onDrop = React.useCallback(acceptedFiles => {\r\n onAddAttachments(acceptedFiles);\r\n }, []);\r\n\r\n const { getRootProps, getInputProps } = useDropzone({ noClick: true, onDrop });\r\n\r\n const handleAddFilesClick = (e) => {\r\n fileUploadRef.current.click();\r\n };\r\n\r\n const handleAddFiles = (e: React.ChangeEvent) => {\r\n if (!e.target.files || e.target.files.length < 1) return;\r\n onAddAttachments(e.target.files);\r\n };\r\n\r\n const handleAddPhotoClick = () => {\r\n onAddPhoto();\r\n };\r\n\r\n const handleDownload = (id: string) => {\r\n if (!id) return;\r\n onDownloadAttachment(id);\r\n };\r\n\r\n const handleRemove = (id: string) => {\r\n if (!id) return;\r\n onRemoveAttachment(id);\r\n };\r\n\r\n const imageAttachments = !hideThumbnails ? attachments.filter(i => i.type === FileType.Image) : [];\r\n const fileAttachments = !hideThumbnails ? attachments.filter(i => i.type !== FileType.Image) : attachments;\r\n\r\n return (\r\n \r\n {!isReadOnly && (\r\n ({\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n flexGrow: 2,\r\n textAlign: \"center\",\r\n borderRadius: \".25rem\",\r\n border: \"2px dashed #7197CD\",\r\n padding: size === \"md\" ? \"2rem 1rem 1.5rem 1rem\" : \".5rem\",\r\n backgroundColor: alpha(\r\n theme.palette.primary.main,\r\n theme.palette.action.hoverOpacity\r\n )\r\n })}\r\n >\r\n \r\n \r\n {onAddPhoto ? Translations.AddFileOrTakePicture : Translations.AddFile}.\r\n \r\n \r\n \r\n {Translations.BrowseFiles}\r\n \r\n {!!onAddPhoto && (\r\n \r\n }>\r\n {Translations.TakePicture}\r\n \r\n \r\n )}\r\n \r\n \r\n )}\r\n \r\n {imageAttachments.length > 0 &&\r\n \r\n {imageAttachments.map((attachment) =>\r\n \r\n )}\r\n \r\n }\r\n \r\n {fileAttachments.length > 0\r\n ? fileAttachments.map((attachment) =>\r\n \r\n )\r\n : \"\"\r\n }\r\n \r\n \r\n \r\n );\r\n};","import { Box, Card, CardContent, CardHeader, CardProps } from \"@mui/material\";\r\nimport React, { ReactNode } from \"react\";\r\n\r\nexport const DialogSectionCard = ({\r\n headerTitle,\r\n height = \"100%\",\r\n width,\r\n margin = 0,\r\n flexGrow = 0,\r\n overflowY = \"hidden\",\r\n buttons = null,\r\n contentPadding,\r\n ...props\r\n}: CardProps & {\r\n headerTitle?: string | ReactNode;\r\n height?: string | number;\r\n width?: string | number;\r\n margin?: string | number;\r\n flexGrow?: number;\r\n overflowY?: \"hidden\" | \"visible\" | \"auto\";\r\n buttons?: ReactNode;\r\n contentPadding?: string\r\n}) => (\r\n \r\n {headerTitle && (\r\n \r\n {headerTitle}\r\n {!!buttons &&\r\n \r\n {buttons}\r\n \r\n }\r\n }\r\n titleTypographyProps={{ variant: \"body1\", color: \"text.secondary\" }}\r\n />\r\n )}\r\n \r\n {props.children}\r\n \r\n \r\n);\r\n","import { Box, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\n\r\nexport interface IToolTitleProp {\r\n title: string | React.ReactNode;\r\n classes?: string;\r\n labelClasses?: string;\r\n}\r\n\r\nexport class ToolTitle extends React.Component {\r\n render() {\r\n const props = this.props;\r\n return (\r\n \r\n {props.title}\r\n \r\n );\r\n }\r\n}","import PersonAddIcon from \"@mui/icons-material/PersonAdd\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppToolButton } from \"ui/Scripts/source/components/framework/Button/AppToolButton\";\r\nimport { IconButtonProps } from \"@mui/material\";\r\n\r\ninterface IAddUserToolButtonProps extends IconButtonProps {\r\n tooltip?: string\r\n}\r\n\r\nexport const AddUserToolButton = (props: IAddUserToolButtonProps) => (\r\n }\r\n />\r\n);\r\n","import PersonRemoveIcon from \"@mui/icons-material/PersonRemove\";\r\nimport { IconButtonProps } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppToolButton } from \"ui/Scripts/source/components/framework/Button/AppToolButton\";\r\n\r\ninterface IRemoveUserToolButtonProps extends IconButtonProps {\r\n tooltip?: string\r\n}\r\n\r\nexport const RemoveUserToolButton = (props: IRemoveUserToolButtonProps) => (\r\n }\r\n />\r\n);\r\n","import { Box, BoxProps } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\nexport const DialogListContainer = (props: BoxProps) => (\r\n \r\n {props.children}\r\n \r\n);\r\n","import { Box, FormControlLabel, Grid, Radio, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Base } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/framework/base\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { infiniteListPageSize } from \"../../../models/common/webConsts\";\r\nimport * as userGroupService from \"../../../models/services/userGroupService\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { DialogListContainer } from \"../../framework/Dialog/DialogListContainer\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { IUserGroupListItem } from \"ui/Scripts/source/models/userGroup/userGroupListItem\";\r\nimport { IUserGroupListItems, UserGroupListItems } from \"ui/Scripts/source/models/userGroup/userGroupListItems\";\r\nimport { UserGroupType } from \"ui/Scripts/source/models/enums\";\r\n\r\nexport interface ISelectUserGroupDialogListProps {\r\n companyId: string;\r\n records?: IUserGroupListItems;\r\n defaultUserGroupType?: UserGroupType;\r\n ignoreUserGroupCodes?: string[];\r\n requireUserGroupCodes?: string[];\r\n messageTargetMode?: boolean;\r\n listModeChangeDisabled?: boolean;\r\n multiSelect?: boolean;\r\n intialized: boolean;\r\n selectedId: string;\r\n checkedIds: string[];\r\n onSetIntialized: (intialized: boolean) => void;\r\n onSetSelected: (selectedId: string, checkedIds: string[], selectedItems: IUserGroupListItem[], userGroupType: UserGroupType) => void;\r\n onGetUserGroupListItems?: (companyId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, groupType: number,\r\n ignoreUserGroupCodes: string[], requireUserGroupCodes: string[], messageTargetMode: boolean) => Promise;\r\n}\r\n\r\nexport interface ISelectUserGroupDialogListState {\r\n isLoading: boolean;\r\n waitingPreloadedData: boolean;\r\n pageSize: number;\r\n page: number;\r\n hasMore: boolean;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n userGroupType: UserGroupType;\r\n items: IUserGroupListItem[];\r\n}\r\n\r\nexport class SelectUserGroupDialogList extends React.Component {\r\n _isMounted: boolean;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n waitingPreloadedData: !props.records,\r\n pageSize: props.records ? props.records.pageSize : infiniteListPageSize,\r\n page: props.records ? props.records.page : 1,\r\n hasMore: props.records ? props.records.hasMore : true,\r\n filter: \"\",\r\n sortColumn: \"name\",\r\n sortOrderIsAsc: true,\r\n userGroupType: props.defaultUserGroupType ?? UserGroupType.Normal,\r\n items: props.records ? props.records.items : []\r\n };\r\n }\r\n\r\n setSelected = (selectedId: string, checkedIds: string[]) => {\r\n const state = this.state;\r\n const ids = List.getSelectedIds(selectedId, checkedIds);\r\n if (ids.length < 1) return;\r\n this.props.onSetSelected(selectedId, checkedIds, state.items.filter(i => ids.indexOf(i.id) > -1), state.userGroupType);\r\n };\r\n\r\n searchItems = async (pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, userGroupType: UserGroupType, resetItems: boolean, refreshList: boolean) => {\r\n const props = this.props;\r\n if (!this._isMounted) return;\r\n this.setState({ isLoading: true });\r\n const getUserGroupListItems = props.onGetUserGroupListItems ?? userGroupService.getUserGroupListItemsForPermissions;\r\n const result = await AppUtils.callService(() => getUserGroupListItems(props.companyId, !refreshList ? pageSize : (page * infiniteListPageSize), !refreshList ? page : 1, filter, sortColumn, sortOrderIsAsc,\r\n userGroupType, props.ignoreUserGroupCodes, props.requireUserGroupCodes, props.messageTargetMode), false, true, () => { if (!this._isMounted) return; this.setState({ isLoading: false }); });\r\n if (!result) return;\r\n const items = List.getListItems(this.state.items, props.selectedId, props.checkedIds, result.items, resetItems, refreshList);\r\n if (!this._isMounted) return;\r\n this.setState({\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n userGroupType,\r\n items: items.items,\r\n waitingPreloadedData: false\r\n });\r\n props.onSetIntialized(true);\r\n this.setSelected(items.selectedId, items.checkedIds);\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this._isMounted = true;\r\n if (this.props.records) return;\r\n this.searchItems(state.pageSize, 1, state.filter, state.sortColumn, state.sortOrderIsAsc, state.userGroupType, true, false);\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this._isMounted = false;\r\n }\r\n\r\n componentDidUpdate(prevProps: ISelectUserGroupDialogListProps, prevState: ISelectUserGroupDialogListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.waitingPreloadedData) {\r\n if (!props.records || !this._isMounted) return;\r\n this.setState({\r\n waitingPreloadedData: false,\r\n page: props.records.page,\r\n hasMore: props.records.hasMore,\r\n items: props.records.items,\r\n pageSize: props.records.pageSize,\r\n sortColumn: props.records.sortColumn,\r\n sortOrderIsAsc: props.records.sortOrderIsAsc\r\n });\r\n } else {\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n const prevIgnoreUserGroupCodes = prevProps.ignoreUserGroupCodes ? prevProps.ignoreUserGroupCodes.filter(i => i !== \"0\") : [];\r\n const ignoreUserGroupCodes = props.ignoreUserGroupCodes ? props.ignoreUserGroupCodes.filter(i => i !== \"0\") : [];\r\n const prevRequireUserGroupCodes = prevProps.requireUserGroupCodes ? prevProps.requireUserGroupCodes.filter(i => i !== \"0\") : [];\r\n const requireUserGroupCodes = props.requireUserGroupCodes ? props.requireUserGroupCodes.filter(i => i !== \"0\") : [];\r\n const prevMessageTargetMode = !!prevProps.messageTargetMode;\r\n const messageTargetMode = !!props.messageTargetMode;\r\n if (companyId === prevCompanyId &&\r\n Base.equalStrArrays(prevIgnoreUserGroupCodes, ignoreUserGroupCodes) &&\r\n Base.equalStrArrays(prevRequireUserGroupCodes, requireUserGroupCodes) &&\r\n prevMessageTargetMode === messageTargetMode) return;\r\n this.searchItems(state.pageSize, 1, state.filter, state.sortColumn, state.sortOrderIsAsc, state.userGroupType, true, false);\r\n }\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, filter, state.sortColumn, state.sortOrderIsAsc, state.userGroupType, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, sortColumn, sortOrderIsAsc, state.userGroupType, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setSelected(selectedId, checkedIds);\r\n };\r\n\r\n hanleChangeUserGroupType = (userGroupType: UserGroupType) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, state.filter, state.sortColumn, state.sortOrderIsAsc, userGroupType, true, false);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n {!props.listModeChangeDisabled &&\r\n \r\n \r\n 0.5}\r\n onChange={(_e, checked: boolean) => {\r\n this.hanleChangeUserGroupType(checked ? UserGroupType.Fixed : UserGroupType.Normal);\r\n }}\r\n />\r\n }\r\n />\r\n \r\n \r\n {\r\n this.hanleChangeUserGroupType(checked ? UserGroupType.Normal : UserGroupType.Fixed);\r\n }}\r\n />\r\n }\r\n />\r\n \r\n \r\n }\r\n \r\n }\r\n />\r\n {\r\n return {\r\n columns: [\r\n { size: 6, column: \"name\", content: item.name },\r\n { size: 6, content: item.comment },\r\n ],\r\n id: item.id\r\n };\r\n })\r\n : state.items.map((item) => {\r\n return {\r\n columns: [\r\n {\r\n size: 12,\r\n content: \r\n \r\n {item.name}\r\n \r\n }\r\n ],\r\n id: item.id\r\n };\r\n })}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={props.selectedId}\r\n checkedIds={props.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n />\r\n \r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { SelectUserGroupDialogList } from \"../SelectUserGroupDialogList\";\r\nimport { IUserGroupListItem } from \"ui/Scripts/source/models/userGroup/userGroupListItem\";\r\nimport { IUserGroupListItems, UserGroupListItems } from \"ui/Scripts/source/models/userGroup/userGroupListItems\";\r\nimport { UserGroupType } from \"ui/Scripts/source/models/enums\";\r\n\r\nexport interface ISelectUserGroupDialogBaseProps {\r\n classes?: string;\r\n records?: IUserGroupListItems;\r\n messageTargetMode?: boolean;\r\n listModeChangeDisabled?: boolean;\r\n multiSelect?: boolean;\r\n onCancel: () => void;\r\n onGetUserGroupListItems?: (companyId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, groupType: number,\r\n ignoreUserGroupCodes: string[], requireUserGroupCodes: string[], messageTargetMode: boolean) => Promise;\r\n}\r\n\r\nexport interface ISelectUserGroupDialogProps extends ISelectUserGroupDialogBaseProps {\r\n companyId: string;\r\n title?: string;\r\n ignoreUserGroupCodes?: string[];\r\n requireUserGroupCodes?: string[];\r\n defaultUserGroupType?: UserGroupType;\r\n onOk: (userGroups: IUserGroupListItem[], userGroupType: UserGroupType) => void;\r\n}\r\n\r\nexport interface ISelectUserGroupDialogState {\r\n intialized: boolean;\r\n selectedId: string;\r\n checkedIds: string[];\r\n selectedItems: IUserGroupListItem[];\r\n userGroupType: UserGroupType;\r\n}\r\n\r\nexport class SelectUserGroupDialog extends React.Component {\r\n constructor(props: ISelectUserGroupDialogProps) {\r\n super(props);\r\n this.state = {\r\n intialized: !!props.records,\r\n selectedId: null,\r\n checkedIds: [],\r\n selectedItems: [],\r\n userGroupType: props.defaultUserGroupType ?? UserGroupType.Normal\r\n };\r\n }\r\n\r\n handleSetInitialized = (intialized: boolean) => {\r\n this.setState({\r\n intialized\r\n });\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[], selectedItems: IUserGroupListItem[], userGroupType: UserGroupType) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds,\r\n selectedItems,\r\n userGroupType\r\n });\r\n };\r\n\r\n handleCancel = () => {\r\n this.props.onCancel();\r\n };\r\n\r\n handleOk = () => {\r\n const state = this.state;\r\n if (state.selectedItems.length < 1) return;\r\n this.props.onOk(state.selectedItems, state.userGroupType);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n }\r\n buttons={[\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: this.handleCancel },\r\n { title: Translations.OK, variant: \"confirmation\", onClick: this.handleOk },\r\n ]}\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","/* global JSX */\r\nimport { Alert, Box, Chip, Stack, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult, UserGroupType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { ToolTitle } from \"../../framework/Tool/ToolTitle\";\r\nimport { AddUserToolButton } from \"source/components/framework/Button/AddUserToolButton\";\r\nimport { RemoveUserToolButton } from \"source/components/framework/Button/RemoveUserToolButton\";\r\nimport { SelectUserGroupDialog } from \"../SelectUserGroupDialog/SelectUserGroupDialog\";\r\nimport { IUserGroupListItem } from \"ui/Scripts/source/models/userGroup/userGroupListItem\";\r\nimport { UserGroupListItems } from \"ui/Scripts/source/models/userGroup/userGroupListItems\";\r\n\r\n//UserGroupBlockItem\r\nexport interface IUserGroupBlockItemProp {\r\n userGroup: IModifyUser;\r\n userCode?: string;\r\n selectedCodes: string[];\r\n onClick: (code: string) => void;\r\n}\r\n\r\nexport class UserGroupBlockItem extends React.Component {\r\n handleBadgeClick = (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.props.onClick(this.props.userGroup.code);\r\n return 0;\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const userGroup = props.userGroup;\r\n const selected = props.selectedCodes.indexOf(userGroup.code) > -1;\r\n\r\n return (\r\n \r\n {userGroup.name}\r\n \r\n }\r\n avatar={\r\n \r\n }\r\n variant={selected ? \"filled\" : \"outlined\"}\r\n disabled={userGroup.isRemoved()}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n props.onClick(userGroup.code);\r\n }}\r\n />\r\n );\r\n }\r\n}\r\n\r\n//UserGroupBlocks\r\nexport interface IUserGroupBlocksProp {\r\n classes?: string;\r\n companyId: string;\r\n userCode?: string;\r\n isReadOnly?: boolean;\r\n title: string | JSX.Element;\r\n noUsersMessage?: string;\r\n parentIsNew?: boolean;\r\n parentIsNewMessage?: string;\r\n userGroups: IModifyUser[];\r\n removeUsersConfirmation?: string;\r\n margin?: string | number;\r\n onAddUserGroups: (users: IModifyUser[]) => Promise;\r\n onRemoveUserGroups: (userCodes: string[]) => Promise;\r\n onGetUserGroupSelectListItems?: (companyId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, groupType: number,\r\n ignoreUserGroupCodes: string[], requireUserGroupCodes: string[], messageTargetMode: boolean) => Promise;\r\n}\r\n\r\ninterface IUserGroupBlocksState {\r\n selectedCodes: string[];\r\n showSelectUserDialog: boolean;\r\n}\r\n\r\nexport class UserGroupBlocks extends React.Component {\r\n static defaultProps = {\r\n margin: \"1rem 0 0 0\"\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n selectedCodes: [],\r\n showSelectUserDialog: false\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps: IUserGroupBlocksProp, prevState: IUserGroupBlocksState) {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevHash = JSON.stringify(prevProps.userGroups);\r\n const hash = JSON.stringify(props.userGroups);\r\n if (prevHash === hash) return;\r\n const userCodes = props.userGroups.map(i => i.code);\r\n this.setState({\r\n selectedCodes: state.selectedCodes.filter(i => userCodes.indexOf(i) > -1)\r\n });\r\n }\r\n\r\n handleBlockClick = (selectedCode: string) => {\r\n this.setState({\r\n selectedCodes: [selectedCode]\r\n });\r\n };\r\n\r\n // #region Add User\r\n handleAdd = () => {\r\n this.setState({\r\n showSelectUserDialog: true\r\n });\r\n };\r\n\r\n handleSelectUserGroupDialogOk = async (userGroups: IUserGroupListItem[], userGroupType: UserGroupType) => {\r\n const props = this.props;\r\n if (!userGroups || userGroups.length < 1) return;\r\n const newUserGroups = userGroups.map(user => {\r\n const newUser = new ModifyUser();\r\n newUser.code = user.code;\r\n newUser.name = user.name;\r\n newUser.picture = user.picture;\r\n newUser.date = userGroupType;\r\n return newUser;\r\n });\r\n // Call server\r\n const result = await AppUtils.callService(() => props.onAddUserGroups(newUserGroups));\r\n if (!result) return;\r\n this.setState({\r\n showSelectUserDialog: false\r\n });\r\n };\r\n\r\n handleSelectUserGroupDialogCancel = () => {\r\n this.setState({\r\n showSelectUserDialog: false\r\n });\r\n };\r\n // #endregion Add User\r\n\r\n // #region Remove User\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.selectedCodes.length < 1) return;\r\n if (await AppUtils.showConfirmationDialog(props.removeUsersConfirmation ?? Translations.DoYouReallyWantToRemoveSelectedUsers, false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n await AppUtils.callService(() => props.onRemoveUserGroups(state.selectedCodes));\r\n }\r\n };\r\n // #endregion Remove User\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const userGroups = props.userGroups;\r\n const titleIsString = Base.isString(props.title);\r\n return (\r\n <>\r\n \r\n {titleIsString &&\r\n \r\n }\r\n {!titleIsString &&\r\n props.title\r\n }\r\n \r\n {!props.isReadOnly &&\r\n \r\n }\r\n {!props.isReadOnly &&\r\n \r\n }\r\n \r\n \r\n \r\n {!props.isReadOnly && !!props.parentIsNew && !!props.parentIsNewMessage &&\r\n {props.parentIsNewMessage}\r\n }\r\n {!props.isReadOnly && userGroups.length < 1 && !!props.noUsersMessage &&\r\n {props.noUsersMessage}\r\n }\r\n {userGroups.map((userGroup) =>\r\n \r\n )}\r\n \r\n {state.showSelectUserDialog &&\r\n i.code)}\r\n onOk={this.handleSelectUserGroupDialogOk}\r\n onCancel={this.handleSelectUserGroupDialogCancel}\r\n onGetUserGroupListItems={props.onGetUserGroupSelectListItems}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","import { Checkbox, FormControlLabel, Grid, MenuItem, Select, TextField } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport downloadjs from \"downloadjs\";\r\nimport * as calendarTaskService from \"source/models/services/calendarTaskService\";\r\nimport * as attachmentService from \"source/models/services/attachmentService\";\r\nimport { ISessionState } from \"source/models/session/sessionState\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { FileAttachment, IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { AttachmentList } from \"../../../attachments/AttachmentList\";\r\nimport { DatePicker, TimePicker } from \"../../../framework/DateTime\";\r\nimport { DialogSectionCard } from \"../../../framework/Dialog/DialogSectionCard\";\r\nimport { FormField } from \"../../../framework/FormField\";\r\nimport { GridRow } from \"../../../framework/Grid/GridRow\";\r\nimport { CalendarTaskState, ConfirmationDialogResult, DatabaseRecordType } from \"ui/Scripts/source/models/enums\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ICalendarTaskCategoryListItem } from \"ui/Scripts/source/models/calendarTaskCategory/calendarTaskCategoryListItem\";\r\nimport { TaskStateListChip } from \"source/components/task/TaskStateListChip\";\r\nimport { UserGroupBlocks } from \"source/components/userGroup/UserGroupBlocks\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { SaveDataObj } from \"source/framework/saveData\";\r\nimport { SaveAttachmentBase64 } from \"ui/Scripts/source/models/common/saveAttachmentBase64\";\r\nimport { EditItem } from \"ui/Scripts/source/models/common/editItem\";\r\n\r\ninterface CalendarTaskBasicInformationProps {\r\n sessionState: ISessionState;\r\n categories: ICalendarTaskCategoryListItem[];\r\n isReadOnly: boolean;\r\n canShareCalendarTasks: boolean;\r\n companyId: string;\r\n isNew: boolean;\r\n lockedUser: IModifyUser;\r\n\r\n id: string;\r\n categoryId: string;\r\n recordId: string;\r\n databaseRecordType: DatabaseRecordType;\r\n title: string;\r\n locationText: string;\r\n state: CalendarTaskState;\r\n description: string;\r\n startDateStr: string;\r\n startTimeStr: string;\r\n endDateStr: string;\r\n endTimeStr: string;\r\n allDay: boolean;\r\n isPrivate: boolean;\r\n remainder: string;\r\n attachments: IFileAttachment[];\r\n handlers: IModifyUser[];\r\n\r\n onChange: (name: string, value: string | number | boolean) => void;\r\n onChangeHandlers: (handlers: IModifyUser[]) => void;\r\n onChangeAttachments: (attachments: IFileAttachment[]) => void;\r\n onUnlockAndLockToMe: () => void;\r\n}\r\n\r\nexport const CalendarTaskBasicInformation = (\r\n props: CalendarTaskBasicInformationProps\r\n) => {\r\n const handleChange = (event) => {\r\n const target = event.target;\r\n props.onChange(target.name, target.value);\r\n };\r\n\r\n // #region Handlers\r\n const addHandlers = async (userGroups: IModifyUser[], showSuccessMessage: boolean): Promise => {\r\n if (!userGroups || userGroups.length < 1) return null;\r\n if (!props.isNew) {\r\n const result = await AppUtils.callService(() => calendarTaskService.calendarTaskEditAddHandlers(props.companyId, props.id, userGroups.map(i => ({ code: i.code, type: i.date }))), showSuccessMessage);\r\n if (!result) return null;\r\n }\r\n props.onChangeHandlers(ModifyUser.sortModifyUsers(props.handlers.concat(userGroups)));\r\n return new ApiSuccess();\r\n };\r\n\r\n const handleAddHandlers = async (users: IModifyUser[]): Promise => {\r\n return addHandlers(users, true);\r\n };\r\n\r\n const handleRemoveHandlers = async (userGroupCodes: string[]): Promise => {\r\n if (!userGroupCodes || userGroupCodes.length < 1) return null;\r\n if (!props.isNew) {\r\n const removeHandlers = props.handlers.filter(i => userGroupCodes.indexOf(i.code) >= 0);\r\n const result = await AppUtils.callService(() => calendarTaskService.calendarTaskEditRemoveHandlers(props.companyId, props.id, removeHandlers.map(i => ({ code: i.code, type: i.date }))));\r\n if (!result) return null;\r\n }\r\n props.onChangeHandlers(ModifyUser.sortModifyUsers(props.handlers.filter(i => userGroupCodes.indexOf(i.code) < 0)));\r\n return new ApiSuccess();\r\n };\r\n // #endregion Handlers\r\n\r\n // #region Attachments\r\n const handleAttachmentDownload = async (id: string) => {\r\n if (!id) return;\r\n const attachment = props.attachments.find(i => i.id === id);\r\n if (!attachment) return;\r\n if (attachment.file) {\r\n downloadjs(attachment.file, attachment.name);\r\n return;\r\n }\r\n if (attachment.isNew()) return;\r\n const fileName = await AppUtils.callService(() => attachmentService.getAttachment(id));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.AttachmentParameterDownloaded, fileName));\r\n };\r\n\r\n const getRemoveAttachmentsSaveData = (attachmentIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.id);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"ids\", attachmentIds);\r\n return result;\r\n };\r\n\r\n const handleAttachmentRemove = async (id: string) => {\r\n if (!id) return;\r\n if (!props.isNew) {\r\n const saveData = getRemoveAttachmentsSaveData([id]);\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveAttachmentParameter, props.attachments.find(x => x.id === id)?.name), false) === ConfirmationDialogResult.No) return;\r\n const result = AppUtils.callService(() => calendarTaskService.calendarTaskEditRemoveAttachments(saveData.obj));\r\n if (!result) return;\r\n }\r\n props.onChangeAttachments(props.attachments.filter(i => i.id !== id));\r\n };\r\n\r\n const getAddAttachmentsSaveData = async (attachments: IFileAttachment[]): Promise => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.id);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"attachments\", await SaveAttachmentBase64.fromFileAttachments(attachments));\r\n return result;\r\n };\r\n \r\n const handleAttachmentsAdd = async (fileList: FileList) => {\r\n const attachments = await FileAttachment.addFileListToFileAttachments([], fileList, 0);\r\n if (attachments.length < 1) return;\r\n if (!props.isNew) {\r\n const saveData = await getAddAttachmentsSaveData(attachments);\r\n const result = await AppUtils.callService(() => calendarTaskService.calendarTaskEditAddAttachments(saveData.obj));\r\n if (!result) return;\r\n EditItem.setItemIdsFromIds(attachments, result.ids);\r\n }\r\n props.onChangeAttachments(props.attachments.concat(attachments));\r\n };\r\n // #endregion Attachments\r\n \r\n const isRelatedToRecord = !Base.isNullOrUndefined(props.databaseRecordType);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n props.onChange(\"startDateStr\", value)}\r\n />\r\n \r\n \r\n props.onChange(\"startTimeStr\", value)}\r\n />\r\n \r\n \r\n props.onChange(\"allDay\", checked)}\r\n />\r\n }\r\n />\r\n \r\n {(props.canShareCalendarTasks && !isRelatedToRecord) &&\r\n \r\n props.onChange(\"isPrivate\", checked)}\r\n />\r\n }\r\n />\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n props.onChange(\"endDateStr\", value)}\r\n />\r\n \r\n \r\n props.onChange(\"endTimeStr\", value)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!props.isPrivate && !isRelatedToRecord &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n );\r\n};\r\n","import { Box, FormControlLabel, Grid, MenuItem, Radio, RadioGroup, Select, Switch, TextField, Typography } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { DatePicker } from \"source/components/framework/DateTime\";\r\nimport { FormField } from \"source/components/framework/FormField\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { CalendarTaskRepetitionType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nenum CalendarTaskRepetitionEndType {\r\n Count = \"0\",\r\n Date = \"1\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\nexport interface IRepetitionIntervalYear {\r\n day: number;\r\n month: number;\r\n}\r\n\r\ninterface CalendarTaskRepetitionSettingsProps {\r\n orgStartDate: number;\r\n startDateStr: string;\r\n isReadOnly: boolean;\r\n repetitionIntervalType: CalendarTaskRepetitionType;\r\n repetitionInterval: number;\r\n repetitionIntervalWeek: number[];\r\n repetitionIntervalMonth: number;\r\n repetitionIntervalYear: IRepetitionIntervalYear;\r\n repetitionEndRepeatCount: number;\r\n repetitionEndDateStr: string;\r\n onChange: (name: string, value: string | number | IRepetitionIntervalYear | number[]) => void;\r\n}\r\n\r\nexport const CalendarTaskRepetitionSettings = (\r\n props: CalendarTaskRepetitionSettingsProps\r\n) => {\r\n const getDefaultRepetitionIntervalCount = (repetitionIntervalType: CalendarTaskRepetitionType) => {\r\n let result = 0;\r\n if (repetitionIntervalType === CalendarTaskRepetitionType.Weekly) {\r\n result = 10;\r\n } else if (repetitionIntervalType === CalendarTaskRepetitionType.Monthly) {\r\n result = 12;\r\n } else {\r\n result = 2;\r\n }\r\n return result;\r\n };\r\n\r\n const getDefaultRepetitionIntervalWeek = (): number[] => {\r\n const orgStartDate = props.orgStartDate ? new Date(props.orgStartDate) : new Date();\r\n return [((props.startDateStr ? props.startDateStr.toDate(orgStartDate) : orgStartDate).getDay() + 6) % 7];\r\n };\r\n\r\n const getDefaultRepetitionIntervaMonth = (): number => {\r\n const orgStartDate = props.orgStartDate ? new Date(props.orgStartDate) : new Date();\r\n return (props.startDateStr ? props.startDateStr.toDate(orgStartDate) : orgStartDate).getDate();\r\n };\r\n\r\n const getDefaultRepetitionIntervalYear = (): IRepetitionIntervalYear => {\r\n const orgStartDate = props.orgStartDate ? new Date(props.orgStartDate) : new Date();\r\n const date = (props.startDateStr ? props.startDateStr.toDate(orgStartDate) : orgStartDate);\r\n return { month: date.getMonth() + 1, day: date.getDate() };\r\n };\r\n\r\n //const handleRepetitionChange = (_event: React.MouseEvent, type: number) => {\r\n const handleRepetitionChange = (event: React.ChangeEvent) => {\r\n const type = (event.target as HTMLInputElement).value.toInteger();\r\n const repetitionEnabledFirstTime = props.repetitionInterval < 1 && type > CalendarTaskRepetitionType.NotRepeated;\r\n const weekRepetitionEnabled = props.repetitionIntervalType !== CalendarTaskRepetitionType.Weekly && type === CalendarTaskRepetitionType.Weekly;\r\n const monthRepetitionEnabled = props.repetitionIntervalType !== CalendarTaskRepetitionType.Monthly && type === CalendarTaskRepetitionType.Monthly;\r\n const yearRepetitionEnabled = props.repetitionIntervalType !== CalendarTaskRepetitionType.Yearly && type === CalendarTaskRepetitionType.Yearly;\r\n props.onChange(\"repetitionIntervalType\", type);\r\n if (repetitionEnabledFirstTime) {\r\n props.onChange(\"repetitionInterval\", 1);\r\n props.onChange(\"repetitionEndRepeatCount\", getDefaultRepetitionIntervalCount(type));\r\n }\r\n if (weekRepetitionEnabled) {\r\n props.onChange(\"repetitionIntervalWeek\", getDefaultRepetitionIntervalWeek());\r\n } else if (monthRepetitionEnabled) {\r\n props.onChange(\"repetitionIntervalMonth\", getDefaultRepetitionIntervaMonth());\r\n } else if (yearRepetitionEnabled) {\r\n props.onChange(\"repetitionIntervalYear\", getDefaultRepetitionIntervalYear());\r\n }\r\n };\r\n\r\n const handleRepetitionIntervalChange = (event) => {\r\n const value: string = event.target.value;\r\n props.onChange(\"repetitionInterval\", Math.min(value.toInteger(false, 1), 99));\r\n };\r\n\r\n const handleRepetitionEndChange = (event: React.ChangeEvent) => {\r\n if (event.target.value === \"0\") {\r\n props.onChange(\"repetitionEndRepeatCount\", getDefaultRepetitionIntervalCount(props.repetitionIntervalType));\r\n props.onChange(\"repetitionEndDateStr\", \"\");\r\n } else {\r\n let repetitionEndDate = Base.getNowUtcDate();\r\n if (props.repetitionIntervalType === CalendarTaskRepetitionType.Weekly) {\r\n repetitionEndDate = repetitionEndDate.addMonths(2);\r\n } else if (props.repetitionIntervalType === CalendarTaskRepetitionType.Monthly) {\r\n repetitionEndDate = repetitionEndDate.addMonths(12);\r\n } else {\r\n repetitionEndDate = repetitionEndDate.addYears(2);\r\n }\r\n props.onChange(\"repetitionEndRepeatCount\", 0);\r\n props.onChange(\"repetitionEndDateStr\", Base.utcTimeToDateStr(repetitionEndDate.getTime()));\r\n }\r\n };\r\n \r\n const handleRepetitionEndRepeatCountChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n props.onChange(\"repetitionEndRepeatCount\", Math.min(value.toInteger(false, 1), 99));\r\n };\r\n \r\n const handleRepetitionEndDateStrChange = (value: string) => {\r\n const minDate = Base.getNowUtcDate();\r\n const maxDate = minDate.addYears(10);\r\n let repetitionEndDate = value.toUtcDate(minDate);\r\n if (repetitionEndDate.getTime() < minDate.getTime()) {\r\n repetitionEndDate = minDate;\r\n } else if (repetitionEndDate.getTime() > maxDate.getTime()) {\r\n repetitionEndDate = maxDate;\r\n }\r\n props.onChange(\"repetitionEndDateStr\", Base.utcTimeToDateStr(repetitionEndDate.getTime()));\r\n };\r\n\r\n const handleRepetitionYearDayChange = (event) => {\r\n const value: string = event.target.value;\r\n const parts = Base.getValidDateParts(Math.min(value.toInteger(false, 1), 31), props.repetitionIntervalYear.month, null);\r\n const result: IRepetitionIntervalYear = {\r\n day: parts.day,\r\n month: parts.month\r\n };\r\n props.onChange(\"repetitionIntervalYear\", result);\r\n };\r\n\r\n const handleRepetitionYearMonthChange = (event) => {\r\n const value: number = event.target.value;\r\n const parts = Base.getValidDateParts(props.repetitionIntervalYear.day, Math.min(value, 12), null);\r\n const result: IRepetitionIntervalYear = {\r\n day: parts.day,\r\n month: parts.month\r\n };\r\n props.onChange(\"repetitionIntervalYear\", result);\r\n };\r\n\r\n const handleRepetitionMonthDayChange = (event) => {\r\n const value: string = event.target.value;\r\n props.onChange(\"repetitionIntervalMonth\", Math.min(value.toInteger(false, 1), 31));\r\n };\r\n\r\n const handleRepetitionWeekDayChange = (event: React.ChangeEvent) => {\r\n const day = event.target.name.toInteger();\r\n const result = props.repetitionIntervalWeek.filter(i => i.toString(10) !== day.toString(10));\r\n if (event.target.checked) {\r\n result.push(day);\r\n }\r\n if (!result.length) return;\r\n props.onChange(\"repetitionIntervalWeek\", result);\r\n };\r\n\r\n const repetitionEndType = props.repetitionEndRepeatCount > 0 ? CalendarTaskRepetitionEndType.Count : CalendarTaskRepetitionEndType.Date;\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n } label={Translations.NotRepeated} disabled={props.isReadOnly} />\r\n } label={Translations.Weekly} disabled={props.isReadOnly} />\r\n } label={Translations.Monthly} disabled={props.isReadOnly} />\r\n } label={Translations.Yearly} disabled={props.isReadOnly} />\r\n \r\n \r\n \r\n \r\n {props.repetitionIntervalType !== CalendarTaskRepetitionType.NotRepeated && (\r\n <>\r\n \r\n \r\n \r\n {Translations.CalendarTaskRepetitionRepeatIntervalPrefix}\r\n \r\n {props.repetitionIntervalType === CalendarTaskRepetitionType.Weekly\r\n ? Translations.CalendarTaskRepetitionRepeatIntervalWeeklySuffix\r\n : (props.repetitionIntervalType === CalendarTaskRepetitionType.Monthly\r\n ? Translations.CalendarTaskRepetitionRepeatIntervalMonthlySuffix\r\n : Translations.CalendarTaskRepetitionRepeatIntervalYearlySuffix)}\r\n \r\n \r\n \r\n {props.repetitionIntervalType === CalendarTaskRepetitionType.Weekly && (\r\n \r\n \r\n {[0, 1, 2, 3, 4, 5, 6].map((day) =>\r\n \r\n i.toString(10) === day.toString(10)) > -1}\r\n disabled={props.isReadOnly}\r\n onChange={handleRepetitionWeekDayChange}\r\n />}\r\n label={Base.dayNumberToName(day + 1, appConfig.culture.replace(\"-US\", \"\"))}\r\n />\r\n \r\n )}\r\n \r\n \r\n )}\r\n {props.repetitionIntervalType === CalendarTaskRepetitionType.Monthly &&\r\n \r\n \r\n \r\n {Translations.CalendarTaskRepetitionRepeatIntervalMonthPrefix}\r\n \r\n {Translations.CalendarTaskRepetitionRepeatIntervalMonthSuffix}\r\n \r\n \r\n \r\n }\r\n {props.repetitionIntervalType === CalendarTaskRepetitionType.Yearly &&\r\n \r\n \r\n \r\n \r\n \r\n {!!Translations.CalendarTaskRepetitionRepeatIntervalDayMonthSeparator &&\r\n {Translations.CalendarTaskRepetitionRepeatIntervalDayMonthSeparator}\r\n }\r\n \r\n {[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12].map((month) =>\r\n {Base.monthNumberToName(month, appConfig.culture) + (appConfig.culture === \"fi\" ? \"ta\" : \"\")}\r\n )}\r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n {!!Translations.CalendarTaskRepetitionCountPrefix &&\r\n {Translations.CalendarTaskRepetitionCountPrefix}\r\n }\r\n \r\n {!!Translations.CalendarTaskRepetitionCountSuffix &&\r\n {Translations.CalendarTaskRepetitionCountSuffix}\r\n }\r\n \r\n }\r\n control={}\r\n />\r\n \r\n {!!Translations.CalendarTaskRepetitionEndDatePrefix &&\r\n {Translations.CalendarTaskRepetitionEndDatePrefix}\r\n }\r\n
\r\n \r\n
\r\n {!!Translations.CalendarTaskRepetitionEndDateSuffix &&\r\n {Translations.CalendarTaskRepetitionEndDateSuffix}\r\n }\r\n \r\n }\r\n control={}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n \r\n )}\r\n \r\n );\r\n};\r\n","import { ILockedRecord, LockedRecord } from \"ui/Scripts/source/models/common/lockedRecord\";\r\nimport { DatabaseRecordType } from \"ui/Scripts/source/models/enums\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { AppUtils } from \"../../framework/appUtils\";\r\nimport { IndexedDbManager } from \"../indexedDb/indexedDbManager\";\r\nimport { postApiCall } from \"./tokenService\";\r\n\r\nexport interface IUnlockResultItem {\r\n message: string;\r\n id: string;\r\n lockedDate: number;\r\n lockedUserCode: string;\r\n}\r\n\r\nexport class UnlockResultItem implements IUnlockResultItem {\r\n message: string;\r\n id: string;\r\n lockedDate: number;\r\n lockedUserCode: string;\r\n\r\n constructor();\r\n constructor(obj: IUnlockResultItem);\r\n constructor(obj?: any) {\r\n this.message = obj && obj.message || \"\";\r\n this.id = obj && obj.id || \"\";\r\n this.lockedDate = obj && obj.lockedDate || 0;\r\n this.lockedUserCode = obj && obj.lockedUserCode || \"\";\r\n }\r\n}\r\n\r\nexport interface IUnlockResult {\r\n items: IUnlockResultItem[];\r\n}\r\n\r\nexport class UnlockResult implements IUnlockResult {\r\n items: UnlockResultItem[];\r\n\r\n constructor();\r\n constructor(obj: IUnlockResult);\r\n constructor(obj?: any) {\r\n this.items = Base.getTypedArray(obj ? obj.items : null, UnlockResultItem);\r\n }\r\n}\r\n\r\ntype TRecordUnlockCallBack = (id: string) => void;\r\ntype TRecordLockCallBack = (id: string) => void;\r\n\r\nexport const unlock = (lockedRecords: ILockedRecord[], lockToCurrentUser: boolean): Promise => {\r\n return postApiCall(\"api/locking/unlock\", UnlockResult, JSON.stringify({\r\n records: lockedRecords.map(i => {\r\n return { companyId: i.companyId, id: i.id, recordType: i.recordType };\r\n }),\r\n lockToCurrentUser\r\n }));\r\n};\r\n\r\nclass RecordLockManager {\r\n private unlockCallBacks: TRecordUnlockCallBack[] = [];\r\n private lockCallBacks: TRecordLockCallBack[] = [];\r\n\r\n addUnlockCallBack(unlockCallBack: TRecordUnlockCallBack) {\r\n if (!unlockCallBack) return;\r\n this.unlockCallBacks.push(unlockCallBack);\r\n }\r\n\r\n removeUnlockCallBack(unlockCallBack: TRecordUnlockCallBack) {\r\n if (!unlockCallBack) return;\r\n this.unlockCallBacks = this.unlockCallBacks.filter(i => !unlockCallBack);\r\n }\r\n\r\n addLockCallBack(lockCallBack: TRecordLockCallBack) {\r\n if (!lockCallBack) return;\r\n this.lockCallBacks.push(lockCallBack);\r\n }\r\n\r\n removeLockCallBack(lockCallBack: TRecordLockCallBack) {\r\n if (!lockCallBack) return;\r\n this.lockCallBacks = this.lockCallBacks.filter(i => !lockCallBack);\r\n }\r\n\r\n addLock(lockedRecord: ILockedRecord) {\r\n if (!lockedRecord) return;\r\n IndexedDbManager.addLockedRecords([lockedRecord]);\r\n }\r\n\r\n async unlockDb(lockedRecords: ILockedRecord[], lockToCurrentUser: boolean): Promise {\r\n if (!lockedRecords || lockedRecords.length < 1) return null;\r\n const result = await AppUtils.callService(() => unlock(lockedRecords, lockToCurrentUser), false, true);\r\n if (!result) return null;\r\n const successItems = result.items.filter(i => !i.message);\r\n if (lockToCurrentUser) {\r\n for (const lockCallBack of this.lockCallBacks) {\r\n for (const successItem of successItems) {\r\n lockCallBack(successItem.id);\r\n }\r\n }\r\n } else {\r\n for (const unlockCallBack of this.unlockCallBacks) {\r\n for (const successItem of successItems) {\r\n unlockCallBack(successItem.id);\r\n }\r\n }\r\n }\r\n await IndexedDbManager.removeLockedRecords(result.items.map(i => i.id));\r\n if (lockToCurrentUser) {\r\n const newRecords: ILockedRecord[] = [];\r\n for (const resultItem of successItems) {\r\n const lockedRecord = lockedRecords.find(j => j.id === resultItem.id);\r\n if (!lockedRecord) continue;\r\n newRecords.push(LockedRecord.createLockedRecord(lockedRecord.companyId, lockedRecord.id, resultItem.lockedUserCode, lockedRecord.recordType));\r\n }\r\n IndexedDbManager.addLockedRecords(newRecords);\r\n }\r\n return result;\r\n }\r\n\r\n async unlock(companyId: string, id: string, recordType: DatabaseRecordType): Promise {\r\n if (!companyId || !id) return null;\r\n return await this.unlockDb([LockedRecord.createLockedRecord(companyId, id, \"\", recordType)], false);\r\n }\r\n\r\n async unlockAll(companyId: string, userCode: string, ignoreRecordType?: DatabaseRecordType): Promise {\r\n if (!companyId || !userCode) return null;\r\n let lockedRecords = (await IndexedDbManager.getLockedRecords()).filter(i => i.userCode === userCode);\r\n if (ignoreRecordType) {\r\n lockedRecords = lockedRecords.filter(i => i.recordType !== ignoreRecordType);\r\n }\r\n return await this.unlockDb(lockedRecords, false);\r\n }\r\n\r\n async lock(companyId: string, id: string, userCode: string, recordType: DatabaseRecordType): Promise {\r\n if (!companyId || !id) return;\r\n return await this.unlockDb([LockedRecord.createLockedRecord(companyId, id, userCode, recordType)], true);\r\n }\r\n}\r\n\r\nexport const recordLockManager = new RecordLockManager();\r\n","import { ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport * as store from \"../../framework/customStore\";\r\n\r\nexport class StoreUtils {\r\n static getNowModifyUser(data: number = null): ModifyUser {\r\n const result = new ModifyUser();\r\n result.date = data ?? new Date().getTime();\r\n const appState = store.customStore.getState();\r\n if (!appState || !appState.session || !appState.session.state) return result;\r\n const sessionState = appState.session.state;\r\n result.code = sessionState.code;\r\n result.name = sessionState.name;\r\n if (sessionState.image) {\r\n result.picture = \"data:image/png;base64,\" + sessionState.image;\r\n }\r\n return result;\r\n }\r\n}","import { Box } from \"@mui/material\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport * as calendarTaskService from \"source/models/services/calendarTaskService\";\r\nimport { ISessionState } from \"source/models/session/sessionState\";\r\nimport { IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { CalendarTaskRepetitionType, CalendarTaskState, ConfirmationDialogResult, DatabaseRecordType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogButtons } from \"../../framework/Dialog/DialogButtons\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { DialogTabs } from \"../../framework/Dialog/DialogTabs\";\r\nimport { CalendarTaskBasicInformation } from \"./CalendarTaskBasicInformation\";\r\nimport { CalendarTaskRepetitionSettings, IRepetitionIntervalYear } from \"./CalendarTaskRepetitionSettings\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { LockedRecord } from \"ui/Scripts/source/models/common/lockedRecord\";\r\nimport { recordLockManager } from \"source/models/services/recordLockService\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { ICalendarTaskCategoryListItem } from \"ui/Scripts/source/models/calendarTaskCategory/calendarTaskCategoryListItem\";\r\nimport { ICalendarTaskEditItem } from \"ui/Scripts/source/models/calendarTask/calendarTaskEditItem\";\r\nimport { SaveDataObj } from \"source/framework/saveData\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { removeConfirmationWord } from \"ui/Scripts/source/models/consts\";\r\nimport { StoreUtils } from \"source/models/store/storeUtils\";\r\nimport { SaveAttachmentBase64 } from \"ui/Scripts/source/models/common/saveAttachmentBase64\";\r\n\r\ninterface ICalendarTaskEditDialogProps {\r\n sessionState: ISessionState;\r\n isReadOnly: boolean;\r\n companyId: string;\r\n calendarTaskId: string;\r\n databaseRecordType: DatabaseRecordType;\r\n recordId: string;\r\n ownerRecordTitle?: string;\r\n startDate: number;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onRefreshCalendar: () => Promise;\r\n onClose: () => void;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n}\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum CalendarTaskDialogMenuItem {\r\n General = \"1\",\r\n Repetition = \"2\",\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\ninterface ICalendarTaskEditDialogState {\r\n isLoading: boolean;\r\n calendarTask: ICalendarTaskEditItem;\r\n categories: ICalendarTaskCategoryListItem[];\r\n\r\n id: string;\r\n parentId: string;\r\n rowId: string;\r\n categoryId: string;\r\n title: string;\r\n locationText: string;\r\n state: CalendarTaskState;\r\n description: string;\r\n startDateStr: string;\r\n startTimeStr: string;\r\n endDateStr: string;\r\n endTimeStr: string;\r\n allDay: boolean;\r\n isPrivate: boolean;\r\n remainder: string;\r\n repetitionIntervalType: CalendarTaskRepetitionType;\r\n repetitionInterval: number;\r\n repetitionIntervalWeek: number[];\r\n repetitionIntervalMonth: number;\r\n repetitionIntervalYear: IRepetitionIntervalYear;\r\n repetitionEndRepeatCount: number;\r\n repetitionEndDateStr: string;\r\n attachments: IFileAttachment[];\r\n handlers: IModifyUser[];\r\n canSaveCalendarTask: boolean;\r\n canRemoveCalendarTask: boolean;\r\n canShareCalendarTasks: boolean;\r\n\r\n isNew: boolean;\r\n lockedUser: IModifyUser;\r\n isLockedToOtherUser: boolean;\r\n\r\n activeMenuItem: CalendarTaskDialogMenuItem;\r\n}\r\n\r\nexport const CalendarTaskEditDialog = (props: ICalendarTaskEditDialogProps) => {\r\n const orgStateHash = useRef(\"\");\r\n \r\n const [state, setState] = useState({\r\n isLoading: false,\r\n calendarTask: null,\r\n categories: [],\r\n id: \"\",\r\n parentId: \"\",\r\n rowId: \"\",\r\n categoryId: \"\",\r\n title: \"\",\r\n locationText: \"\",\r\n startDateStr: \"\",\r\n startTimeStr: \"\",\r\n endDateStr: \"\",\r\n endTimeStr: \"\",\r\n allDay: false,\r\n description: \"\",\r\n isPrivate: false,\r\n state: CalendarTaskState.NotStarted,\r\n remainder: \"\",\r\n repetitionIntervalType: CalendarTaskRepetitionType.NotRepeated,\r\n repetitionInterval: 1,\r\n repetitionIntervalWeek: [0],\r\n repetitionIntervalMonth: 1,\r\n repetitionIntervalYear: { month: 1, day: 1 },\r\n repetitionEndRepeatCount: 1,\r\n repetitionEndDateStr: \"\",\r\n attachments: [],\r\n handlers: [],\r\n activeMenuItem: CalendarTaskDialogMenuItem.General,\r\n canSaveCalendarTask: false,\r\n canRemoveCalendarTask: false,\r\n canShareCalendarTasks: false,\r\n isNew: false,\r\n lockedUser: null,\r\n isLockedToOtherUser: false\r\n });\r\n\r\n const getRepetitionIntervalWeek = (repetitionIntervalType: CalendarTaskRepetitionType, repetitionIntervalSub: number, repetitionStartDate: number): number[] => {\r\n if (repetitionIntervalType !== CalendarTaskRepetitionType.Weekly) {\r\n return [((props.startDate ? (new Date(props.startDate))?.getDay() : (new Date(repetitionStartDate))?.getDay()) + 6) % 7];\r\n }\r\n const result: number[] = [];\r\n const str = Base.padZeros(repetitionIntervalSub.toString(10), 7);\r\n for (let i = 0; i < str.length; i++) {\r\n if (str[i] === \"0\") continue;\r\n result.push(i);\r\n }\r\n return result.length ? result : [0];\r\n };\r\n\r\n const getRepetitionIntervaMonth = (repetitionIntervalType: CalendarTaskRepetitionType, repetitionIntervalSub: number): number => {\r\n if (repetitionIntervalType !== CalendarTaskRepetitionType.Monthly) return (new Date()).getDate();\r\n return repetitionIntervalSub > 0 && repetitionIntervalSub < 32 ? repetitionIntervalSub : 1;\r\n };\r\n\r\n const getRepetitionIntervalYear = (repetitionIntervalType: CalendarTaskRepetitionType, repetitionIntervalSub: number): IRepetitionIntervalYear => {\r\n const nowDate = new Date();\r\n const result: IRepetitionIntervalYear = { month: nowDate.getMonth() + 1, day: nowDate.getDate() };\r\n if (repetitionIntervalType !== CalendarTaskRepetitionType.Yearly) return result;\r\n const str = Base.padZeros(repetitionIntervalSub.toString(10), 4);\r\n const parts = Base.getValidDateParts(str.substring(2).toInteger(), str.substring(0, 2).toInteger(), null);\r\n result.day = parts.day;\r\n result.month = parts.month;\r\n return result;\r\n };\r\n\r\n const getRepetitionIntervalSub = (state: ICalendarTaskEditDialogState): number => {\r\n if (state.repetitionIntervalType === CalendarTaskRepetitionType.Weekly) {\r\n let value = 0;\r\n for (let i = 0; i < state.repetitionIntervalWeek.length; i++) {\r\n value = value + Math.pow(10, 6 - state.repetitionIntervalWeek[i]);\r\n }\r\n return value;\r\n } else if (state.repetitionIntervalType === CalendarTaskRepetitionType.Monthly) {\r\n return state.repetitionIntervalMonth;\r\n } else if (state.repetitionIntervalType === CalendarTaskRepetitionType.Yearly) {\r\n return state.repetitionIntervalYear.month * 100 + state.repetitionIntervalYear.day;\r\n }\r\n return 0;\r\n };\r\n\r\n const getSaveDataFromState = async (saveState: ICalendarTaskEditDialogState): Promise => {\r\n const result = new SaveDataObj();\r\n result.append(\"rowId\", saveState.rowId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"id\", saveState.id);\r\n result.append(\"categoryId\", saveState.categoryId ? saveState.categoryId : null);\r\n result.append(\"recordId\", props.recordId);\r\n result.append(\"databaseRecordType\", props.databaseRecordType);\r\n result.append(\"title\", saveState.title);\r\n result.append(\"locationText\", saveState.locationText);\r\n result.append(\"description\", saveState.description);\r\n result.append(\"startDate\", (Base.getDateTime(saveState.startDateStr, saveState.startTimeStr) ?? new Date()).getTime());\r\n result.append(\"endDate\", Base.getDateTime(saveState.endDateStr, saveState.endTimeStr)?.getTime());\r\n result.append(\"allDay\", saveState.allDay);\r\n result.append(\"isPrivate\", saveState.isPrivate);\r\n result.append(\"state\", saveState.state);\r\n result.append(\"remainder\", saveState.remainder ? saveState.remainder.toInteger() : -1);\r\n result.append(\"repetitionIntervalType\", saveState.repetitionIntervalType);\r\n result.append(\"repetitionInterval\", saveState.repetitionInterval);\r\n result.append(\"repetitionIntervalSub\", getRepetitionIntervalSub(saveState));\r\n result.append(\"repetitionEndRepeatCount\", saveState.repetitionEndDateStr ? null : saveState.repetitionEndRepeatCount);\r\n result.append(\"repetitionEndDate\", saveState.repetitionEndRepeatCount ? null : saveState.repetitionEndDateStr.toUtcDate().getTime());\r\n result.append(\"attachments\", saveState.isNew\r\n ? await SaveAttachmentBase64.fromFileAttachments(saveState.attachments)\r\n : null\r\n );\r\n result.append(\"addHandlers\", saveState.isNew\r\n ? saveState.handlers.map(i => { return { code: i.code, type: i.date }; })\r\n : null\r\n );\r\n return result;\r\n };\r\n\r\n const loadCalendarTask = async (id: string) => {\r\n //Unlock current task\r\n if (LockedRecord.isLockedToUser(state.lockedUser, props.sessionState.code)) {\r\n await recordLockManager.unlock(props.companyId, state.id, DatabaseRecordType.CalendarTask);\r\n }\r\n //Load and lock task\r\n setState((old) => ({\r\n ...old,\r\n isLoading: true\r\n }));\r\n const result = await AppUtils.callService(() => calendarTaskService.getCalendarTaskEdit(props.companyId, id, props.recordId, props.databaseRecordType), false, false, () => setState((old) => ({ ...old, isLoading: false })));\r\n if (!result) return;\r\n const calendarTask = result.item;\r\n const isNew = calendarTask.id === Base.emptyGuid;\r\n const newState = {\r\n ...state,\r\n calendarTask,\r\n categories: result.categories,\r\n id: calendarTask.id,\r\n parentId: calendarTask.parentId,\r\n categoryId: calendarTask.categoryId,\r\n rowId: calendarTask.rowId,\r\n state: calendarTask.state,\r\n title: calendarTask.title,\r\n locationText: calendarTask.locationText,\r\n description: calendarTask.description,\r\n startDateStr: isNew && props.startDate\r\n ? Base.timeToDateStr(props.startDate)\r\n : Base.timeToDateStr(calendarTask.startDate),\r\n startTimeStr: Base.timeToTimeStr(calendarTask.startDate),\r\n endDateStr: calendarTask.endDate\r\n ? Base.timeToDateStr(calendarTask.endDate)\r\n : \"\",\r\n endTimeStr: calendarTask.endDate\r\n ? Base.timeToTimeStr(calendarTask.endDate)\r\n : \"\",\r\n allDay: calendarTask.allDay,\r\n isPrivate: calendarTask.isPrivate,\r\n remainder: calendarTask.remainder >= 0\r\n ? calendarTask.remainder.toString(10)\r\n : \"\",\r\n repetitionIntervalType: calendarTask.repetitionIntervalType,\r\n repetitionInterval: calendarTask.repetitionInterval,\r\n repetitionIntervalWeek: getRepetitionIntervalWeek(calendarTask.repetitionIntervalType, calendarTask.repetitionIntervalSub, calendarTask.startDate),\r\n repetitionIntervalMonth: getRepetitionIntervaMonth(calendarTask.repetitionIntervalType, calendarTask.repetitionIntervalSub),\r\n repetitionIntervalYear: getRepetitionIntervalYear(calendarTask.repetitionIntervalType, calendarTask.repetitionIntervalSub),\r\n repetitionEndRepeatCount: calendarTask.repetitionEndRepeatCount,\r\n repetitionEndDateStr: calendarTask.repetitionEndDate\r\n ? Base.utcTimeToDateStr(calendarTask.repetitionEndDate)\r\n : \"\",\r\n attachments: calendarTask.attachments,\r\n handlers: calendarTask.handlers,\r\n canSaveCalendarTask: result.canSaveCalendarTask,\r\n canRemoveCalendarTask: result.canRemoveCalendarTask,\r\n canShareCalendarTasks: result.canShareCalendarTasks,\r\n isNew,\r\n lockedUser: calendarTask.lockedUser,\r\n isLockedToOtherUser: calendarTask.isLockedToOtherUser(props.sessionState.code),\r\n //showNewTaskDialog: isNew,\r\n activeMenuItem: isNew\r\n ? CalendarTaskDialogMenuItem.General\r\n : state.activeMenuItem\r\n };\r\n setState((old) => ({\r\n ...old,\r\n ...newState,\r\n }));\r\n orgStateHash.current = (await getSaveDataFromState(newState)).hash;\r\n //Add locked record to idb\r\n if (!isNew && LockedRecord.isLockedToUser(calendarTask.lockedUser, props.sessionState.code)) {\r\n recordLockManager.addLock(LockedRecord.createLockedRecord(props.companyId, state.id, props.sessionState.code, DatabaseRecordType.CalendarTask));\r\n }\r\n //Send read receipt for calendar task\r\n // if (!isNew) {\r\n // const userIsCreator = calendarTask.createUser.code === props.sessionState.code;\r\n // if (!userIsCreator && !calendarTask.isRead) {\r\n // AppUtils.callService(() => calendarTaskService.sendTaskReadReceipt(props.companyId, state.id), false, true);\r\n // }\r\n // }\r\n };\r\n\r\n const checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n if (!state.title) {\r\n AppUtils.showErrorMessage(Translations.TitleMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (!state.startDateStr) {\r\n AppUtils.showErrorMessage(Translations.CalendarTaskStartDateMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (state.endDateStr) {\r\n const startDateTime = Base.getDateTime(state.startDateStr, state.startTimeStr);\r\n const endDateTime = Base.getDateTime(state.endDateStr, state.endTimeStr);\r\n if (startDateTime.getTime() > endDateTime.getTime()) {\r\n AppUtils.showErrorMessage(Translations.CalendarTaskEndDateMustBeAfterStartDate);\r\n return resolve(false);\r\n }\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n const getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n const saveToDb = async (): Promise => {\r\n if (!await AppUtils.validate(checkErrors, getWarningMessage, null)) return null;\r\n const saveData = await getSaveDataFromState(state);\r\n //Call server\r\n const result = await AppUtils.callService(() => calendarTaskService.saveCalendarTaskEdit(saveData.obj));\r\n if (!result) return null;\r\n return result;\r\n };\r\n\r\n const componentWillUnmount = useRef(false);\r\n\r\n useEffect(() => {\r\n return () => {\r\n componentWillUnmount.current = true;\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n const loadData = async () => {\r\n if (orgStateHash.current) {\r\n const cancelResult = await AppUtils.cancel((await getSaveDataFromState(state)).hash, orgStateHash.current, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await saveToDb()) return;\r\n await props.onRefreshCalendar();\r\n }\r\n }\r\n await loadCalendarTask(props.calendarTaskId);\r\n };\r\n\r\n loadData();\r\n }, [props.calendarTaskId]);\r\n\r\n useEffect(() => {\r\n const unlockRecord = async () => {\r\n if (!state.isNew && LockedRecord.isLockedToUser(state.lockedUser, props.sessionState.code)) {\r\n recordLockManager.unlock(props.companyId, state.id, DatabaseRecordType.CalendarTask);\r\n }\r\n };\r\n\r\n return () => {\r\n if (componentWillUnmount.current) {\r\n unlockRecord();\r\n }\r\n };\r\n }, [state.id]);\r\n\r\n const handleClose = () => {\r\n props.onClose();\r\n };\r\n\r\n const handleSave = async () => {\r\n const result = await saveToDb();\r\n if (!result) return;\r\n props.onClose();\r\n };\r\n\r\n const handleRemove = async () => {\r\n if (state.isLockedToOtherUser || state.isNew) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveCalendarTaskParameter, state.calendarTask.title), false, removeConfirmationWord) === ConfirmationDialogResult.Yes) {\r\n const result = await AppUtils.callService(() => calendarTaskService.removeCalendarTask(props.companyId, state.calendarTask.id));\r\n if (!result) return;\r\n setState((old) => ({\r\n ...old,\r\n lockedUser: null\r\n }));\r\n props.onClose();\r\n }\r\n };\r\n\r\n const canMoveOut = async (): Promise => {\r\n return await AppUtils.canMoveOut((await getSaveDataFromState(state)).hash, orgStateHash.current, async () => !!await saveToDb(), props.onRefreshCalendar);\r\n };\r\n\r\n const handlePrevious = async () => {\r\n if (!await canMoveOut()) return;\r\n props.onPrevious();\r\n };\r\n\r\n const handleNext = async () => {\r\n if (!await canMoveOut()) return;\r\n props.onNext();\r\n };\r\n\r\n const handleToggleActiveMenuItem = (tabId: CalendarTaskDialogMenuItem) => {\r\n setState((old) => ({\r\n ...old,\r\n activeMenuItem: tabId\r\n }));\r\n };\r\n\r\n // #region Locking\r\n const handleUnlockAndLockToMe = async () => {\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToUnlockCalendarTask, state.calendarTask.title), false) !== ConfirmationDialogResult.Yes) {\r\n return;\r\n }\r\n const result = await recordLockManager.lock(props.companyId, state.id, props.sessionState.code, DatabaseRecordType.CalendarTask);\r\n if (!result || result.items.length < 1) return;\r\n setState((old) => ({\r\n ...old,\r\n lockedUser: StoreUtils.getNowModifyUser(result.items[0].lockedDate),\r\n isLockedToOtherUser: false\r\n }));\r\n };\r\n // #endregion Locking\r\n\r\n const handleChange = (name: string, value: string | number | boolean | IRepetitionIntervalYear | number[]) => {\r\n const stateChange = { [name]: value };\r\n if (name === \"allDay\" && value) {\r\n stateChange.startTimeStr = \"0:00\";\r\n stateChange.endTimeStr = \"0:00\";\r\n }\r\n setState((old) => ({\r\n ...old,\r\n ...stateChange,\r\n }));\r\n };\r\n\r\n const handleChangeHandlers = (handlers: IModifyUser[]) => {\r\n setState((old) => ({\r\n ...old,\r\n handlers\r\n }));\r\n };\r\n\r\n const handleChangeAttachments = (attachments: IFileAttachment[]) => {\r\n setState((old) => ({\r\n ...old,\r\n attachments\r\n }));\r\n };\r\n\r\n const getRecurrenceTypeString = (): string => {\r\n switch (state.repetitionIntervalType) {\r\n case CalendarTaskRepetitionType.Weekly:\r\n return Translations.Weekly;\r\n case CalendarTaskRepetitionType.Monthly:\r\n return Translations.Monthly;\r\n case CalendarTaskRepetitionType.Yearly:\r\n return Translations.Yearly;\r\n default:\r\n return Translations.NotRepeated;\r\n }\r\n };\r\n\r\n if (!state.calendarTask) return null;\r\n\r\n const isReadOnly = props.isReadOnly || state.isLockedToOtherUser || !state.canSaveCalendarTask;\r\n\r\n return (\r\n \r\n }\r\n body={\r\n <>\r\n {state.activeMenuItem === CalendarTaskDialogMenuItem.General && (\r\n \r\n )}\r\n {state.activeMenuItem === CalendarTaskDialogMenuItem.Repetition && (\r\n \r\n )}\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={handleClose}\r\n />\r\n );\r\n};\r\n","// eslint-disable-next-line no-unused-vars\r\nimport * as React from \"react\";\r\nimport styled from \"@emotion/styled\";\r\n\r\nexport const Container = styled.div`\r\n margin-top: 48px;\r\n max-width: calc((100vw - 192px) / 2);\r\n max-height: calc(100vh - 48px);\r\n background: #fff;\r\n overflow-y: auto;\r\n flex-basis: 0;\r\n flex-grow: 5;\r\n padding-bottom: 1rem;\r\n position: relative;\r\n`;","import { Box } from \"@mui/material\";\r\nimport React, { ReactNode } from \"react\";\r\n\r\ninterface DrawerHeaderProps {\r\n children?: ReactNode\r\n}\r\n\r\nexport const DrawerHeader = ({ children }: DrawerHeaderProps) => {\r\n return (\r\n ({\r\n height: \"66px\",\r\n background: theme.palette.action.hover,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n borderBottom: \"1px solid\",\r\n borderColor: theme.palette.divider,\r\n padding: \"24px\",\r\n })}>\r\n {children}\r\n \r\n );\r\n};\r\n","import React, { ReactNode } from \"react\";\r\nimport ClearOutlinedIcon from \"@mui/icons-material/ClearOutlined\";\r\nimport PreviewIcon from \"@mui/icons-material/PreviewOutlined\";\r\n\r\nimport * as Styled from \"./ListDetailsPanel.styles\";\r\nimport { Box, IconButton, Typography } from \"@mui/material\";\r\nimport { DrawerHeader } from \"../../DrawerHeader\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\n\r\ninterface IListDetailsPanelProps {\r\n children: ReactNode;\r\n onClose: () => void;\r\n flexGrow?: number;\r\n maxWidth?: string | number;\r\n subTitle?: string;\r\n buttons?: ReactNode;\r\n}\r\n\r\nexport const ListDetailsPanel = (props: IListDetailsPanelProps) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n
{}
\r\n {Translations.Preview}\r\n {props.subTitle &&\r\n {props.subTitle}\r\n }\r\n
\r\n
\r\n {props.buttons}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n {props.children}\r\n
\r\n
\r\n );\r\n};\r\n","import React from \"react\";\r\nimport { ListStateIcon } from \"../ListStateIcon/ListStateIcon\";\r\nimport ChangeCircleIcon from \"@mui/icons-material/ChangeCircle\";\r\n\r\ninterface IListStateIconStartedProps {\r\n noMargin?: boolean;\r\n color?: string;\r\n tooltip?: string;\r\n}\r\n\r\nexport const ListStateIconStarted = (props: IListStateIconStartedProps) => (\r\n \r\n);\r\n","import React from \"react\";\r\nimport { ListStateIcon } from \"../ListStateIcon/ListStateIcon\";\r\nimport HourglassTopIcon from \"@mui/icons-material/HourglassTop\";\r\n\r\ninterface IListStateIconNotStartedProps {\r\n noMargin?: boolean;\r\n color?: string;\r\n tooltip?: string;\r\n}\r\n\r\nexport const ListStateIconNotStarted = (props: IListStateIconNotStartedProps) => (\r\n \r\n);\r\n","import CircleIcon from \"@mui/icons-material/Circle\";\r\nimport { Box, List, ListItemButton, Typography } from \"@mui/material\";\r\nimport React, { useState, MouseEvent } from \"react\";\r\nimport { ICalendarTaskItem } from \"ui/Scripts/source/models/calendarTask/calendarTaskItem\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { EllipsisTypography } from \"../../../framework/Typography/EllipsisTypography\";\r\nimport { ListLinkValue } from \"source/components/framework/List/ListLinkValue\";\r\nimport { CalendarTaskState } from \"ui/Scripts/source/models/enums\";\r\nimport { ListStateIconSuccess } from \"source/components/framework/List/ListStateIconSuccess\";\r\nimport { ListStateIconStarted } from \"source/components/framework/List/ListStateIconStarted\";\r\nimport { ListStateIconNotStarted } from \"source/components/framework/List/ListStateIconNotStarted\";\r\nimport { ToolButtonDropdownMenu } from \"ui/Scripts/source/components/framework/Button/ToolButtonDropdownMenu\";\r\nimport { ListStateIconPrivate } from \"source/components/framework/List/ListStateIconPrivate\";\r\n\r\nexport interface ICalendarTaskDayItemItem extends ICalendarTaskItem {\r\n startsEarlierDate: boolean;\r\n endsLaterDate: boolean;\r\n}\r\n\r\nexport interface ICalendarTaskDayItem {\r\n id: string;\r\n dayNumber: string;\r\n dayLabel: string;\r\n dateLabel: string;\r\n events: ICalendarTaskDayItemItem[];\r\n}\r\n\r\ninterface CalendarTaskListItemProps {\r\n item: ICalendarTaskDayItem;\r\n selectedId?: string;\r\n onClick?: (id: string) => void;\r\n onOpen: (id: string, isSeries: boolean) => void;\r\n}\r\n\r\nconst getTimeStr = (event: ICalendarTaskDayItemItem) => {\r\n if (event.allDay) {\r\n return Translations.AllDay;\r\n }\r\n if (!event.endDate) {\r\n return Base.timeToTimeStr(event.startDate);\r\n }\r\n if (event.startsEarlierDate) {\r\n return `- ${Base.timeToTimeStr(event.endDate)}`;\r\n }\r\n if (event.endsLaterDate) {\r\n return `${Base.timeToTimeStr(event.startDate)} - `;\r\n }\r\n return `${Base.timeToTimeStr(event.startDate)} - ${Base.timeToTimeStr(event.endDate)}`;\r\n};\r\n\r\nexport const CalendarTaskListItem = (props: CalendarTaskListItemProps) => {\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n\r\n const getActions = (parentId: string, id: string) => [\r\n { title: Translations.CalendarTaskEditOccurrence, onClick: () => { props.onOpen(id, false); } },\r\n { title: Translations.CalendarTaskEditSeries, onClick: () => { props.onOpen(parentId, true); } },\r\n ];\r\n\r\n const handleToggleClick = (event: MouseEvent) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const getStateIcon = (state: CalendarTaskState): React.ElementType => {\r\n if (state === CalendarTaskState.Finished) return ListStateIconSuccess;\r\n if (state === CalendarTaskState.Started) return ListStateIconStarted;\r\n return ListStateIconNotStarted;\r\n };\r\n\r\n return (\r\n \r\n {props.item?.id.includes(\"week-\")\r\n ? (\r\n \r\n {`${Translations.Week} ${props.item?.dayNumber}`}\r\n \r\n )\r\n : (\r\n <>\r\n \r\n {props.item?.dayNumber}\r\n \r\n \r\n \r\n {props.item?.dayLabel}\r\n \r\n \r\n {props.item?.dateLabel}\r\n \r\n \r\n \r\n \r\n {props.item?.events.map((event) => {\r\n const StateIcon = getStateIcon(event.state);\r\n return (\r\n props.onClick(event.id) : null}\r\n >\r\n \r\n \r\n \r\n \r\n {event.isPrivate &&\r\n \r\n }\r\n \r\n {getTimeStr(event)}\r\n \r\n \r\n \r\n \r\n props.onOpen(event.id, false)}>{event.title}\r\n \r\n \r\n \r\n setAnchorEl(null)}\r\n />\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n","import moment from \"moment\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ICalendarTaskDayItem, ICalendarTaskDayItemItem } from \"./CalendarTaskListItem\";\r\nimport { ICalendarTaskItem } from \"ui/Scripts/source/models/calendarTask/calendarTaskItem\";\r\n\r\nexport const getEventsByDate = (events: ICalendarTaskDayItemItem[]): ICalendarTaskDayItem[] => {\r\n const result: ICalendarTaskDayItem[] = [];\r\n let lastWeekNumber = 0;\r\n\r\n events.forEach((event) => {\r\n const startDate = Base.timeToDateStr(event.startDate);\r\n \r\n if (result.find((item) => item.id === startDate) === undefined) {\r\n const mStartDate = moment(event.startDate);\r\n if (mStartDate.week() !== lastWeekNumber) {\r\n result.push({\r\n id: `week-${mStartDate.week()}`,\r\n dateLabel: \"\",\r\n dayLabel: \"\",\r\n dayNumber: mStartDate.week().toString(),\r\n events: [],\r\n });\r\n lastWeekNumber = mStartDate.week();\r\n }\r\n\r\n result.push({\r\n id: startDate,\r\n dateLabel: `${mStartDate.format(\"MMMM\")} ${mStartDate.format(\"YYYY\")}`,\r\n dayLabel: mStartDate.format(\"dddd\"),\r\n dayNumber: mStartDate.format(\"D\"),\r\n events: [{ ...event }],\r\n });\r\n } else {\r\n result.find((item) => item.id === startDate).events.push({ ...event });\r\n }\r\n });\r\n\r\n return result;\r\n};\r\n\r\nexport const getEventsByDay = (events: ICalendarTaskItem[]) => {\r\n const result: ICalendarTaskDayItemItem[] = [];\r\n\r\n events.forEach(event => {\r\n const firstItem = { ...event, startsEarlierDate: false, endsLaterDate: false };\r\n result.push(firstItem);\r\n if (event.endDate && Base.timeToDateStr(event.endDate) !== Base.timeToDateStr(event.startDate)) {\r\n firstItem.endsLaterDate = true;\r\n const mStartDate = moment(event.startDate);\r\n const mDate = mStartDate.startOf(\"day\");\r\n const mEndDate = moment(event.endDate);\r\n while (!mDate.isSame(mEndDate, \"date\")) {\r\n mDate.add(1, \"days\");\r\n if (!mDate.isSame(mEndDate) || Base.timeToTimeStr(event.endDate) !== \"0:00\") {\r\n const startDateIsSameAsEndDate = mDate.isSame(mEndDate, \"date\");\r\n result.push({\r\n ...event,\r\n startsEarlierDate: true,\r\n endsLaterDate: !startDateIsSameAsEndDate,\r\n startDate: parseInt(mDate.format(\"x\")),\r\n allDay: event.allDay || !startDateIsSameAsEndDate,\r\n });\r\n }\r\n }\r\n }\r\n return [...result];\r\n });\r\n\r\n return result;\r\n};","import { Alert, List, ToggleButton, ToggleButtonGroup } from \"@mui/material\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { ListDetailsPanel } from \"source/components/framework/List/ListDetailsPanel\";\r\nimport { ICalendarTaskItem } from \"ui/Scripts/source/models/calendarTask/calendarTaskItem\";\r\nimport { CalendarTaskState } from \"ui/Scripts/source/models/enums\";\r\nimport { CalendarTaskListItem, ICalendarTaskDayItem } from \"./CalendarTaskListItem\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { FormField } from \"source/components/framework/FormField\";\r\nimport { getEventsByDate, getEventsByDay } from \"./ICalendarTaskListUtils\";\r\n\r\ninterface CalendarTaskListProps {\r\n events: ICalendarTaskItem[];\r\n onItemClick: (id: string) => void;\r\n onClose: () => void;\r\n}\r\n\r\nexport const CalendarTaskList = (props: CalendarTaskListProps) => {\r\n const [eventsByDate, setEventsByDate] = useState([]);\r\n const [stateFilter, setStateFitler] = useState([CalendarTaskState.NotStarted, CalendarTaskState.Started]);\r\n\r\n useEffect(() => {\r\n const eventsByDay = getEventsByDay(props.events)\r\n .filter((item) => stateFilter.includes(item.state))\r\n .sort((a, b) => a.startDate - b.startDate);\r\n setEventsByDate(\r\n getEventsByDate(\r\n eventsByDay\r\n )\r\n );\r\n }, [props.events, stateFilter]);\r\n\r\n const handleFilterChange = (_event: React.MouseEvent, value: any) => {\r\n setStateFitler(value);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {Translations.CalendarTaskStateNotStarted}\r\n \r\n \r\n {Translations.CalendarTaskStateStarted}\r\n \r\n \r\n {Translations.CalendarTaskStateFinished}\r\n \r\n \r\n \r\n \r\n {eventsByDate?.map((item) => (\r\n \r\n ))}\r\n {eventsByDate?.length === 0 &&\r\n {Translations.CalendarTaskChangeSelectedDateToSeeTheTasks}\r\n }\r\n \r\n \r\n );\r\n};\r\n","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IIdColorTitle } from \"ui/Scripts/source/models/common/idColorTitle\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { CalendarTaskPrivacyFilter } from \"ui/Scripts/source/models/enums\";\r\n\r\nexport const CalendarTaskStateFilterAll = -1;\r\nexport const CalendarTaskHandlersFilterAll = \"\";\r\nexport const CalendarTaskCategoryNotSetId = \"00000000-0000-0000-0000-000000000001\";\r\n\r\nexport interface ICalendarTaskPageFilterLists {\r\n categories: IIdColorTitle[];\r\n states: IIdTitle[];\r\n handlers: IIdTitle[];\r\n creators: IIdTitle[];\r\n privacy: IIdTitle[];\r\n}\r\n\r\nexport interface ICalendarTaskPageFilterState {\r\n selectedCategoryIds: string[];\r\n selectedStateIds: string[];\r\n selectedHandlerUserGroupCodes: string[];\r\n selectedCreateUserCodes: string[];\r\n selectedPrivacy: string;\r\n}\r\n\r\nexport interface ICalendarTaskPageGeneralFilter {\r\n categoryIds: string[];\r\n states: number[];\r\n handlerUserGroupCodes: string[];\r\n createUserCodes: string[];\r\n privacy: number;\r\n}\r\n\r\nexport interface ICalendarTaskPageGeneralFilterChange extends ICalendarTaskPageGeneralFilter {\r\n notChanged: boolean;\r\n}\r\n\r\nexport const getCalendarTaskPageGeneralFilterFromState = (state: ICalendarTaskPageFilterState): ICalendarTaskPageGeneralFilter => {\r\n return {\r\n categoryIds: state?.selectedCategoryIds?.filter(i => i !== Base.emptyGuid) ?? [],\r\n states: state?.selectedStateIds?.filter(i => i !== CalendarTaskStateFilterAll.toString(10)).map(i => i.toInteger()) ?? [],\r\n handlerUserGroupCodes: state?.selectedHandlerUserGroupCodes?.filter(i => !!i) ?? [],\r\n createUserCodes: state?.selectedCreateUserCodes?.filter(i => !!i) ?? [],\r\n privacy: state?.selectedPrivacy.toInteger(false, CalendarTaskPrivacyFilter.All),\r\n };\r\n};\r\n\r\nexport const getCalendarTaskPageFilterStateFromGeneralFilter = (generalFilter: any): ICalendarTaskPageFilterState => {\r\n return {\r\n selectedCategoryIds: generalFilter?.categoryIds?.length > 0 ? generalFilter.categoryIds : [Base.emptyGuid],\r\n selectedStateIds: generalFilter?.states?.length > 0 ? generalFilter.states.map(i => i.toString(10)) : [CalendarTaskStateFilterAll.toString(10)],\r\n selectedHandlerUserGroupCodes: generalFilter?.handlerUserGroupCodes?.length ? generalFilter.handlerUserGroupCodes : [CalendarTaskHandlersFilterAll],\r\n selectedCreateUserCodes: generalFilter?.createUserCodes?.length ? generalFilter.createUserCodes : [CalendarTaskHandlersFilterAll],\r\n selectedPrivacy: (generalFilter?.privacy ?? CalendarTaskPrivacyFilter.All).toString(10)\r\n };\r\n};\r\n\r\nexport const getCalendarTaskPageGeneralFilterNotChanged = (prevFilter: ICalendarTaskPageGeneralFilter, filter: ICalendarTaskPageGeneralFilter): boolean => {\r\n return Base.equalStrArrays(prevFilter.categoryIds, filter.categoryIds) &&\r\n Base.equalStrArrays(prevFilter.states.map(i => i.toString(10)), filter.states.map(i => i.toString(10))) &&\r\n Base.equalStrArrays(prevFilter.handlerUserGroupCodes, filter.handlerUserGroupCodes) &&\r\n Base.equalStrArrays(prevFilter.createUserCodes, filter.createUserCodes) &&\r\n prevFilter.privacy.toString(10) === filter.privacy.toString(10);\r\n};\r\n\r\nexport const getCalendarTaskPageGeneralFilterChange = (prevProps: ICalendarTaskPageFilterState, props: ICalendarTaskPageFilterState): ICalendarTaskPageGeneralFilterChange => {\r\n const prevFilter = getCalendarTaskPageGeneralFilterFromState(prevProps);\r\n const filter = getCalendarTaskPageGeneralFilterFromState(props);\r\n return {\r\n ...filter,\r\n notChanged: getCalendarTaskPageGeneralFilterNotChanged(prevFilter, filter)\r\n };\r\n};\r\n","import { Box } from \"@mui/material\";\r\nimport * as moment from \"moment\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { PreviewToggleButton } from \"source/components/framework/Button/PreviewToggleButton\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { ICalendarTaskItem } from \"ui/Scripts/source/models/calendarTask/calendarTaskItem\";\r\nimport { ISessionState } from \"source/models/session/sessionState\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport * as calendarTaskService from \"../../../models/services/calendarTaskService\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { AddButton } from \"../../framework/Button/AddButton\";\r\nimport { SettingsButton } from \"../../framework/Button/SettingsButton\";\r\nimport { Calendar, CalendarRefProps, ICalendarItem } from \"../../framework/Calendar\";\r\nimport { ListActionButtons } from \"../../framework/List/ListActionButtons\";\r\nimport { ListContainer } from \"../../framework/List/ListContainer\";\r\nimport { ListSearchContainer } from \"../../framework/List/ListSearchContainer\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { PageTitle } from \"../../framework/Page/PageTitle\";\r\nimport { CalendarTaskEditDialog } from \"../CalendarTaskEditDialog\";\r\nimport { CalendarTaskList } from \"../CalendarTaskList\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { removeConfirmationWord } from \"ui/Scripts/source/models/consts\";\r\nimport { getCalendarTaskPageGeneralFilterFromState, ICalendarTaskPageFilterState, ICalendarTaskPageGeneralFilter } from \"../CalendarTaskPageFilter\";\r\n\r\ninterface ICalendarTaskViewProps extends ICalendarTaskPageFilterState {\r\n companyId: string;\r\n startDate: number;\r\n endDate: number;\r\n initialItems: ICalendarTaskItem[];\r\n initialPrevItem: ICalendarTaskItem;\r\n initialNextItem: ICalendarTaskItem;\r\n settingsVisible: boolean;\r\n reportTabs: React.ReactNode;\r\n sessionState: ISessionState;\r\n showDocumentPreview: boolean;\r\n viewFilterIsSet: boolean;\r\n onToggleSettingsDialog: () => void;\r\n onOpenFilterDrawer: () => void;\r\n onChangeShowDocumentPreview: (showDocumentPreview: boolean) => void;\r\n}\r\n\r\ninterface ICalendarTaskViewSearchFilter extends ICalendarTaskPageGeneralFilter {\r\n startDate: number;\r\n endDate: number;\r\n filter: string;\r\n}\r\n\r\ninterface ICalendarTaskViewState extends ICalendarTaskViewSearchFilter {\r\n initialized: boolean;\r\n isLoading: boolean;\r\n showEditDialog: boolean;\r\n editDialogId: string;\r\n editDialogStartDate: number;\r\n editDialogHasPrevious: boolean;\r\n editDialogHasNext: boolean;\r\n items: ICalendarTaskItem[];\r\n prevPrediodLastItem: ICalendarTaskItem;\r\n nextPrediodFirstItem: ICalendarTaskItem;\r\n calendarItems: ICalendarItem[];\r\n selectedId: string;\r\n}\r\n\r\nconst getFromattedDate = (item:ICalendarTaskItem) => {\r\n return !item.endDate\r\n ? `${Base.timeToDateStr(item.startDate)} (${item.allDay ? Translations.AllDay : Base.timeToTimeStr(item.startDate)})`\r\n : Base.timeToDateStr(item.startDate) === Base.timeToDateStr(item.endDate)\r\n ? `${Base.timeToDateStr(item.startDate)} (${Base.timeToTimeStr(item.startDate)} - ${Base.timeToTimeStr(item.endDate)})`\r\n : `${Base.timeToDateStr(item.startDate)} (${Base.timeToTimeStr(item.startDate)}) - ${Base.timeToDateStr(item.endDate)} (${Base.timeToTimeStr(item.endDate)})`;\r\n};\r\n\r\nconst getCalendarItems = (items: ICalendarTaskItem[]): ICalendarItem[] =>\r\n items.map((item) => ({\r\n id: item.id,\r\n companyId: item.companyId,\r\n recordId: item.recordId,\r\n databaseRecordType: item.databaseRecordType,\r\n title: item.title,\r\n start: moment.utc(item.startDate).toISOString(),\r\n end: item.endDate ? moment.utc(item.endDate).toISOString() : null,\r\n color: item.categoryColor,\r\n allDay: item.allDay,\r\n editable: true,\r\n location: item.locationText,\r\n formatedDate: getFromattedDate(item),\r\n parentId: item.parentId,\r\n extendedProps: { \"private\": item.isPrivate }\r\n }));\r\n\r\nexport const CalendarTaskView = (props: ICalendarTaskViewProps) => {\r\n const calendarRef = useRef(null);\r\n\r\n const [state, setState] = useState(() => {\r\n const generalFilterValues = getCalendarTaskPageGeneralFilterFromState(props);\r\n return {\r\n ...generalFilterValues,\r\n initialized: false,\r\n isLoading: false,\r\n showEditDialog: false,\r\n editDialogId: \"\",\r\n editDialogStartDate: null,\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false,\r\n items: [],\r\n startDate: props.startDate,\r\n endDate: props.endDate,\r\n filter: \"\",\r\n calendarItems: getCalendarItems(props.initialItems),\r\n prevPrediodLastItem: props.initialPrevItem,\r\n nextPrediodFirstItem: props.initialNextItem,\r\n selectedId: null,\r\n callback: null\r\n };\r\n });\r\n\r\n const searchItems = async (searchFilter: ICalendarTaskViewSearchFilter): Promise => {\r\n setState((old) => ({ ...old, isLoading: true }));\r\n const result = await AppUtils.callService(() => calendarTaskService.getCalendarTaskItems(props.companyId, searchFilter.startDate, searchFilter.endDate, searchFilter.filter,\r\n searchFilter.states, searchFilter.categoryIds, searchFilter.handlerUserGroupCodes, searchFilter.privacy, searchFilter.createUserCodes), false, false, () => setState((old) => ({ ...old, isLoading: false })));\r\n const index = result.items.findIndex(i => i.id === state.selectedId);\r\n const calendarItems = getCalendarItems(result.items);\r\n setState((old) => ({\r\n ...old,\r\n ...searchFilter,\r\n initialized: true,\r\n startDate: result.startDate,\r\n endDate: result.endDate,\r\n items: result.items,\r\n prevPrediodLastItem: result.prevItem,\r\n nextPrediodFirstItem: result.nextItem,\r\n calendarItems,\r\n selectedId: index < 0 ? \"\" : state.selectedId\r\n }));\r\n return calendarItems;\r\n };\r\n \r\n useEffect(() => {\r\n setState((old) => ({\r\n ...old,\r\n startDate: props.startDate,\r\n endDate: props.endDate\r\n }));\r\n }, [props.startDate, props.endDate]);\r\n\r\n useEffect(() => {\r\n if (!props.initialItems) return;\r\n const calendarItems = getCalendarItems(props.initialItems);\r\n setState((old) => ({\r\n ...old,\r\n initialized: true,\r\n items: props.initialItems,\r\n prevPrediodLastItem: props.initialPrevItem,\r\n nextPrediodFirstItem: props.initialNextItem,\r\n calendarItems,\r\n }));\r\n }, [props.initialItems, props.initialPrevItem, props.initialNextItem]);\r\n\r\n useEffect(() => {\r\n if (!state.initialized) return;\r\n searchItems(state);\r\n }, [props.companyId]);\r\n\r\n useEffect(() => {\r\n if (!state.initialized) return;\r\n const generalFilterValues = getCalendarTaskPageGeneralFilterFromState(props);\r\n setState((old) => ({\r\n ...old,\r\n ...generalFilterValues\r\n }));\r\n searchItems({ ...state, ...generalFilterValues });\r\n }, [props.selectedStateIds.join(\"#\"), props.selectedCategoryIds.join(\"#\"), props.selectedHandlerUserGroupCodes.join(\"#\"), props.selectedPrivacy, props.selectedCreateUserCodes.join(\"#\")]);\r\n \r\n useEffect(() => {\r\n if (!state.items) return;\r\n const index = state.editDialogId ? state.items.findIndex(i => i.id === state.editDialogId) : -1;\r\n setState((old) => ({\r\n ...old,\r\n editDialogHasPrevious: state.editDialogId ? index > 0 || !!state.prevPrediodLastItem : false,\r\n editDialogHasNext: state.editDialogId ? index < state.items.length - 1 || !!state.nextPrediodFirstItem : false\r\n }));\r\n }, [state.items, state.editDialogId]);\r\n\r\n const handleRefreshCalendar = async () => {\r\n await searchItems(state);\r\n };\r\n\r\n // #region Edit dialog\r\n const handleAddCalendarTask = (date: number) => {\r\n setState((old) => ({\r\n ...old,\r\n showEditDialog: true,\r\n editDialogId: Base.emptyGuid,\r\n editDialogStartDate: date,\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false\r\n }));\r\n };\r\n\r\n const handleCalendarDateClick = (date: number) => {\r\n handleAddCalendarTask(date);\r\n };\r\n \r\n const handleOpenCalendarItem = (id: string) => {\r\n setState((old) => ({\r\n ...old,\r\n showEditDialog: true,\r\n editDialogId: id,\r\n editDialogStartDate: null\r\n }));\r\n };\r\n\r\n const handleCloseEditDialog = () => {\r\n const stateChange = {\r\n showEditDialog: false,\r\n editDialogId: \"\"\r\n };\r\n setState((old) => ({\r\n ...old,\r\n ...stateChange\r\n }));\r\n searchItems({ ...state, ...stateChange });\r\n };\r\n\r\n const setEditDialogItemByIndex = (index: number) => {\r\n if (index < 0) {\r\n if (!state.prevPrediodLastItem) return;\r\n setState((old) => ({\r\n ...old,\r\n selectedId: state.prevPrediodLastItem.id,\r\n editDialogId: state.prevPrediodLastItem.id,\r\n editDialogStartDate: null\r\n }));\r\n calendarRef.current.moveToDate(moment.utc(state.prevPrediodLastItem.startDate));\r\n } else if (index >= state.items.length) {\r\n if (!state.nextPrediodFirstItem) return;\r\n setState((old) => ({\r\n ...old,\r\n selectedId: state.nextPrediodFirstItem.id,\r\n editDialogId: state.nextPrediodFirstItem.id,\r\n editDialogStartDate: null\r\n }));\r\n calendarRef.current.moveToDate(moment.utc(state.nextPrediodFirstItem.startDate));\r\n } else {\r\n setState((old) => ({\r\n ...old,\r\n selectedId: state.items[index].id,\r\n editDialogId: state.items[index].id,\r\n editDialogStartDate: null\r\n }));\r\n }\r\n };\r\n\r\n const handleMoveToPrevious = () => {\r\n if (!state.editDialogId) return;\r\n const index = state.items.findIndex(i => i.id === state.editDialogId);\r\n if (index < 0) return;\r\n setEditDialogItemByIndex(index - 1);\r\n };\r\n\r\n const handleMoveToNext = () => {\r\n if (!state.editDialogId) return;\r\n const index = state.items.findIndex(i => i.id === state.editDialogId);\r\n if (index < 0) return;\r\n setEditDialogItemByIndex(index + 1);\r\n };\r\n // #endregion Edit dialog\r\n\r\n const handleCalendarItemStartDate = async (id: string, startDate: number) => {\r\n const result = await AppUtils.callService(() => calendarTaskService.setCalendarTaskStartDate(props.companyId, id, startDate), false);\r\n if (!result) return;\r\n handleRefreshCalendar();\r\n };\r\n\r\n const handleCalendarItemRemove = async (id: string) => {\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveCalendarTaskParameter, state.items?.find(item => item.id === id)?.title), false, removeConfirmationWord) === ConfirmationDialogResult.Yes) {\r\n const result = await AppUtils.callService(() => calendarTaskService.removeCalendarTask(props.companyId, id));\r\n if (!result) return;\r\n }\r\n handleRefreshCalendar();\r\n };\r\n\r\n const handleChangeFilter = (filter: string) => {\r\n searchItems({ ...state, filter });\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n {props.settingsVisible\r\n ? (\r\n \r\n {Translations.Settings}\r\n \r\n )\r\n : null}\r\n handleAddCalendarTask(null)}>\r\n {Translations.AddCalendarTask}\r\n \r\n props.onChangeShowDocumentPreview(!props.showDocumentPreview)} style={{ marginLeft: \"24px\", padding: \"7px\" }} />\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n searchItems({\r\n categoryIds: state.categoryIds,\r\n states: state.states,\r\n createUserCodes: state.createUserCodes,\r\n handlerUserGroupCodes: state.handlerUserGroupCodes,\r\n privacy: state.privacy,\r\n filter: state.filter,\r\n startDate,\r\n endDate\r\n })}\r\n onDateClick={handleCalendarDateClick}\r\n onEventClick={handleOpenCalendarItem}\r\n onEventRemove={handleCalendarItemRemove}\r\n onSetEventStartDate={handleCalendarItemStartDate}\r\n />\r\n \r\n \r\n {state.showEditDialog &&\r\n \r\n }\r\n
\r\n {props.showDocumentPreview &&\r\n props.onChangeShowDocumentPreview(false)}\r\n />\r\n }\r\n
\r\n );\r\n};\r\n","import { Box } from \"@mui/material\";\r\nimport React, { ReactNode } from \"react\";\r\n\r\ninterface DrawerContentProps {\r\n content: ReactNode | ReactNode[];\r\n actions?: ReactNode | ReactNode[];\r\n}\r\n\r\nexport const DrawerContent = ({ content, actions }: DrawerContentProps) => (\r\n \r\n \r\n {content}\r\n \r\n \r\n {actions}\r\n \r\n \r\n);\r\n","import { Box } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ConfirmationButton } from \"../../Button/ConfirmationButton\";\r\nimport { DangerButton } from \"../../Button/DangerButton\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\ninterface IFilterButtonsProps {\r\n chartPanelPropertiesMode?: boolean;\r\n onClear?: () => void;\r\n onCancel: (checkChanges: boolean) => void;\r\n onRemove?: () => void;\r\n onSave: () => void;\r\n}\r\n\r\nexport const FilterButtons = (props: IFilterButtonsProps) => (\r\n \r\n {props.onClear && (\r\n {Translations.Clear}\r\n )}\r\n \r\n {props.onRemove && (\r\n {Translations.Remove}\r\n )}\r\n props.onCancel(false)} sx={{ marginRight: \".5rem\" }}>{Translations.Cancel}\r\n {!props.chartPanelPropertiesMode ? Translations.Search : Translations.Save}\r\n \r\n \r\n);\r\n","// eslint-disable-next-line no-unused-vars\r\nimport * as React from \"react\";\r\nimport { ButtonGroup as MuiButtonGroup, styled } from \"@mui/material\";\r\n\r\nexport const ButtonGroup = styled(MuiButtonGroup)`\r\n margin-right: -14px;\r\n\r\n button:first-of-type, .MuiButtonGroup-firstButton {\r\n border-radius: 0 .25rem .25rem 0;\r\n }\r\n`;","import SaveIcon from \"@mui/icons-material/Save\";\r\nimport SaveAsIcon from \"@mui/icons-material/SaveAs\";\r\nimport { Box, TextField, Tooltip } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport * as Styled from \"./FilterSearchField.styles\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { AppRemoveIcon } from \"../../Icon/AppRemoveIcon\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\n interface IFilterDialogFilterRowItem extends IIdTitle {\r\n getIsShared(): boolean;\r\n getIsUserLevel(): boolean;\r\n}\r\n\r\ninterface FilterSearchFieldProps {\r\n filter: IFilterDialogFilterRowItem;\r\n canRemoveSharedFilters: boolean;\r\n isReport?: boolean;\r\n onSaveFilter: (saveAs: boolean) => void;\r\n onRemoveFilter: (filterId: string) => void;\r\n}\r\n\r\nexport const FilterSearchField = ({ filter, canRemoveSharedFilters, isReport, onSaveFilter, onRemoveFilter }: FilterSearchFieldProps) => {\r\n return (\r\n \r\n \r\n {filter?.getIsUserLevel() && (!filter?.getIsShared() || canRemoveSharedFilters) &&\r\n \r\n onSaveFilter(false)}>\r\n \r\n }\r\n {!!onSaveFilter &&\r\n \r\n onSaveFilter(true)}>\r\n \r\n }\r\n {!!onRemoveFilter && filter?.getIsUserLevel() && (!filter?.getIsShared() || canRemoveSharedFilters) &&\r\n \r\n onRemoveFilter(filter?.id)}>\r\n \r\n }\r\n \r\n )\r\n }} />\r\n \r\n );\r\n};\r\n","// eslint-disable-next-line no-unused-vars\r\nimport * as React from \"react\";\r\nimport TrendingFlatOutlinedIcon from \"@mui/icons-material/TrendingFlatOutlined\";\r\nimport { Link, styled } from \"@mui/material\";\r\n\r\nexport const PanelLink = styled(Link)`\r\n cursor: pointer;\r\n margin-right: 16px;\r\n min-width: 74px;\r\n`;\r\n\r\nexport const ArrowIcon = styled(TrendingFlatOutlinedIcon)`\r\n transform: rotate(180deg);\r\n margin-right: 4px;\r\n`;","import ClearOutlinedIcon from \"@mui/icons-material/ClearOutlined\";\r\nimport { Box, Drawer, IconButton, Typography } from \"@mui/material\";\r\nimport React, { ReactNode } from \"react\";\r\nimport { DrawerHeader } from \"../../DrawerHeader\";\r\nimport * as Styled from \"./PageDrawer.styles\";\r\n\r\ninterface IPageDrawerProps {\r\n open: boolean;\r\n icon?: ReactNode;\r\n title: string;\r\n parentTitle?: string;\r\n hideBackButton?: boolean;\r\n children: ReactNode;\r\n onClose: () => void;\r\n}\r\n\r\nexport const PageDrawer = (props: IPageDrawerProps) => (\r\n \r\n \r\n \r\n {(!props.parentTitle\r\n ? \r\n \r\n {props.icon &&\r\n
{props.icon}
\r\n }\r\n {props.title}\r\n
\r\n \r\n \r\n \r\n
\r\n : \r\n \r\n {!props.hideBackButton &&\r\n \r\n \r\n {props.parentTitle}\r\n \r\n }\r\n {props.icon &&\r\n
{props.icon}
\r\n }\r\n {props.title}\r\n
\r\n \r\n \r\n \r\n
\r\n )}\r\n
\r\n \r\n {props.children}\r\n \r\n
\r\n
\r\n);\r\n","import FilterAltOutlinedIcon from \"@mui/icons-material/FilterAltOutlined\";\r\nimport React, { ReactNode } from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { PageDrawer } from \"../PageDrawer\";\r\n\r\ninterface IPageFilterConditionDrawerProps {\r\n open: boolean;\r\n children: ReactNode;\r\n onClose: () => void;\r\n}\r\n\r\nexport const PageFilterConditionDrawer = (props: IPageFilterConditionDrawerProps) => (\r\n } onClose={props.onClose} >\r\n {props.children}\r\n \r\n);\r\n","import * as React from \"react\";\r\nimport { ButtonGroup, SxProps, Theme } from \"@mui/material\";\r\nimport { useRef } from \"react\";\r\nimport { AppButton } from \"../AppButton\";\r\n\r\ninterface IInputButtonGroupFileInput {\r\n name?: string;\r\n accept?: string;\r\n multiple?: boolean;\r\n onChange: (files: File[]) => void;\r\n}\r\n\r\nexport interface IInputButtonGroupButton {\r\n label: string;\r\n hidden?: boolean;\r\n disabled?: boolean;\r\n fileInput?: IInputButtonGroupFileInput;\r\n startIcon?: React.ReactNode;\r\n onClick: (event) => void;\r\n}\r\n\r\nexport interface IInputButtonGroupProps {\r\n sx?: SxProps;\r\n showButtons?: boolean;\r\n buttons: IInputButtonGroupButton[];\r\n};\r\n\r\nexport const InputButtonGroup = ({ sx, buttons, showButtons = true }: IInputButtonGroupProps) => {\r\n const inputRef = useRef(null);\r\n\r\n const handleFileClick = (e: React.MouseEvent) => {\r\n inputRef.current.click();\r\n };\r\n\r\n const handleFileChange = (e: React.ChangeEvent, button: IInputButtonGroupButton) => {\r\n if (!e.target.files || e.target.files.length < 1) return;\r\n if (button.fileInput.multiple) {\r\n button.fileInput.onChange(Array.from(e.target.files));\r\n } else {\r\n button.fileInput.onChange([e.target.files[0]]);\r\n }\r\n };\r\n\r\n if (!showButtons) return null;\r\n\r\n return (\r\n \r\n {buttons?.map((button) => (!button.hidden && (\r\n \r\n {button.label}\r\n {!!button.fileInput && (\r\n handleFileChange(e, button)}\r\n />\r\n )}\r\n \r\n )))}\r\n \r\n );\r\n};","import * as React from \"react\";\r\nimport { Base } from \"../../../../framework/base\";\r\nimport { Dropdown } from \"../Dropdown\";\r\nimport { IInputButtonGroupButton, InputButtonGroup } from \"../../Button/InputButtonGroup\";\r\nimport { Box, Divider, MenuItem, SxProps, TextField, Theme, Typography } from \"@mui/material\";\r\nimport { useRef } from \"react\";\r\n\r\nexport interface IIdTitleDropdownItem {\r\n id: string;\r\n title: string;\r\n subTitle?: string;\r\n divider?: boolean;\r\n unselectable?: boolean;\r\n}\r\n\r\n// Dropdown\r\n// ***********************************************************************************************************************\r\nexport interface IIdTitleDropdownProp {\r\n index?: number;\r\n autoFocus?: boolean;\r\n menuRight?: boolean;\r\n disabled?: boolean;\r\n selectMode?: boolean;\r\n selectedId: string;\r\n startIcon?: React.ReactNode;\r\n tooltip?: string;\r\n items: IIdTitleDropdownItem[];\r\n buttons?: IInputButtonGroupButton[];\r\n sx?: SxProps;\r\n onChange: (id: string) => void;\r\n}\r\n\r\nexport const IdTitleDropdown = (props: IIdTitleDropdownProp) => {\r\n const itemsToActions = () => {\r\n return props.items.map(item => {\r\n return {\r\n title: item.title,\r\n divider: item.divider,\r\n selected: props.selectedId === item.id,\r\n onClick: item.unselectable\r\n ? () => {}\r\n : () => props.onChange(item.id)\r\n };\r\n });\r\n };\r\n \r\n const handleChange = (event) => {\r\n if (!props.onChange) return;\r\n props.onChange(event.target.value as string);\r\n };\r\n\r\n const selectRef = useRef();\r\n const buttonsRef = useRef(null);\r\n\r\n const getMenuProps = (ref) => {\r\n return {\r\n PaperProps: {\r\n style: {\r\n width: ref.current?.offsetWidth,\r\n maxHeight: \"374px\"\r\n }\r\n }\r\n };\r\n };\r\n \r\n if (props.buttons?.length > 0) {\r\n return (\r\n \r\n }}\r\n onChange={handleChange}\r\n >\r\n {props.items.map(item => {\r\n if (item.divider) {\r\n return {item.title};\r\n }\r\n if (item.subTitle) {\r\n return \r\n \r\n {item.title}\r\n {item.subTitle}\r\n \r\n ;\r\n }\r\n return {item.title};\r\n })}\r\n \r\n );\r\n }\r\n\r\n return (\r\n i.id === props.selectedId)?.title}\r\n startIcon={props.startIcon}\r\n tooltip={props.tooltip}\r\n actions={itemsToActions()}\r\n />\r\n );\r\n};","import React, { useEffect, useRef, useState } from \"react\";\r\nimport { IListFilterItem } from \"source/models/common/listFilterItem\";\r\nimport { DrawerContent } from \"../../framework/Drawer/DrawerContent\";\r\nimport { FilterButtons } from \"../../framework/Filters/FilterButtons\";\r\nimport { FilterSearchField } from \"../../framework/Filters/FilterSearchField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { PageFilterConditionDrawer } from \"../../framework/Page/PageFilterConditionDrawer\";\r\nimport { Grid } from \"@mui/material\";\r\nimport { FormField } from \"source/components/framework/FormField\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { CalendarTaskCategoryNotSetId, CalendarTaskStateFilterAll, ICalendarTaskPageFilterLists, ICalendarTaskPageFilterState } from \"../CalendarTaskPageFilter\";\r\nimport { SaveDataObj } from \"source/framework/saveData\";\r\nimport { CheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/CheckboxDropdown\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IdTitleDropdown } from \"ui/Scripts/source/components/framework/Dropdown/IdTitleDropdown\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\n\r\ninterface ICalendarTaskFilterDrawerProps extends ICalendarTaskPageFilterLists, ICalendarTaskPageFilterState {\r\n open: boolean;\r\n filter?: IListFilterItem;\r\n canRemoveSharedFilters: boolean;\r\n onSaveFilter: (saveAs: boolean, onGetGeneralFilter: () => any) => void;\r\n onRemoveFilter: (filterId: string) => void;\r\n onOk: (closeDialog: boolean, filterState: ICalendarTaskPageFilterState) => any;\r\n onCancel: () => void;\r\n\r\n}\r\n\r\nexport const calendarTaskFilterIsSet = (filterLists: ICalendarTaskPageFilterLists, filterState: ICalendarTaskPageFilterState): boolean => {\r\n return !(Base.equalStrArrays(filterState.selectedStateIds, [filterLists.states[0].id]) &&\r\n Base.equalStrArrays(filterState.selectedCategoryIds, [filterLists.categories[0].id]) &&\r\n Base.equalStrArrays(filterState.selectedHandlerUserGroupCodes, [filterLists.handlers[0].id]) &&\r\n Base.equalStrArrays(filterState.selectedCreateUserCodes, [filterLists.creators[0].id]) &&\r\n filterState.selectedPrivacy === filterLists.privacy[0].id);\r\n};\r\n\r\nexport const CalendarTaskFilterDrawer = (props: ICalendarTaskFilterDrawerProps) => {\r\n const getHashFromState = (state: ICalendarTaskPageFilterState): string => {\r\n const result = new SaveDataObj();\r\n result.append(\"selectedStateIds\", state.selectedStateIds);\r\n result.append(\"selectedCategoryIds\", state.selectedCategoryIds);\r\n result.append(\"selectedHandlerUserGroupCodes\", state.selectedHandlerUserGroupCodes);\r\n result.append(\"selectedCreateUserCodes\", state.selectedCreateUserCodes);\r\n result.append(\"selectedPrivacy\", state.selectedPrivacy);\r\n return result.hash;\r\n };\r\n\r\n const getStateFromProps = (props: ICalendarTaskFilterDrawerProps): ICalendarTaskPageFilterState => {\r\n return {\r\n selectedStateIds: props.selectedStateIds,\r\n selectedCategoryIds: props.selectedCategoryIds,\r\n selectedHandlerUserGroupCodes: props.selectedHandlerUserGroupCodes,\r\n selectedCreateUserCodes: props.selectedCreateUserCodes,\r\n selectedPrivacy: props.selectedPrivacy\r\n };\r\n };\r\n\r\n const orgStateHash = useRef(getHashFromState(props));\r\n const [state, setState] = useState(getStateFromProps(props));\r\n\r\n useEffect(() => {\r\n if (!props.open) return;\r\n const newState = getStateFromProps(props);\r\n setState((old) => ({\r\n ...old,\r\n ...newState\r\n }));\r\n orgStateHash.current = getHashFromState(newState);\r\n }, [props.open]);\r\n\r\n const checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n const getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n const getSaveFilterState = (): ICalendarTaskPageFilterState => {\r\n return {\r\n selectedCategoryIds: state.selectedCategoryIds,\r\n selectedStateIds: state.selectedStateIds,\r\n selectedHandlerUserGroupCodes: state.selectedHandlerUserGroupCodes,\r\n selectedCreateUserCodes: state.selectedCreateUserCodes,\r\n selectedPrivacy: state.selectedPrivacy\r\n };\r\n };\r\n\r\n const handleSaveFilter = async (saveAs: boolean) => {\r\n if (!await AppUtils.validate(checkErrors, getWarningMessage, null)) return false;\r\n const filterState = getSaveFilterState();\r\n if (!saveAs) {\r\n props.onOk(false, filterState);\r\n await props.onSaveFilter(false, null);\r\n } else {\r\n await props.onSaveFilter(true, () => {\r\n return props.onOk(false, filterState);\r\n });\r\n }\r\n };\r\n\r\n const handleClear = () => {\r\n setState((old) => ({\r\n ...old,\r\n selectedStateIds: [props.states[0].id],\r\n selectedCategoryIds: [props.categories[0].id],\r\n selectedHandlerUserGroupCodes: [props.handlers[0].id],\r\n selectedCreateUserCodes: [props.creators[0].id],\r\n selectedPrivacy: props.privacy[0].id\r\n }));\r\n };\r\n\r\n const handleSave = async () => {\r\n if (!await AppUtils.validate(checkErrors, getWarningMessage, null)) return false;\r\n props.onOk(true, getSaveFilterState());\r\n };\r\n\r\n const handleCancel = async (checkChanges: boolean) => {\r\n AppUtils.cancelEditDialog(checkChanges, getHashFromState(state), orgStateHash.current, handleSave, props.onCancel, Translations.YouHaveUnapprovedChangesDoYouWantApproveChanges);\r\n };\r\n\r\n return (\r\n handleCancel(false)}\r\n >\r\n \r\n {!!props.onSaveFilter && !!props.onRemoveFilter && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n setState((old) => ({ ...old, selectedStateIds }))\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n setState((old) => ({ ...old, selectedCategoryIds }))\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n setState((old) => ({ ...old, selectedHandlerUserGroupCodes }))} />\r\n \r\n \r\n \r\n \r\n setState((old) => ({ ...old, selectedPrivacy }))}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n setState((old) => ({ ...old, selectedCreateUserCodes }))} />\r\n \r\n \r\n \r\n \r\n }\r\n actions={\r\n handleCancel(false)}\r\n onClear={handleClear}\r\n />\r\n }\r\n />\r\n \r\n );\r\n};\r\n","import { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { postApiCall } from \"./tokenService\";\r\n\r\nexport const saveFilter = (obj: any): Promise => {\r\n return postApiCall(\"api/filter/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeFilter = (obj: any): Promise => {\r\n return postApiCall(\"api/filter/remove\", ApiSuccess, JSON.stringify(obj));\r\n};","// ListFilterSaveDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ApplicationPermissionType, ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../../framework/saveData\";\r\nimport { IListFilterItem } from \"../../../../models/common/listFilterItem\";\r\nimport { SavedListFilter } from \"../../../../models/common/savedListFilter\";\r\nimport * as filterService from \"../../../../models/services/filterService\";\r\nimport { ISessionState } from \"../../../../models/session/sessionState\";\r\nimport { Dialog } from \"../../Dialog/Dialog\";\r\nimport { FormField } from \"../../FormField\";\r\n\r\n//ListFilterSaveDialog\r\nexport interface IListFilterSaveDialogProp {\r\n sessionState: ISessionState;\r\n classes?: string;\r\n companyId: string;\r\n applicationPermissionType: ApplicationPermissionType;\r\n listFilter: IListFilterItem;\r\n generalFilter: any;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n reservedNames: string[];\r\n onGetGeneralFilter?: () => any;\r\n onOk: (savedListFilter: SavedListFilter, isShared: boolean) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IListFilterSaveDialogState {\r\n name: string;\r\n shared: boolean\r\n}\r\n\r\nexport class ListFilterSaveDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IListFilterSaveDialogProp) {\r\n super(props);\r\n this.state = {\r\n name: props.listFilter.getTitle(),\r\n shared: props.sessionState.isCompanyAdmin ? props.listFilter.isShared : false\r\n };\r\n this.orgStateHash = this.getHashFromState(props, this.state);\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"name\") {\r\n this.setState({ name: value });\r\n }\r\n };\r\n\r\n changeSharedFilter = (shared: boolean) => {\r\n this.setState({ shared });\r\n };\r\n\r\n static getSavedListFilter = (name: string, generalFilter: any, sortColumn: string, sortOrderIsAsc: boolean, applicationPermissionType: number): SavedListFilter => {\r\n const result = new SavedListFilter();\r\n result.id = name;\r\n result.title = name;\r\n result.applicationPermissionType = applicationPermissionType;\r\n result.generalFilter = generalFilter ?? {};\r\n result.sortColumn = sortColumn;\r\n result.sortOrderIsAsc = sortOrderIsAsc;\r\n return result;\r\n };\r\n\r\n getSavedListFilterFromState = (props: IListFilterSaveDialogProp, state: IListFilterSaveDialogState, beforeSave: boolean): SavedListFilter => {\r\n let generalFilter = props.generalFilter;\r\n if (beforeSave && props.onGetGeneralFilter) {\r\n generalFilter = props.onGetGeneralFilter();\r\n }\r\n return ListFilterSaveDialog.getSavedListFilter(state.name, generalFilter, props.sortColumn, props.sortOrderIsAsc, props.applicationPermissionType);\r\n };\r\n\r\n static getSaveData = (companyId: string, orgListFilterId: string, shared: boolean, applicationPermissionType: number, savedListFilter: SavedListFilter): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"companyId\", companyId);\r\n result.append(\"applicationPermissionType\", applicationPermissionType);\r\n result.append(\"orgId\", !Base.isNullOrUndefined(orgListFilterId) ? orgListFilterId : \"\");\r\n result.append(\"isShared\", shared);\r\n result.append(\"item\", savedListFilter);\r\n return result;\r\n };\r\n\r\n getSaveDataFromState = (props: IListFilterSaveDialogProp, state: IListFilterSaveDialogState, savedListFilter: SavedListFilter): SaveDataObj => {\r\n return ListFilterSaveDialog.getSaveData(props.companyId, null, state.shared, props.applicationPermissionType, savedListFilter);\r\n };\r\n \r\n getHashFromState = (props: IListFilterSaveDialogProp, state: IListFilterSaveDialogState): string => {\r\n return this.getSaveDataFromState(props, state, this.getSavedListFilterFromState(props, state, false)).hash;\r\n };\r\n\r\n checkErrors = (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.name) {\r\n AppUtils.showErrorMessage(Translations.NameMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (props.reservedNames.find(i => i.equalIgnoreCase(state.name))) {\r\n AppUtils.showErrorMessage(Translations.NameIsAlreadyInUse);\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n const savedListFilter = this.getSavedListFilterFromState(props, state, true);\r\n const saveData = this.getSaveDataFromState(props, state, savedListFilter);\r\n //Call server\r\n const result = await AppUtils.callService(() => filterService.saveFilter(saveData.obj));\r\n if (!result) return null;\r\n this.orgStateHash = saveData.hash;\r\n return savedListFilter;\r\n };\r\n\r\n handleSave = async () => {\r\n const props = this.props;\r\n const result = await this.saveToDb();\r\n if (!result) return;\r\n props.onOk(result, this.state.shared);\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getHashFromState(props, state), this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n static saveListFilterToDb = async (listFilter: IListFilterItem, generalFilter: any, sortColumn: string, sortOrderIsAsc: boolean, companyId: string, applicationPermissionType: number): Promise => {\r\n if (!listFilter) return;\r\n const savedListFilter = ListFilterSaveDialog.getSavedListFilter(listFilter.getTitle(), generalFilter, sortColumn, sortOrderIsAsc, applicationPermissionType);\r\n const saveData = ListFilterSaveDialog.getSaveData(companyId, listFilter.id, listFilter.isShared, applicationPermissionType, savedListFilter);\r\n const result = await AppUtils.callService(() => filterService.saveFilter(saveData.obj));\r\n if (!result) return null;\r\n return savedListFilter;\r\n };\r\n\r\n static removeListFilterFromDb = async (savedListFilters: IListFilterItem[], companyId: string, filterId: string, isShared: boolean, applicationPermissionType: number): Promise => {\r\n if (!filterId) return;\r\n const savedListFilter = savedListFilters.find(i => i.id === filterId);\r\n if (!savedListFilter) return;\r\n const confirmationResult = await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveFilterParameter, savedListFilter.title));\r\n if (confirmationResult !== ConfirmationDialogResult.Yes) return;\r\n const saveData = new SaveDataObj();\r\n saveData.append(\"companyId\", companyId);\r\n saveData.append(\"applicationPermissionType\", applicationPermissionType);\r\n saveData.append(\"id\", filterId);\r\n saveData.append(\"isShared\", isShared);\r\n return await AppUtils.callService(() => filterService.removeFilter(saveData.obj), false);\r\n };\r\n\r\n render() {\r\n const state = this.state;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n buttons={[\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: this.handleCancel },\r\n { title: Translations.Save, variant: \"contained\", onClick: this.handleSave },\r\n ]}\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport * as userService from \"../../../models/services/userService\";\r\nimport * as calendarTaskService from \"../../../models/services/calendarTaskService\";\r\nimport { ICalendarTaskPage } from \"source/models/calendarTask/calendarTaskPage\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IListFilterItem, ListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { ITypedOption } from \"../../../models/common/typedOption\";\r\nimport { IAppSessionState } from \"../../../models/store/storeTypes\";\r\nimport { HeaderMenuItem, NavigationMenu } from \"../../app/NavigationMenu\";\r\nimport { UserMenu } from \"../../app/UserMenu\";\r\nimport { PageContainer } from \"../../framework/Page/PageContainer\";\r\nimport { PageContent } from \"../../framework/Page/PageContent\";\r\nimport { PageTopBar } from \"../../framework/Page/PageTopBar\";\r\nimport { IPageNavMenuItem } from \"../../framework/PageNav/PageNavMenuItems\";\r\nimport { FilterTabs } from \"../../framework/PageNavMenuItem/FilterTabs\";\r\nimport { CalendarTaskSettingsDialog, CalendarTaskSettingsDialogMenuItem } from \"../CalendarTaskSettingsDialog\";\r\nimport { CalendarTaskView } from \"../CalendarTaskView\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { userParameterCodeShowDocumentPreview } from \"source/models/common/webConsts\";\r\nimport { CalendarTaskCategoryNotSetId, CalendarTaskHandlersFilterAll, CalendarTaskStateFilterAll, getCalendarTaskPageFilterStateFromGeneralFilter, getCalendarTaskPageGeneralFilterFromState, ICalendarTaskPageFilterLists, ICalendarTaskPageFilterState } from \"../CalendarTaskPageFilter\";\r\nimport { IdTitle, IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { ApplicationPermissionType, CalendarTaskPrivacyFilter, CalendarTaskState } from \"ui/Scripts/source/models/enums\";\r\nimport { IdColorTitle, IIdColorTitle } from \"ui/Scripts/source/models/common/idColorTitle\";\r\nimport { ICalendarTaskCategoryListItem } from \"ui/Scripts/source/models/calendarTaskCategory/calendarTaskCategoryListItem\";\r\nimport { ICodeTitle } from \"source/models/common/codeTitle\";\r\nimport { CalendarTaskFilterDrawer, calendarTaskFilterIsSet } from \"../CalendarTaskFilterDrawer\";\r\nimport { recordLockManager } from \"source/models/services/recordLockService\";\r\nimport { ListFilterSaveDialog } from \"source/components/framework/Filters/ListFilterSaveDialog\";\r\nimport { ISavedListFilter } from \"source/models/common/savedListFilter\";\r\n\r\n// CalendarTaskPage\r\nexport interface ICalendarTaskPageOwnProps {\r\n}\r\n\r\nexport interface ICalendarTaskPageStateProps {\r\n appState: IAppSessionState;\r\n dataId: number;\r\n calendarTaskPage: ICalendarTaskPage;\r\n}\r\n\r\nexport interface ICalendarTaskPageDispatchProps {\r\n onGetCalendarTasksPage: () => void;\r\n onLogout: () => void;\r\n onSetCulture: (culture: string) => void;\r\n onSaveUserParameters: (parameters: ITypedOption[]) => void;\r\n onRefreshSessionState: () => void;\r\n}\r\n\r\ntype CalendarTaskPageProp = ICalendarTaskPageOwnProps & ICalendarTaskPageStateProps & ICalendarTaskPageDispatchProps;\r\n\r\ninterface ICalendarTaskPageState extends ICalendarTaskPageFilterLists, ICalendarTaskPageFilterState {\r\n initialized: boolean;\r\n showNavPanel: boolean;\r\n activeCompanyId: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n settingsActions: IPageNavMenuItem[];\r\n // Filters\r\n listFilterIsSet: boolean;\r\n showCalendarTaskFilterDrawer: boolean;\r\n calendarTaskFilterDrawerFilter: IListFilterItem;\r\n filters: IListFilterItem[];\r\n savedFilters: IListFilterItem[];\r\n activeFilterId: string;\r\n activeSavedFilterId: string;\r\n showListFilterSaveDialog: boolean;\r\n listFilterSaveDialogFilter: IListFilterItem;\r\n listFilterSaveDialogGeneralFilter: any;\r\n listFilterSaveDialogReservedNames: string[];\r\n listFilterSaveDialogOnGetGeneralFilter: () => any;\r\n // Properties\r\n dataId: number;\r\n showSettingsDialog: boolean;\r\n // Preview\r\n showDocumentPreview: boolean;\r\n}\r\n\r\nexport class CalendarTaskPage extends React.Component {\r\n private getStates(): IIdTitle[] {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(CalendarTaskStateFilterAll.toString(10), \"'\" + Translations.All + \"'\"));\r\n return result.concat([\r\n IdTitle.createIdTitle(CalendarTaskState.NotStarted.toString(10), Translations.CalendarTaskStateNotStarted),\r\n IdTitle.createIdTitle(CalendarTaskState.Started.toString(10), Translations.CalendarTaskStateStarted),\r\n IdTitle.createIdTitle(CalendarTaskState.Finished.toString(10), Translations.CalendarTaskStateFinished),\r\n ]);\r\n }\r\n\r\n private getPrivacy(): IIdTitle[] {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(CalendarTaskPrivacyFilter.All.toString(10), \"'\" + Translations.All + \"'\"));\r\n return result.concat([\r\n IdTitle.createIdTitle(CalendarTaskPrivacyFilter.Private.toString(10), Translations.Private),\r\n IdTitle.createIdTitle(CalendarTaskPrivacyFilter.Public.toString(10), Translations.Public),\r\n ]);\r\n }\r\n\r\n private getCategories(categories: ICalendarTaskCategoryListItem[]): IIdColorTitle[] {\r\n const result: IIdColorTitle[] = [];\r\n result.push(IdColorTitle.createIdColorTitle(Base.emptyGuid, \"#fff\", \"'\" + Translations.All + \"'\"));\r\n result.push(IdColorTitle.createIdColorTitle(CalendarTaskCategoryNotSetId, \"#fff\", \"'\" + Translations.NotSet + \"'\"));\r\n return result.concat(categories.map((item) => IdColorTitle.createIdColorTitle(item.id, item.color, item.code)));\r\n }\r\n \r\n private getHandlers = (items: ICodeTitle[]): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(CalendarTaskHandlersFilterAll, \"'\" + Translations.All + \"'\"));\r\n return result.concat(items.map(i => IdTitle.createIdTitle(i.code, i.title)));\r\n };\r\n \r\n private getCreators = (items: ICodeTitle[]): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(CalendarTaskHandlersFilterAll, \"'\" + Translations.All + \"'\"));\r\n return result.concat(items.map(i => IdTitle.createIdTitle(i.code, i.title)));\r\n };\r\n\r\n getFilters = (): IListFilterItem[] => {\r\n const result: IListFilterItem[] = [];\r\n result.push(ListFilterItem.createListFilterItem(Translations.Calendar, Translations.Calendar,\r\n {\r\n }, \"startDate\", true));\r\n ListFilterItem.sortListFilterItems(result);\r\n return result;\r\n };\r\n\r\n getSavedFilters = (props: CalendarTaskPageProp): IListFilterItem[] => {\r\n const result: IListFilterItem[] = [];\r\n if (!props || !props.calendarTaskPage) return result;\r\n for (const companyFilter of props.calendarTaskPage.companyFilters) {\r\n result.push(ListFilterItem.createListFilterItemFromSavedListFilter(companyFilter, true));\r\n }\r\n for (const userFilter of props.calendarTaskPage.userFilters) {\r\n result.push(ListFilterItem.createListFilterItemFromSavedListFilter(userFilter, false));\r\n }\r\n ListFilterItem.sortListFilterItems(result);\r\n return result;\r\n };\r\n\r\n getListFilterIsSet = (state: ICalendarTaskPageState): boolean => {\r\n return calendarTaskFilterIsSet(state, state);\r\n };\r\n\r\n getSettingsActions = (): IPageNavMenuItem[] => {\r\n const props = this.props;\r\n const sessionState = props.appState.state;\r\n const result: IPageNavMenuItem[] = [];\r\n if (sessionState.isCompanyAdmin) {\r\n result.push({ id: CalendarTaskSettingsDialogMenuItem.Permissions, title: Translations.Permissions });\r\n result.push({ id: CalendarTaskSettingsDialogMenuItem.Categories, title: Translations.CalendarTaskCategories });\r\n }\r\n if (sessionState.isSuperAdmin) {\r\n result.push({ id: CalendarTaskSettingsDialogMenuItem.DefaultCategories, title: Translations.DefaultCalendarTaskCategories });\r\n }\r\n return result;\r\n };\r\n\r\n constructor(props: CalendarTaskPageProp) {\r\n super(props);\r\n const sessionState = props.appState.state;\r\n const filters = this.getFilters();\r\n const filterProps = ListFilterItem.getFilterProps(filters[0], \"\", true, getCalendarTaskPageFilterStateFromGeneralFilter);\r\n const state = {\r\n ...filterProps,\r\n initialized: !!props.calendarTaskPage,\r\n showNavPanel: sessionState.getShowPageNavigation(),\r\n activeCompanyId: sessionState.companyId,\r\n settingsActions: this.getSettingsActions(),\r\n // ICalendarTaskPageFilterLists\r\n categories: this.getCategories(props.calendarTaskPage?.categories ?? []),\r\n states: this.getStates(),\r\n handlers: this.getHandlers(props.calendarTaskPage?.handlers ?? []),\r\n creators: this.getCreators(props.calendarTaskPage?.creators ?? []),\r\n privacy: this.getPrivacy(),\r\n // Filters\r\n listFilterIsSet: false,\r\n activeFilterId: filters[0].id,\r\n activeSavedFilterId: \"\",\r\n filters,\r\n savedFilters: this.getSavedFilters(props),\r\n showCalendarTaskFilterDrawer: false,\r\n calendarTaskFilterDrawerFilter: null,\r\n showListFilterSaveDialog: false,\r\n listFilterSaveDialogFilter: null,\r\n listFilterSaveDialogGeneralFilter: null,\r\n listFilterSaveDialogReservedNames: [],\r\n listFilterSaveDialogOnGetGeneralFilter: null,\r\n // Properties\r\n dataId: props.dataId,\r\n showSettingsDialog: false,\r\n // Preview\r\n showDocumentPreview: false\r\n };\r\n this.state = {\r\n ...state,\r\n listFilterIsSet: this.getListFilterIsSet(state)\r\n };\r\n }\r\n\r\n componentDidMount(): void {\r\n const sessionState = this.props.appState.state;\r\n recordLockManager.unlockAll(sessionState?.companyId, sessionState?.code);\r\n this.props.onGetCalendarTasksPage();\r\n }\r\n\r\n componentDidUpdate(prevProps: CalendarTaskPageProp, prevState: ICalendarTaskPageState): void {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n //Companies or company changed?\r\n const prevCompanyIds = (prevProps.calendarTaskPage ? prevProps.calendarTaskPage.companies.map(i => i.id) : []).join(\",\");\r\n const companyIds = (props.calendarTaskPage ? props.calendarTaskPage.companies.map(i => i.id) : []).join(\",\");\r\n const prevCompanyId = prevProps.calendarTaskPage && prevProps.calendarTaskPage.companies.length > 0 ? prevProps.calendarTaskPage.companies[0].id : Base.emptyGuid;\r\n const companyId = props.calendarTaskPage && props.calendarTaskPage.companies.length > 0 ? props.calendarTaskPage.companies[0].id : Base.emptyGuid;\r\n //FilterLists changed?\r\n const categoriesData = props.calendarTaskPage?.categories ?? [];\r\n const equalCategories = IdTitle.equal(prevProps.calendarTaskPage?.categories ?? [], categoriesData);\r\n const handlersData = props.calendarTaskPage?.handlers ?? [];\r\n const equalHandlers = IdTitle.equal(prevProps.calendarTaskPage?.handlers ?? [], handlersData);\r\n const creatorsData = props.calendarTaskPage?.creators ?? [];\r\n const equalCreators = IdTitle.equal(prevProps.calendarTaskPage?.creators ?? [], creatorsData);\r\n if (prevProps.dataId === props.dataId && prevCompanyId === companyId && prevCompanyIds === companyIds &&\r\n equalCategories && equalHandlers && equalCreators) {\r\n return;\r\n }\r\n const savedFilters = this.getSavedFilters(props);\r\n const activeSavedFilterId = savedFilters.find(i => i.id === state.activeSavedFilterId)\r\n ? state.activeSavedFilterId\r\n : \"\";\r\n //FilterLists and related filters\r\n const categories = this.getCategories(categoriesData);\r\n const handlers = this.getHandlers(handlersData);\r\n const creators = this.getCreators(creatorsData);\r\n const selectedCategoryIds = equalCategories ? state.selectedCategoryIds : [Base.emptyGuid];\r\n const selectedHandlerUserGroupCodes = equalHandlers ? state.selectedHandlerUserGroupCodes : [CalendarTaskHandlersFilterAll];\r\n const stateChange = {\r\n dataId: props.dataId,\r\n initialized: !!props.calendarTaskPage,\r\n showNavPanel: state.initialized ? state.showNavPanel : sessionState.getShowPageNavigation(),\r\n activeCompanyId: companyId,\r\n savedFilters,\r\n activeSavedFilterId,\r\n categories,\r\n handlers,\r\n creators,\r\n selectedCategoryIds,\r\n selectedHandlerUserGroupCodes,\r\n showDocumentPreview: props.calendarTaskPage?.showDocumentPreview ?? state.showDocumentPreview\r\n };\r\n const newState = { ...state, ...stateChange };\r\n this.setState({\r\n ...stateChange,\r\n listFilterIsSet: this.getListFilterIsSet(newState),\r\n settingsActions: this.getSettingsActions(),\r\n });\r\n }\r\n\r\n handleToggleShowNavPanel = () => {\r\n this.setState({ showNavPanel: !this.state.showNavPanel });\r\n };\r\n\r\n // #region PageData\r\n handleRefreshPageData = async (companyId: string) => {\r\n const pageData = await calendarTaskService.getCalendarTaskPageData(companyId);\r\n if (!pageData) return;\r\n const state = this.state;\r\n //Categories\r\n const categories = this.getCategories(pageData.categories);\r\n const selectedCategoryIds = Base.keepAvailableSelectedIds(categories, state.selectedCategoryIds);\r\n //Handlers\r\n const handlers = this.getHandlers(pageData.handlers);\r\n const selectedHandlerUserGroupCodes = Base.keepAvailableSelectedIds(handlers, state.selectedHandlerUserGroupCodes, \"\");\r\n //Creators\r\n const creators = this.getCreators(pageData.creators);\r\n const selectedCreateUserCodes = Base.keepAvailableSelectedIds(creators, state.selectedCreateUserCodes, \"\");\r\n //State\r\n const stateChange = {\r\n activeCompanyId: companyId,\r\n categories,\r\n handlers,\r\n creators,\r\n selectedCategoryIds,\r\n selectedHandlerUserGroupCodes,\r\n selectedCreateUserCodes,\r\n settingsActions: this.getSettingsActions()\r\n };\r\n const newState = { ...state, ...stateChange };\r\n this.setState({\r\n ...stateChange,\r\n listFilterIsSet: this.getListFilterIsSet(newState),\r\n //reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n });\r\n };\r\n // #endregion PageData\r\n\r\n handleChangeActiveCompanyId = async (companyId: string) => {\r\n if (this.state.activeCompanyId === companyId) return;\r\n await this.handleRefreshPageData(companyId);\r\n };\r\n\r\n // #region Saved Filter\r\n getFilterPropsWithState = (listItemFilter: IListFilterItem) => {\r\n const state = this.state;\r\n let result = {\r\n selectedCategoryIds: state.selectedCategoryIds,\r\n selectedStateIds: state.selectedStateIds,\r\n selectedHandlerUserGroupCodes: state.selectedHandlerUserGroupCodes,\r\n selectedPrivacy: state.selectedPrivacy,\r\n sortColumn: state.sortColumn,\r\n sortOrderIsAsc: state.sortOrderIsAsc\r\n };\r\n if (listItemFilter) {\r\n result = ListFilterItem.getFilterProps(listItemFilter, result.sortColumn, result.sortOrderIsAsc, getCalendarTaskPageFilterStateFromGeneralFilter);\r\n }\r\n return result;\r\n };\r\n\r\n getStateChangeAfterChangeActiveFilter = (activeFilterId: string): any => {\r\n const state = this.state;\r\n const filter = state.filters.find(i => i.id === activeFilterId);\r\n if (!filter) return {};\r\n const filterProps = this.getFilterPropsWithState(filter);\r\n const activeSavedFilterId = \"\";\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId };\r\n return {\r\n ...filterProps,\r\n activeFilterId,\r\n activeSavedFilterId: \"\",\r\n listFilterIsSet: this.getListFilterIsSet(newState),\r\n //reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n };\r\n };\r\n\r\n handleChangeActiveFilter = (activeFilterId: string) => {\r\n this.setState(this.getStateChangeAfterChangeActiveFilter(activeFilterId));\r\n };\r\n\r\n getStateChangeAfterChangeActiveSavedFilter = (activeSavedFilterId: string): any => {\r\n const state = this.state;\r\n const savedFilter = state.savedFilters.find(i => i.id === activeSavedFilterId);\r\n if (!savedFilter) return {};\r\n const filterProps = this.getFilterPropsWithState(savedFilter);\r\n const activeFilterId = \"\";\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId };\r\n return {\r\n ...filterProps,\r\n activeFilterId,\r\n activeSavedFilterId,\r\n listFilterIsSet: this.getListFilterIsSet(newState),\r\n //reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n };\r\n };\r\n\r\n handleChangeActiveSavedFilter = (activeSavedFilterId: string) => {\r\n this.setState(this.getStateChangeAfterChangeActiveSavedFilter(activeSavedFilterId));\r\n };\r\n\r\n handleRemoveSavedFilter = async (savedFilterId: string) => {\r\n const state = this.state;\r\n const savedFilter = state.savedFilters.find(i => i.id === savedFilterId);\r\n if (!savedFilter) return;\r\n const result = await ListFilterSaveDialog.removeListFilterFromDb(state.savedFilters, state.activeCompanyId, savedFilterId, savedFilter.isShared, ApplicationPermissionType.CalendarTask);\r\n if (!result) return;\r\n const savedFilters = state.savedFilters.filter(i => i.id !== savedFilterId);\r\n let activeFilterId = \"\";\r\n let activeSavedFilterId = \"\";\r\n let newfilter: IListFilterItem = null;\r\n if (savedFilters.length > 0) {\r\n newfilter = savedFilters[0];\r\n activeSavedFilterId = newfilter.id;\r\n } else if (state.filters.length > 0) {\r\n newfilter = state.filters[0];\r\n activeFilterId = newfilter.id;\r\n }\r\n const filterProps = this.getFilterPropsWithState(newfilter);\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId, savedFilters };\r\n this.setState({\r\n ...filterProps,\r\n showCalendarTaskFilterDrawer: false,\r\n activeFilterId,\r\n activeSavedFilterId,\r\n savedFilters,\r\n listFilterIsSet: this.getListFilterIsSet(newState),\r\n });\r\n };\r\n\r\n handleFilterSortData = (sortColumn: string, sortOrderIsAsc: boolean) => {\r\n this.setState({\r\n sortColumn,\r\n sortOrderIsAsc,\r\n });\r\n };\r\n\r\n updateFiltersAfterSave = (orgFilterId: string, savedListFilter: ISavedListFilter, isShared: boolean) => {\r\n if (!savedListFilter) return;\r\n const state = this.state;\r\n const savedFilters = state.savedFilters.filter(i => i.id !== orgFilterId || i.isShared !== isShared);\r\n const filter = ListFilterItem.createListFilterItemFromSavedListFilter(savedListFilter, isShared);\r\n savedFilters.push(filter);\r\n ListFilterItem.sortListFilterItems(savedFilters);\r\n this.setState({\r\n showListFilterSaveDialog: false,\r\n savedFilters,\r\n activeFilterId: \"\",\r\n activeSavedFilterId: savedListFilter.id,\r\n calendarTaskFilterDrawerFilter: filter\r\n });\r\n };\r\n\r\n getActiveFilter = (): IListFilterItem => {\r\n const state = this.state;\r\n return state.activeFilterId\r\n ? state.filters.find(i => i.id === state.activeFilterId)\r\n : state.savedFilters.find(i => i.id === state.activeSavedFilterId);\r\n };\r\n\r\n handleSaveListFilter = async (saveAs: boolean, onGetGeneralFilter: () => any) => {\r\n const state = this.state;\r\n const filter = this.getActiveFilter();\r\n if (!filter) return;\r\n if (!saveAs) {\r\n const savedListFilter = await ListFilterSaveDialog.saveListFilterToDb(filter, getCalendarTaskPageGeneralFilterFromState(state), state.sortColumn, state.sortOrderIsAsc, state.activeCompanyId, ApplicationPermissionType.CalendarTask);\r\n this.updateFiltersAfterSave(filter.id, savedListFilter, filter.isShared);\r\n } else {\r\n this.setState({\r\n showListFilterSaveDialog: true,\r\n listFilterSaveDialogFilter: filter,\r\n listFilterSaveDialogReservedNames: state.savedFilters.map(i => i.id).concat(state.filters.map(i => i.title)),\r\n listFilterSaveDialogGeneralFilter: getCalendarTaskPageGeneralFilterFromState(state),\r\n listFilterSaveDialogOnGetGeneralFilter: onGetGeneralFilter\r\n });\r\n }\r\n };\r\n\r\n handleSaveListFilterDialogOk = (savedListFilter: ISavedListFilter, isShared: boolean) => {\r\n this.updateFiltersAfterSave(\"\", savedListFilter, isShared);\r\n };\r\n\r\n handleSaveListFilterDialogCancel = () => {\r\n this.setState({\r\n showListFilterSaveDialog: false\r\n });\r\n };\r\n // #endregion Saved Filter\r\n\r\n // #region CalendarTask Filter\r\n handleOpenCalendarTaskFilterDrawer = () => {\r\n const filter = this.getActiveFilter();\r\n if (!filter) return;\r\n this.setState({\r\n showCalendarTaskFilterDrawer: true,\r\n calendarTaskFilterDrawerFilter: filter\r\n });\r\n };\r\n\r\n handleCalendarTaskFilterDrawerOk = (closeDialog: boolean, newFilterState: ICalendarTaskPageFilterState): any => {\r\n const newState = {\r\n ...this.state,\r\n ...newFilterState\r\n };\r\n this.setState({\r\n showCalendarTaskFilterDrawer: !closeDialog,\r\n ...newFilterState,\r\n dataId: this.state.dataId + 1,\r\n listFilterIsSet: this.getListFilterIsSet(newState)\r\n });\r\n return getCalendarTaskPageGeneralFilterFromState(newState);\r\n };\r\n \r\n handleCalendarTaskFilterDrawerCancel = () => {\r\n this.setState({ showCalendarTaskFilterDrawer: false });\r\n };\r\n // #endregion CalendarTask Filter\r\n\r\n handleShowDetailsPanel = (showDocumentPreview) => {\r\n this.setState({ showDocumentPreview });\r\n AppUtils.callService(() => userService.saveUserParameter(userParameterCodeShowDocumentPreview, showDocumentPreview ? \"TRUE\" : \"FALSE\"), false, true);\r\n };\r\n \r\n handleOpenSettingsDialog = async () => {\r\n this.setState({\r\n showSettingsDialog: true\r\n });\r\n };\r\n\r\n handleSettingsDialogOk = () => {\r\n this.setState({\r\n dataId: Base.getRandomIntInteger(1000000),\r\n showSettingsDialog: false\r\n });\r\n this.handleRefreshPageData(this.state.activeCompanyId);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n const companies = props.calendarTaskPage ? props.calendarTaskPage.companies : [];\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n 0}\r\n startDate={props.calendarTaskPage?.calendar?.startDate}\r\n endDate={props.calendarTaskPage?.calendar?.endDate}\r\n initialItems={props.calendarTaskPage?.calendar?.items ?? []}\r\n initialPrevItem={props.calendarTaskPage?.calendar?.prevItem}\r\n initialNextItem={props.calendarTaskPage?.calendar?.nextItem}\r\n selectedCategoryIds={state.selectedCategoryIds}\r\n selectedStateIds={state.selectedStateIds}\r\n selectedHandlerUserGroupCodes={state.selectedHandlerUserGroupCodes}\r\n selectedCreateUserCodes={state.selectedCreateUserCodes}\r\n selectedPrivacy={state.selectedPrivacy}\r\n viewFilterIsSet={state.listFilterIsSet}\r\n showDocumentPreview={state.showDocumentPreview}\r\n reportTabs={(\r\n \r\n )}\r\n sessionState={sessionState}\r\n onToggleSettingsDialog={this.handleOpenSettingsDialog}\r\n onOpenFilterDrawer={this.handleOpenCalendarTaskFilterDrawer}\r\n onChangeShowDocumentPreview={this.handleShowDetailsPanel}\r\n />\r\n \r\n {state.showSettingsDialog &&\r\n \r\n }\r\n \r\n {state.showListFilterSaveDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","/* eslint-disable no-unused-vars */\r\nimport * as React from \"react\";\r\n/* eslint-enable no-unused-vars */\r\nimport { connect } from \"react-redux\";\r\nimport { IApplicationState } from \"../../models/store/storeTypes\";\r\nimport * as storeEffects from \"../../models/store/storeEffects\";\r\nimport { ICalendarTaskPageOwnProps, ICalendarTaskPageStateProps, ICalendarTaskPageDispatchProps, CalendarTaskPage } from \"../../components/calendarTask/CalendarTaskPage\";\r\nimport { ITypedOption } from \"../../models/common/typedOption\";\r\n\r\nexport function mapStateToProps(applicationState: IApplicationState, ownProps: ICalendarTaskPageOwnProps): ICalendarTaskPageStateProps {\r\n if (!applicationState || !applicationState.front) {\r\n return {\r\n appState: null,\r\n dataId: -1,\r\n calendarTaskPage: null\r\n };\r\n }\r\n const calendarTasks = applicationState.calendarTasks;\r\n return {\r\n appState: applicationState.session,\r\n dataId: calendarTasks.dataId,\r\n calendarTaskPage: calendarTasks.calendarTaskPage\r\n };\r\n}\r\n\r\nexport function mapDispatchToProps(dispatch: storeEffects.CalendarTasksThunkDispatch): ICalendarTaskPageDispatchProps {\r\n return {\r\n onGetCalendarTasksPage: () => dispatch(storeEffects.getCalendarTasksPage()),\r\n onLogout: () => dispatch(storeEffects.logout()),\r\n onSetCulture: (culture: string) => dispatch(storeEffects.setCulture(culture)),\r\n onSaveUserParameters: (parameters: ITypedOption[]) => dispatch(storeEffects.saveUserParameters(parameters)),\r\n onRefreshSessionState: () => dispatch(storeEffects.refreshSessionState()),\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CalendarTaskPage);","// UnitPermissionDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IUnitNodePermissions } from \"../../../../models/unit/unitNodePermissions\";\r\nimport { Dialog } from \"../../../framework/Dialog/Dialog\";\r\nimport { UnitPermissionSettings } from \"../UnitPermissionSettings\";\r\n\r\n//UnitPermissionDialog\r\nexport interface IUnitPermissionDialogProp {\r\n classes?: string;\r\n companyId: string;\r\n hideAllUsers?: boolean;\r\n hideUserGroups?: boolean;\r\n unitNodePermissions: IUnitNodePermissions;\r\n accessRightNoneTitle?: string;\r\n accessRightReadTitle?: string;\r\n accessRightWriteTitle?: string;\r\n accessRightWriteHidden?: boolean;\r\n additionalPermissionATitle?: string;\r\n additionalPermissionBTitle?: string;\r\n additionalPermissionCTitle?: string;\r\n validAdditionalPermissions?: number[];\r\n partnerCompaniesTitle?: string;\r\n onSave: (obj: any) => Promise;\r\n onOk: () => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport class UnitPermissionDialog extends React.Component {\r\n private permissionsRef;\r\n\r\n constructor(props: IUnitPermissionDialogProp) {\r\n super(props);\r\n this.permissionsRef = React.createRef();\r\n }\r\n\r\n handleCancel = async () => {\r\n this.permissionsRef.current.handleCancel();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n return (\r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}/>\r\n );\r\n }\r\n}","// CompanyFilterDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Grid, MenuItem, Select } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { CheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/CheckboxDropdown\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { DrawerContent } from \"../../framework/Drawer/DrawerContent\";\r\nimport { FilterButtons } from \"../../framework/Filters/FilterButtons\";\r\nimport { FilterSearchField } from \"../../framework/Filters/FilterSearchField\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { PageFilterConditionDrawer } from \"../../framework/Page/PageFilterConditionDrawer\";\r\n\r\n//CompanyFilterDrawer\r\nexport interface ICompanyFilterDrawerProp {\r\n open: boolean;\r\n classes?: string;\r\n filter: IListFilterItem;\r\n activityFilters: IIdTitle[];\r\n companyGroups: IIdTitle[];\r\n selectedActivityFilterId: string;\r\n selectedCompanyGroupIds: string[];\r\n canRemoveSharedFilters: boolean;\r\n onSaveFilter: (saveAs: boolean, onGetGeneralFilter: () => any) => void;\r\n onRemoveFilter: (filterId: string) => void;\r\n onOk: (closeDialog: boolean, selectedActivityFilterId: string, selectedCompanyGroupIds: string[]) => any;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface ICompanyFilterDrawerState {\r\n selectedCompanyGroupIds: string[];\r\n selectedActivityFilterId: string;\r\n}\r\n\r\nexport class CompanyFilterDrawer extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n getStateFromProps = (props: ICompanyFilterDrawerProp): ICompanyFilterDrawerState => {\r\n return {\r\n selectedActivityFilterId: props.selectedActivityFilterId,\r\n selectedCompanyGroupIds: props.selectedCompanyGroupIds.slice(0)\r\n };\r\n };\r\n\r\n constructor(props: ICompanyFilterDrawerProp) {\r\n super(props);\r\n this.state = this.getStateFromProps(props);\r\n this.orgStateHash = this.getSaveDataFromState(props, this.state).hash;\r\n }\r\n\r\n componentDidUpdate(prevProps: ICompanyFilterDrawerProp, prevState: ICompanyFilterDrawerState): void {\r\n const props = this.props;\r\n if (!prevProps || prevProps?.filter?.getHash() === props?.filter?.getHash()) return;\r\n const state = this.getStateFromProps(props);\r\n this.setState(state);\r\n this.orgStateHash = this.getSaveDataFromState(props, state).hash;\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"activityFilterId\") {\r\n this.setState({ selectedActivityFilterId: value });\r\n }\r\n };\r\n\r\n handleChangeCompanyGroupIds = (selectedCompanyGroupIds: string[]) => {\r\n this.setState({\r\n selectedCompanyGroupIds\r\n });\r\n };\r\n\r\n getSaveDataFromState = (props: ICompanyFilterDrawerProp, state: ICompanyFilterDrawerState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"selectedActivityFilterId\", state.selectedActivityFilterId ? state.selectedActivityFilterId : null);\r\n result.append(\"selectedCompanyGroupIds\", JSON.stringify(state.selectedCompanyGroupIds));\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n \r\n static filterIsSet = (activityFilters: IIdTitle[], companyGroups: IIdTitle[],\r\n selectedActivityFilterId: string, selectedCompanyGroupIds: string[]): boolean => {\r\n return !(selectedActivityFilterId === activityFilters[1].id && Base.equalStrArrays(selectedCompanyGroupIds, [companyGroups[0].id]));\r\n };\r\n\r\n handleSaveFilter = async (saveAs: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n if (!saveAs) {\r\n props.onOk(false, state.selectedActivityFilterId, state.selectedCompanyGroupIds);\r\n await this.props.onSaveFilter(false, null);\r\n } else {\r\n await this.props.onSaveFilter(true, () => {\r\n return props.onOk(false, state.selectedActivityFilterId, state.selectedCompanyGroupIds);\r\n });\r\n }\r\n };\r\n\r\n handleClear = () => {\r\n const props = this.props;\r\n this.setState({\r\n selectedActivityFilterId: props.activityFilters[1].id,\r\n selectedCompanyGroupIds: [props.companyGroups[0].id]\r\n });\r\n };\r\n\r\n handleSave = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n props.onOk(true, state.selectedActivityFilterId, state.selectedCompanyGroupIds);\r\n };\r\n\r\n handleCancel = async (checkChanges: boolean) => {\r\n AppUtils.cancelEditDialog(checkChanges, this.getSaveDataFromState(this.props, this.state).hash, this.orgStateHash, this.handleSave, this.props.onCancel, Translations.YouHaveUnapprovedChangesDoYouWantApproveChanges);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n this.handleCancel(false)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n actions={\r\n this.handleCancel(false)}\r\n onClear={this.handleClear}\r\n />\r\n }\r\n />\r\n \r\n );\r\n }\r\n}","import { Box, Typography } from \"@mui/material\";\r\nimport React, { ReactNode } from \"react\";\r\n\r\ninterface ListCardFieldProps {\r\n keepLineBreaks?: boolean;\r\n title?: string;\r\n value?: string | ReactNode;\r\n}\r\n\r\nexport const ListCardField = ({ keepLineBreaks, title, value }: ListCardFieldProps) => {\r\n return (\r\n \r\n {title}\r\n {typeof value === \"string\"\r\n ? (\r\n {value}\r\n )\r\n : (value)\r\n }\r\n \r\n );\r\n};\r\n","import React from \"react\";\r\nimport { Box } from \"@mui/material\";\r\nimport { EditToolButton } from \"../../Button/EditToolButton\";\r\n\r\ninterface IListDetailsButtonProps {\r\n openReadOnly?: boolean\r\n onClick: () => void;\r\n}\r\n\r\nexport const ListDetailsButton = (props: IListDetailsButtonProps) => (\r\n \r\n \r\n \r\n);\r\n","import FormatListBulletedOutlinedIcon from \"@mui/icons-material/FormatListBulletedOutlined\";\r\nimport WindowOutlinedIcon from \"@mui/icons-material/WindowOutlined\";\r\nimport { ToggleButton, ToggleButtonGroup } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\ninterface ListToggleButtonsProps {\r\n value: boolean;\r\n onChange: (\r\n event: React.MouseEvent,\r\n value: any\r\n ) => void;\r\n}\r\n\r\nexport const ListToggleButtons = ({ value, onChange }: ListToggleButtonsProps) => {\r\n const handleChange = (event: React.MouseEvent, value: any) => {\r\n if (value === null) return;\r\n onChange(event, value);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","// ProgressBar\r\n// ***********************************************************************************************************************\r\nimport { Box, LinearProgress, Typography, useTheme } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\nexport interface IProgressBarProp {\r\n animated?: boolean;\r\n minValue?: number;\r\n maxValue?: number;\r\n striped?: boolean;\r\n color?:\r\n | \"info\"\r\n | \"success\"\r\n | \"warning\"\r\n | \"error\"\r\n | \"primary\"\r\n | \"secondary\"\r\n | \"inherit\";\r\n text?: string;\r\n tooltip?: string;\r\n value: number;\r\n}\r\n\r\nexport const ProgressBar = ({\r\n value,\r\n color = \"info\",\r\n maxValue = 100,\r\n minValue = 0,\r\n text,\r\n tooltip,\r\n}: IProgressBarProp) => {\r\n const theme = useTheme();\r\n const val = Math.max(\r\n Math.min(!Base.isNullOrUndefined(value) ? value : 0, maxValue),\r\n minValue\r\n );\r\n const range = maxValue - minValue;\r\n const percent = range > 0 ? (val / range) * 100 : 0;\r\n const textColor = theme.palette.getContrastText(\r\n percent < 15 ? theme.palette[color].light : theme.palette[color].main\r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n {text}\r\n \r\n \r\n );\r\n};\r\n","import { ApplicationPermissionType } from \"ui/Scripts/source/models/enums\";\r\n\r\nexport interface IUnitModuleNodeUsageSave {\r\n applicationPermissionType: ApplicationPermissionType;\r\n inUse: boolean;\r\n}\r\n\r\nexport class UnitModuleNodeUsageSave implements IUnitModuleNodeUsageSave {\r\n applicationPermissionType: ApplicationPermissionType;\r\n inUse: boolean;\r\n\r\n constructor();\r\n constructor(obj: IUnitModuleNodeUsageSave);\r\n constructor(obj?: any) {\r\n this.applicationPermissionType = obj && obj.applicationPermissionType || 0;\r\n this.inUse = obj && obj.inUse || false;\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IUnitModuleNode } from \"./unitModuleNode\";\r\nimport { IUnitModuleNodeUsageSave, UnitModuleNodeUsageSave } from \"./unitModuleNodeUsageSave\";\r\n\r\nexport interface IUnitModuleNodeSave {\r\n id: string;\r\n parentId: string;\r\n name: string;\r\n comment: string;\r\n rowId: string;\r\n usages: IUnitModuleNodeUsageSave[];\r\n}\r\n\r\nexport class UnitModuleNodeSave implements IUnitModuleNodeSave {\r\n id: string;\r\n parentId: string;\r\n name: string;\r\n comment: string;\r\n rowId: string;\r\n usages: UnitModuleNodeUsageSave[];\r\n\r\n constructor();\r\n constructor(obj: IUnitModuleNode);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.parentId = obj && obj.parent && obj.parent.id || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.rowId = obj && obj.rowId || \"\";\r\n this.usages = Base.getTypedArray(obj ? obj.usages : null, UnitModuleNodeUsageSave);\r\n }\r\n}","// CompanyUnitDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Checkbox, FormControlLabel, Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApplicationPermissionType, ConfirmationDialogResult, EnumHelper } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../../framework/appUtils\";\r\nimport * as store from \"../../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../../framework/saveData\";\r\nimport { ISessionState } from \"../../../../models/session/sessionState\";\r\nimport * as storeActions from \"../../../../models/store/storeActions\";\r\nimport { IUnitModuleNode } from \"../../../../models/unit/unitModuleNode\";\r\nimport { IUnitModuleNodeUsage, UnitModuleNodeUsage } from \"../../../../models/unit/unitModuleNodeUsage\";\r\nimport { Dialog } from \"../../../framework/Dialog/Dialog\";\r\nimport { FormField } from \"../../../framework/FormField\";\r\n\r\n//CompanyUnitDialog\r\nexport interface ICompanyUnitDialogProp {\r\n sessionState: ISessionState;\r\n classes?: string;\r\n unitModuleNode: IUnitModuleNode;\r\n isReadOnly?: boolean;\r\n canEditWhistleBlowSettings: boolean;\r\n onOk: (name: string, comment: string, usages: IUnitModuleNodeUsage[]) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface ICompanyUnitDialogState {\r\n name: string;\r\n comment: string;\r\n usages: IUnitModuleNodeUsage[];\r\n}\r\n\r\nexport class CompanyUnitDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: ICompanyUnitDialogProp) {\r\n super(props);\r\n const unitModuleNode = props.unitModuleNode;\r\n this.state = {\r\n name: unitModuleNode.name,\r\n comment: unitModuleNode.comment,\r\n usages: Base.getTypedArray(unitModuleNode.usages, UnitModuleNodeUsage)\r\n };\r\n const saveData = this.getSaveDataFromState(props, this.state);\r\n this.orgStateHash = saveData.hash;\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"name\") {\r\n this.setState({ name: value });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n }\r\n };\r\n\r\n handleChangeUsage = (applicationPermissionType: ApplicationPermissionType, value: boolean) => {\r\n const state = this.state;\r\n const usages = Base.getTypedArray(state.usages, UnitModuleNodeUsage);\r\n const usage = usages.find(i => EnumHelper.isEqual(i.applicationPermissionType, applicationPermissionType));\r\n if (!usage) return;\r\n usage.inUse = value;\r\n this.setState({\r\n usages\r\n });\r\n };\r\n\r\n getSaveDataFromState = (props: ICompanyUnitDialogProp, state: ICompanyUnitDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"name\", state.name);\r\n result.append(\"comment\", state.comment);\r\n result.append(\"usages\", state.usages);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.name) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.UnitNameMustBeDefined));\r\n return resolve(false);\r\n }\r\n const siblingNames = props.unitModuleNode.getSiblingNames(true);\r\n const lowName = state.name.toLowerCase();\r\n if (siblingNames.findIndex(i => i === lowName) > -1) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.UnitCodeIsAlreadyInUse));\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n save = async () => {\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return;\r\n this.props.onOk(state.name, state.comment, state.usages);\r\n };\r\n\r\n handleSave = () => {\r\n this.save();\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.save();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const isRoot = props.unitModuleNode.getIsRoot();\r\n const usageIsDisabled = !props.unitModuleNode.getParentIsRoot();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {state.usages.filter(i => i.visible).map((usage) => usage.enabled &&\r\n \r\n this.handleChangeUsage(usage.applicationPermissionType, checked)}\r\n />\r\n }\r\n />\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n buttons={[\r\n { title: !props.isReadOnly ? Translations.Cancel : Translations.Close, variant: \"outlined\", onClick: this.handleCancel },\r\n { title: Translations.OK, variant: \"confirmation\", onClick: !props.isReadOnly ? this.handleSave : null },\r\n ]}\r\n onClose={this.handleCancel}/>\r\n );\r\n }\r\n}","import { TextField, TextFieldProps } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\ntype TextFieldWithButtonLabelProps = TextFieldProps & { label: string };\r\n\r\nexport const TextFieldWithButtonLabel = ({\r\n label,\r\n ...props\r\n}: TextFieldWithButtonLabelProps) => (\r\n \r\n {label}\r\n \r\n ),\r\n }}\r\n />\r\n);\r\n","// CompanyEditBasicInformation - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Checkbox, FormControlLabel, Grid, MenuItem, Select, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { TextFieldWithButtonLabel } from \"source/components/framework/Form/TextFieldWithButtonLabel\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { CompanyActiveState } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { ICodeTitle } from \"../../../models/common/codeTitle\";\r\nimport { ICompanyEditItem } from \"../../../models/company/companyEditItem\";\r\nimport { CompanyListItem } from \"../../../models/company/companyListItem\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { ProgressBar } from \"../../framework/ProgressBar/ProgressBar\";\r\nimport { ModifyUserInfo } from \"../../framework/User/ModifyUserInfo\";\r\n\r\n//CompanyEditBasicInformation\r\nexport interface ICompanyEditBasicInformationProp {\r\n sessionState: ISessionState;\r\n company: ICompanyEditItem;\r\n customStyles: ICodeTitle[];\r\n adminMode: boolean;\r\n usedFileStorageQuota: number;\r\n //Company data\r\n name: string;\r\n postalAddress: string;\r\n postalCode: string;\r\n city: string;\r\n phone: string;\r\n email: string;\r\n internet: string;\r\n pageFooterText: string;\r\n businessIdentityCode: string;\r\n contactPerson: string;\r\n logo: string;\r\n resetLogo: boolean;\r\n logoSquare: string;\r\n resetLogoSquare: boolean;\r\n styleClass: string;\r\n usedStoragePercent: number;\r\n eInvoiceAddress: string;\r\n eInvoiceOperator: string;\r\n minPasswordLength: number;\r\n //Admin Company data\r\n code: string;\r\n loginUrl: string;\r\n fileStorageQuota: string;\r\n customStyleClass: string;\r\n tiedostoturvaUseType: number;\r\n activeState: number;\r\n documentRootPath: string;\r\n bannerPath: string;\r\n documentPreviewLogType: number;\r\n onChange: (name: string, value: string) => void;\r\n onChangeLogo: (name: string, file: File) => void;\r\n onRemoveLogo: (name: string) => void;\r\n}\r\n\r\nexport class CompanyEditBasicInformation extends React.Component {\r\n handleChange = (event) => {\r\n const target = event.target;\r\n this.props.onChange(target.name !== \"xts\" ? target.name : \"code\", target.value);\r\n };\r\n\r\n handleIntBlur = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const int = value.toInteger();\r\n this.props.onChange(target.name !== \"xts\" ? target.name : \"code\", int ? int.toString(10) : \"0\");\r\n };\r\n \r\n render() {\r\n const props = this.props;\r\n const company = props.company;\r\n if (!company) return null;\r\n const isNew = company.isNew();\r\n const adminMode = props.adminMode && props.sessionState.isSuperAdmin;\r\n return (\r\n \r\n \r\n {adminMode &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {(!isNew && !props.adminMode) &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0 ? 6 : 12}>\r\n \r\n \r\n \r\n \r\n {/* {props.customStyles.length > 0 &&\r\n \r\n \r\n \r\n \r\n \r\n } */}\r\n \r\n {/* {adminMode && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )} */}\r\n \r\n \r\n \r\n props.onChangeLogo(\"logo\", file)}\r\n onClear={props.resetLogo ? null : () => props.onRemoveLogo(\"logo\")}\r\n onError={(message) => { store.customStore.dispatch(storeActions.showErrorMessage(message)); }}\r\n />\r\n \r\n \r\n \r\n \r\n props.onChangeLogo(\"logoSquare\", file)}\r\n onError={(message) => { store.customStore.dispatch(storeActions.showErrorMessage(message)); }}\r\n />\r\n \r\n \r\n \r\n {!!props.fileStorageQuota && props.fileStorageQuota !== \"0\" &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n {adminMode &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0.5}\r\n onChange={(_e, checked: boolean) => props.onChange(\"tiedostoturvaUseType\", checked ? \"1\" : \"0\")}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0.5}\r\n onChange={(_e, checked: boolean) => props.onChange(\"documentPreviewLogType\", checked ? \"1\" : \"0\")}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n \r\n );\r\n }\r\n}","//SelectCompanyGroupDialog\r\n//***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Base } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/framework/base\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { infiniteListPageSize } from \"../../../models/common/webConsts\";\r\nimport { ICompanyGroupListItem } from \"../../../models/companyGroup/companyGroupListItem\";\r\nimport { ICompanyGroupListItems } from \"../../../models/companyGroup/companyGroupListItems\";\r\nimport * as companyGroupService from \"../../../models/services/companyGroupService\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogListContainer } from \"../../framework/Dialog/DialogListContainer\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\n\r\n//SelectCompanyGroupDialog\r\nexport interface ISelectCompanyGroupDialogProps {\r\n classes?: string;\r\n companyId: string;\r\n records?: ICompanyGroupListItems;\r\n ignoreCompanyGroupIds?: string[];\r\n multiSelect?: boolean;\r\n onOk: (userGroups: ICompanyGroupListItem[]) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface ISelectCompanyGroupDialogState {\r\n intialized: boolean;\r\n isLoading: boolean;\r\n waitingPreloadedData: boolean;\r\n pageSize: number;\r\n page: number;\r\n hasMore: boolean;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n items: ICompanyGroupListItem[];\r\n selectedId: string;\r\n checkedIds: string[];\r\n}\r\n\r\nexport class SelectCompanyGroupDialog extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n intialized: !!props.records,\r\n isLoading: false,\r\n waitingPreloadedData: !props.records,\r\n pageSize: props.records ? props.records.pageSize : infiniteListPageSize,\r\n page: props.records ? props.records.page : 1,\r\n hasMore: props.records ? props.records.hasMore : true,\r\n filter: \"\",\r\n sortColumn: \"name\",\r\n sortOrderIsAsc: true,\r\n items: props.records ? props.records.items : [],\r\n selectedId: null,\r\n checkedIds: [],\r\n };\r\n }\r\n\r\n searchItems = async (pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => companyGroupService.getCompanyGroupListItems(!refreshList ? pageSize : (page * infiniteListPageSize), !refreshList ? page : 1, filter, props.ignoreCompanyGroupIds, sortColumn, sortOrderIsAsc),\r\n false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const items = List.getListItems(state.items, state.selectedId, state.checkedIds, result.items, resetItems, refreshList);\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n selectedId: items.selectedId,\r\n checkedIds: items.checkedIds,\r\n });\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n if (this.props.records) return;\r\n this.searchItems(state.pageSize, 1, state.filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: ISelectCompanyGroupDialogProps, prevState: ISelectCompanyGroupDialogState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.waitingPreloadedData) {\r\n if (!props.records) return;\r\n this.setState({\r\n intialized: true,\r\n waitingPreloadedData: false,\r\n page: props.records.page,\r\n hasMore: props.records.hasMore,\r\n items: props.records.items,\r\n pageSize: props.records.pageSize,\r\n sortColumn: props.records.sortColumn,\r\n sortOrderIsAsc: props.records.sortOrderIsAsc\r\n });\r\n } else {\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n if (companyId === prevCompanyId && Base.equalStrArrays(prevProps.ignoreCompanyGroupIds, props.ignoreCompanyGroupIds)) return;\r\n this.searchItems(state.pageSize, 1, state.filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n handleCancel = () => {\r\n this.props.onCancel();\r\n };\r\n\r\n handleOk = () => {\r\n const state = this.state;\r\n const ids = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n if (ids.length < 1) return;\r\n const items = state.items.filter(i => ids.indexOf(i.id) > -1);\r\n if (items.length < 1) return;\r\n this.props.onOk(items);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n \r\n }\r\n />\r\n {\r\n return {\r\n columns: [\r\n { size: 4, column: \"code\", content: item.code },\r\n { size: 4, column: \"name\", content: item.name },\r\n { size: 4, column: \"comment\", content: item.comment }\r\n ],\r\n id: item.id\r\n };\r\n })}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n />\r\n \r\n }\r\n buttons={[\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: this.handleCancel },\r\n { title: Translations.OK, variant: \"confirmation\", onClick: this.handleOk },\r\n ]}\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","// CompanyEditCompanyGroupList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Alert } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Base } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/framework/base\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { CompanyGroupListItem, ICompanyGroupListItem } from \"../../../models/companyGroup/companyGroupListItem\";\r\nimport * as companyService from \"../../../models/services/companyService\";\r\nimport { SelectCompanyGroupDialog } from \"../../companyGroup/SelectCompanyGroupDialog/SelectCompanyGroupDialog\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { DialogListContainer } from \"../../framework/Dialog/DialogListContainer\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListIconButtonsItem } from \"../../framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\n\r\n// CompanyEditCompanyGroupList\r\nexport interface ICompanyEditCompanyGroupListProp {\r\n isReadOnly: boolean;\r\n companyId: string;\r\n companyGroups: ICompanyGroupListItem[];\r\n onRemoved: (ids: string[]) => void;\r\n onAdded: (companyGroups: ICompanyGroupListItem[]) => void;\r\n}\r\n\r\ninterface ICompanyEditCompanyGroupListState {\r\n // List\r\n isLoading: boolean;\r\n companyGroups: ICompanyGroupListItem[];\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n selectedId: string;\r\n checkedIds: string[];\r\n\r\n // Dialog\r\n showSelectCompanyGroupDialog: boolean;\r\n}\r\n\r\nexport class CompanyEditCompanyGroupList extends React.Component {\r\n constructor(props: ICompanyEditCompanyGroupListProp) {\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n companyGroups: props.companyGroups ? props.companyGroups.slice(0) : [],\r\n filter: \"\",\r\n sortColumn: \"name\",\r\n sortOrderIsAsc: true,\r\n selectedId: null,\r\n checkedIds: [],\r\n showSelectCompanyGroupDialog: false,\r\n };\r\n }\r\n\r\n filteredList = (filter: string, column: string, asc: boolean) => {\r\n const props = this.props;\r\n let companyGroups = props.companyGroups ? props.companyGroups.slice(0) : [];\r\n if (filter) {\r\n const lowFilter = filter.toLowerCase();\r\n companyGroups = companyGroups.filter(i => i.code.toLowerCase().indexOf(lowFilter) > -1 || i.name.toLowerCase().indexOf(lowFilter) > -1 || i.comment.toLowerCase().indexOf(lowFilter) > -1);\r\n }\r\n CompanyGroupListItem.sortCompanyGroupListItems(companyGroups, column, asc);\r\n this.setState({\r\n filter,\r\n sortColumn: column,\r\n sortOrderIsAsc: asc,\r\n companyGroups\r\n });\r\n };\r\n\r\n componentDidUpdate(prevProps: ICompanyEditCompanyGroupListProp, prevState: ICompanyEditCompanyGroupListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (Base.equalStrArrays(prevProps.companyGroups ? prevProps.companyGroups.map(i => i.id) : [], props.companyGroups ? props.companyGroups.map(i => i.id) : [])) return;\r\n this.filteredList(state.filter, state.sortColumn, state.sortOrderIsAsc);\r\n };\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.filteredList(filter, state.sortColumn, state.sortOrderIsAsc);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.filteredList(state.filter, sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n getRemoveSaveData = (props: ICompanyEditCompanyGroupListProp, companyGroupIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.companyId);\r\n result.append(\"companyGroupIds\", companyGroupIds);\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const obj = this;\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n if (selectedIds.length < 1) return;\r\n const saveData = this.getRemoveSaveData(this.props, selectedIds);\r\n // Call server\r\n const result = await AppUtils.callService(() => companyService.companyEditRemoveCompanyGroups(saveData.obj));\r\n if (!result) return;\r\n obj.props.onRemoved(selectedIds);\r\n };\r\n \r\n handleAdd = () => {\r\n this.setState({\r\n showSelectCompanyGroupDialog: true\r\n });\r\n };\r\n\r\n getAddSaveData = (props: ICompanyEditCompanyGroupListProp, companyGroupIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.companyId);\r\n result.append(\"companyGroupIds\", companyGroupIds);\r\n return result;\r\n };\r\n\r\n onSelectCompanyGroupDialogOk = async (companyGroups: ICompanyGroupListItem[]) => {\r\n const obj = this;\r\n if (!companyGroups || companyGroups.length < 1) return;\r\n this.setState({\r\n showSelectCompanyGroupDialog: false\r\n });\r\n const saveData = this.getAddSaveData(this.props, companyGroups.map(i => i.id));\r\n // Call server\r\n const result = await AppUtils.callService(() => companyService.companyEditAddCompanyGroups(saveData.obj));\r\n if (!result) return;\r\n obj.props.onAdded(companyGroups);\r\n };\r\n\r\n onSelectCompanyGroupDialogCancel = () => {\r\n this.setState({\r\n showSelectCompanyGroupDialog: false\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n \r\n }\r\n rightItems={\r\n \r\n }\r\n />\r\n {!!props.isReadOnly &&\r\n {Translations.NewCompanyMustBeSavedBeforeCompanyGroupsCanBeAdded}\r\n }\r\n {!props.isReadOnly &&\r\n {\r\n return {\r\n columns: [\r\n { size: 3, column: \"code\", content: companyGroup.code },\r\n { size: 3, column: \"name\", content: companyGroup.name },\r\n { size: 6, column: \"comment\", content: companyGroup.comment }],\r\n id: companyGroup.id\r\n };\r\n })\r\n }\r\n noDataMessage={Translations.AddCompanyGroups}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n />\r\n }\r\n {state.showSelectCompanyGroupDialog &&\r\n i.id)}\r\n onOk={this.onSelectCompanyGroupDialogOk}\r\n onCancel={this.onSelectCompanyGroupDialogCancel}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","import {\r\n Box,\r\n Checkbox,\r\n FormControlLabel,\r\n Grid,\r\n TextField,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\n\r\ninterface ListExternalSystemLineProps {\r\n code: string;\r\n name: string;\r\n checked: boolean;\r\n value: string;\r\n rootUrl?: string;\r\n usesExternalCode?: boolean;\r\n onCheckChange: (code: string, value: boolean) => void;\r\n onInputChange?: (event: any) => void;\r\n}\r\n\r\nexport const ListExternalSystemLine = ({\r\n code,\r\n name,\r\n checked,\r\n value,\r\n rootUrl,\r\n usesExternalCode = true,\r\n onCheckChange,\r\n onInputChange,\r\n}: ListExternalSystemLineProps) => {\r\n return (\r\n \r\n \r\n \r\n {rootUrl && (\r\n \r\n )}\r\n {name}\r\n \r\n }\r\n control={\r\n onCheckChange(code, checked)}\r\n />\r\n }\r\n />\r\n \r\n \r\n {usesExternalCode && (\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n","// CompanyEditExternalSystems - MODULE\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IUserExternalSystem } from \"../../../models/externalSystem/userExternalSystem\";\r\nimport { ListExternalSystemLine } from \"../../framework/List/ListExternalSystemLine\";\r\nimport { ListHeaderLine } from \"../../framework/List/ListLine\";\r\n\r\n//CompanyEditExternalSystems\r\nexport interface ICompanyEditExternalSystemsProp {\r\n externalSystems: IUserExternalSystem[];\r\n onToggeExternalSystemInUse: (code: string, value: boolean) => void;\r\n onChangeExternalSystemExternalCode: (code: string, value: string) => void;\r\n}\r\n\r\nexport class CompanyEditExternalSystems extends React.Component {\r\n handleChangeExternalSystemExternalCode = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const code: string = target.name;\r\n if (!code) return;\r\n this.props.onChangeExternalSystemExternalCode(code, value);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const externalSystems = props.externalSystems;\r\n if (!externalSystems || externalSystems.length < 0) return null;\r\n return (\r\n <>\r\n \r\n {externalSystems.map((externalSystem) =>\r\n \r\n )}\r\n \r\n );\r\n }\r\n}","// CompanyEditIntraModules - MODULE\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ICompanyIntraModule } from \"../../../models/intraModule/companyIntraModule\";\r\nimport { ListExternalSystemLine } from \"../../framework/List/ListExternalSystemLine\";\r\nimport { ListHeaderLine } from \"../../framework/List/ListLine\";\r\n\r\n//CompanyEditIntraModules\r\nexport interface ICompanyEditIntraModulesProp {\r\n intraModules: ICompanyIntraModule[];\r\n onToggeIntraModuleInUse: (code: string, value: boolean) => void;\r\n onChangeIntraModuleExternalCode: (code: string, value: string) => void;\r\n}\r\n\r\nexport class CompanyEditIntraModules extends React.Component {\r\n handleChangeIntraModuleExternalCode = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const code: string = target.name;\r\n if (!code) return;\r\n this.props.onChangeIntraModuleExternalCode(code, value);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const intraModules = props.intraModules;\r\n if (!intraModules || intraModules.length < 0) return null;\r\n return (\r\n <>\r\n \r\n {intraModules.map((intraModule) =>\r\n \r\n )}\r\n \r\n );\r\n }\r\n}","import { TextField, TextFieldProps } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { InputButtonGroup } from \"ui/Scripts/source/components/framework/Button/InputButtonGroup\";\r\n\r\ninterface TextFieldButtonFileInput {\r\n name?: string;\r\n accept?: string;\r\n multiple?: boolean;\r\n onChange: (files: File[]) => void;\r\n}\r\n\r\ninterface TextFieldButton {\r\n label: string;\r\n hidden?: boolean;\r\n fileInput?: TextFieldButtonFileInput;\r\n startIcon?: React.ReactNode;\r\n onClick: (event) => void;\r\n}\r\n\r\ntype TextFieldWithButtonGroupProps = TextFieldProps & {\r\n showButtons?: boolean;\r\n buttons: TextFieldButton[];\r\n};\r\n\r\nexport const TextFieldWithButtonGroup = ({\r\n buttons,\r\n showButtons = true,\r\n ...props\r\n}: TextFieldWithButtonGroupProps) => {\r\n return (\r\n \r\n : undefined,\r\n }}\r\n {...props}\r\n />\r\n );\r\n};\r\n","// CompanyEditNewCompanyFileFilterList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IFileFilterListItem } from \"../../../models/fileFilter/fileFilterListItem\";\r\nimport { List } from \"../../framework/List/List\";\r\n\r\n// CompanyEditNewCompanyFileFilterList\r\nexport interface ICompanyEditNewCompanyFileFilterListProp {\r\n items: IFileFilterListItem[];\r\n checkedIds: string[];\r\n onSetCheckedIds: (ids: string[]) => void;\r\n}\r\n\r\nexport class CompanyEditNewCompanyFileFilterList extends React.Component {\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.props.onSetCheckedIds(checkedIds);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n return (\r\n \r\n {\r\n return {\r\n columns: [\r\n { size: 6, column: \"code\", content: item.code },\r\n { size: 6, column: \"name\", content: item.name },\r\n ],\r\n id: item.id\r\n };\r\n })}\r\n sortColumn={\"\"}\r\n sortOrderIsAsc={true}\r\n selectedId={\"\"}\r\n checkedIds={props.checkedIds}\r\n multiSelect={true}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={(sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {}}\r\n />\r\n \r\n );\r\n }\r\n}","// CompanyEditNewCompanyMessageTypeList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IMessageTypeListItem } from \"../../../models/messageType/messageTypeListItem\";\r\nimport { List } from \"../../framework/List/List\";\r\n\r\n// CompanyEditNewCompanyMessageTypeList\r\nexport interface ICompanyEditNewCompanyMessageTypeListProp {\r\n items: IMessageTypeListItem[];\r\n checkedIds: string[];\r\n onSetCheckedIds: (ids: string[]) => void;\r\n}\r\n\r\nexport class CompanyEditNewCompanyMessageTypeList extends React.Component {\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.props.onSetCheckedIds(checkedIds);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n return (\r\n \r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 6,\r\n column: \"code\",\r\n content:\r\n \r\n \r\n {item.code}\r\n \r\n },\r\n { size: 6, column: \"name\", content: item.name },\r\n ],\r\n id: item.id\r\n };\r\n })}\r\n sortColumn={\"\"}\r\n sortOrderIsAsc={true}\r\n selectedId={\"\"}\r\n checkedIds={props.checkedIds}\r\n multiSelect={true}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={(sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {}}\r\n />\r\n \r\n );\r\n }\r\n}","// CompanyEditNewCompany - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { DialogSectionCard } from \"source/components/framework/Dialog/DialogSectionCard\";\r\nimport { TextFieldWithButtonGroup } from \"source/components/framework/Form/TextFieldWithButtonGroup\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ICompanyListItem } from \"../../../models/company/companyListItem\";\r\nimport { IFileFilterListItem } from \"../../../models/fileFilter/fileFilterListItem\";\r\nimport { IMessageTypeListItem } from \"../../../models/messageType/messageTypeListItem\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { CompanyEditNewCompanyFileFilterList } from \"../CompanyEditNewCompanyFileFilterList\";\r\nimport { CompanyEditNewCompanyMessageTypeList } from \"../CompanyEditNewCompanyMessageTypeList\";\r\nimport { SelectCompanyDialog } from \"../SelectCompanyDialog/SelectCompanyDialog\";\r\n\r\n//CompanyEditNewCompany\r\nexport interface ICompanyEditNewCompanyProp {\r\n fileFilters: IFileFilterListItem[];\r\n messageTypes: IMessageTypeListItem[];\r\n //Administrator\r\n administratorCode: string;\r\n administratorFirstName: string;\r\n administratorLastName: string;\r\n administratorPassword: string;\r\n //Copy Documents\r\n copyDocumentsFromCompanyCode: string;\r\n //FileFilters\r\n fileFilterIds: string[];\r\n //MessageTypes\r\n messageTypeIds: string[];\r\n onChange: (name: string, value: string) => void;\r\n onSetMessageTypeIds: (ids: string[]) => void;\r\n onSetFileFilterIds: (ids: string[]) => void;\r\n}\r\n\r\nexport interface ICompanyEditNewCompanyState {\r\n showSelectCompanyDialog: boolean;\r\n}\r\n\r\nexport class CompanyEditNewCompany extends React.Component {\r\n constructor(props: ICompanyEditNewCompanyProp) {\r\n super(props);\r\n this.state = {\r\n showSelectCompanyDialog: false\r\n };\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n this.props.onChange(target.name === \"xtsss\" ? \"administratorCode\" : (target.name === \"n_p_ssas\" ? \"administratorPassword\" : target.name), target.value);\r\n };\r\n\r\n handleSelectCompany = () => {\r\n this.setState({\r\n showSelectCompanyDialog: true\r\n });\r\n };\r\n\r\n handleClearCompany = () => {\r\n this.props.onChange(\"copyDocumentsFromCompanyCode\", \"\");\r\n };\r\n\r\n onSelectCompanyDialogOk = async (companies: ICompanyListItem[]) => {\r\n if (!companies || companies.length < 1) return;\r\n this.setState({\r\n showSelectCompanyDialog: false\r\n });\r\n this.props.onChange(\"copyDocumentsFromCompanyCode\", companies[0].code);\r\n };\r\n\r\n onSelectCompanyDialogCancel = () => {\r\n this.setState({\r\n showSelectCompanyDialog: false\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {state.showSelectCompanyDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","// CompanyEditPartnerCompanyList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Alert } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { CompanyActiveState, ConfirmationDialogResult, EnumHelper } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { CompanyListItem, ICompanyListItem } from \"../../../models/company/companyListItem\";\r\nimport * as companyService from \"../../../models/services/companyService\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { DialogListContainer } from \"../../framework/Dialog/DialogListContainer\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListIconButtonsItem } from \"../../framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { EllipsisTypography } from \"../../framework/Typography/EllipsisTypography\";\r\nimport { SelectCompanyDialog } from \"../SelectCompanyDialog/SelectCompanyDialog\";\r\n\r\n// CompanyEditPartnerCompanyList\r\nexport interface ICompanyEditPartnerCompanyListProp {\r\n isReadOnly: boolean;\r\n companyId: string;\r\n allPartnersCompanyGroupId: string;\r\n companies: ICompanyListItem[];\r\n onRemoved: (ids: string[]) => void;\r\n onAdded: (companyGroups: ICompanyListItem[]) => void;\r\n}\r\n\r\ninterface ICompanyEditPartnerCompanyListState {\r\n // List\r\n isLoading: boolean;\r\n companies: ICompanyListItem[];\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n selectedId: string;\r\n checkedIds: string[];\r\n\r\n // Dialog\r\n showSelectCompanyDialog: boolean;\r\n}\r\n\r\nexport class CompanyEditPartnerCompanyList extends React.Component {\r\n constructor(props: ICompanyEditPartnerCompanyListProp) {\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n companies: props.companies ? props.companies.slice(0) : [],\r\n filter: \"\",\r\n sortColumn: \"name\",\r\n sortOrderIsAsc: true,\r\n selectedId: null,\r\n checkedIds: [],\r\n showSelectCompanyDialog: false,\r\n };\r\n }\r\n\r\n filteredList = (filter: string, column: string, asc: boolean) => {\r\n const props = this.props;\r\n let companies = props.companies ? props.companies.slice(0) : [];\r\n if (filter) {\r\n const lowFilter = filter.toLowerCase();\r\n companies = companies.filter(i => i.code.toLowerCase().indexOf(lowFilter) > -1 || i.name.toLowerCase().indexOf(lowFilter) > -1);\r\n }\r\n CompanyListItem.sortCompanyListItems(companies, column, asc);\r\n this.setState({\r\n filter,\r\n sortColumn: column,\r\n sortOrderIsAsc: asc,\r\n companies\r\n });\r\n };\r\n\r\n componentDidUpdate(prevProps: ICompanyEditPartnerCompanyListProp, prevState: ICompanyEditPartnerCompanyListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (Base.equalStrArrays(prevProps.companies ? prevProps.companies.map(i => i.id) : [], props.companies ? props.companies.map(i => i.id) : [])) return;\r\n this.filteredList(state.filter, state.sortColumn, state.sortOrderIsAsc);\r\n };\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.filteredList(filter, state.sortColumn, state.sortOrderIsAsc);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.filteredList(state.filter, sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n getRemoveSaveData = (props: ICompanyEditPartnerCompanyListProp, companyIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.companyId);\r\n result.append(\"companyIds\", companyIds);\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n if (selectedIds.length < 1) return;\r\n const companyNames = state.companies.filter(i => selectedIds.indexOf(i.id) > -1).map(i => i.name);\r\n if (await AppUtils.showConfirmationDialog(String.format(selectedIds.length < 2\r\n ? Translations.DoYouReallyWantToRemovePartnerParameter\r\n : Translations.DoYouReallyWantToRemovePartnersParameter, Base.getStringWithSeparators(companyNames, \", \"))) === ConfirmationDialogResult.Yes) {\r\n const saveData = this.getRemoveSaveData(props, selectedIds);\r\n // Call server\r\n const result = await AppUtils.callService(() => companyService.companyEditRemovePartnerCompanies(saveData.obj));\r\n if (!result) return;\r\n props.onRemoved(selectedIds);\r\n }\r\n };\r\n \r\n handleAdd = () => {\r\n this.setState({\r\n showSelectCompanyDialog: true\r\n });\r\n };\r\n\r\n getAddSaveData = (props: ICompanyEditPartnerCompanyListProp, companyIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.companyId);\r\n result.append(\"companyIds\", companyIds);\r\n return result;\r\n };\r\n\r\n onSelectCompanyDialogOk = async (companies: ICompanyListItem[]) => {\r\n if (!companies || companies.length < 1) return;\r\n this.setState({\r\n showSelectCompanyDialog: false\r\n });\r\n const saveData = this.getAddSaveData(this.props, companies.map(i => i.id));\r\n // Call server\r\n const result = await AppUtils.callService(() => companyService.companyEditAddPartnerCompanies(saveData.obj));\r\n if (!result) return;\r\n this.props.onAdded(companies);\r\n };\r\n\r\n onSelectCompanyDialogCancel = () => {\r\n this.setState({\r\n showSelectCompanyDialog: false\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n \r\n }\r\n rightItems={\r\n \r\n }\r\n />\r\n {!!props.isReadOnly &&\r\n {Translations.NewCompanyMustBeSavedBeforePartnersCanBeAdded}\r\n }\r\n {!props.isReadOnly &&\r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 5,\r\n column: \"code\",\r\n content:\r\n <>\r\n \r\n {company.code}\r\n \r\n },\r\n { size: 5, column: \"name\", content: company.name },\r\n { size: 2, column: \"activeState\", content: company.activeStateStr },\r\n ],\r\n id: company.id,\r\n classes: EnumHelper.isEqual(company.activeState, CompanyActiveState.NotInUse) ? \"disabled\" : \"\"\r\n };\r\n })\r\n }\r\n noDataMessage={Translations.AddPartnerCompanies}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n />\r\n }\r\n {state.showSelectCompanyDialog &&\r\n i.id).concat([props.companyId])}\r\n ignoreCompanyGroupId={props.allPartnersCompanyGroupId}\r\n onOk={this.onSelectCompanyDialogOk}\r\n onCancel={this.onSelectCompanyDialogCancel}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","import React from \"react\";\r\nimport { ApplicationPermissionType } from \"ui/Scripts/source/models/enums\";\r\nimport { SectionIcon, SectionType } from \"../SectionIcon\";\r\n\r\nconst getSectionType = (sectionType: ApplicationPermissionType) => {\r\n switch (sectionType) {\r\n case ApplicationPermissionType.Company:\r\n return SectionType.Companies;\r\n case ApplicationPermissionType.CompanyGroup:\r\n return SectionType.CompanyGroups;\r\n case ApplicationPermissionType.Document:\r\n return SectionType.Documents;\r\n case ApplicationPermissionType.Event:\r\n return SectionType.Events;\r\n case ApplicationPermissionType.InstantMessage:\r\n return SectionType.InstantMessages;\r\n case ApplicationPermissionType.Log:\r\n return SectionType.Log;\r\n case ApplicationPermissionType.Message:\r\n return SectionType.CurrentTopics;\r\n case ApplicationPermissionType.Record:\r\n return SectionType.UserRecords;\r\n case ApplicationPermissionType.Task:\r\n return SectionType.Tasks;\r\n case ApplicationPermissionType.User:\r\n return SectionType.Users;\r\n case ApplicationPermissionType.UserGroup:\r\n return SectionType.UserGroups;\r\n case ApplicationPermissionType.WhistleBlow:\r\n return SectionType.WhistleBlow;\r\n case ApplicationPermissionType.CalendarTask:\r\n return SectionType.CalendarTasks;\r\n }\r\n};\r\n\r\nexport const PermissionIcon = ({\r\n type,\r\n title,\r\n}: {\r\n type: ApplicationPermissionType;\r\n title?: string;\r\n}) => ;\r\n","// CompanyEditPermissions - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Checkbox, FormControlLabel, Grid, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ApplicationPermissionType, EnumHelper } from \"ui/Scripts/source/models/enums\";\r\nimport { IApplicationPermission } from \"../../../models/common/applicationPermission\";\r\nimport { PermissionIcon } from \"../../framework/Icon/PermissionIcon\";\r\n\r\n//CompanyEditPermissions\r\nexport interface ICompanyEditPermissionsProp {\r\n applicationPermissions: IApplicationPermission[];\r\n onSetValue: (applicationPermissionType: ApplicationPermissionType, value: boolean) => void;\r\n}\r\n\r\nexport class CompanyEditPermissions extends React.Component {\r\n render() {\r\n const props = this.props;\r\n const applicationPermissions = props.applicationPermissions;\r\n if (!applicationPermissions || applicationPermissions.length < 0) return null;\r\n return (\r\n <>\r\n \r\n {props.applicationPermissions.map((applicationPermission) =>\r\n \r\n \r\n \r\n \r\n {EnumHelper.ApplicationPermissionTypeToStr(applicationPermission.type)}\r\n \r\n \r\n }\r\n control={\r\n 0}\r\n onChange={(_e, checked: boolean) => props.onSetValue(applicationPermission.type, checked)}\r\n />\r\n }\r\n />\r\n \r\n )}\r\n \r\n \r\n );\r\n }\r\n}","import ChevronRightIcon from \"@mui/icons-material/ChevronRight\";\r\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\r\nimport { Box } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { ListStateIcon } from \"../ListStateIcon/ListStateIcon\";\r\n\r\ninterface ListStateIconExpandedProps {\r\n hasChildren?: boolean;\r\n collapsed?: boolean;\r\n noMargin?: boolean;\r\n tooltip?: string;\r\n onClick?: () => void;\r\n}\r\n\r\nexport const ListStateIconExpanded = (props: ListStateIconExpandedProps) =>\r\n props.hasChildren\r\n ? (\r\n \r\n )\r\n : (\r\n \r\n );\r\n","import HomeIcon from \"@mui/icons-material/Home\";\r\nimport React from \"react\";\r\nimport { ListStateIcon } from \"../ListStateIcon/ListStateIcon\";\r\n\r\ninterface ListStateIconHomeProps {\r\n noMargin?: boolean;\r\n tooltip?: string;\r\n}\r\n\r\nexport const ListStateIconHome = (props: ListStateIconHomeProps) => (\r\n \r\n);\r\n","// UnitModuleTreeNode\r\n// ***********************************************************************************************************************\r\nimport { Box, Checkbox, Grid, ListItemButton, Tooltip, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ApplicationPermissionType } from \"ui/Scripts/source/models/enums\";\r\nimport { IUnitModuleNode } from \"../../../../models/unit/unitModuleNode\";\r\nimport { ListStateIconExpanded } from \"../../../framework/List/ListStateIconExpanded\";\r\nimport { ListStateIconHome } from \"../../../framework/List/ListStateIconHome\";\r\nimport { EllipsisTypography } from \"../../../framework/Typography/EllipsisTypography\";\r\n\r\nexport interface IUnitModuleTreeNodeProp {\r\n classes?: string;\r\n unitModuleNode: IUnitModuleNode;\r\n selectedId?: string;\r\n isFirstNode: boolean;\r\n oneModuleUnitsMode?: boolean;\r\n canEditWhistleBlowSettings: boolean;\r\n onClick: (id: string) => void;\r\n onDoubleClick: () => void;\r\n onSetUsage: (id: string, applicationPermissionType: ApplicationPermissionType, value: boolean) => void;\r\n onSetCollapsed: (id: string, value: boolean) => void;\r\n}\r\n\r\nexport class UnitModuleTreeNode extends React.Component {\r\n handleUnitNodeClick = (e) => {\r\n const props = this.props;\r\n e.stopPropagation();\r\n props.onClick(props.unitModuleNode.id);\r\n };\r\n \r\n handleUnitNodeDoubleClick = (e) => {\r\n e.stopPropagation();\r\n this.props.onDoubleClick();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const unitModuleNode = props.unitModuleNode;\r\n if (!unitModuleNode || unitModuleNode.parent && (unitModuleNode.getAncesterIsCollapsed() || unitModuleNode.getIsHidden())) return null;\r\n const hasChildren = unitModuleNode.children.length > 0;\r\n const isRoot = unitModuleNode.getIsRoot();\r\n const usageIsDisabled = !unitModuleNode.getParentIsRoot();\r\n let selectedId = props.selectedId;\r\n if (!props.selectedId && isRoot) {\r\n selectedId = unitModuleNode.id;\r\n }\r\n return (\r\n \r\n \r\n \r\n \r\n {(!isRoot && !props.isFirstNode) &&\r\n \r\n }\r\n \r\n {unitModuleNode.name}\r\n \r\n \r\n \r\n \r\n \r\n {unitModuleNode.comment}\r\n \r\n \r\n \r\n \r\n \r\n {unitModuleNode.usages.filter(i => i.visible).map((usage) =>\r\n \r\n {usage.enabled &&\r\n props.onSetUsage(unitModuleNode.id, usage.applicationPermissionType, checked)}\r\n />\r\n }\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}","// UnitModuleTree\r\n// ***********************************************************************************************************************\r\nimport { Box, Grid, Typography } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { ApplicationPermissionType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ISessionState } from \"../../../../models/session/sessionState\";\r\nimport { IUnitModuleNode } from \"../../../../models/unit/unitModuleNode\";\r\nimport { PermissionIcon } from \"../../../framework/Icon/PermissionIcon\";\r\nimport { UnitModuleTreeNode } from \"../UnitModuleTreeNode\";\r\n\r\nexport interface IUnitModuleTreeProp {\r\n sessionState: ISessionState;\r\n classes?: string;\r\n unitModuleNodes: IUnitModuleNode[];\r\n selectedId?: string;\r\n isFirstNode: boolean;\r\n oneModuleUnitsMode?: boolean;\r\n canEditWhistleBlowSettings: boolean;\r\n height?: string | number;\r\n onClick: (id: string) => void;\r\n onDoubleClick: () => void;\r\n onSetUsage: (id: string, applicationPermissionType: ApplicationPermissionType, value: boolean) => void;\r\n onSetCollapsed: (id: string, value: boolean) => void;\r\n}\r\n\r\nexport class UnitModuleTree extends React.Component {\r\n static defaultProps = {\r\n height: \"calc(100% - 112px)\"\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const unitModuleNodes = props.unitModuleNodes;\r\n if (!unitModuleNodes) return null;\r\n return (\r\n <>\r\n \r\n \r\n \r\n {Translations.Unit}\r\n \r\n \r\n \r\n \r\n {Translations.Description}\r\n \r\n \r\n \r\n {unitModuleNodes.length > 0 &&\r\n \r\n {props.oneModuleUnitsMode\r\n ? ({Translations.InUse})\r\n : (\r\n \r\n {unitModuleNodes[0].usages.filter(i => i.visible).map((usage) => (\r\n \r\n \r\n \r\n ))}\r\n \r\n )\r\n }\r\n \r\n }\r\n \r\n \r\n \r\n {unitModuleNodes.map((unitModuleNode, index) =>\r\n \r\n )}\r\n \r\n \r\n );\r\n }\r\n}","// CompanyEditUnits - MODULE\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { ApplicationPermissionType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { IUnitModuleNode } from \"../../../models/unit/unitModuleNode\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { ListIconButtonsItem } from \"../../framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { UnitModuleTree } from \"../../unit/Unit/UnitModuleTree\";\r\nimport { DialogListContainer } from \"../../framework/Dialog/DialogListContainer\";\r\n\r\n//CompanyEditUnits\r\nexport interface ICompanyEditUnitsProp {\r\n sessionState: ISessionState;\r\n unitModuleNodes: IUnitModuleNode[];\r\n selectedUnitId: string;\r\n removeDisabled: boolean;\r\n canEditWhistleBlowSettings: boolean;\r\n onUnitClick: (id: string) => void;\r\n onUnitEdit: () => void;\r\n onUnitAdd: () => void;\r\n onUnitRemove: () => void;\r\n onSetUsage: (\r\n id: string,\r\n applicationPermissionType: ApplicationPermissionType,\r\n value: boolean\r\n ) => void;\r\n onSetCollapsed: (id: string, value: boolean) => void;\r\n}\r\n\r\nexport class CompanyEditUnits extends React.Component {\r\n render() {\r\n const props = this.props;\r\n const unitModuleNodes = props.unitModuleNodes;\r\n if (!unitModuleNodes) return null;\r\n return (\r\n \r\n \r\n }\r\n />\r\n \r\n \r\n );\r\n }\r\n}\r\n","// CompanyEdit - MODULE\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { FileAttachment, IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { maximumPasswordLength, minimumPasswordLength } from \"ui/Scripts/source/models/consts\";\r\nimport { ApplicationPermissionType, ConfirmationDialogResult, EnumHelper } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { SaveAttachmentBase64 } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/saveAttachmentBase64\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { ApplicationPermissionSave, IApplicationPermission } from \"../../../models/common/applicationPermission\";\r\nimport { ICodeTitle } from \"../../../models/common/codeTitle\";\r\nimport { ICompanyEdit } from \"../../../models/company/companyEdit\";\r\nimport { ICompanyEditItem } from \"../../../models/company/companyEditItem\";\r\nimport { ICompanyListItem } from \"../../../models/company/companyListItem\";\r\nimport { ICompanyGroupListItem } from \"../../../models/companyGroup/companyGroupListItem\";\r\nimport { IUserExternalSystem, UserSaveExternalSystem } from \"../../../models/externalSystem/userExternalSystem\";\r\nimport { IFileFilterListItem } from \"../../../models/fileFilter/fileFilterListItem\";\r\nimport { CompanySaveIntraModule, ICompanyIntraModule } from \"../../../models/intraModule/companyIntraModule\";\r\nimport { IMessageTypeListItem } from \"../../../models/messageType/messageTypeListItem\";\r\nimport * as companyService from \"../../../models/services/companyService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { IUnitModuleNode, UnitModuleNode } from \"../../../models/unit/unitModuleNode\";\r\nimport { UnitModuleNodeSave } from \"../../../models/unit/unitModuleNodeSave\";\r\nimport { IUnitModuleNodeUsage, UnitModuleNodeUsage } from \"../../../models/unit/unitModuleNodeUsage\";\r\nimport { CompanyUnitDialog } from \"../Company/CompanyUnitDialog\";\r\nimport { CompanyEditBasicInformation } from \"../CompanyEditBasicInformation\";\r\nimport { CompanyEditCompanyGroupList } from \"../CompanyEditCompanyGroupList\";\r\nimport { CompanyEditExternalSystems } from \"../CompanyEditExternalSystems\";\r\nimport { CompanyEditIntraModules } from \"../CompanyEditIntraModules\";\r\nimport { CompanyEditNewCompany } from \"../CompanyEditNewCompany/CompanyEditNewCompany\";\r\nimport { CompanyEditPartnerCompanyList } from \"../CompanyEditPartnerCompanyList\";\r\nimport { CompanyEditPermissions } from \"../CompanyEditPermissions\";\r\nimport { CompanyEditUnits } from \"../CompanyEditUnits\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum CompanyEditViewMode {\r\n General = \"1\",\r\n NewCompany = \"2\",\r\n Permissions = \"3\",\r\n CompanyGroups = \"4\",\r\n Partners = \"5\",\r\n Units = \"6\",\r\n ExternalSystems = \"7\",\r\n IntraModules = \"8\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n//CompanyEdit\r\nexport interface ICompanyEditProp {\r\n sessionState: ISessionState;\r\n companyEdit?: ICompanyEdit;\r\n companyId: string;\r\n onDialog: boolean;\r\n viewMode: CompanyEditViewMode;\r\n onCompanyLoaded?: (company: ICompanyEditItem) => void;\r\n onRefreshSessionState: () => void;\r\n onAfterSave?: (closeDialog: boolean, styleChanged: boolean) => void;\r\n}\r\n\r\nexport interface ICompanyEditState {\r\n isLoading: boolean;\r\n companyDataWasModified: boolean;\r\n company: ICompanyEditItem;\r\n logoFile: IFileAttachment;\r\n resetLogo: boolean;\r\n logoSquareFile: IFileAttachment;\r\n resetLogoSquare: boolean;\r\n defaultLogo: string;\r\n usedFileStorageQuota: number;\r\n customStyles: ICodeTitle[];\r\n //Company data\r\n id: string;\r\n rowId: string;\r\n name: string;\r\n postalAddress: string;\r\n postalCode: string;\r\n city: string;\r\n phone: string;\r\n email: string;\r\n internet: string;\r\n pageFooterText: string;\r\n businessIdentityCode: string;\r\n contactPerson: string;\r\n logo: string;\r\n logoSquare: string;\r\n styleClass: string;\r\n usedStoragePercent: number;\r\n eInvoiceAddress: string;\r\n eInvoiceOperator: string;\r\n minPasswordLength: number;\r\n //Admin Company data\r\n code: string;\r\n loginUrl: string;\r\n fileStorageQuota: string;\r\n customStyleClass: string;\r\n tiedostoturvaUseType: number;\r\n activeState: number;\r\n documentRootPath: string;\r\n bannerPath: string;\r\n documentPreviewLogType: number;\r\n //Units\r\n canEditWhistleBlowSettings: boolean;\r\n unitModuleNode: IUnitModuleNode;\r\n unitModuleNodes: IUnitModuleNode[];\r\n editUnitModuleNode: IUnitModuleNode;\r\n selectedUnitModuleNode: IUnitModuleNode;\r\n showUnitDialog: boolean;\r\n showUnitDialogForNew: boolean;\r\n saveUnitNodeIds: string[];\r\n removeUnitNodeIds: string[];\r\n unitDialogIsReadOnly: boolean;\r\n //Permissions\r\n applicationPermissions: IApplicationPermission[];\r\n //CompanyGroups\r\n companyGroupsEnabled: boolean;\r\n companyGroups: ICompanyGroupListItem[];\r\n //PartnerCompanies\r\n partnerCompaniesEnabled: boolean;\r\n partnerCompanies: ICompanyListItem[];\r\n allPartnersCompanyGroupId: string;\r\n //ExternalSystems\r\n externalSystems: IUserExternalSystem[];\r\n //IntraModules\r\n intraModules: ICompanyIntraModule[];\r\n //New Company\r\n fileFilters: IFileFilterListItem[];\r\n messageTypes: IMessageTypeListItem[];\r\n administratorCode: string;\r\n administratorFirstName: string;\r\n administratorLastName: string;\r\n administratorPassword: string;\r\n copyDocumentsFromCompanyCode: string;\r\n fileFilterIds: string[];\r\n messageTypeIds: string[];\r\n}\r\n\r\nexport class CompanyEdit extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n getUsedStoragePercent = (usedFileStorageQuota: number, fileStorageQuota: number): number => {\r\n if (!usedFileStorageQuota || !fileStorageQuota) return 0;\r\n return usedFileStorageQuota > 0 ? Math.min(100, (usedFileStorageQuota / fileStorageQuota) * 100) : 0;\r\n };\r\n\r\n getStateFromCompanyEdit = (oldState: ICompanyEditState, companyEdit?: ICompanyEdit) => {\r\n const company = companyEdit.company;\r\n const selectedUnitId = this.state.selectedUnitModuleNode?.id;\r\n return {\r\n ...oldState,\r\n company,\r\n resetLogo: companyEdit.defaultLogoInUse,\r\n resetLogoSquare: !company.logoSquare,\r\n defaultLogo: companyEdit.defaultLogo,\r\n usedFileStorageQuota: companyEdit.usedFileStorageQuota,\r\n customStyles: companyEdit.customStyles,\r\n //Company data\r\n id: company.id,\r\n rowId: company.rowId,\r\n name: company.name,\r\n postalAddress: company.postalAddress,\r\n postalCode: company.postalCode,\r\n city: company.city,\r\n phone: company.phone,\r\n email: company.email,\r\n internet: company.internet,\r\n pageFooterText: company.pageFooterText,\r\n businessIdentityCode: company.businessIdentityCode,\r\n contactPerson: company.contactPerson,\r\n logo: company.logo,\r\n logoSquare: company.logoSquare ? company.logoSquare : (companyEdit.defaultLogoInUse ? companyEdit.defaultLogo : company.logo),\r\n styleClass: company.styleClass,\r\n usedStoragePercent: this.getUsedStoragePercent(companyEdit.usedFileStorageQuota, company.fileStorageQuota),\r\n eInvoiceAddress: company.eInvoiceAddress,\r\n eInvoiceOperator: company.eInvoiceOperator,\r\n minPasswordLength: company.minPasswordLength,\r\n //Admin Company data\r\n code: company.code,\r\n loginUrl: company.loginUrl,\r\n fileStorageQuota: company.fileStorageQuota ? company.fileStorageQuota.toString(10) : \"0\",\r\n customStyleClass: company.customStyleClass,\r\n tiedostoturvaUseType: company.tiedostoturvaUseType,\r\n activeState: company.activeState,\r\n documentRootPath: company.documentRootPath,\r\n bannerPath: company.bannerPath,\r\n documentPreviewLogType: company.documentPreviewLogType,\r\n //Units\r\n canEditWhistleBlowSettings: companyEdit.canEditWhistleBlowSettings,\r\n unitModuleNode: companyEdit.unitModuleNode,\r\n unitModuleNodes: companyEdit.unitModuleNode.getAsList([], 0),\r\n editUnitModuleNode: null,\r\n selectedUnitModuleNode: selectedUnitId ? companyEdit.unitModuleNode.getUnitModuleNodeById(selectedUnitId) : companyEdit.unitModuleNode,\r\n saveUnitNodeIds: [],\r\n removeUnitNodeIds: [],\r\n unitDialogIsReadOnly: false,\r\n //Permissions\r\n applicationPermissions: companyEdit.applicationPermissions.slice(0),\r\n //CompanyGroups\r\n companyGroupsEnabled: companyEdit.companyGroupsEnabled,\r\n companyGroups: companyEdit.companyGroups.slice(0),\r\n //PartnerCompanies\r\n partnerCompaniesEnabled: companyEdit.partnerCompaniesEnabled,\r\n partnerCompanies: companyEdit.partnerCompanies.slice(0),\r\n allPartnersCompanyGroupId: companyEdit.allPartnersCompanyGroupId,\r\n //ExternalSystems\r\n externalSystems: companyEdit.externalSystems.slice(0),\r\n //IntraModules\r\n intraModules: companyEdit.intraModules.slice(0),\r\n //New Company\r\n fileFilters: companyEdit.fileFilters.slice(0),\r\n messageTypes: companyEdit.messageTypes.slice(0),\r\n administratorCode: \"\",\r\n administratorFirstName: \"\",\r\n administratorLastName: \"\",\r\n administratorPassword: \"\",\r\n copyDocumentsFromCompanyCode: \"\",\r\n fileFilterIds: companyEdit.fileFilters.map(i => i.id),\r\n messageTypeIds: companyEdit.messageTypes.map(i => i.id),\r\n };\r\n };\r\n\r\n constructor(props: ICompanyEditProp) {\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n companyDataWasModified: false,\r\n company: null,\r\n logoFile: null,\r\n resetLogo: false,\r\n logoSquareFile: null,\r\n resetLogoSquare: false,\r\n defaultLogo: \"\",\r\n usedFileStorageQuota: 0,\r\n customStyles: [],\r\n //Company data\r\n id: \"\",\r\n rowId: \"\",\r\n name: \"\",\r\n postalAddress: \"\",\r\n postalCode: \"\",\r\n city: \"\",\r\n phone: \"\",\r\n email: \"\",\r\n internet: \"\",\r\n pageFooterText: \"\",\r\n businessIdentityCode: \"\",\r\n contactPerson: \"\",\r\n logo: \"\",\r\n logoSquare: \"\",\r\n styleClass: \"\",\r\n usedStoragePercent: 0,\r\n eInvoiceAddress: \"\",\r\n eInvoiceOperator: \"\",\r\n minPasswordLength: minimumPasswordLength,\r\n //Admin Company data\r\n code: \"\",\r\n loginUrl: \"\",\r\n fileStorageQuota: \"\",\r\n customStyleClass: \"\",\r\n tiedostoturvaUseType: 0,\r\n activeState: 0,\r\n documentRootPath: \"\",\r\n bannerPath: \"\",\r\n documentPreviewLogType: 0,\r\n //Units\r\n canEditWhistleBlowSettings: false,\r\n unitModuleNode: null,\r\n unitModuleNodes: [],\r\n editUnitModuleNode: null,\r\n selectedUnitModuleNode: null,\r\n showUnitDialog: false,\r\n showUnitDialogForNew: false,\r\n saveUnitNodeIds: [],\r\n removeUnitNodeIds: [],\r\n unitDialogIsReadOnly: false,\r\n //Permissions\r\n applicationPermissions: [],\r\n //CompanyGroups\r\n companyGroupsEnabled: false,\r\n companyGroups: [],\r\n //PartnerCompanies\r\n partnerCompaniesEnabled: false,\r\n partnerCompanies: [],\r\n allPartnersCompanyGroupId: \"\",\r\n //ExternalSystems\r\n externalSystems: [],\r\n //IntraModules\r\n intraModules: [],\r\n //New Company\r\n fileFilters: [],\r\n messageTypes: [],\r\n administratorCode: \"\",\r\n administratorFirstName: \"\",\r\n administratorLastName: \"\",\r\n administratorPassword: \"\",\r\n copyDocumentsFromCompanyCode: \"\",\r\n fileFilterIds: [],\r\n messageTypeIds: []\r\n };\r\n if (!props.companyEdit) return;\r\n this.state = this.getStateFromCompanyEdit(this.state, props.companyEdit);\r\n this.getSaveDataFromState(props, this.state)\r\n .then(saveData => {\r\n this.orgStateHash = saveData.hash;\r\n });\r\n }\r\n\r\n loadCompany = async () => {\r\n const props = this.props;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => companyService.getCompanyEdit(props.companyId), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const state = this.getStateFromCompanyEdit(this.state, result);\r\n this.setState(state);\r\n const saveData = await this.getSaveDataFromState(props, state);\r\n this.orgStateHash = saveData.hash;\r\n if (props.onCompanyLoaded) {\r\n props.onCompanyLoaded(result.company);\r\n }\r\n };\r\n\r\n getCompany = (): ICompanyEditItem => {\r\n return this.state.company;\r\n };\r\n\r\n getCompanyGroupsEnabled = (): boolean => {\r\n return this.state.companyGroupsEnabled;\r\n };\r\n\r\n getPartnerCompaniesEnabled = (): boolean => {\r\n return this.state.partnerCompaniesEnabled;\r\n };\r\n\r\n getExternalSystemsExists = (): boolean => {\r\n return this.state.externalSystems.length > 0;\r\n };\r\n \r\n getExternalIntraSystemsExists = (): boolean => {\r\n return this.state.intraModules.length > 0;\r\n };\r\n \r\n getCompanyDataWasModified = (): boolean => {\r\n return this.state.companyDataWasModified;\r\n };\r\n\r\n cancel = async (closeDialog: boolean): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel((await this.getSaveDataFromState(props, state)).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb(closeDialog)) return null;\r\n }\r\n return cancelResult;\r\n };\r\n\r\n canNavigateOut = async (): Promise => {\r\n const cancelResult = await this.cancel(true);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return Base.getPromiseResult(false);\r\n return Base.getPromiseResult(true);\r\n };\r\n\r\n componentDidMount(): void {\r\n const props = this.props;\r\n if (props.companyEdit) {\r\n if (props.onCompanyLoaded) {\r\n props.onCompanyLoaded(props.companyEdit.company);\r\n }\r\n return;\r\n }\r\n this.loadCompany();\r\n }\r\n\r\n async componentDidUpdate(prevProps: ICompanyEditProp, prevState: ICompanyEditState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if (prevProps.companyId === props.companyId) return;\r\n const cancelResult = await AppUtils.cancel((await this.getSaveDataFromState(props, state)).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb(false)) return;\r\n }\r\n this.loadCompany();\r\n }\r\n\r\n handleChange = (name: string, value: string) => {\r\n if (!name) return;\r\n if (name === \"code\") {\r\n this.setState({ code: value });\r\n } else if (name === \"name\") {\r\n this.setState({ name: value });\r\n } else if (name === \"postalAddress\") {\r\n this.setState({ postalAddress: value });\r\n } else if (name === \"postalCode\") {\r\n this.setState({ postalCode: value });\r\n } else if (name === \"city\") {\r\n this.setState({ city: value });\r\n } else if (name === \"phone\") {\r\n this.setState({ phone: value });\r\n } else if (name === \"email\") {\r\n this.setState({ email: value });\r\n } else if (name === \"internet\") {\r\n this.setState({ internet: value });\r\n } else if (name === \"businessIdentityCode\") {\r\n this.setState({ businessIdentityCode: value });\r\n } else if (name === \"contactPerson\") {\r\n this.setState({ contactPerson: value });\r\n } else if (name === \"activeState\") {\r\n this.setState({ activeState: value.toInteger() });\r\n } else if (name === \"styleClass\") {\r\n this.setState({ styleClass: value });\r\n } else if (name === \"customStyleClass\") {\r\n this.setState({ customStyleClass: value });\r\n } else if (name === \"documentRootPath\") {\r\n this.setState({ documentRootPath: value });\r\n } else if (name === \"bannerPath\") {\r\n this.setState({ bannerPath: value });\r\n } else if (name === \"pageFooterText\") {\r\n this.setState({ pageFooterText: value });\r\n } else if (name === \"loginUrl\") {\r\n this.setState({ loginUrl: value });\r\n } else if (name === \"eInvoiceAddress\") {\r\n this.setState({ eInvoiceAddress: value });\r\n } else if (name === \"eInvoiceOperator\") {\r\n this.setState({ eInvoiceOperator: value });\r\n } else if (name === \"documentPreviewLogType\") {\r\n this.setState({ documentPreviewLogType: value.toInteger() });\r\n } else if (name === \"tiedostoturvaUseType\") {\r\n this.setState({ tiedostoturvaUseType: value.toInteger() });\r\n } else if (name === \"fileStorageQuota\") {\r\n this.setState({\r\n fileStorageQuota: value,\r\n usedStoragePercent: this.getUsedStoragePercent(this.state.usedFileStorageQuota, value.toInteger())\r\n });\r\n } else if (name === \"administratorCode\") {\r\n this.setState({ administratorCode: value });\r\n } else if (name === \"administratorPassword\") {\r\n this.setState({ administratorPassword: value });\r\n } else if (name === \"administratorFirstName\") {\r\n this.setState({ administratorFirstName: value });\r\n } else if (name === \"administratorLastName\") {\r\n this.setState({ administratorLastName: value });\r\n } else if (name === \"copyDocumentsFromCompanyCode\") {\r\n this.setState({ copyDocumentsFromCompanyCode: value });\r\n } else if (name === \"minPasswordLength\") {\r\n this.setState({ minPasswordLength: value.toInteger() });\r\n }\r\n };\r\n\r\n handleChangeLogo = async (name: string, file: File) => {\r\n if (!name || !file) return;\r\n const state = this.state;\r\n const attachment = await FileAttachment.fileToFileAttachment(file, 0);\r\n if (!AppUtils.validateFileAttachment(attachment)) return;\r\n if (name === \"logo\") {\r\n this.setState({\r\n logoFile: attachment,\r\n resetLogo: false,\r\n logo: attachment.thumbnail,\r\n logoSquare: !state.resetLogoSquare ? state.logoSquare : attachment.thumbnail\r\n });\r\n } else {\r\n this.setState({\r\n logoSquareFile: attachment,\r\n resetLogoSquare: false,\r\n logoSquare: attachment.thumbnail\r\n });\r\n }\r\n };\r\n\r\n handleRemoveLogo = (name: string) => {\r\n if (!name) return;\r\n const state = this.state;\r\n if (name === \"logo\") {\r\n this.setState({\r\n logoFile: null,\r\n resetLogo: true,\r\n logo: state.defaultLogo,\r\n logoSquare: !state.resetLogoSquare ? state.logoSquare : state.defaultLogo\r\n });\r\n } else {\r\n this.setState({\r\n logoSquareFile: null,\r\n resetLogoSquare: true,\r\n logoSquare: !state.resetLogo ? state.logo : state.defaultLogo\r\n });\r\n }\r\n };\r\n\r\n // #region New company\r\n handleSetMessageTypeIds = (ids: string[]) => {\r\n this.setState({\r\n messageTypeIds: ids\r\n });\r\n };\r\n\r\n handleSetFileFilterIds = (ids: string[]) => {\r\n this.setState({\r\n fileFilterIds: ids\r\n });\r\n };\r\n // #endregion New company\r\n\r\n // #region Units\r\n handleUnitNodeClick = (id: string) => {\r\n if (!id) return;\r\n const selectedUnitModuleNode = this.state.unitModuleNode.getUnitModuleNodeById(id);\r\n if (!selectedUnitModuleNode) return;\r\n this.setState({\r\n selectedUnitModuleNode\r\n });\r\n };\r\n\r\n handleEditUnitNode = () => {\r\n const state = this.state;\r\n if (!state.selectedUnitModuleNode) return;\r\n const whistleBlowUsage = state.selectedUnitModuleNode.usages.find(i => EnumHelper.isEqual(i.applicationPermissionType, ApplicationPermissionType.WhistleBlow));\r\n this.setState({\r\n showUnitDialog: true,\r\n showUnitDialogForNew: false,\r\n editUnitModuleNode: state.selectedUnitModuleNode,\r\n unitDialogIsReadOnly: whistleBlowUsage && whistleBlowUsage.inUse && !state.canEditWhistleBlowSettings\r\n });\r\n };\r\n\r\n handleAddUnitNode = () => {\r\n const state = this.state;\r\n if (!state.selectedUnitModuleNode) return;\r\n if (!state.selectedUnitModuleNode.getIsRoot()) {\r\n const whistleBlowUsage = state.selectedUnitModuleNode.usages.find(i => EnumHelper.isEqual(i.applicationPermissionType, ApplicationPermissionType.WhistleBlow));\r\n if (whistleBlowUsage && whistleBlowUsage.inUse && !state.canEditWhistleBlowSettings) {\r\n AppUtils.showErrorMessage(Translations.PermissionDeniedForOperation);\r\n return;\r\n }\r\n }\r\n const editUnitModuleNode = new UnitModuleNode();\r\n editUnitModuleNode.id = Base.getGuid();\r\n editUnitModuleNode.parent = state.selectedUnitModuleNode;\r\n editUnitModuleNode.usages = state.selectedUnitModuleNode.usages.map(i => new UnitModuleNodeUsage(i));\r\n for (const usage of editUnitModuleNode.usages) {\r\n if (EnumHelper.isEqual(usage.applicationPermissionType, ApplicationPermissionType.WhistleBlow) && !state.canEditWhistleBlowSettings) {\r\n usage.inUse = false;\r\n }\r\n if (EnumHelper.isEqual(usage.applicationPermissionType, ApplicationPermissionType.Message) ||\r\n EnumHelper.isEqual(usage.applicationPermissionType, ApplicationPermissionType.Record) ||\r\n EnumHelper.isEqual(usage.applicationPermissionType, ApplicationPermissionType.Event) ||\r\n EnumHelper.isEqual(usage.applicationPermissionType, ApplicationPermissionType.Task) ||\r\n EnumHelper.isEqual(usage.applicationPermissionType, ApplicationPermissionType.WhistleBlow)) continue;\r\n usage.enabled = false;\r\n }\r\n this.setState({\r\n showUnitDialog: true,\r\n showUnitDialogForNew: true,\r\n unitDialogIsReadOnly: false,\r\n editUnitModuleNode,\r\n });\r\n };\r\n\r\n handleSetUsage = (id: string, applicationPermissionType: ApplicationPermissionType, inUse: boolean) => {\r\n const state = this.state;\r\n if (!id) return;\r\n const unitModuleNode = new UnitModuleNode(state.unitModuleNode);\r\n const selectedUnitModuleNode = unitModuleNode.getUnitModuleNodeById(id);\r\n if (!selectedUnitModuleNode) return;\r\n const usage = new UnitModuleNodeUsage();\r\n usage.applicationPermissionType = applicationPermissionType;\r\n usage.inUse = inUse;\r\n const modifiedUnitIds = selectedUnitModuleNode.setUsages([usage]);\r\n this.setState({\r\n selectedUnitModuleNode,\r\n unitModuleNode,\r\n unitModuleNodes: unitModuleNode.getAsList([]),\r\n saveUnitNodeIds: state.saveUnitNodeIds.filter(i => modifiedUnitIds.indexOf(i) < 0).concat(modifiedUnitIds)\r\n });\r\n };\r\n\r\n handleSetCollapsed = (id: string, value: boolean) => {\r\n const state = this.state;\r\n if (!id) return;\r\n const unitModuleNode = new UnitModuleNode(state.unitModuleNode);\r\n const selectedUnitModuleNode = unitModuleNode.getUnitModuleNodeById(id);\r\n if (!selectedUnitModuleNode) return;\r\n selectedUnitModuleNode.collapsed = value;\r\n this.setState({\r\n selectedUnitModuleNode,\r\n unitModuleNode,\r\n unitModuleNodes: unitModuleNode.getAsList([])\r\n });\r\n };\r\n\r\n handleCompanyUnitDialogOk = (name: string, comment: string, usages: IUnitModuleNodeUsage[]) => {\r\n const state = this.state;\r\n if (!state.editUnitModuleNode) return;\r\n const unitModuleNode = new UnitModuleNode(state.unitModuleNode);\r\n if (state.showUnitDialogForNew) {\r\n const selectedUnitModuleNode = unitModuleNode.getUnitModuleNodeById(state.selectedUnitModuleNode.id);\r\n if (!selectedUnitModuleNode) return;\r\n state.editUnitModuleNode.name = name;\r\n selectedUnitModuleNode.addUnitModuleNode(state.editUnitModuleNode);\r\n }\r\n const editUnitNode = unitModuleNode.getUnitModuleNodeById(state.editUnitModuleNode.id);\r\n if (!editUnitNode) return;\r\n editUnitNode.name = name;\r\n editUnitNode.comment = comment;\r\n const modifiedUnitIds = editUnitNode.setUsages(usages);\r\n this.setState({\r\n showUnitDialog: false,\r\n unitModuleNode,\r\n unitModuleNodes: unitModuleNode.getAsList([]),\r\n selectedUnitModuleNode: editUnitNode,\r\n saveUnitNodeIds: state.saveUnitNodeIds.filter(i => modifiedUnitIds.indexOf(i) < 0).concat(modifiedUnitIds)\r\n });\r\n };\r\n\r\n canRemoveUnitNode = (unitModuleNode: IUnitModuleNode): boolean => {\r\n if (!unitModuleNode) return false;\r\n const whistleBlowUsage = unitModuleNode.usages.find(i => EnumHelper.isEqual(i.applicationPermissionType, ApplicationPermissionType.WhistleBlow));\r\n return !unitModuleNode.getIsRoot() && !unitModuleNode.getHasChildren() && !(whistleBlowUsage && whistleBlowUsage.inUse && !this.state.canEditWhistleBlowSettings);\r\n };\r\n\r\n handleRemoveUnitNode = async () => {\r\n const state = this.state;\r\n if (!this.canRemoveUnitNode(state.selectedUnitModuleNode)) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveUnitParameter, state.selectedUnitModuleNode.name)) === ConfirmationDialogResult.Yes) {\r\n let removeUnitNodeIds = state.removeUnitNodeIds.slice(0);\r\n const unitModuleNode = new UnitModuleNode(state.unitModuleNode);\r\n const newRemoveUnitNodeIds = unitModuleNode.removeUnitModuleNodeById(state.selectedUnitModuleNode.id);\r\n if (!state.selectedUnitModuleNode.isNew()) {\r\n removeUnitNodeIds = removeUnitNodeIds.concat(newRemoveUnitNodeIds);\r\n }\r\n const selectedUnitModuleNode = state.selectedUnitModuleNode ? unitModuleNode.getUnitModuleNodeById(state.selectedUnitModuleNode.parent.id) : null;\r\n this.setState({\r\n unitModuleNode,\r\n unitModuleNodes: unitModuleNode.getAsList([]),\r\n removeUnitNodeIds,\r\n saveUnitNodeIds: state.saveUnitNodeIds.filter(i => newRemoveUnitNodeIds.indexOf(i) < 0),\r\n selectedUnitModuleNode: selectedUnitModuleNode ?? unitModuleNode\r\n });\r\n }\r\n };\r\n\r\n handleCompanyUnitDialogCancel = () => {\r\n this.setState({\r\n showUnitDialog: false\r\n });\r\n };\r\n\r\n setUnitApplicationPermissionTypeVisible = (applicationPermissionType: number, value: boolean) => {\r\n const state = this.state;\r\n const unitModuleNode = new UnitModuleNode(this.state.unitModuleNode);\r\n unitModuleNode.setApplicationPermissionTypeVisible(applicationPermissionType, value);\r\n const selectedUnitModuleNode = state.selectedUnitModuleNode ? unitModuleNode.getUnitModuleNodeById(state.selectedUnitModuleNode.id) : null;\r\n this.setState({\r\n selectedUnitModuleNode,\r\n unitModuleNode,\r\n unitModuleNodes: unitModuleNode.getAsList([])\r\n });\r\n };\r\n // #endregion Units\r\n\r\n // #region ApplicationPermissions\r\n handleSetApplicationPermission = (applicationPermissionType: ApplicationPermissionType, value: boolean) => {\r\n const applicationPermissions = this.state.applicationPermissions.slice(0);\r\n const applicationPermission = applicationPermissions.find(i => EnumHelper.isEqual(i.type, applicationPermissionType));\r\n if (!applicationPermission) return;\r\n applicationPermission.level = value ? 2 : 0;\r\n this.setState({\r\n applicationPermissions\r\n });\r\n this.setUnitApplicationPermissionTypeVisible(applicationPermissionType, value);\r\n };\r\n // #endregion ApplicationPermissions\r\n\r\n // #region Company Groups\r\n handleCompanyGroupsRemoved = (ids: string[]) => {\r\n if (!ids || ids.length < 1) return;\r\n this.setState({\r\n companyGroups: this.state.companyGroups.filter(i => ids.indexOf(i.id) < 0),\r\n companyDataWasModified: true\r\n });\r\n };\r\n \r\n handleCompanyGroupsAdded = (newCompanyGroups: ICompanyGroupListItem[]) => {\r\n if (!newCompanyGroups || newCompanyGroups.length < 1) return;\r\n this.setState({\r\n companyGroups: this.state.companyGroups.concat(newCompanyGroups),\r\n companyDataWasModified: true\r\n });\r\n };\r\n // #endregion Company Groups\r\n\r\n // #region Partner Companies\r\n handlePartnerCompaniesRemoved = (ids: string[]) => {\r\n if (!ids || ids.length < 1) return;\r\n this.setState({\r\n partnerCompanies: this.state.partnerCompanies.filter(i => ids.indexOf(i.id) < 0),\r\n companyDataWasModified: true\r\n });\r\n };\r\n \r\n handlePartnerCompaniesAdded = (newPartnerCompanies: ICompanyListItem[]) => {\r\n if (!newPartnerCompanies || newPartnerCompanies.length < 1) return;\r\n this.setState({\r\n partnerCompanies: this.state.partnerCompanies.concat(newPartnerCompanies),\r\n companyDataWasModified: true\r\n });\r\n };\r\n // #endregion Partner Companies\r\n\r\n // #region ExternalSystems\r\n handleToggeExternalSystemInUse = (code: string, value: boolean) => {\r\n if (!code) return;\r\n const externalSystems = this.state.externalSystems.slice(0);\r\n const externalSystem = externalSystems.find(i => i.code === code);\r\n if (!externalSystem) return;\r\n externalSystem.inUse = value;\r\n this.setState({ externalSystems });\r\n };\r\n\r\n handleChangeExternalSystemExternalCode = (code: string, value: string) => {\r\n if (!code) return;\r\n const externalSystems = this.state.externalSystems.slice(0);\r\n const externalSystem = externalSystems.find(i => i.code === code);\r\n if (!externalSystem) return;\r\n externalSystem.externalCode = value;\r\n this.setState({ externalSystems });\r\n };\r\n // #endregion ExternalSystems\r\n\r\n // #region IntraModules\r\n handleToggeIntraModuleInUse = (code: string, value: boolean) => {\r\n if (!code) return;\r\n const intraModules = this.state.intraModules.slice(0);\r\n const intraModule = intraModules.find(i => i.code === code);\r\n if (!intraModule) return;\r\n intraModule.inUse = value;\r\n this.setState({ intraModules });\r\n };\r\n\r\n handleChangeIntraModuleExternalCode = (code: string, value: string) => {\r\n if (!code) return;\r\n const intraModules = this.state.intraModules.slice(0);\r\n const intraModule = intraModules.find(i => i.code === code);\r\n if (!intraModule) return;\r\n intraModule.externalCode = value;\r\n this.setState({ intraModules });\r\n };\r\n // #endregion IntraModules\r\n\r\n getSaveDataFromState = async (props: ICompanyEditProp, state: ICompanyEditState): Promise => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.id);\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"code\", state.code);\r\n result.append(\"name\", state.name);\r\n result.append(\"postalAddress\", state.postalAddress);\r\n result.append(\"postalCode\", state.postalCode);\r\n result.append(\"city\", state.city);\r\n result.append(\"phone\", state.phone);\r\n result.append(\"email\", state.email);\r\n result.append(\"internet\", state.internet);\r\n result.append(\"businessIdentityCode\", state.businessIdentityCode);\r\n result.append(\"contactPerson\", state.contactPerson);\r\n result.append(\"pageFooterText\", state.pageFooterText);\r\n result.append(\"styleClass\", state.styleClass);\r\n result.append(\"customStyleClass\", state.customStyleClass);\r\n result.append(\"documentRootPath\", state.documentRootPath);\r\n result.append(\"bannerPath\", state.bannerPath);\r\n result.append(\"loginUrl\", state.loginUrl);\r\n result.append(\"tiedostoturvaUseType\", state.tiedostoturvaUseType);\r\n result.append(\"activeState\", state.activeState);\r\n result.append(\"documentPreviewLogType\", state.documentPreviewLogType);\r\n result.append(\"fileStorageQuota\", state.fileStorageQuota);\r\n result.append(\"eInvoiceAddress\", state.eInvoiceAddress);\r\n result.append(\"eInvoiceOperator\", state.eInvoiceOperator);\r\n result.append(\"resetLogo\", state.resetLogo);\r\n result.append(\"resetLogoSquare\", state.resetLogoSquare);\r\n if (state.logoFile) {\r\n result.append(\"logoAttachments\", await SaveAttachmentBase64.fromFileAttachments([state.logoFile]));\r\n }\r\n if (state.logoSquareFile) {\r\n result.append(\"logoSquareAttachments\", await SaveAttachmentBase64.fromFileAttachments([state.logoSquareFile]));\r\n }\r\n result.append(\"minPasswordLength\", state.minPasswordLength);\r\n // units\r\n const saveUnitNodeIds = state.saveUnitNodeIds.slice(0);\r\n for (const unitModuleNode of state.unitModuleNodes) {\r\n if (unitModuleNode.getIsRoot()) continue;\r\n let modified = false;\r\n for (const usage of unitModuleNode.usages) {\r\n if (usage.visible) continue;\r\n if (!usage.inUse) continue;\r\n usage.inUse = false;\r\n modified = true;\r\n }\r\n if (modified && saveUnitNodeIds.indexOf(unitModuleNode.id) > -1) {\r\n saveUnitNodeIds.push(unitModuleNode.id);\r\n }\r\n }\r\n result.append(\"units\", state.unitModuleNodes.reduce((result, unitModuleNode) => {\r\n if (saveUnitNodeIds.indexOf(unitModuleNode.id) > -1) {\r\n result.push(new UnitModuleNodeSave(unitModuleNode));\r\n }\r\n return result;\r\n }, []));\r\n result.append(\"removeUnitIds\", state.removeUnitNodeIds);\r\n // application permissions\r\n result.append(\"applicationPermissions\", state.applicationPermissions.map(i => new ApplicationPermissionSave(i)));\r\n // externalSystems\r\n result.append(\"externalSystems\", state.externalSystems.reduce((result, externalSystem) => {\r\n if (externalSystem.inUse) {\r\n result.push(new UserSaveExternalSystem(externalSystem));\r\n }\r\n return result;\r\n }, []));\r\n // externalSystems\r\n result.append(\"intraModules\", state.intraModules.reduce((result, intraModule) => {\r\n if (intraModule.inUse) {\r\n result.push(new CompanySaveIntraModule(intraModule));\r\n }\r\n return result;\r\n }, []));\r\n // new company\r\n result.append(\"administratorCode\", state.administratorCode);\r\n result.append(\"administratorPassword\", state.administratorPassword);\r\n result.append(\"administratorFirstName\", state.administratorFirstName);\r\n result.append(\"administratorLastName\", state.administratorLastName);\r\n result.append(\"copyDocumentsFromCompanyCode\", state.copyDocumentsFromCompanyCode);\r\n result.append(\"fileFilterIds\", state.fileFilterIds);\r\n result.append(\"messageTypeIds\", state.messageTypeIds);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.code) {\r\n AppUtils.showErrorMessage(Translations.CompanyCodeMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (!state.name) {\r\n AppUtils.showErrorMessage(Translations.CompanyNameMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (!Base.isValidEmailAddress(state.email)) {\r\n AppUtils.showErrorMessage(Translations.EmailAddressMustBeValid);\r\n return resolve(false);\r\n }\r\n if (state.minPasswordLength < minimumPasswordLength) {\r\n AppUtils.showErrorMessage(String.format(Translations.MinimumPasswordLengthMustBeAtLeastParameterCharacters, minimumPasswordLength.toString(10)));\r\n return resolve(false);\r\n }\r\n if (state.minPasswordLength > maximumPasswordLength) {\r\n AppUtils.showErrorMessage(String.format(Translations.MaximumPasswordLengthCanParameterCharacters, maximumPasswordLength.toString(10)));\r\n return resolve(false);\r\n }\r\n if (state.company.isNew()) {\r\n if (!state.administratorCode) {\r\n AppUtils.showErrorMessage(Translations.AdministratorUserCodeMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (!state.administratorPassword) {\r\n AppUtils.showErrorMessage(Translations.AdministratorPasswordMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (!Base.isValidUserCode(state.administratorCode)) {\r\n AppUtils.showErrorMessage(Translations.UserCodeMustBeValid);\r\n return resolve(false);\r\n }\r\n const errorMessage = Base.isValidPassword(state.administratorPassword, state.minPasswordLength);\r\n if (errorMessage) {\r\n AppUtils.showErrorMessage(errorMessage);\r\n return resolve(false);\r\n }\r\n }\r\n if (props.onDialog && props.sessionState.isSuperAdmin && !state.documentRootPath) {\r\n AppUtils.showErrorMessage(Translations.DocumentRootPathMustBeDefined);\r\n return resolve(false);\r\n }\r\n for (const externalSystem of state.externalSystems) {\r\n if (!externalSystem.inUse) continue;\r\n if (!externalSystem.externalCode) {\r\n AppUtils.showErrorMessage(Translations.ExternalSystemCompanyCodeMustBeDefined);\r\n return resolve(false);\r\n }\r\n }\r\n for (const intraModule of state.intraModules) {\r\n if (!intraModule.inUse) continue;\r\n if (intraModule.usesExternalCode && !intraModule.externalCode) {\r\n AppUtils.showErrorMessage(Translations.ExternalIntraSystemCompanyTokenMustBeDefined);\r\n return resolve(false);\r\n }\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDbUser = async (closeDialog: boolean): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n const saveData = await this.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = await AppUtils.callService(() => companyService.saveCompanyEdit(saveData.obj));\r\n if (!result) return null;\r\n props.onRefreshSessionState();\r\n this.orgStateHash = saveData.hash;\r\n this.setState({\r\n rowId: result.rowId\r\n });\r\n await this.loadCompany();\r\n if (!props.onAfterSave) {\r\n if (result.styleChanged) {\r\n window.location.reload();\r\n }\r\n return !!result;\r\n }\r\n props.onAfterSave(closeDialog, result.styleChanged);\r\n return !!result;\r\n };\r\n\r\n saveToDbAdmin = async (closeDialog: boolean): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n const saveData = await this.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = await AppUtils.callService(() => companyService.saveCompanyEditAdmin(saveData.obj));\r\n if (!result) return null;\r\n if (result.refreshSessionState) {\r\n props.onRefreshSessionState();\r\n }\r\n const newSaveData = await this.getSaveDataFromState(props, { ...state, rowId: result.rowId });\r\n this.orgStateHash = newSaveData.hash;\r\n this.setState({\r\n rowId: result.rowId\r\n });\r\n props.onAfterSave(closeDialog, result.styleChanged);\r\n return !!result;\r\n };\r\n\r\n saveToDb = async (closeDialog: boolean): Promise => {\r\n return !this.props.onDialog\r\n ? await this.saveToDbUser(closeDialog)\r\n : await this.saveToDbAdmin(closeDialog);\r\n };\r\n\r\n save = async () => {\r\n await this.saveToDb(true);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.company) return null;\r\n return (\r\n <>\r\n {props.viewMode === CompanyEditViewMode.General &&\r\n \r\n }\r\n {props.viewMode === CompanyEditViewMode.Units &&\r\n \r\n }\r\n {props.viewMode === CompanyEditViewMode.NewCompany &&\r\n \r\n }\r\n {props.viewMode === CompanyEditViewMode.Permissions &&\r\n \r\n }\r\n {props.viewMode === CompanyEditViewMode.CompanyGroups &&\r\n \r\n }\r\n {props.viewMode === CompanyEditViewMode.Partners &&\r\n \r\n }\r\n {props.viewMode === CompanyEditViewMode.ExternalSystems &&\r\n \r\n }\r\n {props.viewMode === CompanyEditViewMode.IntraModules &&\r\n \r\n }\r\n {state.showUnitDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","// CompanyEditDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { removeConfirmationWord } from \"ui/Scripts/source/models/consts\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { ICompanyEdit } from \"../../../models/company/companyEdit\";\r\nimport { ICompanyEditItem } from \"../../../models/company/companyEditItem\";\r\nimport * as companyService from \"../../../models/services/companyService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { ConfirmationButton } from \"../../framework/Button/ConfirmationButton\";\r\nimport { DangerButton } from \"../../framework/Button/DangerButton\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { DialogTabs } from \"../../framework/Dialog/DialogTabs\";\r\nimport { CompanyEdit as CompanyEditView, CompanyEditViewMode } from \"../CompanyEdit\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\n//CompanyEditDialog\r\nexport interface ICompanyEditDialogProp {\r\n sessionState: ISessionState;\r\n companyId: string;\r\n classes?: string;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n defaultMenuItem: CompanyEditViewMode;\r\n onOk: () => void;\r\n onCancel: (listRefreshNeeded: boolean) => void;\r\n onRefreshList: () => Promise;\r\n onNewSaved: (companyId: string) => void;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onRefreshSessionState: () => void;\r\n}\r\n\r\nexport interface ICompanyEditDialogState {\r\n companyEditViewMode: CompanyEditViewMode;\r\n companyEdit: ICompanyEdit;\r\n company: ICompanyEditItem;\r\n}\r\n\r\nexport class CompanyEditDialog extends React.Component {\r\n private companyEditViewRef = React.createRef();\r\n\r\n constructor(props: ICompanyEditDialogProp) {\r\n super(props);\r\n this.state = {\r\n companyEditViewMode: Base.isNullOrUndefined(props.defaultMenuItem) ? CompanyEditViewMode.General : props.defaultMenuItem,\r\n companyEdit: null,\r\n company: null\r\n };\r\n }\r\n\r\n loadCompany = async () => {\r\n const props = this.props;\r\n const result = await AppUtils.callService(() => companyService.getCompanyEdit(props.companyId), false);\r\n if (!result) return;\r\n for (const applicationPermission of result.applicationPermissions) {\r\n result.unitModuleNode.setApplicationPermissionTypeVisible(applicationPermission.type, applicationPermission.level > 0);\r\n }\r\n this.setState({\r\n companyEdit: result,\r\n company: result.company\r\n });\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadCompany();\r\n }\r\n\r\n async componentDidUpdate(prevProps: ICompanyEditDialogProp, prevState: ICompanyEditDialogState): Promise {\r\n const props = this.props;\r\n const prevDefaultMenuItem = Base.isNullOrUndefined(prevProps.defaultMenuItem) ? CompanyEditViewMode.General : prevProps.defaultMenuItem;\r\n const defaultMenuItem = Base.isNullOrUndefined(props.defaultMenuItem) ? CompanyEditViewMode.General : props.defaultMenuItem;\r\n if (prevDefaultMenuItem === defaultMenuItem) return;\r\n this.setState({\r\n companyEditViewMode: defaultMenuItem\r\n });\r\n }\r\n\r\n handleToggleActiveMenuItem = (companyEditViewMode: CompanyEditViewMode) => {\r\n this.setState({ companyEditViewMode });\r\n };\r\n\r\n handleCompanyLoaded = (company: ICompanyEditItem) => {\r\n this.setState({\r\n company\r\n });\r\n };\r\n\r\n getCompanyGroupsEnabled = (): boolean => {\r\n return this.companyEditViewRef && this.companyEditViewRef.current && this.companyEditViewRef.current.getCompanyGroupsEnabled();\r\n };\r\n\r\n getPartnerCompaniesEnabled = (): boolean => {\r\n return this.companyEditViewRef && this.companyEditViewRef.current && this.companyEditViewRef.current.getPartnerCompaniesEnabled();\r\n };\r\n\r\n getExternalSystemsExists = (): boolean => {\r\n return this.companyEditViewRef && this.companyEditViewRef.current && this.companyEditViewRef.current.getExternalSystemsExists();\r\n };\r\n \r\n getExternalIntraSystemsExists = (): boolean => {\r\n return this.companyEditViewRef && this.companyEditViewRef.current && this.companyEditViewRef.current.getExternalIntraSystemsExists();\r\n };\r\n \r\n getCompanyDataWasModified = (): boolean => {\r\n return this.companyEditViewRef && this.companyEditViewRef.current && this.companyEditViewRef.current.getCompanyDataWasModified();\r\n };\r\n\r\n handleSave = () => {\r\n if (this.companyEditViewRef && this.companyEditViewRef.current) {\r\n this.companyEditViewRef.current.save();\r\n }\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.company || state.company.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveCompanyParameter, state.company.code), false, removeConfirmationWord) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await AppUtils.callService(() => companyService.removeCompany(props.companyId));\r\n if (!result) return;\r\n props.onCancel(true);\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n if (this.companyEditViewRef && this.companyEditViewRef.current) {\r\n const cancelResult = await this.companyEditViewRef.current.cancel(false);\r\n if (Base.isNullOrUndefined(cancelResult)) return;\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult) {\r\n props.onOk();\r\n } else {\r\n props.onCancel(this.getCompanyDataWasModified());\r\n }\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n if (!this.companyEditViewRef || !this.companyEditViewRef.current) return false;\r\n const cancelResult = await this.companyEditViewRef.current.cancel(false);\r\n if (Base.isNullOrUndefined(cancelResult)) return false;\r\n if (cancelResult) {\r\n await props.onRefreshList();\r\n }\r\n return true;\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n handleAfterSave = (closeDialog: boolean, styleChanged: boolean) => {\r\n if (!closeDialog) return;\r\n this.props.onOk();\r\n if (!styleChanged) return;\r\n window.location.reload();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.companyEdit) return null;\r\n const company = state.company;\r\n const isNew = !company || company.isNew();\r\n return (\r\n \r\n }\r\n body={\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n {Translations.Remove}\r\n {Translations.Cancel}\r\n {Translations.Save}\r\n \r\n \r\n }\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","// CompanyList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Grid } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { CompanyActiveState, EnumHelper } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { infiniteListPageSize } from \"../../../models/common/webConsts\";\r\nimport { ICompanyListItem } from \"../../../models/company/companyListItem\";\r\nimport { ICompanyListItems } from \"../../../models/company/companyListItems\";\r\nimport * as companyService from \"../../../models/services/companyService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { AddButton } from \"../../framework/Button/AddButton\";\r\nimport { SettingsButton } from \"../../framework/Button/SettingsButton\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { IListUsingComponentState, List } from \"../../framework/List/List\";\r\nimport { ListActionButtons } from \"../../framework/List/ListActionButtons\";\r\nimport { ListCardField } from \"../../framework/List/ListCardField\";\r\nimport { ListContainer } from \"../../framework/List/ListContainer\";\r\nimport { ListDetailsButton } from \"../../framework/List/ListDetailsButton\";\r\nimport { ListLinkValue } from \"../../framework/List/ListLinkValue\";\r\nimport { ListSearchContainer } from \"../../framework/List/ListSearchContainer\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { ListToggleButtons } from \"../../framework/List/ListToggleButtons\";\r\nimport { PageTitle } from \"../../framework/Page/PageTitle\";\r\nimport { ProgressBar } from \"../../framework/ProgressBar/ProgressBar\";\r\nimport { CompanyEditViewMode } from \"../CompanyEdit\";\r\nimport { CompanyEditDialog } from \"../CompanyEditDialog\";\r\n\r\n// CompanyList\r\nexport interface ICompanyListProp {\r\n savedFilter: IListFilterItem;\r\n sessionState: ISessionState;\r\n disableGlobalLoading?: boolean;\r\n preloaded?: boolean;\r\n waitingPreloadedData?: boolean;\r\n list?: ICompanyListItems;\r\n listFilterIsSet: boolean;\r\n companyGroupIds?: string[];\r\n activityState?: string;\r\n dataId?: string;\r\n startDateStr?: string;\r\n endDateStr?: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n reportTabs: React.ReactNode;\r\n onRefreshSessionState: () => void;\r\n onSetSortData: (sortColumn: string, sortOrderIsAsc: boolean) => void;\r\n onOpenFiltersDialog: () => void;\r\n onToggleSettingsDialog: () => void;\r\n}\r\n\r\ninterface ICompanyListState extends IListUsingComponentState {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n waitingPreloadedData: boolean;\r\n pageSize: number;\r\n page: number;\r\n filter: string;\r\n companyGroupIds: string[];\r\n activityState: number;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n listModeIsLine: boolean;\r\n checkedIds: string[];\r\n\r\n // Dialog\r\n editDialogDefaultMenuItem: CompanyEditViewMode;\r\n}\r\n\r\nexport class CompanyList extends React.Component {\r\n constructor(props: ICompanyListProp) {\r\n super(props);\r\n this.state = {\r\n intialized: props.list && !!props.preloaded,\r\n isLoading: false,\r\n waitingPreloadedData: !Base.isNullOrUndefined(props.waitingPreloadedData) ? props.waitingPreloadedData : (props.list ? false : props.preloaded),\r\n page: props.list ? props.list.page : 1,\r\n hasMore: props.list ? props.list.hasMore : true,\r\n filter: \"\",\r\n companyGroupIds: props.companyGroupIds ? props.companyGroupIds.filter(i => i !== Base.emptyGuid) : [],\r\n activityState: props.activityState ? parseInt(props.activityState, 10) : 0,\r\n pageSize: props.list ? props.list.pageSize : infiniteListPageSize,\r\n sortColumn: props.sortColumn,\r\n sortOrderIsAsc: props.sortOrderIsAsc,\r\n listModeIsLine: true,\r\n items: props.list ? props.list.items : [],\r\n selectedId: null,\r\n checkedIds: [],\r\n detailsItem: null,\r\n showEditDialog: false,\r\n editDialogId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false,\r\n editDialogDefaultMenuItem: CompanyEditViewMode.General,\r\n };\r\n }\r\n\r\n searchItems = async (pageSize: number, page: number, filter: string, companyGroupIds: string[], activityState: number, sortColumn: string, sortOrderIsAsc: boolean,\r\n resetItems: boolean, refreshList: boolean, moveNext: boolean = false, setCompanyDialogData: boolean = true) => {\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => companyService.getCompanyListItems(!refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1, filter, companyGroupIds, activityState, sortColumn, sortOrderIsAsc, null, null),\r\n false, this.props.disableGlobalLoading, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const items = List.getListItems(this.state.items, this.state.selectedId, this.state.checkedIds, result.items, resetItems, refreshList);\r\n let selectedId = items.selectedId;\r\n let index = items.items.findIndex(i => i.id === selectedId);\r\n let detailsItem = index > -1 ? items.items[index] : null;\r\n if (moveNext && detailsItem && index < items.items.length - 1) {\r\n index = index + 1;\r\n detailsItem = items.items[index];\r\n selectedId = items.items[index].id;\r\n }\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n companyGroupIds,\r\n activityState,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n selectedId,\r\n checkedIds: items.checkedIds,\r\n detailsItem,\r\n editDialogDefaultMenuItem: setCompanyDialogData ? CompanyEditViewMode.General : this.state.editDialogDefaultMenuItem,\r\n editDialogId: setCompanyDialogData ? (moveNext && detailsItem ? detailsItem.id : \"\") : this.state.editDialogId,\r\n editDialogHasPrevious: setCompanyDialogData ? index > 0 : this.state.editDialogHasPrevious,\r\n editDialogHasNext: setCompanyDialogData ? (index < items.items.length - 1 || result.hasMore) : this.state.editDialogHasNext,\r\n });\r\n this.props.onSetSortData(sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n refreshList = async (setDialogData: boolean = true) => {\r\n const state = this.state;\r\n await this.searchItems(state.pageSize, state.page, state.filter, state.companyGroupIds, state.activityState, state.sortColumn, state.sortOrderIsAsc, false, true, false, setDialogData);\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n if (this.props.preloaded) return;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.companyGroupIds, state.activityState, state.sortColumn, state.sortOrderIsAsc, false, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: ICompanyListProp, prevState: ICompanyListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.waitingPreloadedData) {\r\n if (!props.list || (props.dataId ?? \"\") === (prevProps.dataId ?? \"\")) return;\r\n this.setState({\r\n intialized: true,\r\n waitingPreloadedData: false,\r\n page: props.list.page,\r\n hasMore: props.list.hasMore,\r\n items: props.list.items,\r\n pageSize: props.list.pageSize,\r\n sortColumn: props.list.sortColumn,\r\n sortOrderIsAsc: props.list.sortOrderIsAsc\r\n });\r\n } else {\r\n const prevDataId = prevProps.dataId ? prevProps.dataId : \"\";\r\n const dataId = props.dataId ? props.dataId : \"\";\r\n const prevCompanyGroupIds = prevProps.companyGroupIds ? prevProps.companyGroupIds.filter(i => i !== Base.emptyGuid) : [];\r\n const companyGroupIds = props.companyGroupIds ? props.companyGroupIds.filter(i => i !== Base.emptyGuid) : [];\r\n const prevActivityState = prevProps.activityState ? parseInt(prevProps.activityState, 10) : 0;\r\n const activityState = props.activityState ? parseInt(props.activityState, 10) : 0;\r\n const prevSortColumn = prevProps.sortColumn;\r\n const sortColumn = props.sortColumn;\r\n const prevSortOrderIsAsc = prevProps.sortOrderIsAsc;\r\n const sortOrderIsAsc = props.sortOrderIsAsc;\r\n if (dataId === prevDataId && Base.equalStrArrays(prevCompanyGroupIds, companyGroupIds) && prevActivityState === activityState &&\r\n prevSortColumn === sortColumn && prevSortOrderIsAsc === sortOrderIsAsc) return;\r\n this.searchItems(state.pageSize, state.page, state.filter, companyGroupIds, activityState, sortColumn, sortOrderIsAsc, true, false);\r\n }\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, filter, state.companyGroupIds, state.activityState, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, state.companyGroupIds, state.activityState, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds,\r\n detailsItem: this.state.items.find(i => i.id === selectedId)\r\n });\r\n };\r\n \r\n handleListModeChange = (listModeIsLine: boolean) => {\r\n this.setState({\r\n listModeIsLine,\r\n });\r\n };\r\n\r\n handleListModeToggle = (_event: React.MouseEvent, listModeIsLine: boolean) => {\r\n this.setState({\r\n listModeIsLine,\r\n });\r\n };\r\n\r\n handleAdd = () => {\r\n this.setState({ ...List.getShowEditDialogStateChange(this.state, Base.emptyGuid), editDialogDefaultMenuItem: CompanyEditViewMode.General });\r\n };\r\n\r\n handleOpenLine = (id: string) => {\r\n this.setState({ ...List.getShowEditDialogStateChange(this.state, id), editDialogDefaultMenuItem: CompanyEditViewMode.General });\r\n };\r\n\r\n handleUserDialogOk = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n this.refreshList();\r\n };\r\n\r\n handleUserDialogCancel = (listRefreshNeeded: boolean) => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n if (!listRefreshNeeded) return;\r\n this.refreshList();\r\n };\r\n\r\n handleUserDialogNewSaved = (newCompanyId: string) => {\r\n this.setState({\r\n showEditDialog: true,\r\n editDialogId: newCompanyId,\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false,\r\n editDialogDefaultMenuItem: CompanyEditViewMode.Permissions\r\n });\r\n this.refreshList(false);\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n this.setState(List.getEditDialogItemByIndexStateChange(this.state, index, () => this.searchItems(state.pageSize, state.page + 1, state.filter, state.companyGroupIds, state.activityState, state.sortColumn, state.sortOrderIsAsc, false, false, true)));\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n \r\n {Translations.Settings}\r\n \r\n \r\n {Translations.AddCompany}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 3,\r\n column: \"code\",\r\n content:\r\n \r\n \r\n this.handleOpenLine(item.id)}>{item.code}\r\n \r\n },\r\n { size: 3, column: \"name\", content: item.name },\r\n { size: 2, column: \"activeState\", content: item.activeStateStr },\r\n { size: 3, column: \"groups\", content: item.companyGroupsStr },\r\n {\r\n size: 1,\r\n column: \"usedFileStoragePercent\",\r\n content: <>\r\n {item.fileStorageQuota > 0 &&\r\n \r\n }\r\n \r\n }\r\n ],\r\n id: item.id,\r\n classes: EnumHelper.isEqual(item.activeState, CompanyActiveState.NotInUse) ? \"disabled\" : \"\"\r\n };\r\n })\r\n : null\r\n }\r\n cards={!state.listModeIsLine\r\n ? state.items.map((item) => {\r\n return {\r\n //classes: (EnumHelper.isEqual(item.activeState, CompanyActiveState.NotInUse) ? \" disabled\" : \"\"),\r\n sm: 4,\r\n rows: [\r\n {\r\n cols: [\r\n {\r\n size: 6,\r\n title: Translations.Code,\r\n value:\r\n \r\n \r\n this.handleOpenLine(item.id)}>{item.code}\r\n \r\n },\r\n { size: 6, title: Translations.CompanyName, value: item.name }\r\n ]\r\n },\r\n {\r\n cols: item.fileStorageQuota > 0\r\n ? [\r\n { size: 6, title: Translations.ActiveState, value: item.activeStateStr },\r\n {\r\n size: 6,\r\n title: Translations.UsedQuota,\r\n value:\r\n \r\n }\r\n ]\r\n : [{ title: Translations.ActiveState, value: item.activeStateStr }]\r\n },\r\n {\r\n classes: \"row\",\r\n cols: [\r\n { title: Translations.CompanyGroups, value: item.companyGroupsStr }\r\n ]\r\n }],\r\n id: item.id\r\n };\r\n })\r\n : null\r\n }\r\n lineDetails={state.detailsItem\r\n ? \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {state.detailsItem.fileStorageQuota > 0 &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.handleOpenLine(state.selectedId)}\r\n />\r\n \r\n : null}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpenLine}\r\n />\r\n \r\n {(state.showEditDialog && !!state.editDialogId) &&\r\n this.refreshList(false)}\r\n onPrevious={() => List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n onRefreshSessionState={props.onRefreshSessionState}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IdTitle, IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { ApplicationPermissionType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IListFilterItem, ListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { ISavedListFilter } from \"../../../models/common/savedListFilter\";\r\nimport { ITypedOption } from \"../../../models/common/typedOption\";\r\nimport { ICompanyPageList } from \"../../../models/company/companyPageList\";\r\nimport * as companyService from \"../../../models/services/companyService\";\r\nimport { IAppSessionState } from \"../../../models/store/storeTypes\";\r\nimport { IUnitNodePermissions } from \"../../../models/unit/unitNodePermissions\";\r\nimport { HeaderMenuItem, NavigationMenu } from \"../../app/NavigationMenu\";\r\nimport { UserMenu } from \"../../app/UserMenu\";\r\nimport { ListFilterSaveDialog } from \"../../framework/Filters/ListFilterSaveDialog\";\r\nimport { PageContainer } from \"../../framework/Page/PageContainer\";\r\nimport { PageContent } from \"../../framework/Page/PageContent\";\r\nimport { PageTopBar } from \"../../framework/Page/PageTopBar\";\r\nimport { FilterTabs } from \"../../framework/PageNavMenuItem/FilterTabs\";\r\nimport { UnitPermissionDialog } from \"../../unit/Unit/UnitPermissionDialog\";\r\nimport { CompanyFilterDrawer } from \"../CompanyFilterDrawer/CompanyFilterDrawer\";\r\nimport { CompanyList } from \"../CompanyList/CompanyList\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nconst enum CompanyPageListMenuItem {\r\n None = \"\",\r\n CompanyFilter = \"1\",\r\n SavedFilters = \"2\",\r\n Settings = \"3\"\r\n}\r\n\r\nconst enum CompanyPageListActivityFilterId {\r\n None = \"0\",\r\n Active = \"1\",\r\n InTesting = \"2\",\r\n InActive = \"3\",\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n// CompanyPageList\r\nexport interface ICompanyPageListProps {\r\n appState: IAppSessionState;\r\n dataId: number;\r\n pageList: ICompanyPageList;\r\n onGetCompaniesPage: () => void;\r\n onLogout: () => void;\r\n onSetCulture: (culture: string) => void;\r\n onSaveUserParameters: (parameters: ITypedOption[]) => void;\r\n onRefreshSessionState: () => void;\r\n}\r\n\r\ninterface ICompanyPageListState {\r\n initialized: boolean;\r\n companyGroups: IIdTitle[];\r\n showNavPanel: boolean;\r\n activeMenuItem: CompanyPageListMenuItem;\r\n selectedActivityFilterId: string;\r\n selectedCompanyGroupIds: string[];\r\n activityFilters: IIdTitle[];\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n // Filters\r\n companyFilterIsSet: boolean;\r\n showCompanyFilterDialog: boolean;\r\n companyFilterDialogFilter: IListFilterItem;\r\n filters: IListFilterItem[];\r\n savedFilters: IListFilterItem[];\r\n activeFilterId: string;\r\n activeSavedFilterId: string;\r\n showListFilterSaveDialog: boolean;\r\n listFilterSaveDialogFilter: IListFilterItem;\r\n listFilterSaveDialogGeneralFilter: any;\r\n listFilterSaveDialogReservedNames: string[];\r\n listFilterSaveDialogOnGetGeneralFilter: () => any;\r\n // Properties\r\n dataId: number;\r\n showUnitNodePermissionsDialog: boolean;\r\n unitNodePermissions: IUnitNodePermissions;\r\n}\r\n\r\nexport class CompanyPageList extends React.Component {\r\n getActivityFilters = (): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(CompanyPageListActivityFilterId.None, \"'\" + Translations.All + \"'\"));\r\n result.push(IdTitle.createIdTitle(CompanyPageListActivityFilterId.Active, Translations.InUse));\r\n result.push(IdTitle.createIdTitle(CompanyPageListActivityFilterId.InTesting, Translations.InTesting));\r\n result.push(IdTitle.createIdTitle(CompanyPageListActivityFilterId.InActive, Translations.NotInUse));\r\n return result;\r\n };\r\n \r\n getCompanyGroups = (props: ICompanyPageListProps): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(Base.emptyGuid, \"'\" + Translations.All + \"'\"));\r\n return result.concat(props.pageList ? props.pageList.companyGroups : []);\r\n };\r\n \r\n getFilters = (): IListFilterItem[] => {\r\n const result: IListFilterItem[] = [];\r\n result.push(ListFilterItem.createListFilterItem(Translations.Companies, Translations.Companies,\r\n {\r\n activityFilterId: CompanyPageListActivityFilterId.Active,\r\n companyGroupIds: []\r\n }, \"code\", true));\r\n ListFilterItem.sortListFilterItems(result);\r\n return result;\r\n };\r\n\r\n getSavedFilters = (props: ICompanyPageListProps): IListFilterItem[] => {\r\n const result: IListFilterItem[] = [];\r\n if (!props || !props.pageList) return result;\r\n for (const companyFilter of props.pageList.companyFilters) {\r\n result.push(ListFilterItem.createListFilterItemFromSavedListFilter(companyFilter, true));\r\n }\r\n for (const userFilter of props.pageList.userFilters) {\r\n result.push(ListFilterItem.createListFilterItemFromSavedListFilter(userFilter, false));\r\n }\r\n ListFilterItem.sortListFilterItems(result);\r\n return result;\r\n };\r\n\r\n getCompanyFilterIsSet = (state: ICompanyPageListState): boolean => {\r\n return CompanyFilterDrawer.filterIsSet(state.activityFilters, state.companyGroups,\r\n state.selectedActivityFilterId, state.selectedCompanyGroupIds);\r\n };\r\n\r\n constructor(props: ICompanyPageListProps) {\r\n super(props);\r\n const sessionState = props.appState.state;\r\n const filters = this.getFilters();\r\n const filterProps = ListFilterItem.getFilterProps(filters[0], \"\", true, this.getStateFilterPropsFromGeneralFilter);\r\n const state = {\r\n ...filterProps,\r\n initialized: !!props.pageList,\r\n companyGroups: this.getCompanyGroups(props),\r\n showNavPanel: sessionState.getShowPageNavigation(),\r\n activeMenuItem: props.pageList ? CompanyPageListMenuItem.SavedFilters : CompanyPageListMenuItem.None,\r\n activityFilters: this.getActivityFilters(),\r\n // Filters\r\n companyFilterIsSet: false,\r\n activeFilterId: filters[0].id,\r\n activeSavedFilterId: \"\",\r\n filters,\r\n savedFilters: this.getSavedFilters(props),\r\n showCompanyFilterDialog: false,\r\n companyFilterDialogFilter: null,\r\n showListFilterSaveDialog: false,\r\n listFilterSaveDialogFilter: null,\r\n listFilterSaveDialogGeneralFilter: null,\r\n listFilterSaveDialogReservedNames: [],\r\n listFilterSaveDialogOnGetGeneralFilter: null,\r\n // Properties\r\n dataId: props.dataId,\r\n showUnitNodePermissionsDialog: false,\r\n unitNodePermissions: null\r\n };\r\n this.state = {\r\n ...state,\r\n companyFilterIsSet: this.getCompanyFilterIsSet(state)\r\n };\r\n }\r\n\r\n componentDidMount(): void {\r\n this.props.onGetCompaniesPage();\r\n }\r\n\r\n componentDidUpdate(prevProps: ICompanyPageListProps, prevState: ICompanyPageListState): void {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n if (prevProps.dataId === props.dataId &&\r\n Base.equalStrArrays(prevProps.pageList ? prevProps.pageList.companyGroups.map(i => i.id) : [], props.pageList ? props.pageList.companyGroups.map(i => i.id) : [])) return;\r\n const activeMenuItem = state.initialized || !props.pageList\r\n ? state.activeMenuItem\r\n : CompanyPageListMenuItem.SavedFilters;\r\n const savedFilters = this.getSavedFilters(props);\r\n const activeSavedFilterId = savedFilters.find(i => i.id === state.activeSavedFilterId)\r\n ? state.activeSavedFilterId\r\n : \"\";\r\n const stateChange = {\r\n dataId: props.dataId,\r\n initialized: !!props.pageList,\r\n showNavPanel: state.initialized ? state.showNavPanel : sessionState.getShowPageNavigation(),\r\n activeMenuItem,\r\n companyGroups: this.getCompanyGroups(props),\r\n savedFilters,\r\n activeSavedFilterId\r\n };\r\n const newState = { ...state, ...stateChange };\r\n this.setState({\r\n ...stateChange,\r\n companyFilterIsSet: this.getCompanyFilterIsSet(newState)\r\n });\r\n }\r\n\r\n handleToggleShowNavPanel = () => {\r\n this.setState({ showNavPanel: !this.state.showNavPanel });\r\n };\r\n\r\n handleToggleActiveMenuItem = (userPageMenuItem: CompanyPageListMenuItem) => {\r\n this.setState({ activeMenuItem: this.state.activeMenuItem !== userPageMenuItem ? userPageMenuItem : CompanyPageListMenuItem.None });\r\n };\r\n \r\n handleSetSelectedActivityFilterId = (selectedActivityFilterId: string, checked: boolean) => {\r\n if (!checked) return;\r\n this.setState({ selectedActivityFilterId });\r\n };\r\n\r\n handleToggleCompanyGroup = (companyGroupId: string, checked: boolean) => {\r\n const state = this.state;\r\n let selectedCompanyGroupIds = state.selectedCompanyGroupIds.filter(i => i !== Base.emptyGuid);\r\n if (companyGroupId === Base.emptyGuid) {\r\n if (checked) {\r\n this.setState({ selectedCompanyGroupIds: [Base.emptyGuid] });\r\n return;\r\n } else if (selectedCompanyGroupIds.length < 1 && state.companyGroups.length > 0) {\r\n selectedCompanyGroupIds.push(state.companyGroups[0].id);\r\n }\r\n this.setState({ selectedCompanyGroupIds });\r\n } else {\r\n if (checked) {\r\n if (selectedCompanyGroupIds.indexOf(companyGroupId) < 0) {\r\n selectedCompanyGroupIds.push(companyGroupId);\r\n }\r\n } else {\r\n selectedCompanyGroupIds = selectedCompanyGroupIds.filter(i => i !== companyGroupId);\r\n }\r\n }\r\n if (selectedCompanyGroupIds.length < 1) {\r\n selectedCompanyGroupIds.push(Base.emptyGuid);\r\n }\r\n this.setState({ selectedCompanyGroupIds });\r\n };\r\n\r\n // #region Saved Filter\r\n getGeneralFilterFromState = (state: ICompanyPageListState): any => {\r\n return {\r\n activityFilterId: state.selectedActivityFilterId ? parseInt(state.selectedActivityFilterId, 10) : 0,\r\n companyGroupIds: state.selectedCompanyGroupIds ? state.selectedCompanyGroupIds.filter(i => i !== Base.emptyGuid) : []\r\n };\r\n };\r\n\r\n getStateFilterPropsFromGeneralFilter = (generalFilter: any): any => {\r\n return {\r\n selectedActivityFilterId: generalFilter && !Base.isNullOrUndefined(generalFilter.activityFilterId) ? generalFilter.activityFilterId.toString(10) : CompanyPageListActivityFilterId.Active,\r\n selectedCompanyGroupIds: generalFilter && generalFilter.companyGroupIds && generalFilter.companyGroupIds.length > 0 ? generalFilter.companyGroupIds : [Base.emptyGuid]\r\n };\r\n };\r\n \r\n getFilterPropsWithState = (listItemFilter: IListFilterItem) => {\r\n const state = this.state;\r\n let result = {\r\n selectedActivityFilterId: state.selectedActivityFilterId,\r\n selectedCompanyGroupIds: state.selectedCompanyGroupIds,\r\n sortColumn: state.sortColumn,\r\n sortOrderIsAsc: state.sortOrderIsAsc\r\n };\r\n if (listItemFilter) {\r\n result = ListFilterItem.getFilterProps(listItemFilter, result.sortColumn, result.sortOrderIsAsc, this.getStateFilterPropsFromGeneralFilter);\r\n }\r\n return result;\r\n };\r\n\r\n handleChangeActiveFilter = (activeFilterId: string) => {\r\n const state = this.state;\r\n const filter = state.filters.find(i => i.id === activeFilterId);\r\n if (!filter) return;\r\n const filterProps = this.getFilterPropsWithState(filter);\r\n const activeSavedFilterId = \"\";\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId };\r\n this.setState({\r\n ...filterProps,\r\n activeFilterId,\r\n activeSavedFilterId: \"\",\r\n companyFilterIsSet: this.getCompanyFilterIsSet(newState)\r\n });\r\n };\r\n\r\n handleChangeActiveSavedFilter = (activeSavedFilterId: string) => {\r\n const state = this.state;\r\n const savedFilter = state.savedFilters.find(i => i.id === activeSavedFilterId);\r\n if (!savedFilter) return;\r\n const filterProps = this.getFilterPropsWithState(savedFilter);\r\n const activeFilterId = \"\";\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId };\r\n this.setState({\r\n ...filterProps,\r\n activeFilterId,\r\n activeSavedFilterId,\r\n companyFilterIsSet: this.getCompanyFilterIsSet(newState)\r\n });\r\n };\r\n\r\n handleRemoveSavedFilter = async (savedFilterId: string) => {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n const savedFilter = state.savedFilters.find(i => i.id === savedFilterId);\r\n if (!savedFilter) return;\r\n const result = await ListFilterSaveDialog.removeListFilterFromDb(state.savedFilters, sessionState.companyId, savedFilterId, savedFilter.isShared, ApplicationPermissionType.Company);\r\n if (!result) return;\r\n const savedFilters = state.savedFilters.filter(i => i.id !== savedFilterId);\r\n let activeFilterId = \"\";\r\n let activeSavedFilterId = \"\";\r\n let newfilter: IListFilterItem = null;\r\n if (savedFilters.length > 0) {\r\n newfilter = savedFilters[0];\r\n activeSavedFilterId = newfilter.id;\r\n } else if (state.filters.length > 0) {\r\n newfilter = state.filters[0];\r\n activeFilterId = newfilter.id;\r\n }\r\n const filterProps = this.getFilterPropsWithState(newfilter);\r\n const activeMenuItem = activeSavedFilterId ? CompanyPageListMenuItem.SavedFilters : CompanyPageListMenuItem.None;\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId, activeMenuItem, savedFilters };\r\n this.setState({\r\n ...filterProps,\r\n showCompanyFilterDialog: false,\r\n activeFilterId,\r\n activeSavedFilterId,\r\n activeMenuItem,\r\n savedFilters,\r\n companyFilterIsSet: this.getCompanyFilterIsSet(newState)\r\n });\r\n };\r\n\r\n handleFilterSortData = (sortColumn: string, sortOrderIsAsc: boolean) => {\r\n this.setState({\r\n sortColumn,\r\n sortOrderIsAsc,\r\n });\r\n };\r\n\r\n updateFiltersAfterSave = (orgFilterId: string, savedListFilter: ISavedListFilter, isShared: boolean) => {\r\n if (!savedListFilter) return;\r\n const state = this.state;\r\n const savedFilters = state.savedFilters.filter(i => i.id !== orgFilterId || i.isShared !== isShared);\r\n const filter = ListFilterItem.createListFilterItemFromSavedListFilter(savedListFilter, isShared);\r\n savedFilters.push(filter);\r\n ListFilterItem.sortListFilterItems(savedFilters);\r\n this.setState({\r\n showListFilterSaveDialog: false,\r\n savedFilters,\r\n activeFilterId: \"\",\r\n activeSavedFilterId: savedListFilter.id,\r\n activeMenuItem: CompanyPageListMenuItem.SavedFilters,\r\n companyFilterDialogFilter: filter\r\n });\r\n };\r\n\r\n getActiveFilter = (): IListFilterItem => {\r\n const state = this.state;\r\n return state.activeFilterId\r\n ? state.filters.find(i => i.id === state.activeFilterId)\r\n : state.savedFilters.find(i => i.id === state.activeSavedFilterId);\r\n };\r\n\r\n handleSaveListFilter = async (saveAs: boolean, onGetGeneralFilter: () => any) => {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n const filter = this.getActiveFilter();\r\n if (!filter) return;\r\n if (!saveAs) {\r\n const savedListFilter = await ListFilterSaveDialog.saveListFilterToDb(filter, this.getGeneralFilterFromState(state), state.sortColumn, state.sortOrderIsAsc, sessionState.companyId, ApplicationPermissionType.Company);\r\n this.updateFiltersAfterSave(filter.id, savedListFilter, filter.isShared);\r\n } else {\r\n this.setState({\r\n showListFilterSaveDialog: true,\r\n listFilterSaveDialogFilter: filter,\r\n listFilterSaveDialogReservedNames: state.savedFilters.map(i => i.id).concat(state.filters.map(i => i.title)),\r\n listFilterSaveDialogGeneralFilter: this.getGeneralFilterFromState(state),\r\n listFilterSaveDialogOnGetGeneralFilter: onGetGeneralFilter\r\n });\r\n }\r\n };\r\n\r\n handleSaveListFilterDialogOk = (savedListFilter: ISavedListFilter, isShared: boolean) => {\r\n this.updateFiltersAfterSave(\"\", savedListFilter, isShared);\r\n };\r\n\r\n handleSaveListFilterDialogCancel = () => {\r\n this.setState({\r\n showListFilterSaveDialog: false\r\n });\r\n };\r\n // #endregion Saved Filter\r\n\r\n // #region Company Filter\r\n handleOpenCompanyFilterDialog = () => {\r\n const filter = this.getActiveFilter();\r\n if (!filter) return;\r\n this.setState({\r\n showCompanyFilterDialog: true,\r\n companyFilterDialogFilter: filter\r\n });\r\n };\r\n\r\n onCompanyFilterDialogOk = (closeDialog: boolean, selectedActivityFilterId: string, selectedCompanyGroupIds: string[]): any => {\r\n const newState = { ...this.state, selectedActivityFilterId, selectedCompanyGroupIds };\r\n this.setState({\r\n showCompanyFilterDialog: !closeDialog,\r\n selectedActivityFilterId,\r\n selectedCompanyGroupIds,\r\n companyFilterIsSet: this.getCompanyFilterIsSet(newState)\r\n });\r\n return this.getGeneralFilterFromState(newState);\r\n };\r\n \r\n onCompanyFilterDialogCancel = () => {\r\n this.setState({ showCompanyFilterDialog: false });\r\n };\r\n // #endregion Company Filter\r\n\r\n handleOpenPermissions = async () => {\r\n const sessionState = this.props.appState.state;\r\n const result = await AppUtils.callService(() => companyService.getUnitNodePermissions(sessionState.companyId), false);\r\n if (!result) return;\r\n this.setState({\r\n showUnitNodePermissionsDialog: true,\r\n unitNodePermissions: result\r\n });\r\n };\r\n\r\n handlePermissionsDialogOk = () => {\r\n this.setState({\r\n dataId: Base.getRandomIntInteger(1000000),\r\n showUnitNodePermissionsDialog: false\r\n });\r\n };\r\n\r\n handlePermissionsDialogCancel = () => {\r\n this.setState({\r\n showUnitNodePermissionsDialog: false\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n i.id === state.activeSavedFilterId) : null}\r\n sessionState={sessionState}\r\n dataId={state.dataId.toString(10)}\r\n preloaded={true}\r\n waitingPreloadedData={true}\r\n list={props.pageList?.list}\r\n listFilterIsSet={state.companyFilterIsSet}\r\n companyGroupIds={state.selectedCompanyGroupIds}\r\n activityState={state.selectedActivityFilterId}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n onRefreshSessionState={props.onRefreshSessionState}\r\n onSetSortData={this.handleFilterSortData}\r\n reportTabs={\r\n \r\n }\r\n onOpenFiltersDialog={this.handleOpenCompanyFilterDialog}\r\n onToggleSettingsDialog={this.handleOpenPermissions}\r\n />\r\n \r\n {state.showUnitNodePermissionsDialog &&\r\n \r\n }\r\n \r\n {state.showListFilterSaveDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","import { Badge, Tab, Tabs } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\ninterface IPageTab {\r\n id: string;\r\n title: string;\r\n badgeContent?: number;\r\n disabled?: boolean;\r\n hidden?: boolean;\r\n}\r\n\r\ninterface IPageTabsProps {\r\n activeTabId: string;\r\n tabs: IPageTab[];\r\n changeTab: (tabId: string) => void;\r\n}\r\n\r\nexport const PageTabs = (props: IPageTabsProps) => {\r\n const handleChangeViewTab = (\r\n _event: React.SyntheticEvent,\r\n newValue: string\r\n ) => {\r\n props.changeTab(newValue);\r\n };\r\n\r\n return (\r\n \r\n {props.tabs.map(\r\n (tab) =>\r\n !tab.hidden && (\r\n 0\r\n ? (\r\n \r\n {tab.title}\r\n \r\n )\r\n : (\r\n tab.title\r\n )\r\n }\r\n value={tab.id}\r\n disabled={tab.disabled}\r\n />\r\n )\r\n )}\r\n \r\n );\r\n};\r\n","import { Box, CardActions, CardContent } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { ITypedOption } from \"../../../models/common/typedOption\";\r\nimport { ICompanyEditItem } from \"../../../models/company/companyEditItem\";\r\nimport * as companyService from \"../../../models/services/companyService\";\r\nimport { IAppSessionState } from \"../../../models/store/storeTypes\";\r\nimport { IUnitNodePermissions } from \"../../../models/unit/unitNodePermissions\";\r\nimport { HeaderMenuItem, NavigationMenu } from \"../../app/NavigationMenu\";\r\nimport { UserMenu } from \"../../app/UserMenu\";\r\nimport { ConfirmationButton } from \"../../framework/Button/ConfirmationButton\";\r\nimport { SettingsButton } from \"../../framework/Button/SettingsButton\";\r\nimport { ListContainer } from \"../../framework/List/ListContainer\";\r\nimport { PageContainer } from \"../../framework/Page/PageContainer\";\r\nimport { PageContent } from \"../../framework/Page/PageContent\";\r\nimport { PageTabs } from \"../../framework/Page/PageTabs\";\r\nimport { PageTitle } from \"../../framework/Page/PageTitle\";\r\nimport { PageTopBar } from \"../../framework/Page/PageTopBar\";\r\nimport { UnitPermissionDialog } from \"../../unit/Unit/UnitPermissionDialog\";\r\nimport { CompanyEdit as CompanyEditView, CompanyEditViewMode } from \"../CompanyEdit\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nconst enum CompanyPageEditMenuItem {\r\n None = \"\",\r\n General = \"1\",\r\n Units = \"2\",\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n// CompanyPageEdit\r\nexport interface ICompanyPageEditProps {\r\n appState: IAppSessionState;\r\n dataId: number;\r\n onLogout: () => void;\r\n onSetCulture: (culture: string) => void;\r\n onSaveUserParameters: (parameters: ITypedOption[]) => void;\r\n onRefreshSessionState: () => void;\r\n}\r\n\r\ninterface ICompanyPageEditState {\r\n showNavPanel: boolean;\r\n activeMenuItem: CompanyPageEditMenuItem;\r\n settingsActive: boolean;\r\n company: ICompanyEditItem;\r\n // Properties\r\n showUnitNodePermissionsDialog: boolean;\r\n unitNodePermissions: IUnitNodePermissions;\r\n}\r\n\r\nexport class CompanyPageEdit extends React.Component {\r\n private companyEditViewRef = React.createRef();\r\n\r\n constructor(props: ICompanyPageEditProps) {\r\n super(props);\r\n const sessionState = props.appState.state;\r\n this.state = {\r\n showNavPanel: sessionState.getShowPageNavigation(),\r\n activeMenuItem: CompanyPageEditMenuItem.General,\r\n settingsActive: false,\r\n showUnitNodePermissionsDialog: false,\r\n unitNodePermissions: null,\r\n company: null\r\n };\r\n }\r\n\r\n handleToggleShowNavPanel = () => {\r\n this.setState({ showNavPanel: !this.state.showNavPanel });\r\n };\r\n\r\n handleToggleActiveMenuItem = (userPageMenuItem: CompanyPageEditMenuItem) => {\r\n this.setState({\r\n activeMenuItem: this.state.activeMenuItem !== userPageMenuItem ? userPageMenuItem : CompanyPageEditMenuItem.None,\r\n settingsActive: false\r\n });\r\n };\r\n\r\n handleSave = async () => {\r\n if (this.companyEditViewRef && this.companyEditViewRef.current) {\r\n this.companyEditViewRef.current.save();\r\n }\r\n };\r\n\r\n handleNavigateOutCheck = async (): Promise => {\r\n if (this.companyEditViewRef && this.companyEditViewRef.current) {\r\n return await this.companyEditViewRef.current.canNavigateOut();\r\n } else {\r\n return true;\r\n }\r\n };\r\n\r\n handleCompanyLoaded = (company: ICompanyEditItem) => {\r\n this.setState({\r\n company\r\n });\r\n };\r\n\r\n handleOpenPermissions = async () => {\r\n const sessionState = this.props.appState.state;\r\n const result = await AppUtils.callService(() => companyService.getUnitNodePermissions(sessionState.companyId), false);\r\n if (!result) return;\r\n this.setState({\r\n showUnitNodePermissionsDialog: true,\r\n unitNodePermissions: result\r\n });\r\n };\r\n\r\n handlePermissionsDialogOk = () => {\r\n this.setState({\r\n showUnitNodePermissionsDialog: false\r\n });\r\n };\r\n\r\n handlePermissionsDialogCancel = () => {\r\n this.setState({\r\n showUnitNodePermissionsDialog: false\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n const companyName = state.company ? state.company.name : \"\";\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n <>\r\n \r\n {sessionState.isCompanyAdmin &&\r\n \r\n {Translations.Settings}\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {Translations.Save}\r\n \r\n \r\n \r\n \r\n \r\n {state.showUnitNodePermissionsDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { ITypedOption } from \"../../../models/common/typedOption\";\r\nimport { ICompanyPage } from \"../../../models/company/companyPage\";\r\nimport { CompanyPageList } from \"../CompanyPageList\";\r\nimport { CompanyPageEdit } from \"../CompanyPageEdit\";\r\nimport { IAppSessionState } from \"../../../models/store/storeTypes\";\r\nimport { recordLockManager } from \"../../../models/services/recordLockService\";\r\nimport { abortManager } from \"source/models/services/tokenService\";\r\n\r\n// CompanyPage\r\nexport interface ICompanyPageOwnProps {\r\n}\r\n\r\nexport interface ICompanyPageStateProps {\r\n appState: IAppSessionState;\r\n dataId: number;\r\n companyPage: ICompanyPage;\r\n}\r\n\r\nexport interface ICompanyPageDispatchProps {\r\n onGetCompaniesPage: () => void;\r\n onLogout: () => void;\r\n onSetCulture: (culture: string) => void;\r\n onSaveUserParameters: (parameters: ITypedOption[]) => void;\r\n onRefreshSessionState: () => void;\r\n}\r\n\r\ntype CompanyPageProp = ICompanyPageOwnProps & ICompanyPageStateProps & ICompanyPageDispatchProps;\r\n\r\nexport class CompanyPage extends React.Component {\r\n constructor(props: CompanyPageProp) {\r\n super(props);\r\n abortManager.abortAll(); //Abort all abortable calls regardless of module\r\n }\r\n\r\n componentDidMount(): void {\r\n const sessionState = this.props.appState.state;\r\n recordLockManager.unlockAll(sessionState?.companyId, sessionState?.code);\r\n }\r\n \r\n render() {\r\n const props = this.props;\r\n const sessionState = props.appState.state;\r\n if (sessionState.isSuperAdmin) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n }\r\n}","/* eslint-disable no-unused-vars */\r\nimport * as React from \"react\";\r\n/* eslint-enable no-unused-vars */\r\nimport { connect } from \"react-redux\";\r\nimport { IApplicationState } from \"../../models/store/storeTypes\";\r\nimport * as storeEffects from \"../../models/store/storeEffects\";\r\nimport { ICompanyPageOwnProps, ICompanyPageStateProps, ICompanyPageDispatchProps, CompanyPage } from \"../../components/company/CompanyPage\";\r\nimport { ITypedOption } from \"../../models/common/typedOption\";\r\n\r\nexport function mapStateToProps(applicationState: IApplicationState, ownProps: ICompanyPageOwnProps): ICompanyPageStateProps {\r\n if (!applicationState || !applicationState.front) {\r\n return {\r\n appState: null,\r\n dataId: -1,\r\n companyPage: null\r\n };\r\n }\r\n const companies = applicationState.companies;\r\n return {\r\n appState: applicationState.session,\r\n dataId: companies.dataId,\r\n companyPage: companies.companyPage\r\n };\r\n}\r\n\r\nexport function mapDispatchToProps(dispatch: storeEffects.LogThunkDispatch): ICompanyPageDispatchProps {\r\n return {\r\n onGetCompaniesPage: () => dispatch(storeEffects.getCompaniesPage()),\r\n onLogout: () => dispatch(storeEffects.logout()),\r\n onSetCulture: (culture: string) => dispatch(storeEffects.setCulture(culture)),\r\n onSaveUserParameters: (parameters: ITypedOption[]) => dispatch(storeEffects.saveUserParameters(parameters)),\r\n onRefreshSessionState: () => dispatch(storeEffects.refreshSessionState()),\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CompanyPage);","// CompanyGroupEditDialogCompanyList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Alert, Box, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Base } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/framework/base\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as companyGroupService from \"../../../models/services/companyGroupService\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { DialogListContainer } from \"../../framework/Dialog/DialogListContainer\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListIconButtonsItem } from \"../../framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { CompanyListItem, ICompanyListItem } from \"source/models/company/companyListItem\";\r\nimport { CompanyActiveState, EnumHelper } from \"ui/Scripts/source/models/enums\";\r\nimport { SelectCompanyDialog } from \"source/components/company/SelectCompanyDialog/SelectCompanyDialog\";\r\n\r\n// CompanyGroupEditDialogCompanyList\r\nexport interface ICompanyGroupEditDialogCompanyListProp {\r\n isReadOnly: boolean;\r\n companyGroupId: string;\r\n companies: ICompanyListItem[];\r\n onRemoved: (ids: string[]) => void;\r\n onAdded: (users: ICompanyListItem[]) => void;\r\n}\r\n\r\ninterface ICompanyGroupEditDialogCompanyListState {\r\n // List\r\n isLoading: boolean;\r\n companies: ICompanyListItem[];\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n selectedId: string;\r\n checkedIds: string[];\r\n\r\n // Dialog\r\n showSelectCompanyDialog: boolean;\r\n}\r\n\r\nexport class CompanyGroupEditDialogCompanyList extends React.Component {\r\n constructor(props: ICompanyGroupEditDialogCompanyListProp) {\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n companies: props.companies ? props.companies.slice(0) : [],\r\n filter: \"\",\r\n sortColumn: \"code\",\r\n sortOrderIsAsc: true,\r\n selectedId: null,\r\n checkedIds: [],\r\n showSelectCompanyDialog: false,\r\n };\r\n }\r\n\r\n filteredList = (filter: string, column: string, asc: boolean) => {\r\n const props = this.props;\r\n let companies = props.companies ? props.companies.slice(0) : [];\r\n if (filter) {\r\n const lowFilter = filter.toLowerCase();\r\n companies = companies.filter(i => i.code.toLowerCase().indexOf(lowFilter) > -1 || i.name.toLowerCase().indexOf(lowFilter) > -1);\r\n }\r\n CompanyListItem.sortCompanyListItems(companies, column, asc);\r\n this.setState({\r\n filter,\r\n sortColumn: column,\r\n sortOrderIsAsc: asc,\r\n companies,\r\n });\r\n };\r\n\r\n componentDidUpdate(prevProps: ICompanyGroupEditDialogCompanyListProp, prevState: ICompanyGroupEditDialogCompanyListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (Base.equalStrArrays(prevProps.companies ? prevProps.companies.map(i => i.id) : [], props.companies ? props.companies.map(i => i.id) : [])) return;\r\n this.filteredList(state.filter, state.sortColumn, state.sortOrderIsAsc);\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.filteredList(filter, state.sortColumn, state.sortOrderIsAsc);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.filteredList(state.filter, sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n getRemoveSaveData = (props: ICompanyGroupEditDialogCompanyListProp, companyIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.companyGroupId);\r\n result.append(\"companyIds\", companyIds);\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n if (selectedIds.length < 1) return;\r\n const saveData = this.getRemoveSaveData(props, selectedIds);\r\n // Call server\r\n const result = await AppUtils.callService(() => companyGroupService.companyGroupEditRemoveCompanies(saveData.obj));\r\n if (!result) return;\r\n props.onRemoved(selectedIds);\r\n };\r\n \r\n handleAdd = () => {\r\n this.setState({\r\n showSelectCompanyDialog: true\r\n });\r\n };\r\n\r\n getAddSaveData = (props: ICompanyGroupEditDialogCompanyListProp, companyIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.companyGroupId);\r\n result.append(\"companyIds\", companyIds);\r\n return result;\r\n };\r\n\r\n onSelectCompanyDialogOk = async (companies: ICompanyListItem[]) => {\r\n const props = this.props;\r\n if (!companies || companies.length < 1) return;\r\n this.setState({\r\n showSelectCompanyDialog: false\r\n });\r\n const saveData = this.getAddSaveData(this.props, companies.map(i => i.id));\r\n // Call server\r\n const result = await AppUtils.callService(() => companyGroupService.companyGroupEditAddCompanies(saveData.obj));\r\n if (!result) return;\r\n props.onAdded(companies);\r\n };\r\n\r\n onSelectCompanyDialogCancel = () => {\r\n this.setState({\r\n showSelectCompanyDialog: false\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n \r\n }\r\n rightItems={\r\n \r\n }\r\n />\r\n {!!props.isReadOnly &&\r\n {Translations.NewCompanyGroupMustBeSavedBeforeUsersCanBeAdded}\r\n }\r\n {!props.isReadOnly &&\r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 5,\r\n column: \"code\",\r\n content:\r\n \r\n \r\n {company.code}\r\n \r\n },\r\n { size: 5, column: \"name\", content: company.name },\r\n { size: 2, column: \"activeState\", content: company.activeStateStr },\r\n ],\r\n id: company.id,\r\n classes: EnumHelper.isEqual(company.activeState, CompanyActiveState.NotInUse) ? \"disabled\" : \"\"\r\n };\r\n })\r\n }\r\n noDataMessage={Translations.AddCompanies}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n />\r\n }\r\n {state.showSelectCompanyDialog &&\r\n i.id)}\r\n onOk={this.onSelectCompanyDialogOk}\r\n onCancel={this.onSelectCompanyDialogCancel}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","// CompanyGroupEditDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { removeConfirmationWord } from \"ui/Scripts/source/models/consts\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as companyGroupService from \"../../../models/services/companyGroupService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { DialogTabs } from \"../../framework/Dialog/DialogTabs\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { DialogButtons } from \"source/components/framework/Dialog/DialogButtons\";\r\nimport { ICompanyListItem } from \"source/models/company/companyListItem\";\r\nimport { ICompanyGroupEditItem } from \"source/models/companyGroup/companyGroupEditItem\";\r\nimport { CompanyGroupEditDialogCompanyList } from \"../CompanyGroupEditDialogCompanyList\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum CompanyGroupDialogMenuItem {\r\n General = \"1\",\r\n Companies = \"2\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n//CompanyGroupEditDialog\r\nexport interface ICompanyGroupEditDialogProp {\r\n sessionState: ISessionState;\r\n defaultMenuItem: CompanyGroupDialogMenuItem;\r\n companyGroupId: string;\r\n classes?: string;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onOk: () => void;\r\n onCancel: (companyGroupDataWasModified: boolean) => void;\r\n onNewSaved: (companyGroupId: string) => void;\r\n onRefreshList: () => Promise;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n}\r\n\r\nexport interface ICompanyGroupEditDialogState {\r\n activeMenuItem: CompanyGroupDialogMenuItem;\r\n isLoading: boolean;\r\n companyGroupDataWasModified: boolean;\r\n companyGroup: ICompanyGroupEditItem;\r\n id: string;\r\n code: string;\r\n name: string;\r\n comment: string;\r\n authorizationLevel: number;\r\n rowId: string;\r\n companies: ICompanyListItem[];\r\n}\r\n\r\nexport class CompanyGroupEditDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: ICompanyGroupEditDialogProp) {\r\n super(props);\r\n this.state = {\r\n activeMenuItem: Base.isNullOrUndefined(props.defaultMenuItem) ? CompanyGroupDialogMenuItem.General : props.defaultMenuItem,\r\n isLoading: false,\r\n companyGroupDataWasModified: false,\r\n companyGroup: null,\r\n id: \"\",\r\n code: \"\",\r\n name: \"\",\r\n comment: \"\",\r\n authorizationLevel: 0,\r\n rowId: \"\",\r\n companies: [],\r\n };\r\n }\r\n\r\n loadCompanyGroup = async () => {\r\n const props = this.props;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => companyGroupService.getCompanyGroupEdit(props.companyGroupId), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const companyGroup = result.companyGroup;\r\n const state = {\r\n ...this.state,\r\n companyGroup,\r\n id: companyGroup.id,\r\n code: companyGroup.code,\r\n name: companyGroup.name,\r\n comment: companyGroup.comment,\r\n rowId: companyGroup.rowId,\r\n companies: result.companies,\r\n };\r\n this.setState(state);\r\n const saveData = this.getSaveDataFromState(props, state);\r\n this.orgStateHash = saveData.hash;\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadCompanyGroup();\r\n }\r\n\r\n async componentDidUpdate(prevProps: ICompanyGroupEditDialogProp, prevState: ICompanyGroupEditDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevDefaultMenuItem = Base.isNullOrUndefined(prevProps.defaultMenuItem) ? CompanyGroupDialogMenuItem.General : prevProps.defaultMenuItem;\r\n const defaultMenuItem = Base.isNullOrUndefined(props.defaultMenuItem) ? CompanyGroupDialogMenuItem.General : props.defaultMenuItem;\r\n if (prevProps.companyGroupId === props.companyGroupId) return;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb()) return;\r\n props.onRefreshList();\r\n }\r\n await this.loadCompanyGroup();\r\n if (prevDefaultMenuItem !== defaultMenuItem) {\r\n this.setState({\r\n activeMenuItem: defaultMenuItem\r\n });\r\n }\r\n }\r\n\r\n handleToggleActiveMenuItem = (companyGroupDialogMenuItem: CompanyGroupDialogMenuItem) => {\r\n this.setState({ activeMenuItem: companyGroupDialogMenuItem });\r\n };\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"xts\") {\r\n this.setState({ code: value });\r\n } else if (name === \"name\") {\r\n this.setState({ name: value });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n } else if (name === \"authorizationLevel\") {\r\n this.setState({ authorizationLevel: value.toInteger() });\r\n }\r\n };\r\n \r\n // #region Users\r\n handleUsersRemoved = (ids: string[]) => {\r\n if (!ids || ids.length < 1) return;\r\n this.setState({\r\n companies: this.state.companies.filter(i => ids.indexOf(i.id) < 0),\r\n companyGroupDataWasModified: true\r\n });\r\n };\r\n \r\n handleUsersAdded = (newCompanies: ICompanyListItem[]) => {\r\n if (!newCompanies || newCompanies.length < 1) return;\r\n this.setState({\r\n companies: this.state.companies.concat(newCompanies),\r\n companyGroupDataWasModified: true\r\n });\r\n };\r\n // #endregion User Groups\r\n\r\n getSaveDataFromState = (props: ICompanyGroupEditDialogProp, state: ICompanyGroupEditDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"id\", state.id);\r\n result.append(\"code\", state.code);\r\n result.append(\"name\", state.name);\r\n result.append(\"comment\", state.comment);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.code) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.UserCodeMustBeDefined));\r\n return resolve(false);\r\n }\r\n if (!state.name) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.NameMustBeDefined));\r\n return resolve(false);\r\n }\r\n //validateDefaultEventHandlers\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = await AppUtils.callService(() => companyGroupService.saveCompanyGroupEdit(saveData.obj));\r\n if (!result) return null;\r\n this.orgStateHash = saveData.hash;\r\n return result;\r\n };\r\n\r\n handleSave = async () => {\r\n const props = this.props;\r\n const result = await this.saveToDb();\r\n if (!result) return;\r\n const isNew = this.state.companyGroup.isNew();\r\n if (!isNew) {\r\n props.onOk();\r\n } else {\r\n props.onNewSaved(result.id);\r\n }\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.companyGroup.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveCompanyGroupParameter, state.companyGroup.code), false, removeConfirmationWord) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await AppUtils.callService(() => companyGroupService.removeCompanyGroup(state.companyGroup.id));\r\n if (!result) return;\r\n props.onCancel(true);\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel(state.companyGroupDataWasModified);\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut(this.getSaveDataFromState(props, this.state).hash, this.orgStateHash, async () => !!await this.saveToDb(), props.onRefreshList);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.companyGroup) return null;\r\n const isNew = state.companyGroup.isNew();\r\n return (\r\n \r\n }\r\n body={\r\n <>\r\n {state.activeMenuItem === CompanyGroupDialogMenuItem.General &&\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {state.activeMenuItem === CompanyGroupDialogMenuItem.Companies &&\r\n <>\r\n \r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}/>\r\n );\r\n }\r\n}","// CompanyGroupList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Grid } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { infiniteListPageSize } from \"../../../models/common/webConsts\";\r\nimport * as companyGroupService from \"../../../models/services/companyGroupService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { AddButton } from \"../../framework/Button/AddButton\";\r\nimport { SettingsButton } from \"../../framework/Button/SettingsButton\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { IListUsingComponentState, List } from \"../../framework/List/List\";\r\nimport { ListCardField } from \"../../framework/List/ListCardField\";\r\nimport { ListContainer } from \"../../framework/List/ListContainer\";\r\nimport { ListDetailsButton } from \"../../framework/List/ListDetailsButton\";\r\nimport { ListLinkValue } from \"../../framework/List/ListLinkValue\";\r\nimport { ListSearchContainer } from \"../../framework/List/ListSearchContainer\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { ListToggleButtons } from \"../../framework/List/ListToggleButtons\";\r\nimport { PageTitle } from \"../../framework/Page/PageTitle\";\r\nimport { EllipsisTypography } from \"../../framework/Typography/EllipsisTypography\";\r\nimport { IPageNavMenuItemActionsAction } from \"source/components/framework/PageNavMenuItem/Actions\";\r\nimport { ICompanyGroupListItems } from \"source/models/companyGroup/companyGroupListItems\";\r\nimport { ICompanyGroupListItem } from \"source/models/companyGroup/companyGroupListItem\";\r\nimport { CompanyGroupDialogMenuItem, CompanyGroupEditDialog } from \"../CompanyGroupEditDialog\";\r\n\r\n// CompanyGroupList\r\nexport interface ICompanyGroupListProp {\r\n savedFilter: IListFilterItem;\r\n sessionState: ISessionState;\r\n disableGlobalLoading?: boolean;\r\n preloaded?: boolean;\r\n waitingPreloadedData?: boolean;\r\n list?: ICompanyGroupListItems;\r\n dataId?: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n reportTabs: React.ReactNode;\r\n settingsActions: IPageNavMenuItemActionsAction[];\r\n onRefreshSessionState: () => void;\r\n onSetSortData: (sortColumn: string, sortOrderIsAsc: boolean) => void;\r\n //onOpenFiltersDialog: () => void;\r\n onToggleSettingsDialog: () => void;\r\n}\r\n\r\ninterface ICompanyGroupListState extends IListUsingComponentState {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n waitingPreloadedData: boolean;\r\n pageSize: number;\r\n page: number;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n listModeIsLine: boolean;\r\n checkedIds: string[];\r\n\r\n // Dialog\r\n editDialogDefaultMenuItem: CompanyGroupDialogMenuItem;\r\n}\r\n\r\nexport class CompanyGroupList extends React.Component {\r\n constructor(props: ICompanyGroupListProp) {\r\n super(props);\r\n this.state = {\r\n intialized: props.list && !!props.preloaded,\r\n isLoading: false,\r\n waitingPreloadedData: !Base.isNullOrUndefined(props.waitingPreloadedData) ? props.waitingPreloadedData : (props.list ? false : props.preloaded),\r\n page: props.list ? props.list.page : 1,\r\n hasMore: props.list ? props.list.hasMore : true,\r\n filter: \"\",\r\n pageSize: props.list ? props.list.pageSize : infiniteListPageSize,\r\n sortColumn: props.sortColumn,\r\n sortOrderIsAsc: props.sortOrderIsAsc,\r\n listModeIsLine: true,\r\n items: props.list ? props.list.items : [],\r\n selectedId: null,\r\n checkedIds: [],\r\n detailsItem: null,\r\n showEditDialog: false,\r\n editDialogId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false,\r\n editDialogDefaultMenuItem: CompanyGroupDialogMenuItem.General\r\n };\r\n }\r\n\r\n searchItems = async (pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean,\r\n resetItems: boolean, refreshList: boolean, moveNext: boolean = false, setCompanyGroupDialogData: boolean = true) => {\r\n const state = this.state;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => companyGroupService.getCompanyGroupListItems(!refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1, filter, [], sortColumn, sortOrderIsAsc),\r\n false, this.props.disableGlobalLoading, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const items = List.getListItems(state.items, state.selectedId, state.checkedIds, result.items, resetItems, refreshList);\r\n let selectedId = items.selectedId;\r\n let index = items.items.findIndex(i => i.id === selectedId);\r\n let detailsItem = index > -1 ? items.items[index] : null;\r\n if (moveNext && detailsItem && index < items.items.length - 1) {\r\n index = index + 1;\r\n detailsItem = items.items[index];\r\n selectedId = items.items[index].id;\r\n }\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n selectedId,\r\n checkedIds: items.checkedIds,\r\n detailsItem,\r\n editDialogId: setCompanyGroupDialogData ? (moveNext && detailsItem ? detailsItem.id : \"\") : this.state.editDialogId,\r\n editDialogHasPrevious: setCompanyGroupDialogData ? index > 0 : this.state.editDialogHasPrevious,\r\n editDialogHasNext: setCompanyGroupDialogData ? (index < items.items.length - 1 || result.hasMore) : this.state.editDialogHasNext,\r\n editDialogDefaultMenuItem: setCompanyGroupDialogData ? CompanyGroupDialogMenuItem.General : this.state.editDialogDefaultMenuItem\r\n });\r\n this.props.onSetSortData(sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n refreshList = async (setCompanyGroupDialogData: boolean = true) => {\r\n const state = this.state;\r\n await this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, true, false, setCompanyGroupDialogData);\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n if (this.props.preloaded) return;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: ICompanyGroupListProp, prevState: ICompanyGroupListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.waitingPreloadedData) {\r\n if (!props.list || (props.dataId ?? \"\") === (prevProps.dataId ?? \"\")) return;\r\n this.setState({\r\n intialized: true,\r\n waitingPreloadedData: false,\r\n page: props.list.page,\r\n hasMore: props.list.hasMore,\r\n items: props.list.items,\r\n pageSize: props.list.pageSize,\r\n sortColumn: props.list.sortColumn,\r\n sortOrderIsAsc: props.list.sortOrderIsAsc\r\n });\r\n } else {\r\n const prevDataId = prevProps.dataId ? prevProps.dataId : \"\";\r\n const dataId = props.dataId ? props.dataId : \"\";\r\n const prevSortColumn = prevProps.sortColumn;\r\n const sortColumn = props.sortColumn;\r\n const prevSortOrderIsAsc = prevProps.sortOrderIsAsc;\r\n const sortOrderIsAsc = props.sortOrderIsAsc;\r\n if (dataId === prevDataId && prevSortColumn === sortColumn && prevSortOrderIsAsc === sortOrderIsAsc) return;\r\n this.searchItems(state.pageSize, state.page, state.filter, sortColumn, sortOrderIsAsc, true, false);\r\n }\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds,\r\n detailsItem: this.state.items.find(i => i.id === selectedId)\r\n });\r\n };\r\n \r\n handleListModeChange = (listModeIsLine: boolean) => {\r\n this.setState({\r\n listModeIsLine,\r\n });\r\n };\r\n\r\n handleAdd = () => {\r\n this.setState({ ...List.getShowEditDialogStateChange(this.state, Base.emptyGuid), editDialogDefaultMenuItem: CompanyGroupDialogMenuItem.General });\r\n };\r\n\r\n handleOpenLine = (id: string) => {\r\n this.setState({ ...List.getShowEditDialogStateChange(this.state, id), editDialogDefaultMenuItem: CompanyGroupDialogMenuItem.General });\r\n };\r\n\r\n handleCompanyGroupDialogOk = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n this.refreshList();\r\n };\r\n\r\n handleCompanyGroupDialogCancel = (userDataWasModified: boolean) => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n if (!userDataWasModified) return;\r\n this.refreshList();\r\n };\r\n\r\n handleCompanyGroupDialogNewSaved = (newCompanyGroupId: string) => {\r\n this.setState({\r\n showEditDialog: true,\r\n editDialogId: newCompanyGroupId,\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false,\r\n editDialogDefaultMenuItem: CompanyGroupDialogMenuItem.Companies\r\n });\r\n this.refreshList(false);\r\n };\r\n\r\n handleListModeToggle = (_event: React.MouseEvent, listModeIsLine: boolean) => {\r\n this.setState({\r\n listModeIsLine,\r\n });\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n this.setState(List.getEditDialogItemByIndexStateChange(this.state, index, () => this.searchItems(state.pageSize, state.page + 1, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false, true)));\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n {props.settingsActions.length > 0 &&\r\n \r\n {Translations.Settings}\r\n \r\n }\r\n \r\n {Translations.AddCompanyGroup}\r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n {\r\n return {\r\n columns: [\r\n { size: 4, column: \"code\", content: this.handleOpenLine(item.id)}>{item.code} },\r\n { size: 4, column: \"name\", content: item.name },\r\n { size: 4, column: \"comment\", content: item.comment }\r\n ],\r\n id: item.id\r\n };\r\n })\r\n : null\r\n }\r\n cards={!state.listModeIsLine\r\n ? state.items.map((item) => {\r\n return {\r\n sm: 4,\r\n rows: [\r\n {\r\n cols: [\r\n { size: 6, title: Translations.Code, value: this.handleOpenLine(item.id)}>{item.code} },\r\n { size: 6, title: Translations.Name, value: item.name }\r\n ]\r\n },\r\n {\r\n cols: [\r\n { title: Translations.Description, value: item.comment },\r\n ]\r\n },\r\n {\r\n cols: [\r\n {\r\n title: Translations.Companies,\r\n value:\r\n i.name), \", \")}>\r\n {item.companies.map((company, index) =>\r\n \r\n {index > 0 &&\r\n \r\n }\r\n {company.name}\r\n \r\n )}\r\n \r\n }\r\n ]\r\n }],\r\n id: item.id\r\n };\r\n })\r\n : null\r\n }\r\n lineDetails={state.detailsItem\r\n ? \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n i.name), \", \")}>\r\n {state.detailsItem.companies.map((company, index) =>\r\n (index < 10\r\n ? \r\n {index > 0 &&\r\n \r\n }\r\n {company.name}\r\n \r\n : null\r\n )\r\n )}\r\n {state.detailsItem.companies.length > 6 &&\r\n {\" + (\" + (state.detailsItem.companies.length - 10).toString(10) + \")\"}\r\n }\r\n \r\n } />\r\n \r\n \r\n \r\n \r\n this.handleOpenLine(state.selectedId)}\r\n />\r\n \r\n : null}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpenLine}\r\n />\r\n \r\n {(state.showEditDialog && !!state.editDialogId) &&\r\n this.refreshList(false)}\r\n onNewSaved={this.handleCompanyGroupDialogNewSaved}\r\n onPrevious={() => List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IListFilterItem, ListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { ITypedOption } from \"../../../models/common/typedOption\";\r\nimport * as companyGroupService from \"../../../models/services/companyGroupService\";\r\nimport { IAppSessionState } from \"../../../models/store/storeTypes\";\r\nimport { IUnitNodePermissions } from \"../../../models/unit/unitNodePermissions\";\r\nimport { HeaderMenuItem, NavigationMenu } from \"../../app/NavigationMenu\";\r\nimport { UserMenu } from \"../../app/UserMenu\";\r\nimport { PageContainer } from \"../../framework/Page/PageContainer\";\r\nimport { PageContent } from \"../../framework/Page/PageContent\";\r\nimport { PageTopBar } from \"../../framework/Page/PageTopBar\";\r\nimport { FilterTabs } from \"../../framework/PageNavMenuItem/FilterTabs\";\r\nimport { IPageNavMenuItemActionsAction } from \"source/components/framework/PageNavMenuItem/Actions\";\r\nimport { ICompanyGroupPage } from \"source/models/companyGroup/companyGroupPage\";\r\nimport { CompanyGroupList } from \"../CompanyGroupList\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { UnitPermissionDialog } from \"source/components/unit/Unit/UnitPermissionDialog\";\r\nimport { abortManager } from \"source/models/services/tokenService\";\r\n\r\n// CompanyPage\r\nexport interface ICompanyGroupPageOwnProps {\r\n}\r\n\r\nexport interface ICompanyGroupPageStateProps {\r\n appState: IAppSessionState;\r\n dataId: number;\r\n companyGroupPage: ICompanyGroupPage;\r\n}\r\n\r\nexport interface ICompanyGroupPageDispatchProps {\r\n onGetCompanyGroupsPage: () => void;\r\n onLogout: () => void;\r\n onSetCulture: (culture: string) => void;\r\n onSaveUserParameters: (parameters: ITypedOption[]) => void;\r\n onRefreshSessionState: () => void;\r\n}\r\n\r\ntype CompanyGroupPageProp = ICompanyGroupPageOwnProps & ICompanyGroupPageStateProps & ICompanyGroupPageDispatchProps;\r\n\r\ninterface ICompanyGroupPageState {\r\n initialized: boolean;\r\n showNavPanel: boolean;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n settingsActions: IPageNavMenuItemActionsAction[];\r\n // Filters\r\n companyGroupFilterIsSet: boolean;\r\n showCompanyGroupFilterDialog: boolean;\r\n companyGroupFilterDialogFilter: IListFilterItem;\r\n filters: IListFilterItem[];\r\n savedFilters: IListFilterItem[];\r\n activeFilterId: string;\r\n activeSavedFilterId: string;\r\n showListFilterSaveDialog: boolean;\r\n listFilterSaveDialogFilter: IListFilterItem;\r\n listFilterSaveDialogGeneralFilter: any;\r\n listFilterSaveDialogReservedNames: string[];\r\n listFilterSaveDialogOnGetGeneralFilter: () => any;\r\n // Properties\r\n dataId: number;\r\n showUnitNodePermissionsDialog: boolean;\r\n unitNodePermissions: IUnitNodePermissions;\r\n}\r\n\r\nexport class CompanyGroupPage extends React.Component {\r\n getFilters = (): IListFilterItem[] => {\r\n const result: IListFilterItem[] = [];\r\n result.push(ListFilterItem.createListFilterItem(Translations.CompanyGroups, Translations.CompanyGroups,\r\n {\r\n }, \"name\", true));\r\n ListFilterItem.sortListFilterItems(result);\r\n return result;\r\n };\r\n\r\n getSavedFilters = (props: CompanyGroupPageProp): IListFilterItem[] => {\r\n const result: IListFilterItem[] = [];\r\n if (!props || !props.companyGroupPage) return result;\r\n for (const companyFilter of props.companyGroupPage.companyFilters) {\r\n result.push(ListFilterItem.createListFilterItemFromSavedListFilter(companyFilter, true));\r\n }\r\n for (const userFilter of props.companyGroupPage.userFilters) {\r\n result.push(ListFilterItem.createListFilterItemFromSavedListFilter(userFilter, false));\r\n }\r\n ListFilterItem.sortListFilterItems(result);\r\n return result;\r\n };\r\n\r\n getCompanyGroupFilterIsSet = (state: ICompanyGroupPageState): boolean => {\r\n return false;\r\n // return CompanyGroupFilterDrawer.filterIsSet(state.authorizationLevelFilters,\r\n // state.authorizationLevelId);\r\n };\r\n\r\n getSettingsActions = (): IPageNavMenuItemActionsAction[] => {\r\n const props = this.props;\r\n const sessionState = props.appState.state;\r\n const result: IPageNavMenuItemActionsAction[] = [];\r\n if (sessionState.isCompanyAdmin) {\r\n result.push({ title: Translations.Permissions, onClick: this.handleOpenPermissions });\r\n }\r\n return result;\r\n };\r\n\r\n constructor(props: CompanyGroupPageProp) {\r\n super(props);\r\n abortManager.abortAll(); //Abort all abortable calls regardless of module\r\n const sessionState = props.appState.state;\r\n const filters = this.getFilters();\r\n const filterProps = ListFilterItem.getFilterProps(filters[0], \"\", true, this.getStateFilterPropsFromGeneralFilter);\r\n const state = {\r\n ...filterProps,\r\n initialized: !!props.companyGroupPage,\r\n showNavPanel: sessionState.getShowPageNavigation(),\r\n activeCompanyId: sessionState.companyId,\r\n settingsActions: this.getSettingsActions(),\r\n // Filters\r\n companyGroupFilterIsSet: false,\r\n activeFilterId: filters[0].id,\r\n activeSavedFilterId: \"\",\r\n filters,\r\n savedFilters: this.getSavedFilters(props),\r\n showCompanyGroupFilterDialog: false,\r\n companyGroupFilterDialogFilter: null,\r\n showListFilterSaveDialog: false,\r\n listFilterSaveDialogFilter: null,\r\n listFilterSaveDialogGeneralFilter: null,\r\n listFilterSaveDialogReservedNames: [],\r\n listFilterSaveDialogOnGetGeneralFilter: null,\r\n // Properties\r\n dataId: props.dataId,\r\n showUnitNodePermissionsDialog: false,\r\n unitNodePermissions: null\r\n };\r\n this.state = {\r\n ...state,\r\n companyGroupFilterIsSet: this.getCompanyGroupFilterIsSet(state)\r\n };\r\n }\r\n\r\n componentDidMount(): void {\r\n this.props.onGetCompanyGroupsPage();\r\n }\r\n\r\n componentDidUpdate(prevProps: CompanyGroupPageProp, prevState: ICompanyGroupPageState): void {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n if (prevProps.dataId === props.dataId) return;\r\n const savedFilters = this.getSavedFilters(props);\r\n const activeSavedFilterId = savedFilters.find(i => i.id === state.activeSavedFilterId)\r\n ? state.activeSavedFilterId\r\n : \"\";\r\n const stateChange = {\r\n dataId: props.dataId,\r\n initialized: !!props.companyGroupPage,\r\n showNavPanel: state.initialized ? state.showNavPanel : sessionState.getShowPageNavigation(),\r\n savedFilters,\r\n activeSavedFilterId\r\n };\r\n const newState = { ...state, ...stateChange };\r\n this.setState({\r\n ...stateChange,\r\n companyGroupFilterIsSet: this.getCompanyGroupFilterIsSet(newState),\r\n settingsActions: this.getSettingsActions(),\r\n });\r\n }\r\n\r\n handleToggleShowNavPanel = () => {\r\n this.setState({ showNavPanel: !this.state.showNavPanel });\r\n };\r\n \r\n // handleSetAuthorizationLevelId = (authorizationLevelId: string, checked: boolean) => {\r\n // if (!checked) return;\r\n // this.setState({ authorizationLevelId });\r\n // };\r\n\r\n // #region Saved Filter\r\n getGeneralFilterFromState = (state: ICompanyGroupPageState): any => {\r\n return {\r\n //authorizationLevelId: state.authorizationLevelId ? parseInt(state.authorizationLevelId, 10) : null\r\n };\r\n };\r\n\r\n getStateFilterPropsFromGeneralFilter = (generalFilter: any): any => {\r\n return {\r\n //authorizationLevelId: generalFilter && !Base.isNullOrUndefined(generalFilter.authorizationLevelId) && !isNaN(generalFilter.authorizationLevelId) ? generalFilter.authorizationLevelId.toString(10) : \"\"\r\n };\r\n };\r\n \r\n getFilterPropsWithState = (listItemFilter: IListFilterItem) => {\r\n const state = this.state;\r\n let result = {\r\n sortColumn: state.sortColumn,\r\n sortOrderIsAsc: state.sortOrderIsAsc\r\n };\r\n if (listItemFilter) {\r\n result = ListFilterItem.getFilterProps(listItemFilter, result.sortColumn, result.sortOrderIsAsc, this.getStateFilterPropsFromGeneralFilter);\r\n }\r\n return result;\r\n };\r\n\r\n handleChangeActiveFilter = (activeFilterId: string) => {\r\n const state = this.state;\r\n const filter = state.filters.find(i => i.id === activeFilterId);\r\n if (!filter) return;\r\n const filterProps = this.getFilterPropsWithState(filter);\r\n const activeSavedFilterId = \"\";\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId };\r\n this.setState({\r\n ...filterProps,\r\n activeFilterId,\r\n activeSavedFilterId: \"\",\r\n companyGroupFilterIsSet: this.getCompanyGroupFilterIsSet(newState)\r\n });\r\n };\r\n\r\n handleChangeActiveSavedFilter = (activeSavedFilterId: string) => {\r\n const state = this.state;\r\n const savedFilter = state.savedFilters.find(i => i.id === activeSavedFilterId);\r\n if (!savedFilter) return;\r\n const filterProps = this.getFilterPropsWithState(savedFilter);\r\n const activeFilterId = \"\";\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId };\r\n this.setState({\r\n ...filterProps,\r\n activeFilterId,\r\n activeSavedFilterId,\r\n companyGroupFilterIsSet: this.getCompanyGroupFilterIsSet(newState)\r\n });\r\n };\r\n\r\n // handleRemoveSavedFilter = async (savedFilterId: string) => {\r\n // const state = this.state;\r\n // const savedFilter = state.savedFilters.find(i => i.id === savedFilterId);\r\n // if (!savedFilter) return;\r\n // const activeCompanyId = this.props.appState.state.companyId;\r\n // const result = await ListFilterSaveDialog.removeListFilterFromDb(state.savedFilters, activeCompanyId, savedFilterId, savedFilter.isShared, ApplicationPermissionType.CompanyGroup);\r\n // if (!result) return;\r\n // const savedFilters = state.savedFilters.filter(i => i.id !== savedFilterId);\r\n // let activeFilterId = \"\";\r\n // let activeSavedFilterId = \"\";\r\n // let newfilter: IListFilterItem = null;\r\n // if (savedFilters.length > 0) {\r\n // newfilter = savedFilters[0];\r\n // activeSavedFilterId = newfilter.id;\r\n // } else if (state.filters.length > 0) {\r\n // newfilter = state.filters[0];\r\n // activeFilterId = newfilter.id;\r\n // }\r\n // const filterProps = this.getFilterPropsWithState(newfilter);\r\n // const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId, savedFilters };\r\n // this.setState({\r\n // ...filterProps,\r\n // showCompanyGroupFilterDialog: false,\r\n // activeFilterId,\r\n // activeSavedFilterId,\r\n // savedFilters,\r\n // companyGroupFilterIsSet: this.getCompanyGroupFilterIsSet(newState)\r\n // });\r\n // };\r\n\r\n handleFilterSortData = (sortColumn: string, sortOrderIsAsc: boolean) => {\r\n this.setState({\r\n sortColumn,\r\n sortOrderIsAsc,\r\n });\r\n };\r\n\r\n // updateFiltersAfterSave = (orgFilterId: string, savedListFilter: ISavedListFilter, isShared: boolean) => {\r\n // if (!savedListFilter) return;\r\n // const state = this.state;\r\n // const savedFilters = state.savedFilters.filter(i => i.id !== orgFilterId || i.isShared !== isShared);\r\n // const filter = ListFilterItem.createListFilterItemFromSavedListFilter(savedListFilter, isShared);\r\n // savedFilters.push(filter);\r\n // ListFilterItem.sortListFilterItems(savedFilters);\r\n // this.setState({\r\n // showListFilterSaveDialog: false,\r\n // savedFilters,\r\n // activeFilterId: \"\",\r\n // activeSavedFilterId: savedListFilter.id,\r\n // companyGroupFilterDialogFilter: filter\r\n // });\r\n // };\r\n\r\n // getActiveFilter = (): IListFilterItem => {\r\n // const state = this.state;\r\n // return state.activeFilterId\r\n // ? state.filters.find(i => i.id === state.activeFilterId)\r\n // : state.savedFilters.find(i => i.id === state.activeSavedFilterId);\r\n // };\r\n\r\n // handleSaveListFilter = async (saveAs: boolean, onGetGeneralFilter: () => any) => {\r\n // const state = this.state;\r\n // const filter = this.getActiveFilter();\r\n // if (!filter) return;\r\n // if (!saveAs) {\r\n // const activeCompanyId = this.props.appState.state.companyId;\r\n // const savedListFilter = await ListFilterSaveDialog.saveListFilterToDb(filter, this.getGeneralFilterFromState(state), state.sortColumn, state.sortOrderIsAsc, activeCompanyId, ApplicationPermissionType.CompanyGroup);\r\n // this.updateFiltersAfterSave(filter.id, savedListFilter, filter.isShared);\r\n // } else {\r\n // this.setState({\r\n // showListFilterSaveDialog: true,\r\n // listFilterSaveDialogFilter: filter,\r\n // listFilterSaveDialogReservedNames: state.savedFilters.map(i => i.id).concat(state.filters.map(i => i.title)),\r\n // listFilterSaveDialogGeneralFilter: this.getGeneralFilterFromState(state),\r\n // listFilterSaveDialogOnGetGeneralFilter: onGetGeneralFilter\r\n // });\r\n // }\r\n // };\r\n\r\n // handleSaveListFilterDialogOk = (savedListFilter: ISavedListFilter, isShared: boolean) => {\r\n // this.updateFiltersAfterSave(\"\", savedListFilter, isShared);\r\n // };\r\n\r\n // handleSaveListFilterDialogCancel = () => {\r\n // this.setState({\r\n // showListFilterSaveDialog: false\r\n // });\r\n // };\r\n // #endregion Saved Filter\r\n\r\n // #region CompanyGroup Filter\r\n // handleOpenCompanyGroupFilterDialog = () => {\r\n // const filter = this.getActiveFilter();\r\n // if (!filter) return;\r\n // this.setState({\r\n // showCompanyGroupFilterDialog: true,\r\n // companyGroupFilterDialogFilter: filter\r\n // });\r\n // };\r\n\r\n // onCompanyGroupFilterDialogOk = (closeDialog: boolean): any => {\r\n // const newState = { ...this.state };\r\n // this.setState({\r\n // showCompanyGroupFilterDialog: !closeDialog,\r\n // companyGroupFilterIsSet: this.getCompanyGroupFilterIsSet(newState)\r\n // });\r\n // return this.getGeneralFilterFromState(newState);\r\n // };\r\n \r\n // onCompanyGroupFilterDialogCancel = () => {\r\n // this.setState({ showCompanyGroupFilterDialog: false });\r\n // };\r\n // #endregion CompanyGroup Filter\r\n\r\n handleOpenPermissions = async () => {\r\n const result = await AppUtils.callService(() => companyGroupService.getUnitNodePermissions(), false);\r\n if (!result) return;\r\n this.setState({\r\n showUnitNodePermissionsDialog: true,\r\n unitNodePermissions: result\r\n });\r\n };\r\n\r\n handlePermissionsDialogOk = () => {\r\n this.setState({\r\n dataId: Base.getRandomIntInteger(1000000),\r\n showUnitNodePermissionsDialog: false\r\n });\r\n };\r\n\r\n handlePermissionsDialogCancel = () => {\r\n this.setState({\r\n showUnitNodePermissionsDialog: false\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n i.id === state.activeSavedFilterId) : null}\r\n sessionState={sessionState}\r\n dataId={state.dataId.toString(10)}\r\n preloaded={true}\r\n waitingPreloadedData={true}\r\n list={props.companyGroupPage ? props.companyGroupPage.list : null}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n onRefreshSessionState={props.onRefreshSessionState}\r\n onSetSortData={this.handleFilterSortData}\r\n settingsActions={state.settingsActions}\r\n onToggleSettingsDialog={this.handleOpenPermissions}\r\n //onOpenFiltersDialog={this.handleOpenCompanyGroupFilterDialog}\r\n reportTabs={\r\n \r\n }\r\n />\r\n \r\n {state.showUnitNodePermissionsDialog &&\r\n \r\n }\r\n {/* \r\n {state.showListFilterSaveDialog &&\r\n \r\n } */}\r\n \r\n );\r\n }\r\n}","/* eslint-disable no-unused-vars */\r\nimport * as React from \"react\";\r\n/* eslint-enable no-unused-vars */\r\nimport { connect } from \"react-redux\";\r\nimport { IApplicationState } from \"../../models/store/storeTypes\";\r\nimport * as storeEffects from \"../../models/store/storeEffects\";\r\nimport { ICompanyGroupPageOwnProps, ICompanyGroupPageStateProps, ICompanyGroupPageDispatchProps, CompanyGroupPage } from \"../../components/companyGroup/CompanyGroupPage\";\r\nimport { ITypedOption } from \"../../models/common/typedOption\";\r\n\r\nexport function mapStateToProps(applicationState: IApplicationState, ownProps: ICompanyGroupPageOwnProps): ICompanyGroupPageStateProps {\r\n if (!applicationState || !applicationState.companyGroups) {\r\n return {\r\n appState: null,\r\n dataId: -1,\r\n companyGroupPage: null\r\n };\r\n }\r\n const companyGroups = applicationState.companyGroups;\r\n return {\r\n appState: applicationState.session,\r\n dataId: companyGroups.dataId,\r\n companyGroupPage: companyGroups.companyGroupPage\r\n };\r\n}\r\n\r\nexport function mapDispatchToProps(dispatch: storeEffects.CompanyGroupsThunkDispatch): ICompanyGroupPageDispatchProps {\r\n return {\r\n onGetCompanyGroupsPage: () => dispatch(storeEffects.getCompanyGroupsPage()),\r\n onLogout: () => dispatch(storeEffects.logout()),\r\n onSetCulture: (culture: string) => dispatch(storeEffects.setCulture(culture)),\r\n onSaveUserParameters: (parameters: ITypedOption[]) => dispatch(storeEffects.saveUserParameters(parameters)),\r\n onRefreshSessionState: () => dispatch(storeEffects.refreshSessionState()),\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CompanyGroupPage);","import React from \"react\";\r\nimport { FormControlLabel, Radio } from \"@mui/material\";\r\n\r\ninterface IFormRadioProps {\r\n title: string;\r\n checked: boolean;\r\n onChange: (checked: boolean) => void;\r\n}\r\n\r\nexport const FormRadio = (props: IFormRadioProps) => {\r\n return (\r\n {\r\n props.onChange(checked);\r\n }}\r\n />\r\n }\r\n />\r\n );\r\n};","import * as React from \"react\";\r\nimport { IListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Grid } from \"@mui/material\";\r\nimport { SaveDataObj } from \"source/framework/saveData\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { FormField } from \"source/components/framework/FormField\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { CheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/CheckboxDropdown\";\r\nimport { FilterButtons } from \"source/components/framework/Filters/FilterButtons\";\r\nimport { DrawerContent } from \"source/components/framework/Drawer/DrawerContent\";\r\nimport { PageFilterConditionDrawer } from \"source/components/framework/Page/PageFilterConditionDrawer\";\r\nimport { DatePicker } from \"source/components/framework/DateTime\";\r\nimport { IdTitleDropdown } from \"ui/Scripts/source/components/framework/Dropdown/IdTitleDropdown\";\r\nimport { IDocumentPageFilterLists, IDocumentPageFilterState, IDocumentPageFilterStateWithoutDates } from \"../DocumentPageDashboardChart\";\r\nimport { FormRadio } from \"source/components/framework/FormRadio\";\r\n\r\n//DocumentFilterDrawer\r\nexport interface IDocumentFilterDrawerProp extends IDocumentPageFilterLists, IDocumentPageFilterState {\r\n open: boolean;\r\n filter: IListFilterItem;\r\n canRemoveSharedFilters: boolean;\r\n onSaveFilter: (saveAs: boolean, onGetGeneralFilter: () => any) => void;\r\n onRemoveFilter: (filterId: string) => void;\r\n onOk: (closeDialog: boolean, filterState: IDocumentPageFilterState) => any;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IDocumentFilterDrawerState extends IDocumentPageFilterStateWithoutDates {\r\n startDateStr: string;\r\n endDateStr: string;\r\n startEndDateDisabled: boolean;\r\n documentEndDateStartDateStr: string;\r\n documentEndDateEndDateStr: string;\r\n documentEndDateStartEndDateDisabled: boolean;\r\n}\r\n\r\nexport class DocumentFilterDrawer extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n getStateFromProps = (props: IDocumentFilterDrawerProp): IDocumentFilterDrawerState => {\r\n return {\r\n ...props,\r\n startDateStr: props.selectedStartDate ? Base.timeToDateStr(props.selectedStartDate) : \"\",\r\n endDateStr: props.selectedEndDate ? Base.timeToDateStr(props.selectedEndDate) : \"\",\r\n startEndDateDisabled: props.selectedDynamicTimeFilterId !== props.dynamicTimeFilters[0].id,\r\n documentEndDateStartDateStr: props.selectedDocumentEndDateStartDate ? Base.timeToDateStr(props.selectedDocumentEndDateStartDate) : \"\",\r\n documentEndDateEndDateStr: props.selectedDocumentEndDateEndDate ? Base.timeToDateStr(props.selectedDocumentEndDateEndDate) : \"\",\r\n documentEndDateStartEndDateDisabled: props.selectedDynamicDocumentEndDateFilterId !== props.documentEndDateDynamicTimeFilters[0].id,\r\n };\r\n };\r\n\r\n constructor(props: IDocumentFilterDrawerProp) {\r\n super(props);\r\n this.state = this.getStateFromProps(props);\r\n this.orgStateHash = this.getSaveDataFromState(props, this.state).hash;\r\n }\r\n\r\n componentDidUpdate(prevProps: IDocumentFilterDrawerProp, prevState: IDocumentFilterDrawerState): void {\r\n const props = this.props;\r\n const filterChanged = prevProps.filter?.getHash() !== props.filter?.getHash();\r\n const opened = !prevProps.open && props.open;\r\n if (!filterChanged && !opened) return;\r\n const state = this.getStateFromProps(props);\r\n this.setState(state);\r\n this.orgStateHash = this.getSaveDataFromState(props, state).hash;\r\n }\r\n\r\n // #region ModifyDate\r\n handleChangeDynamicTimeFilterId = (id: string) => {\r\n if (id.toInteger() > 0) {\r\n this.setState({ selectedDynamicTimeFilterId: id, startDateStr: \"\", endDateStr: \"\", startEndDateDisabled: true });\r\n } else {\r\n this.setState({ selectedDynamicTimeFilterId: id, startEndDateDisabled: false });\r\n }\r\n };\r\n\r\n handleStartDateChange = (startDateStr: string) => {\r\n this.setState({ startDateStr });\r\n };\r\n\r\n handleEndDateChange = (endDateStr: string) => {\r\n this.setState({ endDateStr });\r\n };\r\n // #endregion ModifyDate\r\n\r\n // #region DocumentEndDate\r\n handleChangeDynamicDocumentEndDateFilterId = (id: string) => {\r\n if (id.toInteger() > 0) {\r\n this.setState({ selectedDynamicDocumentEndDateFilterId: id, documentEndDateStartDateStr: \"\", documentEndDateEndDateStr: \"\", documentEndDateStartEndDateDisabled: true });\r\n } else {\r\n this.setState({ selectedDynamicDocumentEndDateFilterId: id, documentEndDateStartEndDateDisabled: false });\r\n }\r\n };\r\n\r\n handleDocumentEndDateStartDateChange = (documentEndDateStartDateStr: string) => {\r\n this.setState({ documentEndDateStartDateStr });\r\n };\r\n\r\n handleDocumentEndDateEndDateChange = (documentEndDateEndDateStr: string) => {\r\n this.setState({ documentEndDateEndDateStr });\r\n };\r\n // #endregion DocumentEndDate\r\n\r\n handleChangeKeywordIds = (selectedKeywordIds: string[]) => {\r\n this.setState({\r\n selectedKeywordIds\r\n });\r\n };\r\n\r\n getSaveDataFromState = (_props: IDocumentFilterDrawerProp, state: IDocumentFilterDrawerState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"selectedKeywordIds\", state.selectedKeywordIds);\r\n result.append(\"selectedKeywordOperatorId\", state.selectedKeywordOperatorId);\r\n result.append(\"selectedDocumentApprovalId\", state.selectedDocumentApprovalId);\r\n result.append(\"selectedDocumentContentSearchId\", state.selectedDocumentContentSearchId);\r\n result.append(\"selectedMaxResultsCount\", state.selectedMaxResultsCount);\r\n result.append(\"startDate\", state.startDateStr);\r\n result.append(\"endDate\", state.endDateStr);\r\n result.append(\"selectedDynamicTimeFilterId\", state.selectedDynamicTimeFilterId ? state.selectedDynamicTimeFilterId : null);\r\n result.append(\"documentEndDateStartDate\", state.documentEndDateStartDateStr);\r\n result.append(\"documentEndDateEndDate\", state.documentEndDateEndDateStr);\r\n result.append(\"selectedDynamicTimeFilterId\", state.selectedDynamicDocumentEndDateFilterId ? state.selectedDynamicDocumentEndDateFilterId : null);\r\n return result;\r\n };\r\n\r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n static filterIsSet = (filterLists: IDocumentPageFilterLists, filterState: IDocumentPageFilterState): boolean => {\r\n return !!filterState.selectedStartDate || !!filterState.selectedEndDate ||\r\n !!filterState.selectedDocumentEndDateStartDate || !!filterState.selectedDocumentEndDateEndDate ||\r\n !(filterState.selectedKeywordOperatorId === \"0\" &&\r\n filterState.selectedDocumentApprovalId === \"0\" &&\r\n filterState.selectedDocumentContentSearchId === \"1\" &&\r\n filterState.selectedMaxResultsCount === \"100\" &&\r\n Base.equalStrArrays(filterState.selectedKeywordIds, []) &&\r\n filterState.selectedDynamicTimeFilterId === filterLists.dynamicTimeFilters[0].id &&\r\n filterState.selectedDynamicDocumentEndDateFilterId === filterLists.documentEndDateDynamicTimeFilters[0].id);\r\n };\r\n\r\n getSaveFilterState = (): IDocumentPageFilterState => {\r\n const state = this.state;\r\n const selectedStartDate = state.startDateStr ? state.startDateStr.toUtcDate().getTime() : null;\r\n const selectedEndDate = state.endDateStr ? state.endDateStr.toUtcDate().getTime() : null;\r\n const selectedDocumentEndDateStartDate = state.documentEndDateStartDateStr ? state.documentEndDateStartDateStr.toUtcDate().getTime() : null;\r\n const selectedDocumentEndDateEndDate = state.documentEndDateEndDateStr ? state.documentEndDateEndDateStr.toUtcDate().getTime() : null;\r\n return { ...state, selectedStartDate, selectedEndDate, selectedDocumentEndDateStartDate, selectedDocumentEndDateEndDate };\r\n };\r\n\r\n handleSaveFilter = async (saveAs: boolean) => {\r\n const props = this.props;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n const filterState = this.getSaveFilterState();\r\n if (!saveAs) {\r\n props.onOk(false, filterState);\r\n await this.props.onSaveFilter(false, null);\r\n } else {\r\n await this.props.onSaveFilter(true, () => {\r\n return props.onOk(false, filterState);\r\n });\r\n }\r\n };\r\n\r\n static getClearedParametersState = (props: IDocumentPageFilterLists) => {\r\n return {\r\n selectedKeywordIds: [],\r\n selectedKeywordOperatorId: \"0\",\r\n selectedDocumentApprovalId: \"0\",\r\n selectedDocumentContentSearchId: \"1\",\r\n selectedMaxResultsCount: \"100\",\r\n startDateStr: \"\",\r\n endDateStr: \"\",\r\n selectedDynamicTimeFilterId: props.dynamicTimeFilters[0].id,\r\n documentEndDateStartDateStr: \"\",\r\n documentEndDateEndDateStr: \"\",\r\n selectedDynamicDocumentEndDateFilterId: props.documentEndDateDynamicTimeFilters[0].id\r\n };\r\n };\r\n\r\n handleClear = () => {\r\n const props = this.props;\r\n this.setState(\r\n DocumentFilterDrawer.getClearedParametersState(props)\r\n );\r\n };\r\n\r\n handleSave = async () => {\r\n const props = this.props;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n props.onOk(true, this.getSaveFilterState());\r\n };\r\n\r\n handleCancel = async (checkChanges: boolean) => {\r\n AppUtils.cancelEditDialog(checkChanges, this.getSaveDataFromState(this.props, this.state).hash, this.orgStateHash, this.handleSave, this.props.onCancel, Translations.YouHaveUnapprovedChangesDoYouWantApproveChanges);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n this.handleCancel(false)}\r\n >\r\n \r\n {/* {!!props.onSaveFilter && !!props.onRemoveFilter &&\r\n \r\n } */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n { this.setState({ selectedKeywordOperatorId: checked ? \"0\" : \"1\" }); }}\r\n />\r\n \r\n \r\n \r\n \r\n { this.setState({ selectedKeywordOperatorId: checked ? \"1\" : \"0\" }); }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ selectedDocumentApprovalId: id })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ selectedDocumentContentSearchId: id })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ selectedMaxResultsCount: id })}\r\n />\r\n \r\n \r\n \r\n \r\n }\r\n actions={\r\n \r\n }\r\n />\r\n \r\n );\r\n }\r\n}\r\n","import { Avatar, Box, ListItemButton, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ISessionState } from \"../../../../models/session/sessionState\";\r\nimport { IFolderTreeNode } from \"source/models/document/folderTreeNode\";\r\nimport { ListStateIconExpanded } from \"source/components/framework/List/ListStateIconExpanded\";\r\nimport FolderTwoToneIcon from \"@mui/icons-material/FolderTwoTone\";\r\nimport { useState } from \"react\";\r\nimport { Permission } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { PopupMenu } from \"source/components/framework/PopupMenu\";\r\nimport { EditToolButton } from \"source/components/framework/Button/EditToolButton\";\r\nimport { RemoveToolButton } from \"source/components/framework/Button/RemoveToolButton\";\r\nimport { CopyToolButton } from \"source/components/framework/Button/CopyToolButton\";\r\nimport { AppIconFolder } from \"source/components/framework/Icon/AppIconFolder\";\r\n\r\nexport interface IDocumentFolderTreeNodeProps {\r\n sessionState: ISessionState;\r\n companyId: string;\r\n editMode: boolean;\r\n node: IFolderTreeNode;\r\n selectedId?: string;\r\n isFirstNode: boolean;\r\n onClick: (id: string) => void;\r\n onEdit?: (id: string) => void;\r\n onDelete?: (id: string) => void;\r\n onCopy?: () => void;\r\n }\r\n \r\nexport const DocumentTreeFolderNode = (props: IDocumentFolderTreeNodeProps) => {\r\n const [hovered, setHovered] = useState(false);\r\n\r\n const handleNodeClick = (e) => {\r\n e.stopPropagation();\r\n props.onClick(props.node.id);\r\n };\r\n\r\n const isRoot = !props.node.parent;\r\n const hasChildren = props.node.children.length > 0;\r\n const selected = props.selectedId === props.node.id;\r\n\r\n const canEditOwnCompanyFolder = props.sessionState.isSuperAdmin ||\r\n props.sessionState.companyId === props.companyId && props.node.permission > Permission.Read && (!isRoot || props.sessionState.isCompanyAdmin);\r\n const canEditSharedFolder = props.sessionState.isSuperAdmin ||\r\n props.sessionState.companyId !== props.companyId && (props.node.permission > Permission.Read || props.sessionState.isCompanyAdmin && props.node.permission > Permission.None);\r\n const canEditFolder = canEditOwnCompanyFolder || canEditSharedFolder;\r\n const canDeleteFolder = props.sessionState.isSuperAdmin ||\r\n props.node.parent && props.node.parent.permission > Permission.Read;\r\n const popupMenuHasItems = !isRoot && props.onCopy ||\r\n canEditFolder && props.onEdit ||\r\n canDeleteFolder && !isRoot && props.onDelete;\r\n\r\n if (!props.node || (props.node.parent && props.node.getAncesterIsCollapsed())) return null;\r\n\r\n return (\r\n setHovered(true)}\r\n onMouseLeave={() => setHovered(false)}\r\n >\r\n \r\n {!props.isFirstNode && (\r\n \r\n )}\r\n {(!props.node.image\r\n ? (props.node.permission > Permission.Read\r\n ? \r\n : )\r\n : \r\n \r\n )}\r\n \r\n {props.node.name}\r\n \r\n \r\n {selected && hovered && popupMenuHasItems &&\r\n \r\n {props.editMode && canEditFolder && !!props.onEdit &&\r\n {\r\n e.stopPropagation();\r\n props.onEdit(props.node.id);\r\n }}/>\r\n }\r\n {!isRoot && !!props.onCopy &&\r\n {\r\n e.stopPropagation();\r\n props.onCopy();\r\n }} />\r\n }\r\n {props.editMode && canDeleteFolder && !isRoot && !!props.onDelete &&\r\n {\r\n e.stopPropagation();\r\n props.onDelete(props.node.id);\r\n }} />\r\n }\r\n \r\n }\r\n \r\n );\r\n};\r\n","import React, { ReactNode } from \"react\";\r\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\r\nimport { Accordion, AccordionDetails, AccordionSummary, Box, Typography } from \"@mui/material\";\r\n\r\ninterface IListDetailsPanelAccordionProps {\r\n title: string | ReactNode;\r\n subTitle?: string;\r\n buttons?: ReactNode;\r\n children: ReactNode;\r\n}\r\n\r\nexport const ListDetailsPanelAccordion = (props: IListDetailsPanelAccordionProps) => {\r\n return (\r\n \r\n } sx={{ borderLeft: \"none\" }}>\r\n \r\n \r\n {props.title}\r\n {props.subTitle &&\r\n {props.subTitle}\r\n }\r\n \r\n \r\n {props.buttons}\r\n \r\n \r\n \r\n \r\n {props.children}\r\n \r\n \r\n );\r\n};\r\n","import React, { ReactNode } from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { Alert, Grid } from \"@mui/material\";\r\nimport { FormField } from \"source/components/framework/FormField\";\r\nimport { ModifyUserInfo } from \"source/components/framework/User/ModifyUserInfo\";\r\nimport { ListDetailsPanelAccordion } from \"source/components/framework/List/ListDetailsPanel/ListDetailsPanelAccordion\";\r\nimport { IModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\ninterface IDocumentListDetailsPanelDocumentContentProps {\r\n companyId: string;\r\n content: string;\r\n directoryItemId: string;\r\n errorMessage: string;\r\n createUser: IModifyUser;\r\n modifyUser: IModifyUser;\r\n subTitle?: string;\r\n buttons?: ReactNode;\r\n}\r\n\r\nexport const DocumentListDetailsPanelDocumentContent = (props: IDocumentListDetailsPanelDocumentContentProps) => {\r\n if (props.errorMessage) {\r\n return (\r\n {props.errorMessage}\r\n );\r\n }\r\n\r\n const userColumnWidth = props.createUser && props.modifyUser?.date ? 6 : 12;\r\n\r\n return (\r\n <>\r\n
\r\n \r\n {!!props.createUser &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {!!props.modifyUser?.date &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n );\r\n};","import React from \"react\";\r\nimport { Alert } from \"@mui/material\";\r\nimport { IDocumentFilePreview } from \"source/models/document/documentFilePreview\";\r\nimport { FileType } from \"ui/Scripts/source/models/enums\";\r\n\r\ninterface IDocumentListDetailsPanelFileContentProps {\r\n companyId: string;\r\n directoryItemId: string;\r\n documentFilePreview: IDocumentFilePreview;\r\n}\r\n\r\nexport const DocumentListDetailsPanelFileContent = (props: IDocumentListDetailsPanelFileContentProps) => {\r\n if (props.documentFilePreview.errorMessage) {\r\n return (\r\n {props.documentFilePreview.errorMessage}\r\n );\r\n }\r\n return (\r\n <>\r\n {!!props.documentFilePreview.html &&\r\n
\r\n }\r\n {!!props.documentFilePreview.text &&\r\n
{props.documentFilePreview.text}
\r\n }\r\n {!!props.documentFilePreview.path && props.documentFilePreview.fileType === FileType.Image &&\r\n \r\n }\r\n {!!props.documentFilePreview.path && props.documentFilePreview.fileType === FileType.Pdf &&\r\n \r\n }\r\n \r\n );\r\n};","import ChangeCircleIcon from \"@mui/icons-material/ChangeCircle\";\r\nimport { IconButtonProps } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppToolButton } from \"ui/Scripts/source/components/framework/Button/AppToolButton\";\r\n\r\ninterface IChangeToolButtonProps extends IconButtonProps {\r\n tooltip?: string;\r\n}\r\n\r\nexport const ChangeToolButton = (props: IChangeToolButtonProps) => (\r\n }\r\n />\r\n);\r\n","import React, { useEffect, useState } from \"react\";\r\nimport * as documentService from \"../../../models/services/documentService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { ListDetailsPanel } from \"source/components/framework/List/ListDetailsPanel\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Alert } from \"@mui/material\";\r\nimport { LocalLoading } from \"source/components/framework/Loading/LocalLoading\";\r\nimport { IDocumentVersionPreview } from \"source/models/document/documentVersionPreview\";\r\nimport { IDocumentContentPreview } from \"source/models/document/documentContentPreview\";\r\nimport { FileType } from \"ui/Scripts/source/models/enums\";\r\nimport { DocumentListDetailsPanelDocumentContent } from \"./DocumentListDetailsPanelDocumentContent\";\r\nimport { IDocumentFilePreview } from \"source/models/document/documentFilePreview\";\r\nimport { DocumentListDetailsPanelFileContent } from \"./DocumentListDetailsPanelFileContent\";\r\nimport { DownloadToolButton } from \"source/components/framework/Button/DownloadToolButton\";\r\nimport { ChangeToolButton } from \"source/components/framework/Button/ChangeToolButton\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\ninterface IDocumentListDetailsPanelProps {\r\n documentsLoading: boolean;\r\n showPublishedVersion: boolean;\r\n sessionState: ISessionState;\r\n companyId: string;\r\n documentId: string;\r\n documentVersionId: string;\r\n publishedId: string;\r\n documentFileType: number;\r\n dataId: string;\r\n editDialogVisible: boolean;\r\n onDownloadDocument: (id: string) => Promise;\r\n onChangeShowPublishedVersion: (showPublishedVersion: boolean) => void;\r\n onClose: () => void;\r\n}\r\n\r\nexport const DocumentListDetailsPanel = (props: IDocumentListDetailsPanelProps) => {\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [documentVersionPreview, setDocumentVersionPreview] = useState(null);\r\n const [documentContentPreview, setDocumentContentPreview] = useState(null);\r\n const [documentFilePreview, setDocumentFilePreview] = useState(null);\r\n\r\n const loadDocumentVersion = async () => {\r\n setIsLoading(true);\r\n const result = await AppUtils.callService(() => documentService.getDocumentVersionPreview(props.companyId, props.documentVersionId), false, true, () => setIsLoading(false));\r\n if (!result) return;\r\n setDocumentFilePreview(null);\r\n setDocumentContentPreview(null);\r\n setDocumentVersionPreview(result);\r\n };\r\n\r\n const loadDocumentContent = async () => {\r\n setIsLoading(true);\r\n const result = await AppUtils.callService(() => documentService.getDocumentContentPreview(props.companyId, props.documentId), false, true, () => setIsLoading(false));\r\n if (!result) return;\r\n setDocumentFilePreview(null);\r\n setDocumentVersionPreview(null);\r\n setDocumentContentPreview(result);\r\n };\r\n\r\n const loadFileContent = async () => {\r\n setIsLoading(true);\r\n const result = await AppUtils.callService(() => documentService.getFileContentPreview(props.companyId, props.documentId, props.documentFileType), false, true, () => setIsLoading(false));\r\n if (!result) return;\r\n setDocumentVersionPreview(null);\r\n setDocumentContentPreview(null);\r\n setDocumentFilePreview(result);\r\n };\r\n\r\n const loadDetails = async () => {\r\n if (!props.documentId || Base.isNullOrUndefined(props.documentFileType)) {\r\n setDocumentFilePreview(null);\r\n setDocumentContentPreview(null);\r\n setDocumentVersionPreview(null);\r\n return;\r\n }\r\n if (props.documentFileType === FileType.Document) {\r\n if (props.documentVersionId && props.showPublishedVersion) {\r\n loadDocumentVersion();\r\n } else {\r\n loadDocumentContent();\r\n }\r\n } else {\r\n if (props.documentVersionId) {\r\n loadDocumentVersion();\r\n } else {\r\n loadFileContent();\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (!props.companyId || props.documentsLoading) return;\r\n if (props.editDialogVisible) return;\r\n loadDetails();\r\n }, [props.companyId, props.documentId, props.documentVersionId, props.dataId, props.showPublishedVersion, props.editDialogVisible]);\r\n\r\n const hasContent = !!documentVersionPreview || !!documentContentPreview || !!documentFilePreview;\r\n const downloadDirectoryItemId = props.documentFileType === FileType.Document ? props.publishedId : props.documentId;\r\n const canChangeVisibleVersion = props.documentFileType === FileType.Document && props.documentVersionId;\r\n\r\n const handlePublishedDocumentDownload = async (e) => {\r\n e.stopPropagation();\r\n await props.onDownloadDocument(downloadDirectoryItemId);\r\n };\r\n\r\n const handleChangeDocumentVersion = async (e) => {\r\n e.stopPropagation();\r\n props.onChangeShowPublishedVersion(!props.showPublishedVersion);\r\n };\r\n\r\n const subTitle = props.documentId\r\n ? (documentVersionPreview\r\n ? \"(\" + Translations.PublishVersion + \")\"\r\n : (documentContentPreview\r\n ? \"(\" + Translations.DraftVersion + \")\"\r\n : null))\r\n : null;\r\n\r\n const buttons = <>\r\n {canChangeVisibleVersion &&\r\n \r\n }\r\n {downloadDirectoryItemId &&\r\n \r\n }\r\n ;\r\n\r\n return (\r\n \r\n {(!props.documentId || (isLoading && !hasContent)) &&\r\n {Translations.SelectDocumentInListToSeeThePreview}\r\n }\r\n {isLoading &&\r\n \r\n }\r\n {!!props.documentId &&\r\n <>\r\n {!!documentVersionPreview &&\r\n \r\n }\r\n {!!documentContentPreview &&\r\n \r\n }\r\n {!!documentFilePreview &&\r\n \r\n }\r\n \r\n }\r\n \r\n );\r\n};\r\n","import CircleIcon from \"@mui/icons-material/Circle\";\r\nimport React from \"react\";\r\nimport { ListStateIcon } from \"../ListStateIcon\";\r\n\r\ninterface IListStateIconBallProps {\r\n noMargin?: boolean;\r\n tooltip?: string;\r\n}\r\n\r\nexport const ListStateIconBall = (props: IListStateIconBallProps) => {\r\n return (\r\n \r\n );\r\n};\r\n","import { FileType } from \"ui/Scripts/source/models/enums\";\r\n\r\nexport interface IDocumentRemoveItem {\r\n id: string;\r\n code: string;\r\n fileType: FileType;\r\n}\r\n\r\nexport class DocumentRemoveItem implements IDocumentRemoveItem {\r\n id: string;\r\n code: string;\r\n fileType: FileType;\r\n\r\n constructor();\r\n constructor(obj: IDocumentRemoveItem);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.fileType = obj && obj.fileType || FileType.Unknown;\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { Box } from \"@mui/material\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\n\r\ninterface IDocumentFolderPath {\r\n path: string;\r\n}\r\n\r\nexport const DocumentFolderPath = (props: IDocumentFolderPath) => {\r\n if (!props.path) return null;\r\n return (\r\n {`(${props.path})`}\r\n );\r\n};","import { Box, Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as documentService from \"../../../models/services/documentService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { DialogButtons } from \"source/components/framework/Dialog/DialogButtons\";\r\nimport { FileAttachment, IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { SaveAttachmentBase64 } from \"ui/Scripts/source/models/common/saveAttachmentBase64\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { IDocumentFileEditItem } from \"source/models/documentFile/documentFileEditItem\";\r\nimport { DocumentRemoveItem } from \"source/models/document/documentRemoveItem\";\r\nimport { AttachmentIcon } from \"source/components/attachments/AttachmentIcon\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { FormCheckBox } from \"source/components/framework/FormCheckBox\";\r\nimport { removeConfirmationWord } from \"ui/Scripts/source/models/consts\";\r\nimport { DocumentFolderPath } from \"../DocumentFolderPath/DocumentFolderPath\";\r\n\r\nexport interface IDocumentFileEditDialogProp {\r\n sessionState: ISessionState;\r\n id: string;\r\n folderId: string;\r\n companyId: string;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onOk: () => void;\r\n onCancel: () => void;\r\n onRefreshList: () => Promise;\r\n}\r\n\r\nexport interface IDocumentFileEditDialogState {\r\n path: string;\r\n keywords: IIdTitle[];\r\n\r\n code: string;\r\n comment: string;\r\n keywordIds: string[];\r\n file: IFileAttachment;\r\n image: string;\r\n resetImage: boolean;\r\n \r\n item: IDocumentFileEditItem;\r\n rowId: string;\r\n}\r\n\r\nexport class DocumentFileEditDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IDocumentFileEditDialogProp) {\r\n super(props);\r\n this.state = {\r\n path: \"\",\r\n keywords: [],\r\n item: null,\r\n code: \"\",\r\n comment: \"\",\r\n keywordIds: [],\r\n file: null,\r\n image: \"\",\r\n resetImage: false,\r\n rowId: \"\",\r\n };\r\n }\r\n\r\n loadData = async () => {\r\n const props = this.props;\r\n const result = await AppUtils.callService(() => documentService.getDocumentFileEdit(props.companyId, props.folderId, props.id), false);\r\n if (!result) return;\r\n const item = result.item;\r\n const state = {\r\n ...this.state,\r\n path: result.path,\r\n keywords: result.keywords,\r\n item,\r\n code: item.code,\r\n comment: item.comment,\r\n keywordIds: item.keywordIds,\r\n file: null,\r\n image: item.image,\r\n resetImage: !item.image,\r\n rowId: item.rowId\r\n };\r\n this.setState(state);\r\n const saveData = await this.getSaveDataFromState(this.props, state);\r\n this.orgStateHash = saveData.hash;\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadData();\r\n }\r\n\r\n async componentDidUpdate(prevProps: IDocumentFileEditDialogProp, prevState: IDocumentFileEditDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if (prevProps.companyId === props.companyId && prevProps.id === props.id) return;\r\n const cancelResult = await AppUtils.cancel((await this.getSaveDataFromState(props, state)).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb()) return;\r\n props.onRefreshList();\r\n }\r\n this.loadData();\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"code\") {\r\n this.setState({ code: value });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n }\r\n };\r\n\r\n handleSetImage = async (file: File) => {\r\n if (!file) return;\r\n const attachment = await FileAttachment.fileToFileAttachment(file, 0);\r\n if (!attachment) return;\r\n if (!AppUtils.validateFileAttachment(attachment)) return;\r\n this.setState({ file: attachment, resetImage: false, image: attachment.thumbnail });\r\n };\r\n\r\n handleRemoveImage = () => {\r\n this.setState({ file: null, resetImage: true, image: \"\" });\r\n };\r\n\r\n getSaveDataFromState = async (props: IDocumentFileEditDialogProp, state: IDocumentFileEditDialogState): Promise => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.item?.id);\r\n result.append(\"folderId\", props.folderId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"code\", state.code);\r\n result.append(\"comment\", state.comment);\r\n result.append(\"keywordIds\", state.keywordIds);\r\n result.append(\"resetImage\", state.resetImage);\r\n if (state.file) {\r\n result.append(\"attachments\", await SaveAttachmentBase64.fromFileAttachments([state.file]));\r\n }\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.code) {\r\n AppUtils.showErrorMessage(Translations.NameMustBeDefined);\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n const saveData = await this.getSaveDataFromState(props, state);\r\n //Call server\r\n return !!(await AppUtils.callService(() => documentService.saveDocumentFileEdit(saveData.obj)));\r\n };\r\n\r\n handleSave = async () => {\r\n if (!await this.saveToDb()) return;\r\n this.props.onOk();\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.item?.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveDocumentParameter, state.item?.code), false, removeConfirmationWord) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const removeItem = new DocumentRemoveItem();\r\n removeItem.id = props.id;\r\n removeItem.code = state.item?.code;\r\n removeItem.fileType = state.item?.fileType;\r\n const result = await AppUtils.callService(() => documentService.removeDocuments(props.companyId, props.folderId, [removeItem]), true);\r\n if (!result) return;\r\n props.onOk();\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel((await this.getSaveDataFromState(props, state)).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut((await this.getSaveDataFromState(props, this.state)).hash, this.orgStateHash, this.saveToDb, props.onRefreshList);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.item) return null;\r\n const isNew = state.item.isNew();\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n : null}\r\n image={state.resetImage ? null : state.image}\r\n editable={true}\r\n tooltip={Translations.CkickToChangeThePicture}\r\n removeTooltip={Translations.RemovePicture}\r\n onChange={this.handleSetImage}\r\n onClear={state.resetImage ? null : this.handleRemoveImage}\r\n onError={AppUtils.showErrorMessage}\r\n />\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {state.keywords.map((keyword) =>\r\n -1}\r\n onChange={(checked: boolean) => {\r\n const keywordIds = this.state.keywordIds.filter(i => i !== keyword.id);\r\n if (checked) {\r\n keywordIds.push(keyword.id);\r\n }\r\n this.setState({ keywordIds });\r\n }}\r\n />\r\n )}\r\n
\r\n
\r\n
\r\n
\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","import { Grid } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Dropdown } from \"ui/Scripts/source/components/framework/Dropdown/Dropdown\";\r\nimport { CompanyItem } from \"../Company/CompanyItem\";\r\nimport { ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\n\r\ninterface ICompanyDropdownProps {\r\n company: ICompanyMenuItem\r\n companies: ICompanyMenuItem[];\r\n onSetCompany: (company: ICompanyMenuItem) => void;\r\n}\r\n\r\nexport const CompanyDropdown = (props: ICompanyDropdownProps) => {\r\n const handleCompanyChange = (companyId: string) => {\r\n const company = props.companies.find(i => i.id === companyId);\r\n if (!company) return;\r\n props.onSetCompany(company);\r\n };\r\n\r\n return (\r\n }\r\n selectMode={true}\r\n tooltip={Translations.SelectCompany}\r\n actions={props.companies.map((company) => {\r\n return {\r\n title: ,\r\n textTitle: company.name,\r\n selected: company.id === props.company?.id,\r\n onClick: () => handleCompanyChange(company.id)\r\n };\r\n })}\r\n />\r\n );\r\n};","//SelectUserDialog\r\n//***********************************************************************************************************************\r\nimport { Box, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Base } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/framework/base\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { infiniteListPageSize } from \"../../../models/common/webConsts\";\r\nimport * as userService from \"../../../models/services/userService\";\r\nimport { IUserListItem } from \"../../../models/user/userListItem\";\r\nimport { IUserListItems, UserListItems } from \"../../../models/user/userListItems\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogListContainer } from \"../../framework/Dialog/DialogListContainer\";\r\nimport { FormSectionTitle } from \"../../framework/Form/FormSectionTitle\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { CompanyDropdown } from \"source/components/company/CompanyDropdown\";\r\n\r\n//SelectUserDialogList\r\nexport interface ISelectUserDialogListProps {\r\n companyId: string;\r\n records?: IUserListItems;\r\n ignoreUserIds?: string[];\r\n ignoreUserCodes?: string[];\r\n ignoreRecordUserConnected?: boolean;\r\n doNotIgnoreRecordUserConnectedUserCode?: string;\r\n hideUserGroups?: boolean;\r\n multiSelect?: boolean;\r\n intialized: boolean;\r\n selectedId: string;\r\n checkedIds: string[];\r\n onSetIntialized: (intialized: boolean) => void;\r\n onSetSelected: (selectedId: string, checkedIds: string[], selectedItems: IUserListItem[]) => void;\r\n onGetUserSelectListItems?: (companyId: string, pageSize: number, page: number, filter: string,\r\n ignoreUserIds: string[], ignoreUserCodes: string[], activityState: number, ignoreRecordUserConnected: boolean,\r\n doNotIgnoreRecordUserConnectedUserCode: string, sortColumn: string, sortOrderIsAsc: boolean) => Promise;\r\n}\r\n\r\nexport interface ISelectUserDialogListState {\r\n isLoading: boolean;\r\n waitingPreloadedData: boolean;\r\n pageSize: number;\r\n page: number;\r\n hasMore: boolean;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n items: IUserListItem[];\r\n}\r\n\r\nexport class SelectUserDialogList extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n waitingPreloadedData: !props.records,\r\n pageSize: props.records ? props.records.pageSize : infiniteListPageSize,\r\n page: props.records ? props.records.page : 1,\r\n hasMore: props.records ? props.records.hasMore : true,\r\n filter: \"\",\r\n sortColumn: \"name\",\r\n sortOrderIsAsc: true,\r\n items: props.records ? props.records.items : []\r\n };\r\n }\r\n\r\n setSelected = (selectedId: string, checkedIds: string[]) => {\r\n const state = this.state;\r\n const ids = List.getSelectedIds(selectedId, checkedIds);\r\n if (ids.length < 1) return;\r\n this.props.onSetSelected(selectedId, checkedIds, state.items.filter(i => ids.indexOf(i.id) > -1));\r\n };\r\n\r\n searchItems = async (pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n this.setState({ isLoading: true });\r\n const getUserSelectListItems = props.onGetUserSelectListItems ?? userService.getUserSelectListItems;\r\n const result = await AppUtils.callService(() => getUserSelectListItems(props.companyId, !refreshList ? pageSize : (page * infiniteListPageSize), !refreshList ? page : 1, filter,\r\n props.ignoreUserIds, props.ignoreUserCodes, 0, props.ignoreRecordUserConnected, props.doNotIgnoreRecordUserConnectedUserCode, sortColumn, sortOrderIsAsc), false, true, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const items = List.getListItems(state.items, props.selectedId, props.checkedIds, result.items, resetItems, refreshList);\r\n this.setState({\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n waitingPreloadedData: false\r\n });\r\n props.onSetIntialized(true);\r\n this.setSelected(items.selectedId, items.checkedIds);\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n if (this.props.records) return;\r\n this.searchItems(state.pageSize, 1, state.filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: ISelectUserDialogListProps, prevState: ISelectUserDialogListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.waitingPreloadedData) {\r\n if (!props.records) return;\r\n this.setState({\r\n waitingPreloadedData: false,\r\n page: props.records.page,\r\n hasMore: props.records.hasMore,\r\n items: props.records.items,\r\n pageSize: props.records.pageSize,\r\n sortColumn: props.records.sortColumn,\r\n sortOrderIsAsc: props.records.sortOrderIsAsc\r\n });\r\n props.onSetIntialized(true);\r\n } else {\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n if (companyId === prevCompanyId &&\r\n Base.equalStrArrays(prevProps.ignoreUserIds, props.ignoreUserIds)) return;\r\n this.searchItems(state.pageSize, 1, state.filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setSelected(selectedId, checkedIds);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n \r\n } />\r\n {\r\n return {\r\n columns: [\r\n {\r\n column: \"code\",\r\n size: !props.hideUserGroups ? 3 : 4,\r\n content:\r\n \r\n \r\n {item.code}\r\n \r\n },\r\n { size: !props.hideUserGroups ? 4 : 8, column: \"name\", content: item.getName() },\r\n !props.hideUserGroups ? { size: 5, column: \"groups\", content: item.userGroupsStr } : null\r\n ],\r\n id: item.id,\r\n classes: item.disabled ? \"disabled\" : \"\"\r\n };\r\n })\r\n }\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={props.selectedId}\r\n checkedIds={props.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n />\r\n \r\n );\r\n }\r\n}\r\n\r\n//SelectUserDialog\r\nexport interface ISelectUserDialogBaseProps {\r\n classes?: string;\r\n records?: IUserListItems;\r\n ignoreUserIds?: string[];\r\n ignoreUserCodes?: string[];\r\n ignoreRecordUserConnected?: boolean;\r\n doNotIgnoreRecordUserConnectedUserCode?: string;\r\n multiSelect?: boolean;\r\n title?: string;\r\n onCancel: () => void;\r\n onGetUserSelectListItems?: (companyId: string, pageSize: number, page: number, filter: string,\r\n ignoreUserIds: string[], ignoreUserCodes: string[], activityState: number, ignoreRecordUserConnected: boolean,\r\n doNotIgnoreRecordUserConnectedUserCode: string, sortColumn: string, sortOrderIsAsc: boolean) => Promise\r\n}\r\n\r\nexport interface ISelectUserDialogProps extends ISelectUserDialogBaseProps {\r\n companyId: string;\r\n hideUserGroups?: boolean;\r\n onOk: (users: IUserListItem[]) => void;\r\n}\r\n\r\nexport interface ISelectUserDialogState {\r\n intialized: boolean;\r\n selectedId: string;\r\n checkedIds: string[];\r\n selectedItems: IUserListItem[];\r\n}\r\n\r\nexport class SelectUserDialog extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n intialized: !!props.records,\r\n selectedId: null,\r\n checkedIds: [],\r\n selectedItems: []\r\n };\r\n }\r\n\r\n handleSetInitialized = (intialized: boolean) => {\r\n this.setState({\r\n intialized\r\n });\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[], selectedItems: IUserListItem[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds,\r\n selectedItems\r\n });\r\n };\r\n\r\n handleCancel = () => {\r\n this.props.onCancel();\r\n };\r\n\r\n handleOk = () => {\r\n const state = this.state;\r\n if (state.selectedItems.length < 1) return;\r\n this.props.onOk(state.selectedItems);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n }\r\n buttons={[\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: this.handleCancel },\r\n { title: Translations.OK, variant: \"confirmation\", onClick: this.handleOk },\r\n ]}\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}\r\n\r\n//SelectUserDialogWithCompanySelect\r\nexport interface ISelectUserDialogWithCompanySelectProps extends ISelectUserDialogBaseProps {\r\n companies: ICompanyMenuItem[];\r\n showUserGroupsCompanyId: string;\r\n onOk: (users: IUserListItem[], companyId :string) => void;\r\n}\r\n\r\nexport interface ISelectUserDialogWithCompanySelectState extends ISelectUserDialogState {\r\n company: ICompanyMenuItem;\r\n}\r\n\r\nexport class SelectUserDialogWithCompanySelect extends React.Component {\r\n constructor(props: ISelectUserDialogWithCompanySelectProps) {\r\n super(props);\r\n this.state = {\r\n company: props.companies.length ? props.companies[0] : null,\r\n intialized: !!props.records,\r\n selectedId: null,\r\n checkedIds: [],\r\n selectedItems: []\r\n };\r\n }\r\n\r\n handleSetInitialized = (intialized: boolean) => {\r\n this.setState({\r\n intialized\r\n });\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[], selectedItems: IUserListItem[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds,\r\n selectedItems\r\n });\r\n };\r\n\r\n handleCompanyChange = (company: ICompanyMenuItem) => {\r\n if (!company) return;\r\n this.setState({\r\n company\r\n });\r\n };\r\n\r\n handleCancel = () => {\r\n this.props.onCancel();\r\n };\r\n\r\n handleOk = () => {\r\n const state = this.state;\r\n if (state.selectedItems.length < 1) return;\r\n this.props.onOk(state.selectedItems, state.company.id);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.company) return null;\r\n const title = props.title ?? Translations.SelectUser;\r\n return (\r\n \r\n {props.companies.length > 1 &&\r\n <>\r\n {Translations.SelectCompany}\r\n \r\n \r\n }\r\n {props.companies.length > 1 &&\r\n {title}\r\n }\r\n \r\n \r\n }\r\n buttons={[\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: this.handleCancel },\r\n { title: Translations.OK, variant: \"confirmation\", onClick: this.handleOk },\r\n ]}\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","import { Box, Grid, List, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Permission } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as documentService from \"../../../models/services/documentService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { FormCheckBox } from \"source/components/framework/FormCheckBox\";\r\nimport { IDocumentListItem } from \"source/models/document/documentListItem\";\r\nimport { FolderTreeNode, IFolderTreeNode } from \"source/models/document/folderTreeNode\";\r\nimport { Dropdown } from \"ui/Scripts/source/components/framework/Dropdown/Dropdown/Dropdown\";\r\nimport { ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { CompanyItem } from \"source/components/company/Company/CompanyItem\";\r\nimport { SelectUserDialog } from \"source/components/user/SelectUserDialog/SelectUserDialog\";\r\nimport { UserListItems } from \"source/models/user/userListItems\";\r\nimport { IUserListItem } from \"source/models/user/userListItem\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { AvatarName } from \"source/components/framework/User/AvatarName\";\r\nimport { DocumentTreeFolderNode } from \"../DocumentFolders/DocumentFolderTreeNode\";\r\nimport { ConfirmationButton } from \"source/components/framework/Button/ConfirmationButton\";\r\nimport { IdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\nexport interface IDocumentCopyMoveDialogProp {\r\n sessionState: ISessionState;\r\n companies: ICompanyMenuItem[];\r\n companyId: string;\r\n folderId: string;\r\n folderPermission: Permission;\r\n folderTree: IFolderTreeNode;\r\n items: IDocumentListItem[];\r\n onOk: (refreshDocuments: boolean, newId: string) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IDocumentCopyMoveDialogState {\r\n sourceFolderTreeNode: IFolderTreeNode;\r\n sourceFullPath: string;\r\n targetCompanyId: string;\r\n targetFolderTreeNodes: IFolderTreeNode[];\r\n targetFolderTreeNode: IFolderTreeNode;\r\n targetFullPath: string;\r\n selectedCompany: ICompanyMenuItem;\r\n resetDocumentVersion: boolean;\r\n selectedUser: IModifyUser;\r\n showSelectUserDialog: boolean;\r\n}\r\n\r\nexport class DocumentCopyMoveDialog extends React.Component {\r\n constructor(props: IDocumentCopyMoveDialogProp) {\r\n super(props);\r\n const folderTree = new FolderTreeNode(props.folderTree);\r\n folderTree.removeReadOnlyBranches();\r\n const targetFolderTreeNodes = folderTree.getAsList([]);\r\n const targetFolderTreeNode = targetFolderTreeNodes[0];\r\n const sourceFolderTree = new FolderTreeNode(props.folderTree);\r\n const sourceFolderTreeNodes = sourceFolderTree.getAsList([]);\r\n const sourceFolderTreeNode = sourceFolderTreeNodes.find(i => i.id === props.folderId);\r\n this.state = {\r\n sourceFolderTreeNode,\r\n sourceFullPath: sourceFolderTreeNode.getFullPath() + (props.items.length === 1\r\n ? \"\\\\\" + props.items[0].code\r\n : (props.items.length > 1\r\n ? \" (\" + props.items.length.toString(10) + \" \" + Translations.DocumentsSelected + \")\"\r\n : \"\")),\r\n targetCompanyId: props.companyId,\r\n targetFolderTreeNodes: folderTree.getAsList([]),\r\n targetFolderTreeNode,\r\n targetFullPath: targetFolderTreeNode.getFullPath(),\r\n selectedCompany: props.companies.find(i => i.id === props.companyId),\r\n resetDocumentVersion: false,\r\n selectedUser: null,\r\n showSelectUserDialog: false\r\n };\r\n }\r\n\r\n handleChangeTargetCompany = async (targetCompanyId: string) => {\r\n const props = this.props;\r\n let targetFolderTreeNodes: IFolderTreeNode[];\r\n if (targetCompanyId === props.companyId) {\r\n const folderTree = new FolderTreeNode(props.folderTree);\r\n folderTree.removeReadOnlyBranches();\r\n targetFolderTreeNodes = folderTree.getAsList([]);\r\n } else {\r\n const result = await AppUtils.callService(() => documentService.getTargetCompanyDocumentFolders(targetCompanyId), false);\r\n if (!result) return;\r\n result.folderTree.removeReadOnlyBranches();\r\n targetFolderTreeNodes = result.folderTree.getAsList([]);\r\n }\r\n const targetFolderTreeNode = targetFolderTreeNodes[0];\r\n this.setState({\r\n targetCompanyId,\r\n targetFolderTreeNodes,\r\n targetFolderTreeNode,\r\n targetFullPath: targetFolderTreeNode.getFullPath(),\r\n selectedCompany: props.companies.find(i => i.id === targetCompanyId),\r\n resetDocumentVersion: false,\r\n selectedUser: null\r\n });\r\n };\r\n\r\n handleTargetFolderClick = (id: string) => {\r\n if (!id) return;\r\n const targetFolderTreeNodes = this.state.targetFolderTreeNodes.slice(0);\r\n const targetFolderTreeNode = targetFolderTreeNodes.find(i => i.id === id);\r\n if (!targetFolderTreeNode) return;\r\n if (targetFolderTreeNode.parent) {\r\n targetFolderTreeNode.expanded = !targetFolderTreeNode.expanded;\r\n }\r\n this.setState({\r\n targetFolderTreeNodes,\r\n targetFolderTreeNode,\r\n targetFullPath: targetFolderTreeNode.getFullPath(),\r\n });\r\n };\r\n\r\n // #region RenewPersonalization\r\n handleChangeRenewPersonalizationWithUser = (value: boolean) => {\r\n if (!value) {\r\n this.setState({ selectedUser: null });\r\n return;\r\n }\r\n this.setState({\r\n showSelectUserDialog: true\r\n });\r\n };\r\n\r\n handleGetUserSelectListItems = (companyId: string, pageSize: number, page: number, filter: string,\r\n ignoreUserIds: string[], ignoreUserCodes: string[], activityState: number, ignoreRecordUserConnected: boolean,\r\n doNotIgnoreRecordUserConnectedUserCode: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return documentService.getTargetCompanyUserListItems(companyId, pageSize, page, filter, sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n onSelectUserDialogOk = async (users: IUserListItem[]) => {\r\n if (!users || users.length < 1) return;\r\n const selectedUser = new ModifyUser();\r\n selectedUser.code = users[0].code;\r\n selectedUser.name = users[0].getName();\r\n selectedUser.picture = users[0].picture;\r\n this.setState({\r\n selectedUser,\r\n showSelectUserDialog: false\r\n });\r\n };\r\n\r\n onSelectUserDialogCancel = () => {\r\n this.setState({\r\n showSelectUserDialog: false\r\n });\r\n };\r\n // #endregion RenewPersonalization\r\n\r\n getSaveDataFromState = async (props: IDocumentCopyMoveDialogProp, state: IDocumentCopyMoveDialogState, move: boolean): Promise => {\r\n const result = new SaveDataObj();\r\n result.append(\"sourceCompanyId\", props.companyId);\r\n result.append(\"sourceFolderId\", props.folderId);\r\n result.append(\"sourceDocuments\", props.items.map(i => {\r\n return IdTitle.createIdTitle(i.id, i.code);\r\n }));\r\n result.append(\"targetCompanyId\", state.targetCompanyId);\r\n result.append(\"targetFolderId\", state.targetFolderTreeNode.id);\r\n result.append(\"resetDocumentVersion\", state.resetDocumentVersion);\r\n result.append(\"newUserCode\", state.selectedUser?.code ?? \"\");\r\n result.append(\"move\", move);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (move: boolean): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n const saveData = await this.getSaveDataFromState(props, state, move);\r\n //Call server\r\n if (props.items.length > 0) {\r\n return !!(await AppUtils.callService(() => documentService.copyDocuments(saveData.obj)));\r\n } else {\r\n return !!(await AppUtils.callService(() => documentService.copyFolder(saveData.obj)));\r\n }\r\n };\r\n\r\n handleCopy = async () => {\r\n if (!await this.saveToDb(false)) return;\r\n const props = this.props;\r\n const isDocumentCopy = props.items.length > 0;\r\n props.onOk(\r\n isDocumentCopy\r\n ? props.folderId === this.state.targetFolderTreeNode?.id\r\n : true,\r\n props.companyId === this.state.targetCompanyId\r\n ? this.state.targetFolderTreeNode?.id\r\n : props.folderId);\r\n };\r\n\r\n handleMove = async () => {\r\n if (!await this.saveToDb(true)) return;\r\n const props = this.props;\r\n props.onOk(\r\n true,\r\n props.companyId === this.state.targetCompanyId\r\n ? this.state.targetFolderTreeNode?.id\r\n : props.folderId\r\n );\r\n };\r\n\r\n handleCancel = async () => {\r\n this.props.onCancel();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const copyFolders = props.items.length < 1;\r\n const moveDisabled = state.targetFolderTreeNode.permission < Permission.Edit || props.folderId === state.targetFolderTreeNode?.id;\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.companyId === state.targetCompanyId &&\r\n \r\n \r\n \r\n { this.setState({ resetDocumentVersion: checked }); }}\r\n />\r\n \r\n \r\n \r\n }\r\n {props.companyId !== state.targetCompanyId && (props.sessionState.isSuperAdmin || props.sessionState.companyId === state.targetCompanyId) &&\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!!state.selectedUser &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n \r\n \r\n {props.companies.length > 1 &&\r\n \r\n \r\n \r\n \r\n }\r\n selectMode={true}\r\n actions={props.companies.map((company) => {\r\n return {\r\n title: ,\r\n textTitle: company.name,\r\n selected: state.targetCompanyId === company.id,\r\n disabled: !company.active,\r\n onClick: () => this.handleChangeTargetCompany(company.id)\r\n };\r\n })}\r\n />\r\n \r\n \r\n \r\n }\r\n \r\n \r\n 1 ? null : 0}>\r\n \r\n
\r\n \r\n {state.targetFolderTreeNodes.map((node, index) =>\r\n \r\n )}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n }\r\n actions={\r\n \r\n {Translations.Cancel}\r\n {props.folderPermission > Permission.Read &&\r\n {Translations.Move}\r\n }\r\n {Translations.Copy}\r\n \r\n }\r\n onClose={this.handleCancel}\r\n />\r\n {state.showSelectUserDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","// ModifyUserInfo\r\n// ***********************************************************************************************************************\r\nimport React from \"react\";\r\nimport { IModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { ModifyUserInfo } from \"../ModifyUserInfo\";\r\nimport { UnlockToolButton } from \"../../Button/UnlockToolButton\";\r\n\r\nexport interface ILockedUserInfoProp {\r\n lockedUser: IModifyUser;\r\n onUnlockAndLockToMe: () => void;\r\n}\r\n\r\nexport const LockedUserInfo = (props: ILockedUserInfoProp) => (\r\n \r\n : null\r\n }\r\n />\r\n);\r\n","import React from \"react\";\r\nimport { FormField } from \"../FormField\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { LockedUserInfo } from \"../User/LockedUserInfo\";\r\n\r\ninterface IFormFieldLockedToUserProps {\r\n lockedUser: IModifyUser;\r\n margin?: string | number;\r\n onUnlockAndLockToMe?: () => void;\r\n}\r\n\r\nexport const FormFieldLockedToUser = ({ lockedUser, onUnlockAndLockToMe, margin }: IFormFieldLockedToUserProps) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};","import React, { useEffect } from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { CKEditor } from \"ckeditor4-react\";\r\n\r\ninterface IAppCkEditorProps {\r\n readOnly?: boolean;\r\n value?: string;\r\n height: string;\r\n dataId: number;\r\n htmlMode?: boolean;\r\n documentLandscapeOrientation?: boolean;\r\n onInstanceReady: (ev: any) => void;\r\n onChange: (ev: any) => void;\r\n}\r\n\r\nexport const AppCkEditor = (props: IAppCkEditorProps) => {\r\n const ckEditorContainerDiv = React.useRef(null);\r\n \r\n const setCkEditorStyles = () => {\r\n if (!ckEditorContainerDiv.current) return;\r\n Base.setCkEditorStyles(ckEditorContainerDiv.current, !props.htmlMode, !!props.documentLandscapeOrientation);\r\n };\r\n\r\n useEffect(() => {\r\n setCkEditorStyles();\r\n }, [props.dataId, props.documentLandscapeOrientation ?? false]);\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n","import { Box, Grid } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../../../framework/appUtils\";\r\nimport * as documentService from \"../../../../../models/services/documentService\";\r\nimport { CkEditorDialog } from \"../../../../framework/Dialog/Dialog\";\r\nimport { DialogItemsNav } from \"../../../../framework/Dialog/DialogItemsNav\";\r\nimport { FormField } from \"../../../../framework/FormField\";\r\nimport { GridRow } from \"../../../../framework/Grid/GridRow\";\r\nimport { ModifyUserInfo } from \"../../../../framework/User/ModifyUserInfo\";\r\nimport { DialogButtons } from \"source/components/framework/Dialog/DialogButtons\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IDocumentVersionEditItem } from \"source/models/documentVersion/documentVersionEditItem\";\r\nimport { DocumentVersionType } from \"ui/Scripts/source/models/enums\";\r\nimport { AppCkEditor } from \"source/components/framework/AppCkEditor\";\r\n\r\nexport interface IDocumentVersionDialogProp {\r\n companyId: string;\r\n folderId: string;\r\n id: string;\r\n\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IDocumentVersionDialogState {\r\n item: IDocumentVersionEditItem;\r\n ckEditorDataId: number;\r\n}\r\n\r\nexport class DocumentVersionDialog extends React.Component {\r\n private editor: any = null;\r\n\r\n constructor(props: IDocumentVersionDialogProp) {\r\n super(props);\r\n this.state = {\r\n item: null,\r\n ckEditorDataId: 0\r\n };\r\n }\r\n\r\n setCkEditorContent = (value: string) => {\r\n this.setState({ ckEditorDataId: this.state.ckEditorDataId + 1 });\r\n if (!this.editor) return;\r\n this.editor.setData(value, {\r\n callback: () => {\r\n this.editor.resetDirty();\r\n }\r\n });\r\n this.setState({ ckEditorDataId: this.state.ckEditorDataId + 1 });\r\n };\r\n\r\n destroyCkEditor = () => {\r\n if (!this.editor) return;\r\n this.editor.destroy();\r\n this.editor = null;\r\n };\r\n\r\n handleCkEditorInstanceReady = (ev) => {\r\n this.editor = ev.editor;\r\n ev.editor.resetDirty();\r\n this.setCkEditorContent(this.state.item?.content ?? \"\");\r\n };\r\n // #endregion CkEditor\r\n\r\n loadData = async () => {\r\n const props = this.props;\r\n const result = await AppUtils.callService(() => documentService.getDocumentVersionEdit(props.companyId, props.folderId, props.id), false);\r\n if (!result) return;\r\n const item = result.item;\r\n const state = {\r\n item\r\n };\r\n this.setState(state, () => {\r\n this.setCkEditorContent(item.content);\r\n });\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadData();\r\n }\r\n \r\n componentWillUnmount(): void {\r\n this.destroyCkEditor();\r\n }\r\n\r\n async componentDidUpdate(prevProps: IDocumentVersionDialogProp, prevState: IDocumentVersionDialogState): Promise {\r\n const props = this.props;\r\n if (prevProps.companyId === props.companyId && prevProps.id === props.id) return;\r\n this.loadData();\r\n }\r\n\r\n handlePrevious = async () => {\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.item) return null;\r\n return (\r\n \r\n \r\n \r\n \r\n {Base.timeToDateTimeStr(state.item.modifyUser.date)}\r\n \r\n \r\n \r\n \r\n {state.item.version.toString(10)}\r\n \r\n \r\n \r\n \r\n {state.item.contentVersion.toString(10)}\r\n \r\n \r\n \r\n \r\n {state.item.type === DocumentVersionType.Publish ? Translations.Yes : Translations.No}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={props.onCancel}\r\n />\r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport * as documentService from \"../../../../models/services/documentService\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { List } from \"../../../framework/List/List\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Box } from \"@mui/material\";\r\nimport { IDocumentVersionListItem } from \"source/models/documentVersion/documentVersionListItem\";\r\nimport { DocumentVersionType } from \"ui/Scripts/source/models/enums\";\r\nimport { ListLinkValue } from \"source/components/framework/List/ListLinkValue\";\r\nimport { DocumentVersionDialog } from \"./DocumentVersionDialog\";\r\n\r\nexport interface IDocumentVersionListProp {\r\n companyId: string;\r\n folderId: string;\r\n documentId: string;\r\n}\r\n\r\ninterface IDocumentVersionListState {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n items: IDocumentVersionListItem[];\r\n selectedId: string;\r\n\r\n showEditDialog: boolean;\r\n editDialogHasPrevious: boolean;\r\n editDialogHasNext: boolean;\r\n}\r\n\r\nexport class DocumentVersionList extends React.Component {\r\n constructor(props: IDocumentVersionListProp) {\r\n super(props);\r\n this.state = {\r\n intialized: false,\r\n isLoading: false,\r\n items: [],\r\n selectedId: null,\r\n showEditDialog: false,\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false,\r\n };\r\n }\r\n\r\n searchItems = async () => {\r\n const props = this.props;\r\n if (!props.documentId) return;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => documentService.getDocumentVersionListItems(props.companyId, props.folderId, props.documentId), false, true, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const state = this.state;\r\n const items = List.getListItems(state.items, state.selectedId, [], result.items, true, false);\r\n const index = items.items.findIndex(i => i.id === state.selectedId);\r\n const selectedItem = index > -1 ? items.items[index] : null;\r\n this.setState({\r\n intialized: true,\r\n items: items.items,\r\n selectedId: selectedItem?.id ?? \"\",\r\n editDialogHasPrevious: index > 0,\r\n editDialogHasNext: index < items.items.length - 1\r\n });\r\n };\r\n\r\n refreshList = async () => {\r\n await this.searchItems();\r\n };\r\n\r\n componentDidMount(): void {\r\n this.searchItems();\r\n }\r\n\r\n componentDidUpdate(prevProps: IDocumentVersionListProp, prevState: IDocumentVersionListState) {\r\n const props = this.props;\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n const prevFolderId = prevProps.folderId ? prevProps.folderId : \"\";\r\n const folderId = props.folderId ? props.folderId : \"\";\r\n const prevDocumentId = prevProps.documentId ? prevProps.documentId : \"\";\r\n const documentId = props.documentId ? props.documentId : \"\";\r\n if (companyId === prevCompanyId && folderId === prevFolderId && folderId === prevFolderId && documentId === prevDocumentId) return;\r\n this.searchItems();\r\n }\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n this.searchItems();\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId\r\n });\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n if (index < 0 || index >= state.items.length) return;\r\n this.setState({\r\n selectedId: state.items[index].id,\r\n editDialogHasPrevious: index > 0,\r\n editDialogHasNext: index < state.items.length - 1\r\n });\r\n };\r\n\r\n handleOpenDocumentVersion = (id: string) => {\r\n if (!id) return;\r\n const state = this.state;\r\n const index = state.items.findIndex(i => i.id === id);\r\n if (index < 0) return;\r\n this.setState({\r\n selectedId: id,\r\n showEditDialog: true,\r\n editDialogHasPrevious: index > 0,\r\n editDialogHasNext: index < state.items.length - 1\r\n });\r\n };\r\n\r\n handleCloseDocumentVersion = () => {\r\n this.setState({ showEditDialog: false });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n {\r\n return {\r\n columns: [\r\n { size: 3, content: this.handleOpenDocumentVersion(item.id)}>{Base.timeToDateTimeStr(item.modifyUser.date)} },\r\n {\r\n size: 3,\r\n content: \r\n \r\n \r\n {item.modifyUser.name}\r\n \r\n \r\n },\r\n { size: 3, content: item.type === DocumentVersionType.Publish && item.version ? item.version.toString(10) : \"\" },\r\n { size: 3, content: item.contentVersion ? item.contentVersion.toString(10) : \"\" }\r\n ],\r\n id: item.id\r\n };\r\n })}\r\n sortColumn={\"\"}\r\n sortOrderIsAsc={false}\r\n selectedId={state.selectedId}\r\n checkedIds={[]}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={null}\r\n />\r\n {state.showEditDialog &&\r\n List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","import { Box, Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../../../framework/saveData\";\r\nimport * as documentService from \"../../../../../models/services/documentService\";\r\nimport { CkEditorDialog } from \"../../../../framework/Dialog/Dialog\";\r\nimport { DialogItemsNav } from \"../../../../framework/Dialog/DialogItemsNav\";\r\nimport { FormField } from \"../../../../framework/FormField\";\r\nimport { GridRow } from \"../../../../framework/Grid/GridRow\";\r\nimport { ModifyUserInfo } from \"../../../../framework/User/ModifyUserInfo\";\r\nimport { DialogButtons } from \"source/components/framework/Dialog/DialogButtons\";\r\nimport { IDocumentTemplateEditItem } from \"source/models/documentTemplate/documentTemplateEditItem\";\r\nimport { AppCkEditor } from \"source/components/framework/AppCkEditor\";\r\n\r\nexport interface IDocumentTemplateDialogProp {\r\n classes?: string;\r\n id: string;\r\n companyId: string;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onOk: () => void;\r\n onCancel: () => void;\r\n onRemove: (ids: string[]) => Promise;\r\n onRefreshList: () => Promise;\r\n}\r\n\r\nexport interface IDocumentTemplateDialogState {\r\n code: string;\r\n comment: string;\r\n content: string;\r\n\r\n item: IDocumentTemplateEditItem;\r\n rowId: string;\r\n ckEditorDataId: number;\r\n}\r\n\r\nexport class DocumentTemplateDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n private editor: any = null;\r\n\r\n constructor(props: IDocumentTemplateDialogProp) {\r\n super(props);\r\n this.state = {\r\n item: null,\r\n code: \"\",\r\n comment: \"\",\r\n content: \"\",\r\n rowId: \"\",\r\n ckEditorDataId: 0\r\n };\r\n }\r\n\r\n // #region CkEditor\r\n setCkEditorContent = (value: string) => {\r\n this.setState({ ckEditorDataId: this.state.ckEditorDataId + 1 });\r\n if (!this.editor) return;\r\n this.editor.setData(value, {\r\n callback: () => {\r\n this.editor.resetDirty();\r\n this.orgStateHash = this.getHashFromState(this.props, this.state);\r\n }\r\n });\r\n this.setState({ ckEditorDataId: this.state.ckEditorDataId + 1 });\r\n };\r\n\r\n destroyCkEditor = () => {\r\n if (!this.editor) return;\r\n this.editor.destroy();\r\n this.editor = null;\r\n };\r\n\r\n handleCkEditorInstanceReady = (ev) => {\r\n this.editor = ev.editor;\r\n ev.editor.resetDirty();\r\n this.setCkEditorContent(this.state.content);\r\n };\r\n // #endregion CkEditor\r\n\r\n loadData = async () => {\r\n const props = this.props;\r\n const result = await AppUtils.callService(() => documentService.getDocumentTemplateEdit(props.companyId, props.id), false);\r\n if (!result) return;\r\n const item = result.item;\r\n const state = {\r\n ...this.state,\r\n item,\r\n code: item.code,\r\n comment: item.comment,\r\n content: item.content,\r\n rowId: item.rowId\r\n };\r\n this.setState(state, () => {\r\n this.setCkEditorContent(item.content);\r\n });\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadData();\r\n }\r\n \r\n componentWillUnmount(): void {\r\n this.destroyCkEditor();\r\n }\r\n\r\n async componentDidUpdate(prevProps: IDocumentTemplateDialogProp, prevState: IDocumentTemplateDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if (prevProps.companyId === props.companyId && prevProps.id === props.id) return;\r\n const cancelResult = await AppUtils.cancel(this.getHashFromState(props, state), this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb()) return;\r\n props.onRefreshList();\r\n }\r\n this.loadData();\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"code\") {\r\n this.setState({ code: value });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n }\r\n };\r\n\r\n getHashFromState = (props: IDocumentTemplateDialogProp, state: IDocumentTemplateDialogState): string => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.item.id);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"code\", state.code);\r\n result.append(\"comment\", state.comment);\r\n let contentDirty = false;\r\n if (this.editor) {\r\n contentDirty = this.editor.checkDirty();\r\n }\r\n result.append(\"changed\", contentDirty);\r\n return result.hash;\r\n };\r\n\r\n getSaveDataFromState = (props: IDocumentTemplateDialogProp, state: IDocumentTemplateDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.item.id);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"code\", state.code);\r\n result.append(\"comment\", state.comment);\r\n let content = state.content;\r\n if (this.editor) {\r\n content = this.editor.getData();\r\n }\r\n result.append(\"content\", content);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.code) {\r\n AppUtils.showErrorMessage(Translations.NameMustBeDefined);\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = !!(await AppUtils.callService(() => documentService.saveDocumentTemplateEdit(saveData.obj)));\r\n if (result && this.editor) {\r\n this.editor.resetDirty();\r\n }\r\n return result;\r\n };\r\n\r\n handleSave = async () => {\r\n if (!await this.saveToDb()) return;\r\n this.props.onOk();\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.item.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveDocumentTemplateParameter, state.item.code), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await props.onRemove([state.item.id]);\r\n if (!result) return;\r\n props.onOk();\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getHashFromState(props, state), this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut(this.getHashFromState(props, this.state), this.orgStateHash, this.saveToDb, props.onRefreshList);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.item) return null;\r\n const isNew = state.item.isNew();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!isNew &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { infiniteListPageSize } from \"../../../../models/common/webConsts\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport * as documentService from \"../../../../models/services/documentService\";\r\nimport { IListUsingComponentState, List } from \"../../../framework/List/List\";\r\nimport { SaveDataObj } from \"source/framework/saveData\";\r\nimport { DialogSettingsCard } from \"source/components/framework/Container/DialogSettingsCard\";\r\nimport { ActionContainer } from \"source/components/framework/ActionContainer\";\r\nimport { ListSearchFilter } from \"source/components/framework/List/ListSearchFilter\";\r\nimport { ListIconButtonsItem } from \"source/components/framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { ListLinkValue } from \"source/components/framework/List/ListLinkValue\";\r\nimport { IDocumentTemplateListItem } from \"source/models/documentTemplate/documentTemplateListItem\";\r\nimport { DocumentTemplateDialog } from \"./DocumentTemplateDialog\";\r\n\r\nexport interface IDocumentTemplateListProp {\r\n companyId: string;\r\n selectMode?: boolean;\r\n selectedId?: string;\r\n onSetSelected?: (item: IDocumentTemplateListItem) => void;\r\n height?: string;\r\n}\r\n\r\ninterface IDocumentTemplateListState extends IListUsingComponentState {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n pageSize: number;\r\n page: number;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n checkedIds: string[];\r\n}\r\n\r\nexport class DocumentTemplateList extends React.Component {\r\n constructor(props: IDocumentTemplateListProp) {\r\n super(props);\r\n this.state = {\r\n intialized: false,\r\n isLoading: false,\r\n page: 1,\r\n hasMore: true,\r\n filter: \"\",\r\n pageSize: infiniteListPageSize,\r\n sortColumn: \"code\",\r\n sortOrderIsAsc: true,\r\n items: [],\r\n selectedId: props.selectedId,\r\n checkedIds: [],\r\n showEditDialog: false,\r\n editDialogId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false,\r\n detailsItem: null\r\n };\r\n }\r\n\r\n searchItems = async (pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean, moveNext: boolean = false, setEditDialogData: boolean = true) => {\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => documentService.getDocumentTemplateListItems(this.props.companyId, !refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1, filter, sortColumn, sortOrderIsAsc), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const state = this.state;\r\n const items = List.getListItems(state.items, state.selectedId, state.checkedIds, result.items, resetItems, refreshList);\r\n let selectedId = items.selectedId;\r\n let index = items.items.findIndex(i => i.id === selectedId);\r\n let selectedItem = index > -1 ? items.items[index] : null;\r\n if (moveNext && selectedItem && index < items.items.length - 1) {\r\n index = index + 1;\r\n selectedItem = items.items[index];\r\n selectedId = items.items[index].id;\r\n }\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n selectedId,\r\n checkedIds: items.checkedIds,\r\n editDialogId: setEditDialogData ? (moveNext && selectedItem ? selectedItem.id : \"\") : state.editDialogId,\r\n editDialogHasPrevious: setEditDialogData ? index > 0 : state.editDialogHasPrevious,\r\n editDialogHasNext: setEditDialogData ? (index < items.items.length - 1 || result.hasMore) : state.editDialogHasNext,\r\n });\r\n };\r\n\r\n refreshList = async (setEducationDialogData: boolean = true) => {\r\n const state = this.state;\r\n await this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, true, false, setEducationDialogData);\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: IDocumentTemplateListProp, prevState: IDocumentTemplateListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n if (companyId === prevCompanyId) return;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n const props = this.props;\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n if (!props.onSetSelected) return;\r\n const item = this.state.items.find(i => i.id === selectedId);\r\n if (!item) return;\r\n props.onSetSelected(item);\r\n };\r\n\r\n handleAdd = () => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, Base.emptyGuid));\r\n };\r\n\r\n handleOpenLine = (id: string) => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, id));\r\n };\r\n\r\n handleEditDialogOk = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n this.refreshList();\r\n };\r\n\r\n handleEditDialogCancel = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n };\r\n\r\n getRemoveSaveData = (props: IDocumentTemplateListProp, ids: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"ids\", ids);\r\n return result;\r\n };\r\n\r\n remove = async (ids: string[]): Promise => {\r\n const props = this.props;\r\n if (ids.length < 1) return;\r\n const saveData = this.getRemoveSaveData(props, ids);\r\n // Call server\r\n const result = await AppUtils.callService(() => documentService.removeDocumentTemplates(saveData.obj));\r\n if (!result) return null;\r\n this.refreshList();\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n const selectedItems = state.items.filter(i => selectedIds.indexOf(i.id) > -1);\r\n if (selectedItems.length < 1) return;\r\n if (await AppUtils.showConfirmationDialog(selectedItems.length > 1\r\n ? Translations.DoYouReallyWantToRemoveSelectedDocumentTemplates\r\n : String.format(Translations.DoYouReallyWantToRemoveDocumentTemplateParameter, selectedItems[0].code), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n this.remove(selectedIds);\r\n }\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n this.setState(List.getEditDialogItemByIndexStateChange(this.state, index, () => this.searchItems(state.pageSize, state.page + 1, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false, true)));\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n }\r\n rightItems={!props.selectMode\r\n ? \r\n : null\r\n }\r\n />\r\n }\r\n content={\r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 5,\r\n content: !props.selectMode\r\n ? this.handleOpenLine(item.id)}>{item.code}\r\n : item.code\r\n },\r\n { size: 7, content: item.comment }\r\n ],\r\n id: item.id\r\n };\r\n })}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={!props.selectMode ? this.handleOpenLine : null}\r\n />\r\n } />\r\n {(state.showEditDialog && !!state.editDialogId) &&\r\n this.refreshList(false)}\r\n onPrevious={() => List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","import { Alert, Box, FormControlLabel, Grid, Radio, RadioGroup, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as documentService from \"../../../models/services/documentService\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { DocumentTemplateList } from \"../DocumentSettingsDialog/DocumentTemplateList\";\r\nimport { IDocumentTemplateListItem } from \"source/models/documentTemplate/documentTemplateListItem\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { PanelTitle } from \"source/components/framework/Panel/PanelTitle\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nconst enum StartPageSelectionType {\r\n FromDocumentTemplate = \"1\",\r\n FromSharedDocumentTemplate = \"2\",\r\n AddNew = \"3\",\r\n AddNewShared = \"4\"\r\n}\r\n\r\nexport const enum DocumentSaveAsTemplateDialogPage {\r\n Start = \"1\",\r\n SelectDocumentTemplate = \"2\",\r\n SelectSharedDocumentTemplate = \"3\",\r\n NewDocumentTemplateData = \"4\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\nexport interface IDocumentSaveAsTemplateDialogProp {\r\n sessionState: ISessionState;\r\n companyId: string;\r\n content: string;\r\n onClose: () => void;\r\n}\r\n\r\nexport interface IDocumentSaveAsTemplateDialogState {\r\n selectionType: StartPageSelectionType;\r\n page: DocumentSaveAsTemplateDialogPage;\r\n id: string;\r\n companyId: string;\r\n code: string;\r\n comment: string;\r\n}\r\n\r\nexport class DocumentSaveAsTemplateDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IDocumentSaveAsTemplateDialogProp) {\r\n super(props);\r\n this.state = {\r\n selectionType: StartPageSelectionType.AddNew,\r\n page: DocumentSaveAsTemplateDialogPage.Start,\r\n id: \"\",\r\n companyId: \"\",\r\n code: \"\",\r\n comment: \"\"\r\n };\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"code\") {\r\n this.setState({ code: value });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n }\r\n };\r\n\r\n getSaveDataFromState = async (props: IDocumentSaveAsTemplateDialogProp, state: IDocumentSaveAsTemplateDialogState): Promise => {\r\n const result = new SaveDataObj();\r\n const selectionWasShared = state.selectionType === StartPageSelectionType.FromSharedDocumentTemplate || state.selectionType === StartPageSelectionType.AddNewShared;\r\n const selectionWasNew = state.selectionType === StartPageSelectionType.AddNew || state.selectionType === StartPageSelectionType.AddNewShared;\r\n result.append(\"id\", selectionWasNew ? Base.emptyGuid : state.id);\r\n result.append(\"companyId\", selectionWasShared ? null : props.companyId);\r\n result.append(\"rowId\", null);\r\n result.append(\"code\", state.code);\r\n result.append(\"comment\", state.comment);\r\n result.append(\"content\", props.content);\r\n return result;\r\n };\r\n\r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.code) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.NameMustBeDefined));\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n const saveData = await this.getSaveDataFromState(props, state);\r\n //Call server\r\n return await AppUtils.callService(() => documentService.saveDocumentTemplateEdit(saveData.obj));\r\n };\r\n\r\n handleSave = async () => {\r\n const result = await this.saveToDb();\r\n if (!result) return;\r\n this.props.onClose();\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel((await this.getSaveDataFromState(props, state)).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onClose();\r\n }\r\n };\r\n\r\n handleMoveToPreviousPage = () => {\r\n const state = this.state;\r\n if (state.page === DocumentSaveAsTemplateDialogPage.Start) return;\r\n const selectionWasNew = state.selectionType === StartPageSelectionType.AddNew || state.selectionType === StartPageSelectionType.AddNewShared;\r\n const page = state.page === DocumentSaveAsTemplateDialogPage.SelectDocumentTemplate ||\r\n state.page === DocumentSaveAsTemplateDialogPage.SelectSharedDocumentTemplate ||\r\n selectionWasNew && state.page === DocumentSaveAsTemplateDialogPage.NewDocumentTemplateData\r\n ? DocumentSaveAsTemplateDialogPage.Start\r\n : (state.companyId\r\n ? DocumentSaveAsTemplateDialogPage.SelectDocumentTemplate\r\n : DocumentSaveAsTemplateDialogPage.SelectSharedDocumentTemplate);\r\n const newPageIsStart = page === DocumentSaveAsTemplateDialogPage.Start;\r\n this.setState({\r\n page,\r\n id: newPageIsStart ? \"\" : state.id,\r\n companyId: newPageIsStart ? \"\" : state.companyId,\r\n code: newPageIsStart ? \"\" : state.code,\r\n comment: newPageIsStart ? \"\" : state.comment\r\n });\r\n };\r\n \r\n handleMoveToNextPage = async () => {\r\n const state = this.state;\r\n if (state.page === DocumentSaveAsTemplateDialogPage.NewDocumentTemplateData) return;\r\n const page = state.page === DocumentSaveAsTemplateDialogPage.SelectDocumentTemplate || state.page === DocumentSaveAsTemplateDialogPage.SelectSharedDocumentTemplate\r\n ? DocumentSaveAsTemplateDialogPage.NewDocumentTemplateData\r\n : (state.selectionType === StartPageSelectionType.FromDocumentTemplate\r\n ? DocumentSaveAsTemplateDialogPage.SelectDocumentTemplate\r\n : (state.selectionType === StartPageSelectionType.FromSharedDocumentTemplate\r\n ? DocumentSaveAsTemplateDialogPage.SelectSharedDocumentTemplate\r\n : DocumentSaveAsTemplateDialogPage.NewDocumentTemplateData\r\n ));\r\n this.setState({\r\n page\r\n });\r\n };\r\n\r\n handleChangeStartPageSelectionType = (checked: boolean, selectionType: StartPageSelectionType) => {\r\n if (!checked) return;\r\n this.setState({\r\n selectionType\r\n });\r\n };\r\n\r\n handleSelectDocumentTemplate = (item: IDocumentTemplateListItem) => {\r\n this.setState({\r\n id: item.id,\r\n companyId: item.companyId,\r\n code: item.code,\r\n comment: item.comment\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const isLastPage = state.page === DocumentSaveAsTemplateDialogPage.NewDocumentTemplateData;\r\n const selectionWasShared = state.selectionType === StartPageSelectionType.FromSharedDocumentTemplate || state.selectionType === StartPageSelectionType.AddNewShared;\r\n const selectionWasNew = state.selectionType === StartPageSelectionType.AddNew || state.selectionType === StartPageSelectionType.AddNewShared;\r\n return (\r\n \r\n {state.page === DocumentSaveAsTemplateDialogPage.Start &&\r\n \r\n \r\n \r\n this.handleChangeStartPageSelectionType(true, value as StartPageSelectionType)}>\r\n \r\n }\r\n />\r\n {props.sessionState.isSuperAdmin &&\r\n \r\n }\r\n />\r\n }\r\n \r\n }\r\n />\r\n {props.sessionState.isSuperAdmin &&\r\n \r\n }\r\n />\r\n }\r\n \r\n \r\n \r\n \r\n }\r\n {state.page === DocumentSaveAsTemplateDialogPage.SelectDocumentTemplate &&\r\n \r\n {Translations.SelectDocumentTemplate}\r\n \r\n \r\n }\r\n {state.page === DocumentSaveAsTemplateDialogPage.SelectSharedDocumentTemplate &&\r\n \r\n {Translations.SelectDocumentTemplate}\r\n \r\n \r\n }\r\n {state.page === DocumentSaveAsTemplateDialogPage.NewDocumentTemplateData &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n buttons={[\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: this.handleCancel },\r\n { title: Translations.Previous, variant: \"outlined\", onClick: state.page === DocumentSaveAsTemplateDialogPage.Start ? null : this.handleMoveToPreviousPage },\r\n {\r\n title: !isLastPage ? Translations.Next : Translations.Save,\r\n variant: \"confirmation\",\r\n onClick: !isLastPage ? this.handleMoveToNextPage : this.handleSave,\r\n disabled: (state.page === DocumentSaveAsTemplateDialogPage.SelectDocumentTemplate || state.page === DocumentSaveAsTemplateDialogPage.SelectSharedDocumentTemplate) && !state.id\r\n }\r\n ]}\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","import { ListStateIconSuccess } from \"source/components/framework/List/ListStateIconSuccess\";\r\nimport { Tooltip } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppButton, IAppButtonProps } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\nexport const ApproveButton = (props: IAppButtonProps) => (\r\n \r\n }\r\n {...props}\r\n >\r\n {Translations.Approve}\r\n \r\n \r\n);\r\n","import { ListStateIconSuccess } from \"source/components/framework/List/ListStateIconSuccess\";\r\nimport { Tooltip } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppButton, IAppButtonProps } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\nexport const PublishButton = (props: IAppButtonProps) => (\r\n \r\n }\r\n {...props}\r\n >\r\n {Translations.Publish}\r\n \r\n \r\n);\r\n","import { Box, FormControlLabel, Grid, Radio, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { ConfirmationDialogResult, DatabaseRecordType, FileType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as documentService from \"../../../models/services/documentService\";\r\nimport { CkEditorDialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { ModifyUserInfo } from \"../../framework/User/ModifyUserInfo\";\r\nimport { DialogButtons } from \"source/components/framework/Dialog/DialogButtons\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IDocumentDocumentEditItem } from \"source/models/documentDocument/documentDocumentEditItem\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { DocumentRemoveItem } from \"source/models/document/documentRemoveItem\";\r\nimport { IModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { LockedRecord } from \"ui/Scripts/source/models/common/lockedRecord\";\r\nimport { recordLockManager } from \"source/models/services/recordLockService\";\r\nimport { StoreUtils } from \"source/models/store/storeUtils\";\r\nimport { DialogTabs } from \"source/components/framework/Dialog/DialogTabs\";\r\nimport { DatePicker } from \"source/components/framework/DateTime/DatePicker\";\r\nimport { FormCheckBox } from \"source/components/framework/FormCheckBox\";\r\nimport { FormFieldLockedToUser } from \"source/components/framework/FormFieldLockedToUser\";\r\nimport { RemoveToolButton } from \"source/components/framework/Button/RemoveToolButton\";\r\nimport { DocumentVersionList } from \"./DocumentVersionList\";\r\nimport { DocumentSaveAsTemplateDialog } from \"../DocumentSaveAsTemplateDialog\";\r\nimport { AppCkEditor } from \"source/components/framework/AppCkEditor\";\r\nimport { ApproveButton } from \"source/components/framework/Button/ApproveButton\";\r\nimport { PublishButton } from \"source/components/framework/Button/PublishButton\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { removeConfirmationWord } from \"ui/Scripts/source/models/consts\";\r\nimport { DocumentFolderPath } from \"../DocumentFolderPath/DocumentFolderPath\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum DocumentDocumentEditDialogMenuItem {\r\n General = \"1\",\r\n VersionHistory = \"2\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\nexport interface IDocumentDocumentEditDialogProp {\r\n sessionState: ISessionState;\r\n canEditProperties: boolean;\r\n id: string;\r\n folderId: string;\r\n companyId: string;\r\n content: string;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onOk: (documentId: string, closeDialog: boolean) => void;\r\n onCancel: () => void;\r\n onRefreshList: () => Promise;\r\n}\r\n\r\nexport interface IDocumentDocumentEditDialogState {\r\n activeMenuItem: DocumentDocumentEditDialogMenuItem;\r\n path: string;\r\n keywords: IIdTitle[];\r\n code: string;\r\n comment: string;\r\n content: string;\r\n endDateStr: string;\r\n landscapeOrientation: boolean;\r\n keywordIds: string[];\r\n publishedId: string;\r\n item: IDocumentDocumentEditItem;\r\n rowId: string;\r\n approveUser: IModifyUser;\r\n nowApproved: boolean;\r\n publishUser: IModifyUser;\r\n publishVersion: number;\r\n nowPublished: boolean;\r\n lockedUser: IModifyUser;\r\n isLockedToOtherUser: boolean;\r\n ckEditorDataId: number;\r\n\r\n showSaveAsDocumentTemplateDialog: boolean;\r\n saveAsDocumentTemplateDialogContent: string;\r\n}\r\n\r\nexport class DocumentDocumentEditDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n private editor: any = null;\r\n\r\n constructor(props: IDocumentDocumentEditDialogProp) {\r\n super(props);\r\n this.state = {\r\n activeMenuItem: DocumentDocumentEditDialogMenuItem.General,\r\n path: \"\",\r\n keywords: [],\r\n item: null,\r\n code: \"\",\r\n comment: \"\",\r\n content: \"\",\r\n endDateStr: \"\",\r\n landscapeOrientation: false,\r\n keywordIds: [],\r\n publishedId: \"\",\r\n rowId: \"\",\r\n approveUser: null,\r\n nowApproved: false,\r\n lockedUser: null,\r\n publishUser: null,\r\n publishVersion: 0,\r\n nowPublished: false,\r\n isLockedToOtherUser: false,\r\n showSaveAsDocumentTemplateDialog: false,\r\n saveAsDocumentTemplateDialogContent: \"\",\r\n ckEditorDataId: 0\r\n };\r\n }\r\n\r\n // #region CkEditor\r\n private ckEditorInstanceIsReady = false;\r\n private ckEditorSettingData = false;\r\n\r\n setCkEditorContent = (value: string) => {\r\n this.setState({ ckEditorDataId: this.state.ckEditorDataId + 1 });\r\n if (!this.editor) return;\r\n this.ckEditorSettingData = true;\r\n this.editor.setData(value, {\r\n callback: () => {\r\n this.editor.resetDirty();\r\n this.orgStateHash = this.getHashFromState(this.props, this.state);\r\n this.ckEditorSettingData = false;\r\n }\r\n });\r\n this.setState({ ckEditorDataId: this.state.ckEditorDataId + 1 });\r\n };\r\n\r\n destroyCkEditor = () => {\r\n if (!this.editor) return;\r\n this.editor.destroy();\r\n this.editor = null;\r\n };\r\n\r\n handleCkEditorInstanceReady = (ev) => {\r\n this.editor = ev.editor;\r\n ev.editor.resetDirty();\r\n this.setCkEditorContent(this.state.content);\r\n this.ckEditorInstanceIsReady = true;\r\n };\r\n\r\n handleCkEditorChange = (ev) => {\r\n if (!this.ckEditorInstanceIsReady || this.ckEditorSettingData) return;\r\n this.setState({\r\n approveUser: null, //Reset approval\r\n nowApproved: false\r\n });\r\n };\r\n // #endregion CkEditor\r\n\r\n loadData = async (documentId: string) => {\r\n const props = this.props;\r\n //Unlock current message\r\n if (LockedRecord.isLockedToUser(this.state.lockedUser, props.sessionState.code)) {\r\n await recordLockManager.unlock(props.companyId, this.state.item?.id, DatabaseRecordType.Document);\r\n }\r\n //Load and lock message\r\n const result = await AppUtils.callService(() => documentService.getDocumentDocumentEdit(props.companyId, props.folderId, documentId), false);\r\n if (!result) return;\r\n const item = result.item;\r\n const isNew = item.id === Base.emptyGuid;\r\n const state = {\r\n ...this.state,\r\n path: result.path,\r\n keywords: result.keywords,\r\n item,\r\n code: item.code,\r\n comment: item.comment,\r\n content: isNew ? props.content : item.content,\r\n landscapeOrientation: item.landscapeOrientation,\r\n endDateStr: item.endDate ? Base.utcTimeToDateStr(item.endDate) : \"\",\r\n keywordIds: item.keywordIds,\r\n publishedId: item.publishedId,\r\n rowId: item.rowId,\r\n approveUser: item.approveUser,\r\n nowApproved: false,\r\n publishUser: item.publishUser,\r\n publishVersion: item.publishVersion,\r\n nowPublished: false,\r\n lockedUser: item.lockedUser,\r\n isLockedToOtherUser: item.isLockedToOtherUser(props.sessionState.code)\r\n };\r\n this.setState(state, () => {\r\n this.setCkEditorContent(item.content);\r\n });\r\n //Add locked record to idb\r\n if (!isNew && LockedRecord.isLockedToUser(item.lockedUser, props.sessionState.code)) {\r\n recordLockManager.addLock(LockedRecord.createLockedRecord(props.companyId, item.id, props.sessionState.code, DatabaseRecordType.Document));\r\n }\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadData(this.props.id);\r\n }\r\n \r\n async componentWillUnmount(): Promise {\r\n this.destroyCkEditor();\r\n //Unlock on close\r\n const props = this.props;\r\n const state = this.state;\r\n const id = state.item?.id ?? \"\";\r\n const isNew = id === Base.emptyGuid;\r\n if (!isNew && LockedRecord.isLockedToUser(state.lockedUser, props.sessionState.code)) {\r\n await recordLockManager.unlock(props.companyId, id, DatabaseRecordType.Document);\r\n }\r\n }\r\n\r\n async componentDidUpdate(prevProps: IDocumentDocumentEditDialogProp, prevState: IDocumentDocumentEditDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if (prevProps.companyId === props.companyId && (prevProps.id === props.id || prevProps.id === Base.emptyGuid && props.id === state.item?.id)) return;\r\n const cancelResult = await AppUtils.cancel(this.getHashFromState(props, state), this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb()) return;\r\n props.onRefreshList();\r\n }\r\n this.loadData(props.id);\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"code\") {\r\n this.setState({ code: value });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n }\r\n };\r\n\r\n handleChangeEndDate = (value: moment.Moment | string) => {\r\n let endDateStr = \"\";\r\n if (typeof value === \"string\") {\r\n if (!Base.isNullOrEmpty(value)) {\r\n endDateStr = Base.timeToDateStr(value.toDate().getTime());\r\n }\r\n } else {\r\n endDateStr = Base.timeToDateStr(value);\r\n }\r\n this.setState({ endDateStr });\r\n };\r\n\r\n handleToggleActiveMenuItem = (activeMenuItem: DocumentDocumentEditDialogMenuItem) => {\r\n this.setState({ activeMenuItem });\r\n };\r\n\r\n // #region Locking\r\n handleUnlockAndLockToMe = async () => {\r\n const props = this.props;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToUnlockEditableDocument, this.state.item.code), false) !== ConfirmationDialogResult.Yes) {\r\n return;\r\n }\r\n const state = this.state;\r\n const result = await recordLockManager.lock(props.companyId, state.item?.id, props.sessionState.code, DatabaseRecordType.Document);\r\n if (!result || result.items.length < 1) return;\r\n this.setState({\r\n lockedUser: StoreUtils.getNowModifyUser(result.items[0].lockedDate),\r\n isLockedToOtherUser: false\r\n });\r\n };\r\n // #endregion Locking\r\n\r\n getBaseSaveDataFromState = (props: IDocumentDocumentEditDialogProp, state: IDocumentDocumentEditDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.item.id);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"folderId\", props.folderId);\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"code\", state.code);\r\n result.append(\"comment\", state.comment);\r\n result.append(\"landscapeOrientation\", state.landscapeOrientation);\r\n result.append(\"endDate\", state.endDateStr ? state.endDateStr.toUtcDate().getTime() : null);\r\n result.append(\"keywordIds\", state.keywordIds);\r\n return result;\r\n };\r\n\r\n getHashFromState = (props: IDocumentDocumentEditDialogProp, state: IDocumentDocumentEditDialogState): string => {\r\n const result = this.getBaseSaveDataFromState(props, state);\r\n let contentDirty = false;\r\n if (this.editor) {\r\n contentDirty = this.editor.checkDirty();\r\n }\r\n result.append(\"changed\", contentDirty);\r\n return result.hash;\r\n };\r\n\r\n getSaveDataFromState = (props: IDocumentDocumentEditDialogProp, state: IDocumentDocumentEditDialogState): SaveDataObj => {\r\n const result = this.getBaseSaveDataFromState(props, state);\r\n result.append(\"publishedId\", state.publishedId);\r\n let content = state.content;\r\n if (this.editor) {\r\n content = this.editor.getData();\r\n }\r\n result.append(\"content\", content);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.code) {\r\n AppUtils.showErrorMessage(Translations.NameMustBeDefined);\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = await AppUtils.callService(() => documentService.saveDocumentDocumentEdit(saveData.obj));\r\n if (result && this.editor) {\r\n this.editor.resetDirty();\r\n }\r\n return result;\r\n };\r\n\r\n handleSave = async (closeDialog: boolean) => {\r\n const result = await this.saveToDb();\r\n if (!result) return;\r\n if (!closeDialog) {\r\n this.loadData(result.id);\r\n }\r\n this.props.onOk(result.id, closeDialog);\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.item.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveEditableDocumentParameter, state.item.code), false, removeConfirmationWord) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const removeItem = new DocumentRemoveItem();\r\n removeItem.id = props.id;\r\n removeItem.code = state.item.code;\r\n removeItem.fileType = FileType.Document;\r\n const result = await AppUtils.callService(() => documentService.removeDocuments(props.companyId, props.folderId, [removeItem]), true);\r\n if (!result) return;\r\n props.onOk(null, true);\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getHashFromState(props, state), this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave(true);\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut(this.getHashFromState(props, this.state), this.orgStateHash, async () => { return !!this.saveToDb(); }, props.onRefreshList);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n getPrintDataFromState = (props: IDocumentDocumentEditDialogProp, state: IDocumentDocumentEditDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.item.id);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"code\", state.code);\r\n result.append(\"comment\", state.comment);\r\n let content = state.content;\r\n if (this.editor) {\r\n content = this.editor.getData();\r\n }\r\n result.append(\"content\", content);\r\n result.append(\"version\", state.item.version);\r\n result.append(\"contentVersion\", state.item.contentVersion);\r\n result.append(\"landscapeOrientation\", state.landscapeOrientation);\r\n result.append(\"endDate\", state.endDateStr ? state.endDateStr.toUtcDate().getTime() : null);\r\n result.append(\"createDate\", state.item.createUser.date);\r\n result.append(\"createUserCode\", state.item.createUser.code);\r\n result.append(\"createUserName\", state.item.createUser.name);\r\n result.append(\"modifyDate\", state.item.modifyUser?.date);\r\n result.append(\"modifyUserCode\", state.item.modifyUser?.code);\r\n result.append(\"modifyUserName\", state.item.modifyUser?.name);\r\n result.append(\"approveDate\", state.approveUser?.date);\r\n result.append(\"approveUserCode\", state.approveUser?.code);\r\n result.append(\"approveUserName\", state.approveUser?.name);\r\n return result;\r\n };\r\n\r\n handlePrint = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const saveData = this.getPrintDataFromState(props, state);\r\n //Call server\r\n const fileName = await AppUtils.callService(() => documentService.printDocument(saveData.obj));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.PrintParameterDownloaded, fileName));\r\n };\r\n\r\n saveExcuteOperationAndLoad = async (operation: () => Promise) => {\r\n if (!await this.saveToDb()) return;\r\n if (!await operation()) return;\r\n this.orgStateHash = this.getHashFromState(this.props, this.state);\r\n this.loadData(this.state.item.id);\r\n };\r\n\r\n confirmSaveBeforeOperation = async (confirmationTex: string, operation: () => Promise) => {\r\n const props = this.props;\r\n const state = this.state;\r\n const newHash = this.getHashFromState(props, state);\r\n if (this.orgStateHash === newHash) {\r\n await operation();\r\n return;\r\n }\r\n if (confirmationTex) { //Save only if chosen\r\n const confirmationResult = await AppUtils.showConfirmationDialog(confirmationTex, false);\r\n if (confirmationResult === ConfirmationDialogResult.Yes) {\r\n await this.saveExcuteOperationAndLoad(operation);\r\n } else if (confirmationResult === ConfirmationDialogResult.No) {\r\n await operation();\r\n }\r\n } else { //Save always\r\n await this.saveExcuteOperationAndLoad(operation);\r\n }\r\n };\r\n\r\n approveDocument = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n const result = await AppUtils.callService(() => documentService.approveDocument(props.companyId, props.folderId, state.item.id), true);\r\n if (!result) return false;\r\n return new Promise(resolve => {\r\n this.setState({\r\n rowId: result.rowId,\r\n approveUser: StoreUtils.getNowModifyUser(),\r\n nowApproved: true\r\n }, () => {\r\n this.orgStateHash = this.getHashFromState(this.props, this.state);\r\n resolve(true);\r\n });\r\n });\r\n };\r\n\r\n handleApproveDocument = async () => {\r\n const state = this.state;\r\n if (state.item.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.EditableDocumentApproveConfirmation, state.item.code), false) === ConfirmationDialogResult.Yes) {\r\n await this.confirmSaveBeforeOperation(Translations.EditableDocumentSaveBeforeApproveConfirmation, this.approveDocument);\r\n }\r\n };\r\n\r\n publishDocument = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n const result = await AppUtils.callService(() => documentService.publishDocument(props.companyId, props.folderId, state.item.id), true);\r\n if (!result) return false;\r\n return new Promise(resolve => {\r\n this.setState({\r\n rowId: result.rowId,\r\n publishUser: StoreUtils.getNowModifyUser(),\r\n publishedId: result.publishedId,\r\n publishVersion: result.publishVersion,\r\n nowPublished: true\r\n }, () => {\r\n this.orgStateHash = this.getHashFromState(this.props, this.state);\r\n resolve(true);\r\n });\r\n });\r\n };\r\n\r\n handlePublishDocument = async () => {\r\n const state = this.state;\r\n if (state.item.isNew()) return;\r\n if (state.approveUser) {\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.EditableDocumentPublishConfirmation, state.item.code), false) === ConfirmationDialogResult.Yes) {\r\n await this.publishDocument();\r\n }\r\n } else {\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.EditableDocumentPublishUnapprovedConfirmation, state.item.code), false) === ConfirmationDialogResult.Yes) {\r\n await this.confirmSaveBeforeOperation(null, this.publishDocument);\r\n }\r\n }\r\n };\r\n\r\n unPublishDocument = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n const result = await AppUtils.callService(() => documentService.unPublishDocument(props.companyId, props.folderId, state.item.id, state.publishedId), true);\r\n if (!result) return false;\r\n return new Promise(resolve => {\r\n this.setState({\r\n rowId: result.rowId,\r\n publishUser: null,\r\n publishedId: \"\",\r\n nowPublished: false\r\n }, () => {\r\n this.orgStateHash = this.getHashFromState(this.props, this.state);\r\n resolve(true);\r\n });\r\n });\r\n };\r\n\r\n handleRemovePublishedDocument = async () => {\r\n const state = this.state;\r\n if (state.item.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.EditableDocumentUnpublishConfirmation, state.item.code), false) === ConfirmationDialogResult.Yes) {\r\n await this.unPublishDocument();\r\n }\r\n };\r\n\r\n handleSaveToTemplate = () => {\r\n let saveAsDocumentTemplateDialogContent = this.state.content;\r\n if (this.editor) {\r\n saveAsDocumentTemplateDialogContent = this.editor.getData();\r\n }\r\n this.setState({\r\n showSaveAsDocumentTemplateDialog: true,\r\n saveAsDocumentTemplateDialogContent\r\n });\r\n };\r\n\r\n handleCloseSaveAsDocumentTemplateDialog = () => {\r\n this.setState({\r\n showSaveAsDocumentTemplateDialog: false\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.item) return null;\r\n const isNew = state.item.isNew();\r\n return (\r\n \r\n }\r\n body={\r\n <>\r\n {state.activeMenuItem === DocumentDocumentEditDialogMenuItem.General &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n { this.setState({ landscapeOrientation: !checked }); }}\r\n />\r\n }\r\n />\r\n { this.setState({ landscapeOrientation: checked }); }}\r\n />\r\n }\r\n />\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {state.keywords.map((keyword) =>\r\n -1}\r\n disabled={state.isLockedToOtherUser}\r\n onChange={(checked: boolean) => {\r\n const keywordIds = this.state.keywordIds.filter(i => i !== keyword.id);\r\n if (checked) {\r\n keywordIds.push(keyword.id);\r\n }\r\n this.setState({ keywordIds });\r\n }}\r\n />\r\n )}\r\n
\r\n
\r\n {!isNew &&\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!state.isLockedToOtherUser && !state.approveUser &&\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!state.isLockedToOtherUser &&\r\n
\r\n \r\n
\r\n }\r\n {!state.isLockedToOtherUser && state.publishUser &&\r\n \r\n }\r\n
\r\n
\r\n
\r\n
\r\n {state.isLockedToOtherUser &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n
\r\n
\r\n
\r\n }\r\n {state.activeMenuItem === DocumentDocumentEditDialogMenuItem.VersionHistory &&\r\n \r\n }\r\n {state.showSaveAsDocumentTemplateDialog &&\r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n {Translations.SaveToTemplate}\r\n : null\r\n }\r\n saveDisabled={state.nowApproved || state.nowPublished}\r\n onCancel={this.handleCancel}\r\n onPrint={!isNew ? this.handlePrint : null}\r\n onRemove={!isNew ? this.handleRemove : null}\r\n onSave={() => this.handleSave(false)}\r\n />\r\n \r\n }\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","import { Box, Grid } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as documentService from \"../../../models/services/documentService\";\r\nimport { CkEditorDialog } from \"../../framework/Dialog/Dialog\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { DialogButtons } from \"source/components/framework/Dialog/DialogButtons\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IDocumentTemplateListItem } from \"source/models/documentTemplate/documentTemplateListItem\";\r\nimport { IIdTitleDropdownItem, IdTitleDropdown } from \"ui/Scripts/source/components/framework/Dropdown/IdTitleDropdown\";\r\nimport { AppCkEditor } from \"source/components/framework/AppCkEditor\";\r\n\r\nexport interface IDocumentDocumentNewDialogProp {\r\n folderId: string;\r\n companyId: string;\r\n onOk: (content: string) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IDocumentDocumentNewDialogState {\r\n dropdownItems: IIdTitleDropdownItem[];\r\n items: IDocumentTemplateListItem[];\r\n selectedItem: IDocumentTemplateListItem;\r\n selectedItemContent: string;\r\n ckEditorDataId: number;\r\n}\r\n\r\nexport class DocumentDocumentNewDialog extends React.Component {\r\n private editor: any = null;\r\n\r\n constructor(props: IDocumentDocumentNewDialogProp) {\r\n super(props);\r\n this.state = {\r\n dropdownItems: [],\r\n items: [],\r\n selectedItem: null,\r\n selectedItemContent: \"\",\r\n ckEditorDataId: 0\r\n };\r\n }\r\n\r\n // #region CkEditor\r\n setCkEditorContent = (value: string) => {\r\n this.setState({ ckEditorDataId: this.state.ckEditorDataId + 1 });\r\n if (!this.editor) return;\r\n this.editor.setData(value, {\r\n callback: () => {\r\n this.editor.resetDirty();\r\n }\r\n });\r\n this.setState({ ckEditorDataId: this.state.ckEditorDataId + 1 });\r\n };\r\n\r\n destroyCkEditor = () => {\r\n if (!this.editor) return;\r\n this.editor.destroy();\r\n this.editor = null;\r\n };\r\n\r\n handleCkEditorInstanceReady = (ev) => {\r\n this.editor = ev.editor;\r\n ev.editor.resetDirty();\r\n this.setCkEditorContent(this.state.selectedItemContent ?? \"\");\r\n };\r\n // #endregion CkEditor\r\n\r\n loadData = async () => {\r\n const props = this.props;\r\n const result = await AppUtils.callService(() => documentService.getDocumentDocumentNew(props.companyId, props.folderId), false);\r\n if (!result) return;\r\n let dropdownItems: IIdTitleDropdownItem[] = result.items.filter(i => i.id === Base.emptyGuid).map(i => { return { id: i.id, title: i.code }; });\r\n const normalItems = result.items.filter(i => i.id !== Base.emptyGuid);\r\n dropdownItems.push({ id: \"divider1\", title: Translations.DocumentTemplates, divider: true });\r\n dropdownItems = dropdownItems.concat(normalItems.filter(i => !!i.companyId).map(i => { return { id: i.id, title: i.code }; }));\r\n dropdownItems.push({ id: \"divider2\", title: Translations.SharedDocumentTemplates, divider: true });\r\n dropdownItems = dropdownItems.concat(normalItems.filter(i => !i.companyId).map(i => { return { id: i.id, title: i.code }; }));\r\n const state = {\r\n ...this.state,\r\n items: result.items,\r\n dropdownItems,\r\n selectedItem: result.items[0]\r\n };\r\n this.setState(state, () => {\r\n this.setCkEditorContent(\"\");\r\n });\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadData();\r\n }\r\n \r\n async componentWillUnmount(): Promise {\r\n this.destroyCkEditor();\r\n }\r\n\r\n async componentDidUpdate(prevProps: IDocumentDocumentNewDialogProp, prevState: IDocumentDocumentNewDialogState): Promise {\r\n const props = this.props;\r\n if (prevProps.companyId === props.companyId && prevProps.folderId === props.folderId) return;\r\n this.loadData();\r\n }\r\n\r\n loadDocumentTemplateContent = async (selectedItem: IDocumentTemplateListItem) => {\r\n if (!selectedItem) return;\r\n const props = this.props;\r\n const result = await AppUtils.callService(() => documentService.getDocumentDocumentTemplateContent(props.companyId, props.folderId, selectedItem.id, selectedItem.companyId ? 0 : 1), false);\r\n if (!result) return;\r\n this.setState({\r\n selectedItemContent: result.content\r\n });\r\n this.setCkEditorContent(result.content);\r\n };\r\n\r\n handleChangeDocumentTemplate = (id: string) => {\r\n if (!id) return;\r\n const state = this.state;\r\n const selectedItem = state.items.find(i => i.id === id);\r\n if (!selectedItem) return;\r\n this.setState({\r\n selectedItem\r\n });\r\n this.loadDocumentTemplateContent(selectedItem);\r\n };\r\n\r\n handleOk = async (): Promise => {\r\n this.props.onOk(this.state.selectedItemContent);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.selectedItem) return null;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {state.selectedItem.comment}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n }\r\n onClose={props.onCancel}\r\n />\r\n );\r\n }\r\n}","\r\nimport { Tooltip } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppEditIcon } from \"../../Icon/AppEditIcon\";\r\nimport { AppButton, IAppButtonProps } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\ninterface IEditToggleButtonHeaderProps extends IAppButtonProps {\r\n selected?: boolean;\r\n}\r\n\r\nexport const EditToggleButtonHeader = (props: IEditToggleButtonHeaderProps) => (\r\n \r\n \r\n } {...props}>\r\n {props.selected ? Translations.EditMode : Translations.ReadMode}\r\n \r\n \r\n \r\n);\r\n","import React from \"react\";\r\nimport { ActionContainer, ActionContainerProps } from \"../../ActionContainer\";\r\n\r\nexport const PageListActionContainer = (props: ActionContainerProps) => (\r\n \r\n);\r\n","// eslint-disable-next-line no-unused-vars\r\nimport * as React from \"react\";\r\nimport styled from \"@emotion/styled\";\r\nimport { Button } from \"@mui/material\";\r\n\r\nexport const Container = styled.div`\r\n height: calc(100% - 76px);\r\n overflow-y: auto;\r\n overflow-x: hidden;\r\n`;\r\n\r\nexport const FilterButton = styled(Button)`\r\n margin: 0 1.5rem 0 0;\r\n`;","import { Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\n\r\nexport interface DashboardCardTitleProps {\r\n title: string;\r\n}\r\n\r\nexport const DashboardCardTitle = ({ title }: DashboardCardTitleProps) => {\r\n return (\r\n \r\n {title}\r\n \r\n );\r\n};\r\n","import { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { CircularLoading } from \"../../Loading/CircularLoading\";\r\n\r\nexport interface IDashboardCardProgressProps {\r\n isLoading: boolean;\r\n}\r\n\r\nexport const DashboardCardProgress = (props: IDashboardCardProgressProps) => {\r\n if (!props.isLoading) return null;\r\n return (\r\n \r\n \r\n \r\n );\r\n};","\r\nimport { Chart, LegendItem, TitleOptions } from \"chart.js\";\r\nimport { _DeepPartialObject } from \"chart.js/dist/types/utils\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\n\r\nexport const initializeChartJs = () => {\r\n Chart.register({\r\n id: \"NoData\",\r\n afterDraw: function (chart) {\r\n // you can use the previous examples \"if\" here instead if you want.\r\n // This not only checks the dataset lenght but also the data in each set.\r\n // If there is no data across all datasets, the message will display\r\n if (chart.data.datasets.map((d) => d.data.length).reduce((p, a) => p + a, 0) === 0) {\r\n const ctx = chart.ctx;\r\n const width = chart.width;\r\n const height = chart.height;\r\n chart.clear();\r\n ctx.save();\r\n ctx.textAlign = \"center\";\r\n ctx.textBaseline = \"middle\";\r\n // you can specify a font if you want instead, this gets the font family from the body tag\r\n ctx.font = `1.5rem ${window.getComputedStyle(document.body).fontFamily}`;\r\n // you can omit this or use your own logic to adjust the font color.\r\n // `prefersDark` is a custom property I have\r\n ctx.fillStyle = \"black\";\r\n ctx.fillText(Translations.NoDataToShow, width / 2, height / 2);\r\n ctx.restore();\r\n }\r\n },\r\n });\r\n};\r\n\r\nexport const ChartColors = [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\", \"#fdbf6f\", \"#ff7f00\", \"#cab2d6\", \"#6a3d9a\", \"#ffff99\", \"#b15928\"];\r\n//export const ChartColors = [\"#e6194b\", \"#3cb44b\", \"#ffe119\", \"#4363d8\", \"#f58231\", \"#911eb4\", \"#46f0f0\", \"#f032e6\", \"#bcf60c\", \"#fabebe\", \"#008080\", \"#e6beff\", \"#9a6324\", \"#fffac8\", \"#800000\", \"#aaffc3\", \"#808000\", \"#ffd8b1\", \"#000075\", \"#808080\", \"#ffffff\", \"#000000\"];\r\n\r\nexport const handleLegendHover = (evt, legendItem: LegendItem, chart: Chart) => {\r\n const datasetIndex = legendItem.datasetIndex ?? 0;\r\n const index = legendItem.index ?? chart.data.datasets[datasetIndex].data.findIndex(i => i as number > 0);\r\n const activeElement = {\r\n datasetIndex,\r\n index: index > -1 ? index : 0\r\n };\r\n const chartArea = chart.chartArea;\r\n chart.tooltip.setActiveElements([activeElement],\r\n {\r\n x: (chartArea.left + chartArea.right) / 2,\r\n y: (chartArea.top + chartArea.bottom) / 2,\r\n });\r\n chart.update();\r\n};\r\n\r\nexport const getTitleOptions = (title: string): _DeepPartialObject => {\r\n return {\r\n display: !!title,\r\n align: \"start\",\r\n text: title,\r\n font: {\r\n family: \"'Inter',sans-serif\",\r\n size: 13\r\n }\r\n };\r\n};","const getOrCreateLegendList = (chart, id) => {\r\n const legendContainer = document.getElementById(id);\r\n let listContainer = legendContainer.querySelector(\"ul\");\r\n if (!listContainer) {\r\n listContainer = document.createElement(\"ul\");\r\n listContainer.style.display = \"flex\";\r\n listContainer.style.flexDirection = \"column\";\r\n listContainer.style.margin = \"0\";\r\n listContainer.style.padding = \"0\";\r\n listContainer.style.paddingLeft = \"10px\";\r\n listContainer.style.fontSize = \"12px\";\r\n legendContainer.appendChild(listContainer);\r\n }\r\n return listContainer;\r\n};\r\n \r\nexport const htmlLegendPlugin = {\r\n id: \"htmlLegend\",\r\n afterUpdate(chart, args, options) {\r\n const ul = getOrCreateLegendList(chart, options.containerID);\r\n \r\n // Remove old legend items\r\n while (ul.firstChild) {\r\n ul.firstChild.remove();\r\n }\r\n \r\n // Reuse the built-in legendItems generator\r\n const items = chart.options.plugins.legend.labels.generateLabels(chart);\r\n \r\n items.forEach(item => {\r\n const li = document.createElement(\"li\");\r\n li.style.alignItems = \"center\";\r\n li.style.cursor = \"pointer\";\r\n li.style.display = \"flex\";\r\n li.style.flexDirection = \"row\";\r\n li.style.marginBottom = \"10px\";\r\n \r\n li.onclick = () => {\r\n const { type } = chart.config;\r\n if (type === \"pie\" || type === \"doughnut\") {\r\n // Pie and doughnut charts only have a single dataset and visibility is per item\r\n chart.toggleDataVisibility(item.index);\r\n } else {\r\n chart.setDatasetVisibility(item.datasetIndex, !chart.isDatasetVisible(item.datasetIndex));\r\n }\r\n chart.update();\r\n };\r\n\r\n li.onmouseover = () => {\r\n const datasetIndex = item.datasetIndex ?? 0;\r\n const index = item.index ?? chart.data.datasets[datasetIndex].data.findIndex(i => i as number > 0);\r\n const activeElement = {\r\n datasetIndex,\r\n index: index > -1 ? index : 0\r\n };\r\n const chartArea = chart.chartArea;\r\n chart.tooltip.setActiveElements([activeElement],\r\n {\r\n x: (chartArea.left + chartArea.right) / 2,\r\n y: (chartArea.top + chartArea.bottom) / 2,\r\n });\r\n chart.update();\r\n };\r\n \r\n // Color box\r\n const boxSpan = document.createElement(\"span\");\r\n boxSpan.style.background = item.fillStyle;\r\n boxSpan.style.borderColor = item.strokeStyle;\r\n boxSpan.style.borderWidth = item.lineWidth + \"px\";\r\n boxSpan.style.display = \"inline-block\";\r\n boxSpan.style.flexShrink = \"0\";\r\n boxSpan.style.height = \"15px\";\r\n boxSpan.style.width = \"15px\";\r\n boxSpan.style.marginRight = \"10px\";\r\n \r\n // Text\r\n const textContainer = document.createElement(\"p\");\r\n textContainer.style.color = item.fontColor;\r\n textContainer.style.margin = \"0\";\r\n textContainer.style.padding = \"0\";\r\n textContainer.style.textDecoration = item.hidden ? \"line-through\" : \"\";\r\n \r\n const text = document.createTextNode(item.text);\r\n textContainer.appendChild(text);\r\n \r\n li.appendChild(boxSpan);\r\n li.appendChild(textContainer);\r\n ul.appendChild(li);\r\n });\r\n }\r\n};","import * as React from \"react\";\r\nimport { Chart, registerables } from \"chart.js\";\r\nimport { IReportChartDataSet } from \"../../../../models/report/reportChartDataSet\";\r\nimport { ChartColors, getTitleOptions, handleLegendHover } from \"../chartInitialize\";\r\nimport { htmlLegendPlugin } from \"../HtmlLegendPlugIn\";\r\n\r\n//BarChart\r\n//***********************************************************************************************************************\r\nexport interface IBarChartProp {\r\n title?: string;\r\n dataId: string;\r\n labels: string[];\r\n dataSets: IReportChartDataSet[];\r\n legendContainerId: string;\r\n}\r\n\r\nexport class BarChart extends React.Component {\r\n private canvas: HTMLCanvasElement;\r\n private chart: Chart;\r\n \r\n getDataSetsFromProps = () => {\r\n return this.props.dataSets.map((i, index) => (\r\n {\r\n label: i.label,\r\n data: i.data,\r\n fill: \"none\",\r\n pointRadius: 2,\r\n borderWidth: 0,\r\n lineTension: 0,\r\n backgroundColor: ChartColors[index % ChartColors.length],\r\n borderColor: ChartColors[index % ChartColors.length],\r\n color: \"#333\"\r\n }\r\n ));\r\n };\r\n\r\n componentDidMount(): void {\r\n const props = this.props;\r\n Chart.register(...registerables);\r\n this.chart = new Chart(this.canvas, {\r\n type: \"bar\",\r\n options: {\r\n maintainAspectRatio: false,\r\n plugins: {\r\n // colorschemes: {\r\n // scheme: 'brewer.Paired12'\r\n // }\r\n title: getTitleOptions(props.title),\r\n tooltip: {\r\n boxPadding: 3\r\n },\r\n legend: {\r\n display: !props.legendContainerId,\r\n position: \"right\",\r\n maxWidth: 200,\r\n onHover: (evt, legendItem) => handleLegendHover(evt, legendItem, this.chart)\r\n },\r\n // @ts-ignore\r\n htmlLegend: {\r\n // ID of the container to put the legend in\r\n containerID: props.legendContainerId,\r\n },\r\n },\r\n scales: {\r\n x: {\r\n ticks: {\r\n font: {\r\n size: 10\r\n },\r\n autoSkip: false,\r\n maxRotation: 90,\r\n minRotation: 90\r\n }\r\n },\r\n y: {\r\n ticks: {\r\n font: {\r\n size: 10\r\n }\r\n //,min: 0\r\n }\r\n }\r\n },\r\n \r\n },\r\n data: {\r\n labels: props.labels.slice(0),\r\n datasets: this.getDataSetsFromProps()\r\n },\r\n plugins: props.legendContainerId ? [htmlLegendPlugin] : []\r\n });\r\n }\r\n\r\n componentDidUpdate(prevProps: IBarChartProp) {\r\n const props = this.props;\r\n if (prevProps.dataId === props.dataId) return;\r\n this.chart.config.options.plugins.title.text = props.title;\r\n this.chart.data.labels = props.labels.slice(0);\r\n this.chart.data.datasets = this.getDataSetsFromProps();\r\n const chart: any = this.chart;\r\n chart.update();\r\n }\r\n\r\n render() {\r\n return (\r\n { this.canvas = elem; }} />\r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { Chart, registerables } from \"chart.js\";\r\nimport { IReportChartDataSet } from \"../../../../models/report/reportChartDataSet\";\r\nimport { ChartColors, getTitleOptions, handleLegendHover } from \"../chartInitialize\";\r\nimport { htmlLegendPlugin } from \"../HtmlLegendPlugIn\";\r\n\r\n//BarChart\r\n//***********************************************************************************************************************\r\nexport interface IPieChartProp {\r\n title?: string;\r\n dataId: string;\r\n labels: string[];\r\n dataSets: IReportChartDataSet[];\r\n legendContainerId: string;\r\n}\r\n\r\nexport class PieChart extends React.Component {\r\n private canvas: HTMLCanvasElement;\r\n private chart: Chart;\r\n\r\n getDataSetsFromProps = () => {\r\n return this.props.dataSets.map((i, index) => (\r\n {\r\n label: i.label,\r\n data: i.data,\r\n fill: \"none\",\r\n pointRadius: 2,\r\n borderWidth: 0,\r\n lineTension: 0,\r\n backgroundColor: ChartColors,\r\n borderColor: ChartColors,\r\n color: \"#333\"\r\n }));\r\n };\r\n\r\n componentDidMount(): void {\r\n const props = this.props;\r\n Chart.register(...registerables);\r\n // @ts-expect-error\r\n this.chart = new Chart(this.canvas, {\r\n type: \"pie\",\r\n options: {\r\n maintainAspectRatio: false,\r\n plugins: {\r\n title: getTitleOptions(props.title),\r\n tooltip: {\r\n boxPadding: 3\r\n },\r\n legend: {\r\n display: !props.legendContainerId,\r\n position: \"right\",\r\n maxWidth: 200,\r\n onHover: (evt, legendItem) => handleLegendHover(evt, legendItem, this.chart)\r\n },\r\n // @ts-ignore\r\n htmlLegend: {\r\n // ID of the container to put the legend in\r\n containerID: props.legendContainerId,\r\n },\r\n },\r\n },\r\n data: {\r\n labels: props.labels.slice(0),\r\n datasets: this.getDataSetsFromProps()\r\n },\r\n plugins: props.legendContainerId ? [htmlLegendPlugin] : []\r\n });\r\n }\r\n\r\n componentDidUpdate(prevProps: IPieChartProp) {\r\n const props = this.props;\r\n if (prevProps.dataId === props.dataId) return;\r\n this.chart.config.options.plugins.title.text = props.title;\r\n this.chart.data.labels = props.labels.slice(0);\r\n this.chart.data.datasets = this.getDataSetsFromProps();\r\n const chart: any = this.chart;\r\n chart.update();\r\n }\r\n\r\n render() {\r\n return (\r\n { this.canvas = elem; }} />\r\n );\r\n }\r\n}","import FilterAltOutlinedIcon from \"@mui/icons-material/FilterAltOutlined\";\r\nimport React, { useRef } from \"react\";\r\nimport { Box } from \"@mui/material\";\r\nimport { DashboardCardTitle } from \"../DashboardCard/DashboardCardTitle\";\r\nimport * as Styled from \"./DashboardChart.styles\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { DashboardCardProgress } from \"../DashboardCard/DashboardCardProgress\";\r\nimport { IReportChartData } from \"source/models/report/reportChartData\";\r\nimport { BarChart } from \"../GenericChart/BarChart\";\r\nimport { PieChart } from \"../GenericChart/PieChart\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\ninterface IDashboardChartProps {\r\n panelId: string;\r\n title: string;\r\n chartData: IReportChartData;\r\n isLoading: boolean;\r\n onShowProperties: (panelId: string) => void;\r\n}\r\n\r\nexport const DashboardChart = (props: IDashboardChartProps) => {\r\n const legendContainerId = useRef(Base.getGuid());\r\n\r\n return (\r\n
\r\n \r\n \r\n props.onShowProperties(props.panelId)}\r\n endIcon={}\r\n >\r\n {Translations.Filters}\r\n \r\n \r\n \r\n \r\n {!props.isLoading && !!props.chartData &&\r\n \r\n \r\n {(props.chartData.chartType === 0\r\n ? \r\n : \r\n )}\r\n \r\n \r\n \r\n \r\n }\r\n \r\n
\r\n );\r\n};\r\n","/// \r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IChartItem } from \"../../../models/chart/chartItem\";\r\nimport { ISavedChartPanel } from \"../../../models/chart/savedChartPanel\";\r\nimport { IReportParameterValue } from \"../../../models/report/reportParameterValue\";\r\nimport { DashboardChart } from \"source/components/framework/DashboardChart\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { IReportChartData } from \"source/models/report/reportChartData\";\r\n\r\nexport interface IDocumentPageFilterLists {\r\n keywords: IIdTitle[];\r\n dynamicTimeFilters: IIdTitle[];\r\n documentEndDateDynamicTimeFilters: IIdTitle[];\r\n}\r\n\r\nexport interface IDocumentPageFilterStateWithoutDates {\r\n selectedKeywordIds: string[];\r\n selectedKeywordOperatorId: string;\r\n selectedDocumentApprovalId: string;\r\n selectedDocumentContentSearchId: string;\r\n selectedMaxResultsCount: string;\r\n selectedDynamicTimeFilterId: string;\r\n selectedDynamicDocumentEndDateFilterId: string;\r\n}\r\n\r\nexport interface IDocumentPageFilterState extends IDocumentPageFilterStateWithoutDates {\r\n selectedStartDate: number;\r\n selectedEndDate: number\r\n selectedDocumentEndDateStartDate: number;\r\n selectedDocumentEndDateEndDate: number\r\n}\r\n\r\nexport interface IDocumentGeneralFilter {\r\n keywordIds: string[];\r\n keywordOperatorId: number;\r\n documentApprovalId: number;\r\n documentContentSearchId: number;\r\n maxResultsCount: number;\r\n startDate: number;\r\n endDate: number;\r\n dynamicTimeFilterId: number;\r\n documentEndDateStartDate: number;\r\n documentEndDateEndDate: number\r\n dynamicDocumentEndDateFilterId: number;\r\n}\r\n\r\nexport interface IDocumentGeneralFilterChange extends IDocumentGeneralFilter {\r\n notChanged: boolean;\r\n}\r\n\r\n// DocumentPageDashboardChart\r\nexport interface IDocumentPageDashboardChartProp {\r\n chartPanel: ISavedChartPanel;\r\n chartItems: IChartItem[];\r\n onShowChartPanelPropertiesDialog: (panelId: string) => void;\r\n}\r\n\r\nexport interface IDocumentPageDashboardChartState extends IDocumentGeneralFilter {\r\n isLoading: boolean;\r\n chartData: IReportChartData;\r\n chartId: string;\r\n parameterValues: IReportParameterValue[]\r\n}\r\n\r\nexport class DocumentPageDashboardChart extends React.Component {\r\n static getGeneralFilterFromState = (state: IDocumentPageFilterState): IDocumentGeneralFilter => {\r\n return {\r\n keywordIds: state?.selectedKeywordIds ? state.selectedKeywordIds.filter(i => i !== Base.emptyGuid) : [],\r\n keywordOperatorId: !Base.isNullOrUndefined(state?.selectedKeywordOperatorId) ? parseInt(state.selectedKeywordOperatorId, 10) : 0,\r\n documentApprovalId: !Base.isNullOrUndefined(state?.selectedDocumentApprovalId) ? parseInt(state.selectedDocumentApprovalId, 10) : 0,\r\n documentContentSearchId: !Base.isNullOrUndefined(state?.selectedDocumentContentSearchId) ? parseInt(state.selectedDocumentContentSearchId, 10) : 1,\r\n maxResultsCount: state?.selectedMaxResultsCount ? parseInt(state.selectedMaxResultsCount, 10) : 100,\r\n startDate: state?.selectedStartDate ? state.selectedStartDate : null,\r\n endDate: state?.selectedEndDate ? state.selectedEndDate : null,\r\n dynamicTimeFilterId: state?.selectedDynamicTimeFilterId ? parseInt(state.selectedDynamicTimeFilterId, 10) : 0,\r\n documentEndDateStartDate: state?.selectedDocumentEndDateStartDate ? state.selectedDocumentEndDateStartDate : null,\r\n documentEndDateEndDate: state?.selectedDocumentEndDateEndDate ? state.selectedDocumentEndDateEndDate : null,\r\n dynamicDocumentEndDateFilterId: state?.selectedDynamicDocumentEndDateFilterId ? parseInt(state.selectedDynamicDocumentEndDateFilterId, 10) : 0,\r\n };\r\n };\r\n\r\n static getStateFilterPropsFromGeneralFilter = (generalFilter: any): IDocumentPageFilterState => {\r\n return {\r\n selectedKeywordIds: generalFilter && generalFilter.keywordIds && generalFilter.keywordIds.length > 0 ? generalFilter.unitIds : [],\r\n selectedKeywordOperatorId: !Base.isNullOrUndefined(generalFilter?.keywordOperatorId) ? generalFilter.keywordOperatorId.toString(10) : \"0\",\r\n selectedDocumentApprovalId: !Base.isNullOrUndefined(generalFilter?.documentApprovalId) ? generalFilter.documentApprovalId.toString(10) : \"0\",\r\n selectedDocumentContentSearchId: !Base.isNullOrUndefined(generalFilter?.documentContentSearchId) ? generalFilter.documentContentSearchId.toString(10) : \"1\",\r\n selectedMaxResultsCount: generalFilter?.maxResultsCount ? generalFilter.maxResultsCount.toString(10) : \"100\",\r\n selectedStartDate: generalFilter?.startDate ? generalFilter.startDate : 0,\r\n selectedEndDate: generalFilter?.endDate ? generalFilter.endDate : 0,\r\n selectedDynamicTimeFilterId: !Base.isNullOrUndefined(generalFilter?.dynamicTimeFilterId) ? generalFilter.dynamicTimeFilterId.toString(10) : \"0\",\r\n selectedDocumentEndDateStartDate: generalFilter?.documentEndDateStartDate ? generalFilter.documentEndDateStartDate : 0,\r\n selectedDocumentEndDateEndDate: generalFilter?.documentEndDateEndDate ? generalFilter.documentEndDateEndDate : 0,\r\n selectedDynamicDocumentEndDateFilterId: !Base.isNullOrUndefined(generalFilter?.dynamicDocumentEndDateFilterId) ? generalFilter.dynamicDocumentEndDateFilterId.toString(10) : \"0\",\r\n };\r\n };\r\n\r\n static getGeneralFilterNotChanged = (prevFilter: IDocumentGeneralFilter, filter: IDocumentGeneralFilter): boolean => {\r\n return (prevFilter.startDate ?? -99).toString(10) === (filter.startDate ?? -99).toString(10) &&\r\n (prevFilter.endDate ?? -99).toString(10) === (filter.endDate ?? -99).toString(10) &&\r\n (prevFilter.documentEndDateStartDate ?? -99).toString(10) === (filter.documentEndDateStartDate ?? -99).toString(10) &&\r\n (prevFilter.documentEndDateEndDate ?? -99).toString(10) === (filter.documentEndDateEndDate ?? -99).toString(10) &&\r\n (prevFilter.keywordOperatorId ?? -99).toString(10) === (filter.keywordOperatorId ?? -99).toString(10) &&\r\n (prevFilter.documentApprovalId ?? -99).toString(10) === (filter.documentApprovalId ?? -99).toString(10) &&\r\n (prevFilter.documentContentSearchId ?? -99).toString(10) === (filter.documentContentSearchId ?? -99).toString(10) &&\r\n (prevFilter.maxResultsCount ?? -99).toString(10) === (filter.maxResultsCount ?? -99).toString(10) &&\r\n Base.equalStrArrays(prevFilter.keywordIds, filter.keywordIds) &&\r\n prevFilter.dynamicTimeFilterId.toString(10) === filter.dynamicTimeFilterId.toString(10) &&\r\n prevFilter.dynamicDocumentEndDateFilterId.toString(10) === filter.dynamicDocumentEndDateFilterId.toString(10);\r\n };\r\n\r\n static getDocumentPageDashboardChartStateNotChanged = (prevState: IDocumentPageDashboardChartState, state: IDocumentPageDashboardChartState): boolean => {\r\n return prevState.chartId === state.chartId &&\r\n DocumentPageDashboardChart.getGeneralFilterNotChanged(prevState, state) &&\r\n JSON.stringify(prevState.parameterValues) === JSON.stringify(state.parameterValues);\r\n };\r\n\r\n static getDocumentGeneralFilterChange(prevProps: IDocumentPageFilterState, props: IDocumentPageFilterState): IDocumentGeneralFilterChange {\r\n const prevFilter = DocumentPageDashboardChart.getGeneralFilterFromState(prevProps);\r\n const filter = DocumentPageDashboardChart.getGeneralFilterFromState(props);\r\n return {\r\n ...filter,\r\n notChanged: DocumentPageDashboardChart.getGeneralFilterNotChanged(prevFilter, filter)\r\n };\r\n }\r\n\r\n getStateChangeFromProps = (props: IDocumentPageDashboardChartProp): any => {\r\n const chartItem = props.chartPanel && props.chartItems\r\n ? props.chartItems.find(i => i.reportName === props.chartPanel.reportId)\r\n : null;\r\n const reportFilterProps = DocumentPageDashboardChart.getStateFilterPropsFromGeneralFilter(props.chartPanel?.generalFilter);\r\n const result = {\r\n keywordIds: reportFilterProps.selectedKeywordIds ? reportFilterProps.selectedKeywordIds : [],\r\n keywordOperatorId: reportFilterProps.selectedKeywordOperatorId ? parseInt(reportFilterProps.selectedKeywordOperatorId, 10) : 0,\r\n documentApprovalId: reportFilterProps.selectedDocumentApprovalId ? parseInt(reportFilterProps.selectedDocumentApprovalId, 10) : 0,\r\n documentContentSearchId: reportFilterProps.selectedDocumentContentSearchId ? parseInt(reportFilterProps.selectedDocumentContentSearchId, 10) : 1,\r\n maxResultsCount: reportFilterProps.selectedMaxResultsCount ? parseInt(reportFilterProps.selectedMaxResultsCount, 10) : 100,\r\n chartId: props.chartPanel?.chartId ?? \"\",\r\n dynamicTimeFilterId: reportFilterProps.selectedDynamicTimeFilterId,\r\n startDate: reportFilterProps.selectedStartDate ? reportFilterProps.selectedStartDate : null,\r\n endDate: reportFilterProps.selectedEndDate ? reportFilterProps.selectedEndDate : null,\r\n dynamicDocumentEndDateFilterId: reportFilterProps.selectedDynamicDocumentEndDateFilterId,\r\n documentEndDateStartDate: reportFilterProps.selectedDocumentEndDateStartDate ? reportFilterProps.selectedDocumentEndDateStartDate : null,\r\n documentEndDateEndDate: reportFilterProps.selectedDocumentEndDateEndDate ? reportFilterProps.selectedDocumentEndDateEndDate : null,\r\n parameterValues: props.chartPanel && chartItem ? props.chartPanel.getReportParameterValues(chartItem) : []\r\n };\r\n return result;\r\n };\r\n\r\n constructor(props: IDocumentPageDashboardChartProp) {\r\n super(props);\r\n this.state = {\r\n ...this.getStateChangeFromProps(props),\r\n chart: \"\",\r\n isLoading: true\r\n };\r\n }\r\n\r\n createChart = async () => {\r\n //const props = this.props;\r\n //const state = this.state;\r\n //if (!props.chartPanel || !props.chartItems || state.parameterValues.length < 1) return;\r\n // this.setState({ isLoading: true });\r\n // const chart = await AppUtils.callService(() => taskService.getChart(props.chartPanel.reportId, props.chartPanel.chartId,\r\n // state.startDate, state.endDate, state.dynamicTime, state.unitIds, state.categoryIds, state.handlerUserCodes, state.state, state.severity, state.resolution,\r\n // state.source, state.anonymity, state.parameterValues), false, true, () => { this.setState({ isLoading: false }); });\r\n // this.setState({\r\n // chart\r\n // });\r\n };\r\n\r\n componentDidUpdate(prevProps: IDocumentPageDashboardChartProp) {\r\n const state = this.state;\r\n const newState = this.getStateChangeFromProps(this.props);\r\n if (DocumentPageDashboardChart.getDocumentPageDashboardChartStateNotChanged(state, newState)) return;\r\n this.setState({\r\n ...newState\r\n }, this.createChart);\r\n }\r\n\r\n componentDidMount(): void {\r\n this.createChart();\r\n }\r\n \r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const chartPanel = props.chartPanel;\r\n if (!chartPanel) return null;\r\n return (\r\n \r\n\r\n );\r\n }\r\n}","import { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as documentService from \"../../../models/services/documentService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { AddButton } from \"../../framework/Button/AddButton\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListContainer } from \"../../framework/List/ListContainer\";\r\nimport { PageTitle } from \"../../framework/Page/PageTitle\";\r\nimport { DocumentListItem, IDocumentListItem } from \"source/models/document/documentListItem\";\r\nimport { AttachmentIcon } from \"source/components/attachments/AttachmentIcon\";\r\nimport { PreviewToggleButton } from \"source/components/framework/Button/PreviewToggleButton\";\r\nimport { SettingsButton } from \"source/components/framework/Button/SettingsButton\";\r\nimport { ConfirmationDialogResult, FileType, Permission } from \"ui/Scripts/source/models/enums\";\r\nimport { DocumentListDetailsPanel } from \"../DocumentListDetailsPanel\";\r\nimport { ListStateIconBall } from \"source/components/framework/List/ListStateIconBall\";\r\nimport { ListStateIconSuccess } from \"source/components/framework/List/ListStateIconSuccess\";\r\nimport { FileAttachment, IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { SaveDataObj } from \"source/framework/saveData\";\r\nimport { SaveAttachmentBase64 } from \"ui/Scripts/source/models/common/saveAttachmentBase64\";\r\nimport { DocumentRemoveItem } from \"source/models/document/documentRemoveItem\";\r\nimport { useRef } from \"react\";\r\nimport { PopupMenu } from \"source/components/framework/PopupMenu\";\r\nimport { DocumentFileEditDialog } from \"../DocumentFileEditDialog/DocumentFileEditDialog\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { DocumentCopyMoveDialog } from \"../DocumentCopyMoveDialog/DocumentCopyMoveDialog\";\r\nimport { ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { IFolderTreeNode } from \"source/models/document/folderTreeNode\";\r\nimport { DocumentDocumentEditDialog } from \"../DocumentDocumentEditDialog\";\r\nimport { DocumentDocumentNewDialog } from \"../DocumentDocumentNewDialog\";\r\nimport { EditToggleButtonHeader } from \"source/components/framework/Button/EditToggleButtonHeader\";\r\nimport { PageListActionContainer } from \"source/components/framework/List/PageListActionContainer\";\r\nimport { ListActionButtons } from \"source/components/framework/List/ListActionButtons\";\r\nimport { ListSearchContainer } from \"source/components/framework/List/ListSearchContainer\";\r\nimport { ListSearchFilter } from \"source/components/framework/List/ListSearchFilter\";\r\nimport { DocumentPageDashboardChart, IDocumentGeneralFilter, IDocumentPageFilterState } from \"../DocumentPageDashboardChart\";\r\nimport { RemoveToolButton } from \"source/components/framework/Button/RemoveToolButton\";\r\nimport { EditToolButton } from \"source/components/framework/Button/EditToolButton\";\r\nimport { PrintToolButton } from \"source/components/framework/Button/PrintToolButton\";\r\nimport { DownloadToolButton } from \"source/components/framework/Button/DownloadToolButton\";\r\nimport { CopyToolButton } from \"source/components/framework/Button/CopyToolButton\";\r\nimport { removeConfirmationWord } from \"ui/Scripts/source/models/consts\";\r\nimport { AppAddIcon } from \"source/components/framework/Icon/AppAddIcon\";\r\nimport { AppUploadIcon } from \"source/components/framework/Icon/AppUploadIcon\";\r\n\r\ninterface IDocumentListLinePopuMenuProps {\r\n editMode: boolean;\r\n folderPermission: Permission;\r\n isSelected: boolean;\r\n canDownloadSelectedDocuments: boolean;\r\n canPrintSelectedDocuments: boolean;\r\n onCopyMoveSelectedDocuments: () => void;\r\n onOpenSelectedDocument: () => void;\r\n onDownloadSelectedDocuments: () => void;\r\n onPrintSelectedDocuments: () => void;\r\n onDeleteSelectedDocuments: () => Promise;\r\n}\r\n\r\nconst DocumentListLinePopuMenu = (props: IDocumentListLinePopuMenuProps) => {\r\n const deleting = useRef(false);\r\n\r\n if (!props.isSelected) return null;\r\n\r\n const handleDelete = async () => {\r\n if (deleting.current) return;\r\n deleting.current = true;\r\n try {\r\n await props.onDeleteSelectedDocuments();\r\n } finally {\r\n deleting.current = false;\r\n }\r\n };\r\n\r\n return (\r\n \r\n {props.editMode && props.folderPermission > Permission.Read &&\r\n \r\n }\r\n {props.canDownloadSelectedDocuments &&\r\n \r\n }\r\n {props.canPrintSelectedDocuments &&\r\n \r\n }\r\n \r\n {props.editMode && props.folderPermission > Permission.Read &&\r\n \r\n }\r\n \r\n );\r\n};\r\n\r\ninterface IDocumentListLineFirstColumnProps {\r\n item: IDocumentListItem;\r\n documentStyle: any;\r\n editMode: boolean;\r\n folderPermission: Permission;\r\n isSelected: boolean;\r\n canDownloadSelectedDocuments: boolean;\r\n canPrintSelectedDocuments: boolean;\r\n onCopyMoveSelectedDocuments: () => void;\r\n onOpenOpenDocument: (id: string) => void;\r\n onOpenSelectedDocument: () => void;\r\n onDownloadSelectedDocuments: () => void;\r\n onPrintSelectedDocuments: () => void;\r\n onDeleteSelectedDocuments: () => Promise;\r\n}\r\n\r\nconst DocumentListLineFirstColumn = (props: IDocumentListLineFirstColumnProps) => {\r\n const [hovered, setHovered] = React.useState(false);\r\n\r\n const item = props.item;\r\n\r\n return (\r\n setHovered(true)}\r\n onMouseLeave={() => setHovered(false)}\r\n >\r\n \r\n {(item.image\r\n ? \r\n : \r\n )}\r\n \r\n {item.code}\r\n {!!item.publishedId && item.fileType === FileType.Document &&\r\n
\r\n {(item.publishedApproved\r\n ? \r\n : \r\n )}\r\n
\r\n }\r\n {hovered &&\r\n \r\n }\r\n \r\n );\r\n};\r\n\r\n// DocumentList\r\nexport interface IDocumentListProps extends IDocumentPageFilterState {\r\n sessionState: ISessionState;\r\n canEditProperties: boolean;\r\n companies: ICompanyMenuItem[];\r\n companyId: string;\r\n editMode: boolean;\r\n filter: string;\r\n listFilterIsSet: boolean;\r\n folderTree: IFolderTreeNode;\r\n foldersLoading: boolean;\r\n folderId: string;\r\n folderComment: string;\r\n folderPermission: Permission;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n showDocumentPreview: boolean;\r\n showPublishedVersionOnDocumentPreview: boolean;\r\n settingsVisible: boolean;\r\n reportTabs?: React.ReactNode;\r\n onShowSettingsDialog: () => void;\r\n onSetSortData: (sortColumn: string, sortOrderIsAsc: boolean) => void;\r\n onChangeShowDocumentPreview?: (showDocumentPreview: boolean) => void;\r\n onChangeShowPublishedVersionOnDocumentPreview?: (showPublishedVersionOnDocumentPreview: boolean) => void;\r\n onChangeEditMode?: (editMode: boolean) => void;\r\n onChangeFilter: (filter: string) => void;\r\n onOpenFiltersPanel: () => void;\r\n}\r\n\r\ninterface IDocumentListSearchFilter extends IDocumentGeneralFilter {\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n}\r\n\r\ninterface IDocumentListState {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n items: IDocumentListItem[];\r\n selectedId: string;\r\n checkedIds: string[];\r\n canDownloadSelectedDocuments: boolean;\r\n canPrintSelectedDocuments: boolean;\r\n selectedItem: IDocumentListItem;\r\n\r\n // Preview\r\n previewCompanyId: string;\r\n previewDataId: string;\r\n\r\n // Dialog: File\r\n showFileEditDialog: boolean;\r\n fileEditDialogId: string;\r\n fileEditDialogHasPrevious: boolean;\r\n fileEditDialogHasNext: boolean;\r\n\r\n // Dialog: Document New\r\n showDocumentnewDialog: boolean;\r\n\r\n // Dialog: Document\r\n showDocumentEditDialog: boolean;\r\n documentEditDialogId: string;\r\n documentEditDialogContent: string;\r\n documentEditDialogHasPrevious: boolean;\r\n documentEditDialogHasNext: boolean;\r\n\r\n // Dialog: Copy/Move\r\n showCopyMoveDialog: boolean;\r\n copyMoveDialogItems: IDocumentListItem[];\r\n}\r\n\r\nexport class DocumentList extends React.Component {\r\n sendReadReceipts: string[] = [];\r\n\r\n constructor(props: IDocumentListProps) {\r\n super(props);\r\n this.state = {\r\n intialized: false,\r\n isLoading: false,\r\n items: [],\r\n selectedId: null,\r\n checkedIds: [],\r\n canDownloadSelectedDocuments: false,\r\n canPrintSelectedDocuments: false,\r\n selectedItem: null,\r\n // Preview\r\n previewDataId: \"\",\r\n previewCompanyId: \"\",\r\n // Dialog: File\r\n showFileEditDialog: false,\r\n fileEditDialogId: \"\",\r\n fileEditDialogHasPrevious: false,\r\n fileEditDialogHasNext: false,\r\n // Dialog: Document New\r\n showDocumentnewDialog: false,\r\n // Dialog: Document\r\n showDocumentEditDialog: false,\r\n documentEditDialogId: \"\",\r\n documentEditDialogContent: \"\",\r\n documentEditDialogHasPrevious: false,\r\n documentEditDialogHasNext: false,\r\n // Dialog: Copy/Move\r\n showCopyMoveDialog: false,\r\n copyMoveDialogItems: []\r\n };\r\n }\r\n\r\n // setReadReceipt = (detailsItem: ITaskListItem) => {\r\n // const props = this.props;\r\n // if (!detailsItem || detailsItem.isRead) return;\r\n // const userIsCreator = detailsItem.createUser.code === props.sessionState.code;\r\n // if (userIsCreator || this.sendReadReceipts.indexOf(detailsItem.id) > -1) return;\r\n // const result = AppUtils.callService(() => taskService.sendTaskReadReceipt(props.companyId, detailsItem.id), false, true);\r\n // if (!result) return;\r\n // this.sendReadReceipts.push(detailsItem.id);\r\n // const items = this.state.items.slice(0);\r\n // const item = items.find(i => i.id === detailsItem.id);\r\n // if (!item) return;\r\n // item.isRead = true;\r\n // this.setState({\r\n // items\r\n // });\r\n // };\r\n\r\n static getSelectedState = (items: IDocumentListItem[], selectedId: string, checkedIds: string[]) => {\r\n const selectedIds = List.getSelectedIds(selectedId, checkedIds);\r\n const selectedItems = items.filter(i => selectedIds.indexOf(i.id) > -1);\r\n return {\r\n selectedId,\r\n checkedIds,\r\n canDownloadSelectedDocuments: !!selectedItems.find(i => i.fileType !== FileType.Document || !!i.publishedId),\r\n canPrintSelectedDocuments: !!selectedItems.find(i => i.fileType === FileType.Document),\r\n selectedItem: selectedId ? items.find(i => i.id === selectedId) : null\r\n };\r\n };\r\n\r\n loadDocuments = async (setDialogData: boolean = true, newSelectedId: string = null) => {\r\n const props = this.props;\r\n if (!props.companyId || !props.folderId || props.foldersLoading) return;\r\n this.setState({ isLoading: true });\r\n await AppUtils.callService(() => documentService.getDocumentListItems(props.companyId, props.folderId), false, true, (result) => {\r\n if (!result) {\r\n this.setState({ isLoading: false });\r\n return;\r\n }\r\n const state = this.state;\r\n const items = DocumentListItem.sortDocumentListItems(result.items, props.sortColumn, props.sortOrderIsAsc);\r\n const currentSelectedId = newSelectedId ?? state.selectedId;\r\n const selectedId = items.find(i => i.id === currentSelectedId)\r\n ? currentSelectedId\r\n : (items.length > 0 ? items[0].id : \"\");\r\n const checkedIds = Base.keepAvailableSelectedIds(items, state.checkedIds);\r\n const fileItems = items.filter(i => i.fileType !== FileType.Document);\r\n const fileIndex = selectedId ? fileItems.findIndex(i => i.id === selectedId) : -1;\r\n const fileSelectedItem = fileIndex > -1 ? fileItems[fileIndex] : null;\r\n const documentItems = items.filter(i => i.fileType === FileType.Document);\r\n const documentIndex = selectedId ? documentItems.findIndex(i => i.id === selectedId) : -1;\r\n const documentSelectedItem = documentIndex > -1 ? documentItems[documentIndex] : null;\r\n const selectedState = DocumentList.getSelectedState(items, selectedId, checkedIds);\r\n this.setState({\r\n ...selectedState,\r\n isLoading: false,\r\n intialized: true,\r\n items,\r\n previewCompanyId: props.companyId,\r\n fileEditDialogId: setDialogData ? (fileSelectedItem ? fileSelectedItem.id : \"\") : state.fileEditDialogId,\r\n fileEditDialogHasPrevious: setDialogData ? fileIndex > 0 : state.fileEditDialogHasPrevious,\r\n fileEditDialogHasNext: setDialogData ? (fileIndex < items.length - 1) : state.fileEditDialogHasNext,\r\n documentEditDialogId: setDialogData ? (documentSelectedItem ? documentSelectedItem.id : \"\") : state.documentEditDialogId,\r\n documentEditDialogHasPrevious: setDialogData ? documentIndex > 0 : state.documentEditDialogHasPrevious,\r\n documentEditDialogHasNext: setDialogData ? (documentIndex < items.length - 1) : state.documentEditDialogHasNext,\r\n });\r\n });\r\n };\r\n\r\n searchDocuments = async (searchFilter: IDocumentListSearchFilter, setDialogData: boolean = true, newSelectedId: string = null) => {\r\n const props = this.props;\r\n if (!props.companyId || !props.folderId || props.foldersLoading) return;\r\n this.setState({ isLoading: true });\r\n await AppUtils.callService(() => documentService.searchDocumentListItems(props.companyId, props.folderId, searchFilter.filter,\r\n searchFilter.startDate, searchFilter.endDate, searchFilter.dynamicTimeFilterId,\r\n searchFilter.documentEndDateStartDate, searchFilter.documentEndDateEndDate, searchFilter.dynamicDocumentEndDateFilterId,\r\n searchFilter.keywordIds, searchFilter.keywordOperatorId, searchFilter.documentApprovalId, searchFilter.documentContentSearchId,\r\n searchFilter.maxResultsCount, searchFilter.sortColumn, searchFilter.sortOrderIsAsc), false, true, (result) => {\r\n if (!result) {\r\n this.setState({ isLoading: false });\r\n return;\r\n }\r\n const state = this.state;\r\n const items = DocumentListItem.sortDocumentListItems(result.items, props.sortColumn, props.sortOrderIsAsc);\r\n const currentSelectedId = newSelectedId ?? state.selectedId;\r\n const selectedId = items.find(i => i.id === currentSelectedId)\r\n ? currentSelectedId\r\n : (items.length > 0 ? items[0].id : \"\");\r\n const checkedIds = Base.keepAvailableSelectedIds(items, state.checkedIds);\r\n const fileItems = items.filter(i => i.fileType !== FileType.Document);\r\n const fileIndex = selectedId ? fileItems.findIndex(i => i.id === selectedId) : -1;\r\n const fileSelectedItem = fileIndex > -1 ? fileItems[fileIndex] : null;\r\n const documentItems = items.filter(i => i.fileType === FileType.Document);\r\n const documentIndex = selectedId ? documentItems.findIndex(i => i.id === selectedId) : -1;\r\n const documentSelectedItem = documentIndex > -1 ? documentItems[documentIndex] : null;\r\n const selectedState = DocumentList.getSelectedState(items, selectedId, checkedIds);\r\n this.setState({\r\n ...selectedState,\r\n isLoading: false,\r\n intialized: true,\r\n items,\r\n previewCompanyId: props.companyId,\r\n fileEditDialogId: setDialogData ? (fileSelectedItem ? fileSelectedItem.id : \"\") : state.fileEditDialogId,\r\n fileEditDialogHasPrevious: setDialogData ? fileIndex > 0 : state.fileEditDialogHasPrevious,\r\n fileEditDialogHasNext: setDialogData ? (fileIndex < items.length - 1) : state.fileEditDialogHasNext,\r\n documentEditDialogId: setDialogData ? (documentSelectedItem ? documentSelectedItem.id : \"\") : state.documentEditDialogId,\r\n documentEditDialogHasPrevious: setDialogData ? documentIndex > 0 : state.documentEditDialogHasPrevious,\r\n documentEditDialogHasNext: setDialogData ? (documentIndex < items.length - 1) : state.documentEditDialogHasNext,\r\n });\r\n });\r\n };\r\n\r\n updateList = async (setDialogData: boolean = true, newSelectedId: string = null) => {\r\n const props = this.props;\r\n if (!props.listFilterIsSet && !props.filter) {\r\n await this.loadDocuments(setDialogData, newSelectedId);\r\n } else {\r\n await this.searchDocuments({ ...DocumentPageDashboardChart.getGeneralFilterFromState(props), sortColumn: props.sortColumn, sortOrderIsAsc: props.sortOrderIsAsc, filter: props.filter }, setDialogData, newSelectedId);\r\n }\r\n };\r\n\r\n componentDidMount(): void {\r\n this.updateList();\r\n }\r\n\r\n componentDidUpdate(prevProps: IDocumentListProps, prevState: IDocumentListState) {\r\n const props = this.props;\r\n const prevFoldersLoading = prevProps.foldersLoading ? prevProps.foldersLoading : false;\r\n const foldersLoading = props.foldersLoading ? props.foldersLoading : false;\r\n if (foldersLoading) return;\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n const prevFolderId = prevProps.folderId ? prevProps.folderId : \"\";\r\n const folderId = props.folderId ? props.folderId : \"\";\r\n const prevListFilterIsSet = prevProps.listFilterIsSet ? prevProps.listFilterIsSet : false;\r\n const listFilterIsSet = props.listFilterIsSet ? props.listFilterIsSet : false;\r\n const filterStateChange = DocumentPageDashboardChart.getDocumentGeneralFilterChange(prevProps, props);\r\n const prevFilter = prevProps.filter ? prevProps.filter : \"\";\r\n const filter = props.filter ? props.filter : \"\";\r\n if (companyId === prevCompanyId && folderId === prevFolderId && foldersLoading === prevFoldersLoading && listFilterIsSet === prevListFilterIsSet && filter === prevFilter && filterStateChange.notChanged) {\r\n const prevSortColumn = prevProps.sortColumn ? prevProps.sortColumn : \"\";\r\n const sortColumn = props.sortColumn ? props.sortColumn : \"\";\r\n const prevSortOrderIsAsc = prevProps.sortOrderIsAsc ?? false;\r\n const sortOrderIsAsc = props.sortOrderIsAsc ?? false;\r\n if (sortColumn === prevSortColumn && sortOrderIsAsc === prevSortOrderIsAsc) return;\r\n this.setState({\r\n items: DocumentListItem.sortDocumentListItems(this.state.items, sortColumn, sortOrderIsAsc)\r\n });\r\n return;\r\n }\r\n if (!listFilterIsSet && !props.filter) {\r\n this.loadDocuments();\r\n } else {\r\n this.searchDocuments({ ...filterStateChange, sortColumn: props.sortColumn, sortOrderIsAsc: props.sortOrderIsAsc, filter: props.filter });\r\n }\r\n }\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n const selectedState = DocumentList.getSelectedState(this.state.items, selectedId, checkedIds);\r\n this.setState(selectedState);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n this.props.onSetSortData(sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n refreshList = async (setDialogData: boolean = true, newSelectedId: string = null, forcePreviewUpdate: boolean = true) => {\r\n await this.updateList(setDialogData, newSelectedId);\r\n if (!forcePreviewUpdate) return;\r\n this.setState({ previewDataId: Base.getGuid() });\r\n };\r\n\r\n // #region File Edit dialog\r\n handleShowFileEditDialog = (id: string) => {\r\n const state = this.state;\r\n const isNew = id === Base.emptyGuid;\r\n const fileItems = state.items.filter(i => i.fileType !== FileType.Document);\r\n const index = isNew\r\n ? 0\r\n : fileItems.findIndex(i => i.id === id);\r\n if (index < 0) return;\r\n const selectedState = DocumentList.getSelectedState(state.items, isNew ? state.selectedId : fileItems[index].id, state.checkedIds);\r\n this.setState({\r\n ...selectedState,\r\n showFileEditDialog: true,\r\n fileEditDialogId: id,\r\n fileEditDialogHasPrevious: index > 0,\r\n fileEditDialogHasNext: isNew\r\n ? false\r\n : index < fileItems.length - 1\r\n });\r\n };\r\n\r\n handleFileEditDialogOk = () => {\r\n this.setState({\r\n showFileEditDialog: false\r\n });\r\n this.refreshList(false);\r\n };\r\n\r\n handleFileEditDialogCancel = () => {\r\n this.setState({\r\n showFileEditDialog: false\r\n });\r\n this.refreshList();\r\n };\r\n\r\n setFileEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n if (index < 0) return;\r\n const fileItems = state.items.filter(i => i.fileType !== FileType.Document);\r\n if (index >= fileItems.length) return;\r\n const selectedState = DocumentList.getSelectedState(state.items, fileItems[index].id, state.checkedIds);\r\n this.setState({\r\n ...selectedState,\r\n fileEditDialogId: fileItems[index].id,\r\n fileEditDialogHasPrevious: index > 0,\r\n fileEditDialogHasNext: index < fileItems.length - 1\r\n });\r\n };\r\n\r\n handleFileEditDialogMoveToPrevious = () => {\r\n const state = this.state;\r\n if (!state.fileEditDialogId) return;\r\n const index = state.items.filter(i => i.fileType !== FileType.Document).findIndex(i => i.id === state.fileEditDialogId);\r\n if (index < 0) return;\r\n this.setFileEditDialogItemByIndex(index - 1);\r\n };\r\n\r\n handleFileEditDialogMoveToNext = () => {\r\n const state = this.state;\r\n if (!state.fileEditDialogId) return;\r\n const index = state.items.filter(i => i.fileType !== FileType.Document).findIndex(i => i.id === state.fileEditDialogId);\r\n if (index < 0) return;\r\n this.setFileEditDialogItemByIndex(index + 1);\r\n };\r\n // #endregion File Edit dialog\r\n\r\n // #region Document Edit dialog\r\n handleShowDocumentEditDialog = (id: string, content: string = null) => {\r\n const state = this.state;\r\n const isNew = id === Base.emptyGuid;\r\n const documentItems = state.items.filter(i => i.fileType === FileType.Document);\r\n const index = isNew\r\n ? 0\r\n : documentItems.findIndex(i => i.id === id);\r\n if (index < 0) return;\r\n const selectedState = DocumentList.getSelectedState(state.items, isNew ? state.selectedId : documentItems[index].id, state.checkedIds);\r\n this.setState({\r\n ...selectedState,\r\n showDocumentEditDialog: true,\r\n documentEditDialogId: id,\r\n documentEditDialogContent: content,\r\n documentEditDialogHasPrevious: index > 0,\r\n documentEditDialogHasNext: isNew\r\n ? false\r\n : index < documentItems.length - 1\r\n });\r\n };\r\n\r\n handleDocumentEditDialogOk = (documentId: string, closeDialog: boolean) => {\r\n const oldDocumentEditDialogId = this.state.documentEditDialogId;\r\n this.setState({\r\n showDocumentEditDialog: !closeDialog,\r\n documentEditDialogId: closeDialog ? \"\" : this.state.documentEditDialogId\r\n }, () => this.refreshList(!closeDialog, documentId, closeDialog || oldDocumentEditDialogId !== Base.emptyGuid));\r\n };\r\n\r\n handleDocumentEditDialogCancel = () => {\r\n this.setState({\r\n showDocumentEditDialog: false,\r\n documentEditDialogId: \"\"\r\n });\r\n this.refreshList(false);\r\n };\r\n\r\n setDocumentEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n if (index < 0) return;\r\n const documentItems = state.items.filter(i => i.fileType === FileType.Document);\r\n if (index >= documentItems.length) return;\r\n const selectedState = DocumentList.getSelectedState(state.items, documentItems[index].id, state.checkedIds);\r\n this.setState({\r\n ...selectedState,\r\n documentEditDialogId: documentItems[index].id,\r\n documentEditDialogHasPrevious: index > 0,\r\n documentEditDialogHasNext: index < documentItems.length - 1\r\n });\r\n };\r\n\r\n handleDocumentEditDialogMoveToPrevious = () => {\r\n const state = this.state;\r\n if (!state.documentEditDialogId) return;\r\n const index = state.items.filter(i => i.fileType === FileType.Document).findIndex(i => i.id === state.documentEditDialogId);\r\n if (index < 0) return;\r\n this.setDocumentEditDialogItemByIndex(index - 1);\r\n };\r\n\r\n handleDocumentEditDialogMoveToNext = () => {\r\n const state = this.state;\r\n if (!state.documentEditDialogId) return;\r\n const index = state.items.filter(i => i.fileType === FileType.Document).findIndex(i => i.id === state.documentEditDialogId);\r\n if (index < 0) return;\r\n this.setDocumentEditDialogItemByIndex(index + 1);\r\n };\r\n // #endregion Document Edit dialog\r\n\r\n // #region Document New dialog\r\n handleAddEditableDocument = () => {\r\n this.setState({\r\n showDocumentnewDialog: true\r\n });\r\n };\r\n\r\n handleDocumentNewDialogOk = (content: string) => {\r\n this.setState({\r\n showDocumentnewDialog: false\r\n });\r\n this.handleShowDocumentEditDialog(Base.emptyGuid, content);\r\n };\r\n\r\n handleDocumentNewDialogCancel = () => {\r\n this.setState({\r\n showDocumentnewDialog: false\r\n });\r\n };\r\n // #endregion Document New dialog\r\n\r\n getAddAttachmentsSaveData = async (attachments: IFileAttachment[], overwrite: boolean): Promise => {\r\n const props = this.props;\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.folderId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"overwrite\", overwrite);\r\n result.append(\"attachments\", await SaveAttachmentBase64.fromFileAttachments(attachments));\r\n return result;\r\n };\r\n\r\n getCheckAttachmentsSaveData = (fileNames: string[]): SaveDataObj => {\r\n const props = this.props;\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.folderId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"fileNames\", fileNames);\r\n return result;\r\n };\r\n\r\n uploadFiles = async (attachments: FileAttachment[], overwrite: boolean) => {\r\n const saveData = await this.getAddAttachmentsSaveData(attachments, overwrite);\r\n const result = await AppUtils.callService(() => documentService.uploadFiles(saveData.obj));\r\n if (!result) return;\r\n await this.updateList();\r\n //Update preview if needed\r\n if (!this.props.showDocumentPreview) return;\r\n const uploadedFileNames = attachments.map(i => i.name);\r\n const selectedItem = this.state.selectedItem;\r\n if (!selectedItem || !uploadedFileNames.find(i => i.equalIgnoreCase(selectedItem.code))) return;\r\n this.setState({ previewDataId: Base.getGuid() });\r\n };\r\n\r\n handleUploadFiles = async (fileList: FileList) => {\r\n let attachments = await FileAttachment.addFileListToFileAttachments([], fileList, 0);\r\n if (!attachments.length) return;\r\n //Check upload\r\n const saveData = this.getCheckAttachmentsSaveData(attachments.map(i => i.name));\r\n const result = await AppUtils.callService(() => documentService.uploadFilesCheck(saveData.obj), false);\r\n if (!result) return;\r\n //Upload\r\n if (!result.fileNamesInUse.length) {\r\n await this.uploadFiles(attachments, false);\r\n return;\r\n }\r\n const overwriteConfirmation = await AppUtils.showConfirmationDialog(String.format(result.fileNamesInUse.length > 1\r\n ? Translations.DocumentsParameterOverwriteConfirmation\r\n : Translations.DocumentParameterOverwriteConfirmation, result.fileNamesInUse.join(\", \")), true);\r\n if (overwriteConfirmation === ConfirmationDialogResult.Cancel) return;\r\n if (overwriteConfirmation === ConfirmationDialogResult.No) {\r\n attachments = attachments.filter(i => !result.fileNamesInUse.find(j => j === i.name));\r\n if (!attachments.length) return;\r\n }\r\n await this.uploadFiles(attachments, overwriteConfirmation === ConfirmationDialogResult.Yes);\r\n };\r\n\r\n // handleUploadFiles = async (fileList: FileList) => {\r\n // const attachments = await FileAttachment.addFileListToFileAttachments([], fileList, 0);\r\n // if (attachments.length < 1) return;\r\n // const saveData = await this.getAddAttachmentsSaveData(attachments);\r\n // const result = await AppUtils.callService(() => documentService.uploadFiles(saveData.obj));\r\n // if (!result) return;\r\n // this.updateList();\r\n // };\r\n\r\n handleOpenDocument = (id: string) => {\r\n if (!id || !this.props.editMode) return;\r\n const item = this.state.items.find(i => i.id === id);\r\n if (!item) return;\r\n if (item.fileType !== FileType.Document) {\r\n this.handleShowFileEditDialog(id);\r\n } else {\r\n this.handleShowDocumentEditDialog(id);\r\n }\r\n };\r\n\r\n handleOpenSelectedDocument = () => {\r\n const state = this.state;\r\n if (!state.selectedId) return;\r\n this.handleOpenDocument(state.selectedId);\r\n };\r\n\r\n // #region Copy/Move\r\n handleCopyMoveSelectedDocuments = () => {\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n this.setState({\r\n showCopyMoveDialog: true,\r\n copyMoveDialogItems: state.items.filter(i => selectedIds.indexOf(i.id) > -1)\r\n });\r\n };\r\n\r\n handleCopyMoveDialogOk = (refreshDocuments: boolean) => {\r\n this.setState({\r\n showCopyMoveDialog: false\r\n });\r\n if (!refreshDocuments) return;\r\n this.updateList();\r\n };\r\n \r\n handleCopyMoveDialogCancel = () => {\r\n this.setState({\r\n showCopyMoveDialog: false\r\n });\r\n };\r\n // #endregion Copy/Move\r\n\r\n handleDownloadDocument = async (id: string) => {\r\n if (!id) return;\r\n const props = this.props;\r\n const fileName = await AppUtils.callService(() => documentService.downloadFile(props.companyId, id));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.DocumentParameterDownloaded, fileName));\r\n };\r\n\r\n handleDownloadSelectedDocuments = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n const directoryItemIds = state.items.filter(i => selectedIds.indexOf(i.id) > -1 && (i.fileType !== FileType.Document || i.publishedId)).map(i => i.fileType !== FileType.Document ? i.id : i.publishedId);\r\n if (directoryItemIds.length < 1) return;\r\n if (directoryItemIds.length < 2) {\r\n await this.handleDownloadDocument(directoryItemIds[0]);\r\n } else {\r\n const fileName = await AppUtils.callService(() => documentService.downloadMultipleFiles(props.companyId, directoryItemIds));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.DocumentParameterDownloaded, fileName));\r\n }\r\n };\r\n\r\n handlePrintSelectedDocuments = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n const selectedDocuments = state.items.filter(i => selectedIds.indexOf(i.id) > -1 && i.fileType === FileType.Document);\r\n if (!selectedDocuments.length) return;\r\n const fileName = await AppUtils.callService(() => documentService.printDocuments(props.companyId, selectedDocuments.map(i => i.id)));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.PrintParameterDownloaded, fileName));\r\n };\r\n\r\n handleDeleteSelectedDocuments = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n if (selectedIds.length < 1) return;\r\n const deleteItems = state.items.filter(i => selectedIds.indexOf(i.id) > -1).map(i => new DocumentRemoveItem(i));\r\n if (await AppUtils.showConfirmationDialog(deleteItems.length < 2\r\n ? String.format(Translations.DoYouReallyWantToRemoveDocumentParameter, deleteItems[0].code)\r\n : String.format(Translations.DoYouReallyWantToRemoveDocumentsParameter, deleteItems.length.toString(10)), false, removeConfirmationWord) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await AppUtils.callService(() => documentService.removeDocuments(props.companyId, props.folderId, deleteItems), true);\r\n if (!result) return;\r\n this.updateList();\r\n }\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n
\r\n
\r\n \r\n {props.settingsVisible &&\r\n \r\n {Translations.Settings}\r\n \r\n }\r\n {props.editMode && props.folderPermission > Permission.Read &&\r\n , onClick: this.handleAddEditableDocument },\r\n { title: Translations.UploadDocument, icon: , onClick: null, onAddFilesClick: this.handleUploadFiles }\r\n ]}>\r\n {Translations.Add}\r\n \r\n }\r\n {props.folderPermission > Permission.Read &&\r\n props.onChangeEditMode(!props.editMode)} sx={{ marginLeft: \"1.5rem\" }} selected={props.editMode}>\r\n \r\n }\r\n props.onChangeShowDocumentPreview(!props.showDocumentPreview)} style={{ marginLeft: \"24px\", padding: \"7px\" }} />\r\n \r\n \r\n \r\n \r\n \r\n //props.reportTabs\r\n }\r\n rightItems={\r\n <>\r\n \r\n \r\n }\r\n />\r\n {\r\n const documentStyle = item.fileType === FileType.Document && !item.publishedId ? { opacity: \"0.65\" } : null;\r\n return {\r\n columns: [\r\n {\r\n size: props.showDocumentPreview ? 9 : 10,\r\n style: { position: \"relative\" },\r\n content: \r\n },\r\n {\r\n size: props.showDocumentPreview ? 3 : 2,\r\n content: {Base.timeToDateStr(item.modifyUser.date)}\r\n },\r\n // {\r\n // size: 6,\r\n // content: item.comment,\r\n // hidden: props.showDocumentPreview\r\n // }\r\n ],\r\n id: item.id\r\n };\r\n })}\r\n sortColumn={props.sortColumn}\r\n sortOrderIsAsc={props.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpenDocument}\r\n />\r\n \r\n
\r\n {state.showFileEditDialog &&\r\n this.refreshList(false)}\r\n onPrevious={this.handleFileEditDialogMoveToPrevious}\r\n onNext={this.handleFileEditDialogMoveToNext}\r\n />\r\n }\r\n {state.showDocumentnewDialog &&\r\n \r\n }\r\n {state.showDocumentEditDialog &&\r\n this.refreshList(false)}\r\n onPrevious={this.handleDocumentEditDialogMoveToPrevious}\r\n onNext={this.handleDocumentEditDialogMoveToNext}\r\n />\r\n }\r\n {props.showDocumentPreview &&\r\n props.onChangeShowDocumentPreview(false)}\r\n />\r\n }\r\n {state.showCopyMoveDialog &&\r\n \r\n }\r\n
\r\n );\r\n }\r\n}","import { Box, Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as documentService from \"../../../models/services/documentService\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { DialogButtons } from \"source/components/framework/Dialog/DialogButtons\";\r\nimport { IFolderTreeNode } from \"source/models/document/folderTreeNode\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\n\r\nexport interface IDocumentFolderNewDialogProp {\r\n companyId: string;\r\n folder: IFolderTreeNode;\r\n onOk: (newFolderId: string) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IDocumentFolderNewDialogState {\r\n code: string;\r\n comment: string;\r\n}\r\n\r\nexport class DocumentFolderNewDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IDocumentFolderNewDialogProp) {\r\n super(props);\r\n this.state = {\r\n code: \"\",\r\n comment: \"\"\r\n };\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"code\") {\r\n this.setState({ code: value });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n }\r\n };\r\n\r\n getSaveDataFromState = async (props: IDocumentFolderNewDialogProp, state: IDocumentFolderNewDialogState): Promise => {\r\n const result = new SaveDataObj();\r\n result.append(\"folderId\", props.folder.id);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"code\", state.code);\r\n result.append(\"comment\", state.comment);\r\n return result;\r\n };\r\n\r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.code) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.NameMustBeDefined));\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n const saveData = await this.getSaveDataFromState(props, state);\r\n //Call server\r\n return await AppUtils.callService(() => documentService.addFolder(saveData.obj));\r\n };\r\n\r\n handleSave = async () => {\r\n const result = await this.saveToDb();\r\n if (!result) return;\r\n this.props.onOk(result.id);\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel((await this.getSaveDataFromState(props, state)).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","// UnitPermissionTree\r\n// ***********************************************************************************************************************\r\nimport { Avatar, Box, Grid, ListItemButton, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ListStateIconTool } from \"source/components/framework/List/ListStateIconTool\";\r\nimport { EnumHelper, GroupPermissionLevel } from \"ui/Scripts/source/models/enums\";\r\nimport { IFolderNode } from \"ui/Scripts/source/models/document/folderNode\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ListStateIconExpanded } from \"source/components/framework/List/ListStateIconExpanded\";\r\nimport { AppIconFolder } from \"source/components/framework/Icon/AppIconFolder\";\r\n\r\nexport interface IFolderPermissionTreeProp {\r\n classes?: string;\r\n level?: number;\r\n folderNode: IFolderNode;\r\n selectedId?: string;\r\n isFirstNode: boolean;\r\n onClick: (id: string) => void;\r\n onOpen: (id: string) => void;\r\n}\r\n\r\nexport class FolderPermissionTree extends React.Component {\r\n handleFolderNodeClick = (e) => {\r\n const props = this.props;\r\n e.stopPropagation();\r\n props.onClick(props.folderNode.id);\r\n };\r\n \r\n handleFolderNodeDoubleClick = (e) => {\r\n const props = this.props;\r\n if (e) {\r\n e.stopPropagation();\r\n }\r\n props.onOpen(props.folderNode.id);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const folderNode = props.folderNode;\r\n if (!folderNode || (!props.isFirstNode && folderNode.parent && folderNode.getAncesterIsCollapsed())) return null;\r\n const hasChildren = folderNode.children.length > 0;\r\n const isRoot = folderNode.getIsRoot();\r\n let selectedId = props.selectedId;\r\n if (!props.selectedId && isRoot) {\r\n selectedId = folderNode.id;\r\n }\r\n const permission = folderNode.permission.permission;\r\n const permissionText = EnumHelper.isGreaterOrEqualThan(permission, GroupPermissionLevel.Write)\r\n ? Translations.AccessRightWrite\r\n : (EnumHelper.isEqual(permission, GroupPermissionLevel.Read) ? Translations.AccessRightRead : Translations.AccessRightNone);\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {!folderNode.getIsRoot() && (\r\n \r\n )}\r\n {(!folderNode.image\r\n ? \r\n : \r\n \r\n )}\r\n \r\n \r\n {folderNode.name}\r\n \r\n \r\n \r\n \r\n this.handleFolderNodeDoubleClick(null)}>\r\n {folderNode.permission.isExplicitPermission &&\r\n \r\n }\r\n {permissionText\r\n ? \r\n {permissionText}\r\n \r\n : \" \"}\r\n \r\n \r\n \r\n \r\n {folderNode.children.map((child) =>\r\n \r\n )}\r\n \r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { ConfirmationDialogResult, EnumHelper, GroupPermissionLevel } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../../framework/saveData\";\r\nimport { IUnitPermissionUserGroup } from \"../../../../models/userGroup/unitPermissionUserGroup\";\r\nimport { Box, Checkbox, FormControlLabel, Grid, Radio, Stack } from \"@mui/material\";\r\nimport { IFolderNode } from \"ui/Scripts/source/models/document/folderNode\";\r\nimport { Dialog } from \"source/components/framework/Dialog/Dialog/Dialog\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { PanelTitle } from \"source/components/framework/Panel/PanelTitle\";\r\n\r\n//FolderNodePermissionDialog\r\nexport interface IFolderNodePermissionDialogProp {\r\n folderNode: IFolderNode;\r\n companyGroup: IUnitPermissionUserGroup;\r\n userGroup: IUnitPermissionUserGroup;\r\n onOk: (permission: number, clearSubFolderPermissions: boolean, copyPermissionToAllSameLevelFolders: boolean) => void;\r\n onRemove: () => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IFolderNodePermissionDialogState {\r\n permission: number;\r\n nonExplicitPermission: number;\r\n hasSiblings: boolean;\r\n clearSubFolderPermissions: boolean;\r\n copyPermissionToAllSameLevelFolders: boolean;\r\n}\r\n\r\nexport class FolderNodePermissionDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IFolderNodePermissionDialogProp) {\r\n super(props);\r\n const nonExplicitGroupPermission = props.folderNode.getEffectiveNonExplicitPermission(props.companyGroup, props.userGroup);\r\n this.state = {\r\n permission: Math.min(props.userGroup ? props.folderNode.permission.permission : props.folderNode.permission.companyGroupPermission, Math.min(props.folderNode.maxPermissionLevel, GroupPermissionLevel.Write)),\r\n nonExplicitPermission: Math.min(props.userGroup ? nonExplicitGroupPermission.permission : nonExplicitGroupPermission.companyGroupPermission, GroupPermissionLevel.Write),\r\n hasSiblings: !props.folderNode.getIsRoot() && props.folderNode.hasSiblings(),\r\n clearSubFolderPermissions: false,\r\n copyPermissionToAllSameLevelFolders: false\r\n };\r\n const saveData = this.getSaveDataFromState(props, this.state);\r\n this.orgStateHash = saveData.hash;\r\n }\r\n\r\n handleSetPermission = (checked: boolean, permission: number) => {\r\n if (!checked) return;\r\n this.setState({\r\n permission\r\n });\r\n };\r\n\r\n handleSetClearSubFolderPermissions = (checked: boolean) => {\r\n this.setState({\r\n clearSubFolderPermissions: checked\r\n });\r\n };\r\n\r\n handleSetCopyPermissionToAllSameLevelFolders = (checked: boolean) => {\r\n this.setState({\r\n copyPermissionToAllSameLevelFolders: checked\r\n });\r\n };\r\n\r\n getSaveDataFromState = (props: IFolderNodePermissionDialogProp, state: IFolderNodePermissionDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"permission\", state.permission);\r\n result.append(\"clearSubFolderPermissions\", state.clearSubFolderPermissions);\r\n result.append(\"copyPermissionToAllSameLevelFolders\", state.copyPermissionToAllSameLevelFolders);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n save = async () => {\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return;\r\n this.props.onOk(\r\n state.permission,\r\n state.clearSubFolderPermissions,\r\n state.copyPermissionToAllSameLevelFolders\r\n );\r\n };\r\n\r\n handleSave = () => {\r\n this.save();\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.save();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {EnumHelper.isGreaterOrEqualThan(props.folderNode.maxPermissionLevel, GroupPermissionLevel.None) &&\r\n this.handleSetPermission(checked, GroupPermissionLevel.None)}\r\n />\r\n }\r\n sx={{ marginBottom: 0 }}\r\n />\r\n }\r\n {EnumHelper.isGreaterOrEqualThan(props.folderNode.maxPermissionLevel, GroupPermissionLevel.Read) &&\r\n this.handleSetPermission(checked, GroupPermissionLevel.Read)}\r\n />\r\n }\r\n sx={{ marginBottom: 0 }}\r\n />\r\n }\r\n {EnumHelper.isGreaterOrEqualThan(props.folderNode.maxPermissionLevel, GroupPermissionLevel.Write) &&\r\n this.handleSetPermission(checked, GroupPermissionLevel.Write)}\r\n />\r\n }\r\n sx={{ marginBottom: 0 }}\r\n />\r\n }\r\n \r\n \r\n \r\n {(props.folderNode.hasChildren() || state.hasSiblings) &&\r\n \r\n }\r\n {props.folderNode.hasChildren() &&\r\n this.handleSetClearSubFolderPermissions(v)}\r\n />\r\n }\r\n />\r\n }\r\n {state.hasSiblings &&\r\n this.handleSetCopyPermissionToAllSameLevelFolders(v)}\r\n />\r\n }\r\n />\r\n }\r\n \r\n \r\n \r\n }\r\n buttons={[\r\n { title: Translations.Remove, variant: \"danger\", onClick: props.folderNode.hasExplicitPermission(props.companyGroup?.code, props.userGroup?.code) ? props.onRemove : null },\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: this.handleCancel },\r\n { title: Translations.OK, variant: \"confirmation\", onClick: this.handleSave },\r\n ]}\r\n onClose={this.handleCancel}/>\r\n );\r\n }\r\n}","// UnitApplicationPermissions\r\n// ***********************************************************************************************************************\r\nimport { Box, FormControlLabel, Grid, Radio, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Dropdown } from \"ui/Scripts/source/components/framework/Dropdown/Dropdown\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { EnumHelper, GroupType, UserGroupType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport * as store from \"../../../../framework/customStore\";\r\nimport * as storeActions from \"../../../../models/store/storeActions\";\r\nimport { IUnitNodePermission } from \"../../../../models/unit/unitNodePermission\";\r\nimport { IUnitPermissionUserGroup, UnitPermissionUserGroup } from \"../../../../models/userGroup/unitPermissionUserGroup\";\r\nimport { FolderNode, IFolderNode } from \"ui/Scripts/source/models/document/folderNode\";\r\nimport { IFolderNodePermission } from \"ui/Scripts/source/models/document/folderNodePermission\";\r\nimport { FolderPermissionTree } from \"../FolderPermissionTree\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { ActionContainer } from \"source/components/framework/ActionContainer\";\r\nimport { ListIconButtonsPermission } from \"source/components/framework/List/ListIconButtons/ListIconButtonsPermission\";\r\nimport { ListHeaderLine } from \"source/components/framework/List/ListLine\";\r\nimport { FolderNodePermissionDialog } from \"../FolderNodePermissionDialog\";\r\n\r\nexport interface IFolderPermissionsProp {\r\n canUseAllCompanyGroup: boolean;\r\n companyId: string;\r\n folderId: string;\r\n disabled?: boolean;\r\n\r\n userGroupMode: boolean;\r\n folderNode: IFolderNode;\r\n groups: IUnitPermissionUserGroup[];\r\n\r\n onChangeSaveFolderNode: (saveFolderNode: IFolderNode) => void;\r\n}\r\n\r\ninterface IFolderPermissionsState {\r\n allUsersGroup: boolean;\r\n userGroupType: UserGroupType;\r\n allGroups: IUnitPermissionUserGroup[];\r\n groups: IUnitPermissionUserGroup[];\r\n group: IUnitPermissionUserGroup;\r\n copiedPermissions: { [id: string]: IFolderNodePermission; };\r\n permissionsCopied: boolean;\r\n folderNode: IFolderNode;\r\n displayFolderNode: IFolderNode;\r\n editFolderNode: IFolderNode;\r\n selectedFolderId: string;\r\n showFolderPermissionDialog: boolean;\r\n folderPermissionDialogGroup: IUnitPermissionUserGroup;\r\n}\r\n\r\nexport class FolderPermissions extends React.Component {\r\n setFixedGroupNames = (groups: IUnitPermissionUserGroup[]) => {\r\n const fixedGroups = groups.filter(i => !!i.code && Base.equalInt(i.type, UserGroupType.Fixed));\r\n for (const group of fixedGroups) {\r\n group.groupNames = groups.filter(i => Base.equalInt(i.type, UserGroupType.Normal) && group.groupCodes.indexOf(i.code) > -1).map(i => i.name).sort();\r\n }\r\n };\r\n\r\n static getGroups = (groups: IUnitPermissionUserGroup[], allUsersGroup: boolean, userGroupType: UserGroupType): IUnitPermissionUserGroup[] => {\r\n if (allUsersGroup) {\r\n return groups.filter(i => !i.code && Base.equalInt(i.type, UserGroupType.Normal));\r\n } else {\r\n return groups.filter(i => !!i.code && Base.equalInt(i.type, userGroupType));\r\n }\r\n };\r\n\r\n setEffectivePermissions = (folderNode: IFolderNode, group: IUnitPermissionUserGroup) => {\r\n const userGroupMode = this.props.userGroupMode;\r\n const companyGroup = userGroupMode ? null : group;\r\n const userGroup = !userGroupMode ? null : group;\r\n folderNode.setEffectivePermissions(companyGroup, userGroup, null);\r\n };\r\n\r\n constructor(props: IFolderPermissionsProp) {\r\n super(props);\r\n const allGroups = props.groups.map(i => { return new UnitPermissionUserGroup(i); });\r\n this.setFixedGroupNames(allGroups);\r\n const groups = FolderPermissions.getGroups(allGroups, props.userGroupMode || props.canUseAllCompanyGroup, props.userGroupMode || props.canUseAllCompanyGroup ? UserGroupType.Normal : UserGroupType.Fixed);\r\n const group = groups.length > 0 ? groups[0] : new UnitPermissionUserGroup();\r\n const folderNode = new FolderNode(props.folderNode);\r\n this.setEffectivePermissions(folderNode, group);\r\n const displayFolderNode = folderNode.getFolderNodeById(props.folderId);\r\n displayFolderNode.expanded = true;\r\n this.state = {\r\n folderNode,\r\n displayFolderNode,\r\n editFolderNode: null,\r\n allUsersGroup: true,\r\n userGroupType: UserGroupType.Normal,\r\n allGroups,\r\n groups,\r\n group,\r\n permissionsCopied: false,\r\n copiedPermissions: {},\r\n selectedFolderId: props.folderId,\r\n showFolderPermissionDialog: false,\r\n folderPermissionDialogGroup: null\r\n };\r\n }\r\n\r\n runLongTask = (task: () => IFolderNode): IFolderNode => {\r\n if (!task) return null;\r\n store.customStore.dispatch(storeActions.fetchStart());\r\n try {\r\n return task();\r\n } finally {\r\n store.customStore.dispatch(storeActions.fetchEnd());\r\n }\r\n };\r\n\r\n getUpdatedFolderNode = (group: IUnitPermissionUserGroup): IFolderNode => {\r\n if (!group) return this.state.folderNode;\r\n return this.runLongTask(() => {\r\n const folderNode = new FolderNode(this.state.folderNode);\r\n this.setEffectivePermissions(folderNode, group);\r\n return folderNode;\r\n });\r\n };\r\n\r\n userGroupChange = (groupCode: string) => {\r\n const props = this.props;\r\n const group = this.state.groups.find(i => i.code === groupCode);\r\n if (!group) return;\r\n const folderNode = this.getUpdatedFolderNode(group);\r\n this.setState({\r\n group,\r\n folderNode,\r\n displayFolderNode: folderNode.getFolderNodeById(props.folderId)\r\n });\r\n };\r\n\r\n handleChangeUserGroupTypeAll = (checked: boolean) => {\r\n if (!checked) return;\r\n const props = this.props;\r\n const groups = FolderPermissions.getGroups(this.state.allGroups, true, UserGroupType.Normal);\r\n const group = groups.length > 0 ? groups[0] : new UnitPermissionUserGroup();\r\n const folderNode = this.getUpdatedFolderNode(group);\r\n this.setState({\r\n allUsersGroup: true,\r\n groups,\r\n group,\r\n folderNode,\r\n displayFolderNode: folderNode.getFolderNodeById(props.folderId)\r\n });\r\n };\r\n\r\n handleChangeUserGroupType = (checked: boolean, userGroupType: UserGroupType) => {\r\n if (!checked) return;\r\n const props = this.props;\r\n const groups = FolderPermissions.getGroups(this.state.allGroups, false, userGroupType);\r\n const group = groups.length > 0 ? groups[0] : new UnitPermissionUserGroup();\r\n const folderNode = this.getUpdatedFolderNode(group);\r\n this.setState({\r\n allUsersGroup: false,\r\n userGroupType,\r\n groups,\r\n group,\r\n folderNode,\r\n displayFolderNode: folderNode.getFolderNodeById(props.folderId)\r\n });\r\n };\r\n \r\n editPermission = (id: string) => {\r\n const state = this.state;\r\n if (!id) return;\r\n const group = state.groups.find(i => i.code === state.group.code);\r\n if (!group) return;\r\n const editFolderNode = state.folderNode.getFolderNodeById(id);\r\n if (!editFolderNode) return;\r\n this.setState({\r\n showFolderPermissionDialog: true,\r\n editFolderNode,\r\n folderPermissionDialogGroup: group\r\n });\r\n };\r\n\r\n handleFolderNodeClick = (id: string) => {\r\n if (!id) return;\r\n const folderNode = new FolderNode(this.state.folderNode);\r\n const node = folderNode.getFolderNodeById(id);\r\n if (!node) return;\r\n if (node.parent) {\r\n node.expanded = !node.expanded;\r\n }\r\n this.setState({\r\n selectedFolderId: id,\r\n folderNode,\r\n displayFolderNode: folderNode.getFolderNodeById(this.props.folderId)\r\n });\r\n };\r\n\r\n handleEditPermission = (id: string) => {\r\n this.editPermission(id);\r\n };\r\n\r\n copyPermissionToSiblings = (folderNode: IFolderNode, companyGroup: IUnitPermissionUserGroup, userGroup: IUnitPermissionUserGroup, permission: number) => {\r\n if (!folderNode.hasSiblings()) return;\r\n const siblings = folderNode.getSiblings();\r\n for (let i = 0; i < siblings.length; i++) {\r\n siblings[i].setGroupPermission(companyGroup, userGroup, permission, false);\r\n }\r\n };\r\n\r\n handleUnitGroupPermissionDialogOk = (permission: number, clearSubFolderPermissions: boolean, copyPermissionToAllSameLevelFolders: boolean) => {\r\n const state = this.state;\r\n const props = this.props;\r\n this.runLongTask(() => {\r\n const folderNode = new FolderNode(state.folderNode);\r\n const editFolderNode = folderNode.getFolderNodeById(state.editFolderNode.id);\r\n if (!editFolderNode) return;\r\n const companyGroup = props.userGroupMode ? null : state.folderPermissionDialogGroup;\r\n const userGroup = !props.userGroupMode ? null : state.folderPermissionDialogGroup;\r\n editFolderNode.setGroupPermission(companyGroup, userGroup, permission, clearSubFolderPermissions);\r\n let updateFolderNode = editFolderNode;\r\n if (copyPermissionToAllSameLevelFolders) {\r\n this.copyPermissionToSiblings(editFolderNode, companyGroup, userGroup, permission);\r\n updateFolderNode = editFolderNode.parent;\r\n }\r\n updateFolderNode.setEffectivePermissions(companyGroup, userGroup);\r\n const displayFolderNode = folderNode.getFolderNodeById(props.folderId);\r\n this.setState({\r\n showFolderPermissionDialog: false,\r\n folderNode,\r\n displayFolderNode\r\n });\r\n props.onChangeSaveFolderNode(displayFolderNode);\r\n return folderNode;\r\n });\r\n };\r\n\r\n handleUnitGroupPermissionDialogCancel = () => {\r\n this.setState({\r\n showFolderPermissionDialog: false\r\n });\r\n };\r\n\r\n handleUnitGroupPermissionDialogRemove = () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const folderNode = new FolderNode(state.folderNode);\r\n const editFolderNode = folderNode.getFolderNodeById(state.selectedFolderId);\r\n if (!editFolderNode) return;\r\n editFolderNode.removeGroupPermission(props.userGroupMode ? GroupType.UserGroup : GroupType.CompanyGroup, state.folderPermissionDialogGroup.code);\r\n const companyGroup = props.userGroupMode ? null : state.folderPermissionDialogGroup;\r\n const userGroup = !props.userGroupMode ? null : state.folderPermissionDialogGroup;\r\n editFolderNode.setEffectivePermissions(companyGroup, userGroup);\r\n const displayFolderNode = folderNode.getFolderNodeById(props.folderId);\r\n this.setState({\r\n showFolderPermissionDialog: false,\r\n folderNode,\r\n displayFolderNode,\r\n });\r\n props.onChangeSaveFolderNode(displayFolderNode);\r\n };\r\n\r\n handleCopyPermissions = () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const displayFolderNode = state.displayFolderNode;\r\n if (!displayFolderNode) return;\r\n const copiedPermissions: { [id: string]: IUnitNodePermission; } = {};\r\n const companyGroupCode = props.userGroupMode ? null : state.group.code;\r\n const userGroupCode = !props.userGroupMode ? null : state.group.code;\r\n this.setState({\r\n copiedPermissions: displayFolderNode.getNodePermissions(companyGroupCode, userGroupCode, copiedPermissions),\r\n permissionsCopied: true\r\n });\r\n };\r\n\r\n handlePastePermissions = () => {\r\n const obj = this;\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.permissionsCopied) return;\r\n const group = state.groups.find(i => i.code === state.group.code);\r\n if (!group) return;\r\n const companyGroup = props.userGroupMode ? null : group;\r\n const userGroup = !props.userGroupMode ? null : group;\r\n return this.runLongTask(() => {\r\n const folderNode = new FolderNode(this.state.folderNode);\r\n const displayFolderNode = folderNode.getFolderNodeById(props.folderId);\r\n if (!displayFolderNode) return;\r\n displayFolderNode.setGroupPermissions(companyGroup, userGroup, this.state.copiedPermissions);\r\n displayFolderNode.setEffectivePermissions(companyGroup, userGroup);\r\n obj.setState({\r\n folderNode,\r\n displayFolderNode\r\n });\r\n props.onChangeSaveFolderNode(displayFolderNode);\r\n return folderNode;\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n {(props.userGroupMode || props.canUseAllCompanyGroup) &&\r\n \r\n \r\n this.handleChangeUserGroupTypeAll(checked)}\r\n />\r\n }\r\n />\r\n \r\n \r\n this.handleChangeUserGroupType(checked, UserGroupType.Normal)}\r\n />\r\n }\r\n />\r\n \r\n \r\n this.handleChangeUserGroupType(checked, UserGroupType.Fixed)}\r\n />\r\n }\r\n />\r\n \r\n \r\n }\r\n {\r\n const groupNames = Base.getStringWithSeparators(group.groupNames, \", \");\r\n return {\r\n title: {group.name}{groupNames &&  ({groupNames})},\r\n textTitle: group.name + (groupNames ? \" (\" + groupNames + \")\" : \"\"),\r\n selected: group.code === state.group.code,\r\n onClick: () => this.userGroupChange(group.code)\r\n };\r\n })}\r\n />\r\n }\r\n rightItems={\r\n this.handleEditPermission(state.selectedFolderId)}\r\n onCopy={this.handleCopyPermissions}\r\n onPaste={this.handlePastePermissions}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n {state.showFolderPermissionDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","import { Box, Checkbox, FormControlLabel, Grid, Radio, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ConfirmationDialogResult, Permission } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as documentService from \"../../../models/services/documentService\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { DialogButtons } from \"source/components/framework/Dialog/DialogButtons\";\r\nimport { FileAttachment, IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { SaveAttachmentBase64 } from \"ui/Scripts/source/models/common/saveAttachmentBase64\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { IDocumentFolderEditItem } from \"source/models/documentFolder/documentFolderItem\";\r\nimport { IFolderNode } from \"ui/Scripts/source/models/document/folderNode\";\r\nimport { IUnitPermissionUserGroup } from \"source/models/userGroup/unitPermissionUserGroup\";\r\nimport { DialogTabs } from \"source/components/framework/Dialog/DialogTabs\";\r\nimport { FolderPermissions } from \"./FolderPermissions\";\r\nimport { AppIconFolder } from \"source/components/framework/Icon/AppIconFolder\";\r\nimport { DocumentFolderPath } from \"../DocumentFolderPath/DocumentFolderPath\";\r\nimport { DialogItemsNav } from \"source/components/framework/Dialog/DialogItemsNav\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum DocumentFolderEditDialogMenuItem {\r\n General = \"1\",\r\n Permissions = \"2\",\r\n PermissionsOther = \"3\",\r\n ContentFiltering = \"4\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\nexport interface IDocumentFolderEditDialogProp {\r\n sessionState: ISessionState;\r\n parentFolderPermission: Permission;\r\n id: string;\r\n companyId: string;\r\n isRoot: boolean;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onOk: (newSelectedId: string) => void;\r\n onCancel: () => void;\r\n onRefreshList: () => Promise;\r\n}\r\n\r\nexport interface IDocumentFolderEditDialogState {\r\n activeMenuItem: DocumentFolderEditDialogMenuItem;\r\n \r\n canUseAllCompanyGroup: boolean;\r\n maxFolderNameLength: number;\r\n folderNode: IFolderNode;\r\n userGroups: IUnitPermissionUserGroup[];\r\n companyGroups: IUnitPermissionUserGroup[];\r\n fileFilters: IIdTitle[];\r\n userCompanyOwnsResouces: boolean;\r\n canEditProperties: boolean;\r\n hasFullPermissions: boolean;\r\n parentPath: string;\r\n\r\n code: string;\r\n path: string;\r\n comment: string;\r\n file: IFileAttachment;\r\n image: string;\r\n resetImage: boolean;\r\n fileFilterIds: string[];\r\n inheritedFileFilterIds: string[];\r\n showInheritedFileFilterIds: boolean;\r\n \r\n item: IDocumentFolderEditItem;\r\n rowId: string;\r\n}\r\n\r\nexport class DocumentFolderEditDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IDocumentFolderEditDialogProp) {\r\n super(props);\r\n const permission = props.isRoot\r\n ? (props.sessionState.isSuperAdmin ? Permission.Full : Permission.None)\r\n : props.parentFolderPermission;\r\n const userCompanyOwnsResouces = props.sessionState.companyId === props.companyId;\r\n this.state = {\r\n activeMenuItem: DocumentFolderEditDialogMenuItem.General,\r\n canUseAllCompanyGroup: false,\r\n maxFolderNameLength: 248,\r\n folderNode: null,\r\n userGroups: [],\r\n companyGroups: [],\r\n fileFilters: [],\r\n item: null,\r\n userCompanyOwnsResouces,\r\n canEditProperties: permission > Permission.Read || userCompanyOwnsResouces,\r\n hasFullPermissions: props.sessionState.isSuperAdmin || userCompanyOwnsResouces,\r\n parentPath: \"\",\r\n code: \"\",\r\n path: \"\",\r\n comment: \"\",\r\n file: null,\r\n image: \"\",\r\n resetImage: false,\r\n fileFilterIds: [],\r\n inheritedFileFilterIds: [],\r\n showInheritedFileFilterIds: true,\r\n rowId: \"\",\r\n };\r\n }\r\n\r\n loadData = async () => {\r\n const props = this.props;\r\n const result = await AppUtils.callService(this.state.hasFullPermissions\r\n ? () => documentService.getDocumentFolderEdit(props.companyId, props.id, props.isRoot)\r\n : () => documentService.getDocumentSharedFolderEdit(props.companyId, props.id, props.isRoot), false);\r\n if (!result) return;\r\n const item = result.item;\r\n result.folderNode.expanded = true;\r\n const state = {\r\n ...this.state,\r\n canUseAllCompanyGroup: result.canUseAllCompanyGroup,\r\n maxFolderNameLength: result.maxFolderNameLength,\r\n parentPath: result.path,\r\n folderNode: result.folderNode,\r\n userGroups: result.userGroups,\r\n companyGroups: result.companyGroups,\r\n fileFilters: result.fileFilters,\r\n item,\r\n code: item.code,\r\n path: item.path,\r\n comment: item.comment,\r\n fileFilterIds: item.fileFilterIds,\r\n inheritedFileFilterIds: item.inheritedFileFilterIds,\r\n showInheritedFileFilterIds: item.fileFilterIds.length < 1 && item.inheritedFileFilterIds.length > 0,\r\n file: null,\r\n image: item.image,\r\n resetImage: !item.image,\r\n rowId: item.rowId\r\n };\r\n this.setState(state);\r\n const saveData = await this.getSaveDataFromState(this.props, state);\r\n this.orgStateHash = saveData.hash;\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadData();\r\n }\r\n\r\n async componentDidUpdate(prevProps: IDocumentFolderEditDialogProp, prevState: IDocumentFolderEditDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if (prevProps.companyId === props.companyId && prevProps.id === props.id) return;\r\n const cancelResult = await AppUtils.cancel((await this.getSaveDataFromState(props, state)).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb()) return;\r\n props.onRefreshList();\r\n }\r\n this.loadData();\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"code\") {\r\n this.setState({ code: value });\r\n } else if (name === \"path\") {\r\n this.setState({ path: value });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n }\r\n };\r\n\r\n handleSetImage = async (file: File) => {\r\n if (!file) return;\r\n const attachment = await FileAttachment.fileToFileAttachment(file, 0);\r\n if (!attachment) return;\r\n if (!AppUtils.validateFileAttachment(attachment)) return;\r\n this.setState({ file: attachment, resetImage: false, image: attachment.thumbnail });\r\n };\r\n\r\n handleRemoveImage = () => {\r\n this.setState({ file: null, resetImage: true, image: \"\" });\r\n };\r\n\r\n handleToggleActiveMenuItem = (activeMenuItem: DocumentFolderEditDialogMenuItem) => {\r\n this.setState({ activeMenuItem });\r\n };\r\n\r\n handleChangeFolderNode = (folderNode: IFolderNode) => {\r\n this.setState({\r\n folderNode\r\n });\r\n };\r\n\r\n getSaveDataFromState = async (props: IDocumentFolderEditDialogProp, state: IDocumentFolderEditDialogState): Promise => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.item.id);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"isRoot\", props.isRoot);\r\n result.append(\"rowId\", state.rowId);\r\n if (props.sessionState.isSuperAdmin && props.isRoot) {\r\n result.append(\"path\", state.path);\r\n }\r\n if (state.canEditProperties) {\r\n result.append(\"code\", state.code);\r\n result.append(\"comment\", state.comment);\r\n result.append(\"fileFilterIds\", state.fileFilterIds);\r\n result.append(\"resetImage\", state.resetImage);\r\n if (state.file) {\r\n result.append(\"attachments\", await SaveAttachmentBase64.fromFileAttachments([state.file]));\r\n }\r\n }\r\n result.append(\"permissions\", state.folderNode.getJsonFolderNodeSaves([]));\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.code) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.NameMustBeDefined));\r\n return resolve(false);\r\n }\r\n if (!state.path && this.props.sessionState.isSuperAdmin && this.props.isRoot) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.PathMustBeDefined));\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n const saveData = await this.getSaveDataFromState(props, state);\r\n //Call server\r\n return !!(await AppUtils.callService(this.state.hasFullPermissions\r\n ? () => documentService.saveDocumentFolderEdit(saveData.obj)\r\n : () => documentService.saveDocumentSharedFolderEdit(saveData.obj)));\r\n };\r\n\r\n handleSave = async () => {\r\n if (!await this.saveToDb()) return;\r\n this.props.onOk(this.state.item.id);\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (props.isRoot) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveFolderParameter, state.item.code), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await AppUtils.callService(() => documentService.removeFolder(props.companyId, props.id), true);\r\n if (!result) return;\r\n props.onOk(\"\");\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel((await this.getSaveDataFromState(props, state)).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut((await this.getSaveDataFromState(props, this.state)).hash, this.orgStateHash, this.saveToDb, props.onRefreshList);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.item) return null;\r\n return (\r\n \r\n }\r\n body={\r\n \r\n {state.activeMenuItem === DocumentFolderEditDialogMenuItem.General &&\r\n <>\r\n \r\n \r\n \r\n
\r\n : null}\r\n image={state.resetImage ? null : state.image}\r\n editable={state.canEditProperties}\r\n tooltip={Translations.CkickToChangeThePicture}\r\n removeTooltip={Translations.RemovePicture}\r\n onChange={this.handleSetImage}\r\n onClear={state.resetImage ? null : this.handleRemoveImage}\r\n onError={AppUtils.showErrorMessage}\r\n />\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n {props.sessionState.isSuperAdmin && props.isRoot &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {state.activeMenuItem === DocumentFolderEditDialogMenuItem.Permissions &&\r\n \r\n }\r\n {state.activeMenuItem === DocumentFolderEditDialogMenuItem.PermissionsOther &&\r\n \r\n }\r\n {state.activeMenuItem === DocumentFolderEditDialogMenuItem.ContentFiltering &&\r\n <>\r\n \r\n \r\n
\r\n {\r\n if (!checked) return;\r\n this.setState({ fileFilterIds: [] });\r\n }}\r\n disabled={state.inheritedFileFilterIds.length > 0}\r\n />\r\n }\r\n />\r\n
\r\n
\r\n 0}\r\n onChange={(_e, checked: boolean) => {\r\n if (!checked) return;\r\n this.setState({ fileFilterIds: state.fileFilters.map(i => i.id) });\r\n }}\r\n />\r\n }\r\n />\r\n
\r\n \r\n {state.fileFilters.map((fileFilter) =>\r\n
\r\n -1 ? \" \" + Translations.InheritedContentFilter : \"\")}\r\n control={\r\n -1 || state.showInheritedFileFilterIds && state.inheritedFileFilterIds.indexOf(fileFilter.id) > -1}\r\n onChange={(_e, checked: boolean) => {\r\n const fileFilterIds = state.showInheritedFileFilterIds\r\n ? state.inheritedFileFilterIds.filter(i => i !== fileFilter.id)\r\n : state.fileFilterIds.filter(i => i !== fileFilter.id);\r\n if (checked) {\r\n fileFilterIds.push(fileFilter.id);\r\n }\r\n this.setState({ fileFilterIds, showInheritedFileFilterIds: false });\r\n }}\r\n disabled={state.inheritedFileFilterIds.length > 0 && state.inheritedFileFilterIds.indexOf(fileFilter.id) < 0}\r\n />\r\n }\r\n />\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n \r\n }\r\n
\r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","import React, { useEffect, useState } from \"react\";\r\nimport { Box, Divider, List, ListItemButton } from \"@mui/material\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport * as documentService from \"../../../models/services/documentService\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { IFolderTreeNode } from \"source/models/document/folderTreeNode\";\r\nimport { DocumentTreeFolderNode } from \"./DocumentFolderTreeNode\";\r\nimport { PageTitle } from \"source/components/framework/Page/PageTitle\";\r\nimport { AddButton } from \"source/components/framework/Button/AddButton\";\r\nimport { ListContainer } from \"source/components/framework/List/ListContainer\";\r\nimport { LocalLoading } from \"source/components/framework/Loading/LocalLoading\";\r\nimport { DocumentList } from \"../DocumentList\";\r\nimport { ConfirmationDialogResult, Permission } from \"ui/Scripts/source/models/enums\";\r\nimport { ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { DocumentCopyMoveDialog } from \"../DocumentCopyMoveDialog\";\r\nimport { DocumentFolderNewDialog } from \"../DocumentFolderNewDialog\";\r\nimport { DocumentFolderEditDialog } from \"../DocumentFolderEditDialog\";\r\nimport { IDocumentPageFilterState } from \"../DocumentPageDashboardChart\";\r\nimport { CompanyItem } from \"source/components/company/Company/CompanyItem\";\r\n\r\ninterface IDocumentFoldersProps extends IDocumentPageFilterState {\r\n sessionState: ISessionState;\r\n canEditProperties: boolean;\r\n companies?: ICompanyMenuItem[];\r\n companyId: string;\r\n dataId: string;\r\n listFilterIsSet: boolean;\r\n showDocumentPreview: boolean;\r\n showPublishedVersionOnDocumentPreview: boolean;\r\n editMode: boolean;\r\n settingsVisible: boolean;\r\n onShowSettingsDialog: () => void;\r\n onChangeShowDocumentPreview?: (showDocumentPreview: boolean) => void;\r\n onChangeShowPublishedVersionOnDocumentPreview?: (showPublishedVersionOnDocumentPreview: boolean) => void;\r\n onChangeEditMode?: (editMode: boolean) => void;\r\n onOpenFiltersPanel: () => void;\r\n onChangeActiveCompany?: (companyId: string) => void;\r\n}\r\n\r\ninterface IDocumentFolderTreeState {\r\n companyId: string;\r\n isLoading: boolean;\r\n folderTree: IFolderTreeNode;\r\n folderTreeNodes: IFolderTreeNode[];\r\n selectedId: string;\r\n permission: Permission;\r\n folderComment: string;\r\n}\r\n\r\ninterface IDocumentListState {\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n}\r\n\r\ninterface INewFolderDialogState {\r\n show: boolean;\r\n folder: IFolderTreeNode;\r\n}\r\n\r\ninterface IEditFolderDialogState {\r\n show: boolean;\r\n folder: IFolderTreeNode;\r\n}\r\n\r\nexport const DocumentFolders = (props: IDocumentFoldersProps) => {\r\n const [treeState, setTreeState] = useState({ companyId: \"\", isLoading: true, folderTree: null, folderTreeNodes: [], selectedId: \"\", permission: Permission.None, folderComment: \"\" });\r\n const [listState, setListState] = useState({ filter: \"\", sortColumn: \"name\", sortOrderIsAsc: true });\r\n const [showCopyMoveDialog, setShowCopyMoveDialog] = useState(false);\r\n const [newFolderDialogState, setNewFolderDialogState] = useState({ show: false, folder: null });\r\n const [editFolderDialogState, setEditFolderDialogState] = useState({ show: false, folder: null });\r\n\r\n const loadFolderNode = async (newSelectedId: string) => {\r\n setTreeState(prevState => ({\r\n ...prevState,\r\n ...{\r\n isLoading: true\r\n }\r\n }));\r\n if (!props.companyId) return;\r\n await AppUtils.callService(() => documentService.getDocumentFolders(props.companyId), false, true, (result) => {\r\n if (result) {\r\n const folderTreeNodes = result.folderTree.getAsList([]);\r\n let selectedId = result.folderTree.id;\r\n let selectedFolderNode = result.folderTree;\r\n if (newSelectedId) {\r\n selectedFolderNode = folderTreeNodes.find(i => i.id === newSelectedId);\r\n if (selectedFolderNode) {\r\n selectedId = newSelectedId;\r\n selectedFolderNode.expandToRoot();\r\n }\r\n }\r\n setTreeState({\r\n companyId: props.companyId,\r\n isLoading: false,\r\n folderTree: result.folderTree,\r\n folderTreeNodes,\r\n selectedId,\r\n permission: selectedFolderNode.permission,\r\n folderComment: selectedFolderNode.name + (selectedFolderNode.comment ? \": \" + selectedFolderNode.comment : \"\")\r\n });\r\n } else {\r\n setTreeState(prevState => ({\r\n ...prevState,\r\n ...{\r\n isLoading: false\r\n }\r\n }));\r\n }\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n loadFolderNode(null);\r\n }, [props.companyId, props.dataId]);\r\n\r\n const handleClick = (id: string) => {\r\n if (!id) return;\r\n const folderTreeNodes = treeState.folderTreeNodes.slice(0);\r\n const node = folderTreeNodes.find(i => i.id === id);\r\n if (!node) return;\r\n if (node.parent) {\r\n node.expanded = !node.expanded;\r\n }\r\n setTreeState(prevState => ({\r\n ...prevState,\r\n ...{\r\n folderTreeNodes,\r\n selectedId: id,\r\n permission: node.permission,\r\n folderComment: node.name + (node.comment ? \": \" + node.comment : \"\")\r\n }\r\n }));\r\n };\r\n\r\n // #region Add Folder\r\n const handleAddFolder = () => {\r\n if (!treeState.selectedId) return;\r\n const folder = treeState.folderTreeNodes.find(i => i.id === treeState.selectedId);\r\n if (!folder) return;\r\n setNewFolderDialogState({\r\n show: true,\r\n folder\r\n });\r\n };\r\n\r\n const handleDocumentFolderNewDialogOk = (newFolderId: string) => {\r\n setNewFolderDialogState({\r\n show: false,\r\n folder: null\r\n });\r\n loadFolderNode(newFolderId);\r\n };\r\n\r\n const handleDocumentFolderNewDialogCancel = () => {\r\n setNewFolderDialogState({\r\n show: false,\r\n folder: null\r\n });\r\n };\r\n // #endregion Add Folder\r\n\r\n // #region Edit Folder\r\n const handleEditFolder = () => {\r\n if (!treeState.selectedId) return;\r\n const folder = treeState.folderTreeNodes.find(i => i.id === treeState.selectedId);\r\n if (!folder) return;\r\n setEditFolderDialogState({\r\n show: true,\r\n folder\r\n });\r\n };\r\n\r\n const handleDocumentFolderEditDialogOk = (newSelectedId: string) => {\r\n let selectedId = newSelectedId;\r\n if (!selectedId && editFolderDialogState.folder.parent) {\r\n const index = editFolderDialogState.folder.parent.children.findIndex(i => i.id === editFolderDialogState.folder.id);\r\n selectedId = index > 0\r\n ? editFolderDialogState.folder.parent.children[index - 1].id\r\n : editFolderDialogState.folder.parent.id;\r\n }\r\n setEditFolderDialogState({\r\n show: false,\r\n folder: null\r\n });\r\n loadFolderNode(selectedId);\r\n };\r\n\r\n const handleDocumentFolderEditDialogCancel = () => {\r\n setEditFolderDialogState({\r\n show: false,\r\n folder: null\r\n });\r\n };\r\n\r\n // #endregion Edit Folder\r\n\r\n const handleDeleteFolder = async (id: string) => {\r\n if (!id) return;\r\n const folderTreeNode = treeState.folderTreeNodes.find(i => i.id === id);\r\n if (!folderTreeNode || !folderTreeNode.parent) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveFolderParameter, folderTreeNode.name), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await AppUtils.callService(() => documentService.removeFolder(props.companyId, id), true);\r\n if (!result) return;\r\n loadFolderNode(folderTreeNode.parent.id);\r\n }\r\n };\r\n\r\n // #region Copy / Move\r\n const handleCopyFolder = () => {\r\n setShowCopyMoveDialog(true);\r\n };\r\n\r\n const handleCopyMoveDialogOk = (refreshFolders: boolean, selectedId: string) => {\r\n setShowCopyMoveDialog(false);\r\n if (!refreshFolders) return;\r\n loadFolderNode(selectedId);\r\n };\r\n \r\n const handleCopyMoveDialogCancel = () => {\r\n setShowCopyMoveDialog(false);\r\n };\r\n // #endregion Copy / Move\r\n\r\n const handleSetSortData = (sortColumn: string, sortOrderIsAsc: boolean) => {\r\n setListState(prevState => ({\r\n ...prevState,\r\n ...{ sortColumn, sortOrderIsAsc }\r\n }));\r\n };\r\n\r\n const handleChangeFilter = (filter: string) => {\r\n setListState(prevState => ({\r\n ...prevState,\r\n ...{ filter }\r\n }));\r\n };\r\n\r\n const isSuperAdmin = props.sessionState.isSuperAdmin;\r\n\r\n const showCompanies = !isSuperAdmin && !treeState.isLoading && props.companies?.length > 1;\r\n\r\n const company = showCompanies\r\n ? props.companies.find(i => i.id === props.companyId)\r\n : null;\r\n\r\n return (\r\n \r\n
\r\n \r\n {props.editMode && treeState.permission > Permission.Read &&\r\n \r\n {Translations.AddFolder}\r\n \r\n }\r\n \r\n \r\n {!!company &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n {treeState.folderTreeNodes.map((node, index) =>\r\n \r\n )}\r\n \r\n {showCompanies &&\r\n \r\n \r\n {props.companies.map((company) => {\r\n if (company.id === props.companyId) return null;\r\n return props.onChangeActiveCompany(company.id)}\r\n >\r\n \r\n ;\r\n })}\r\n \r\n }\r\n {treeState.isLoading &&\r\n \r\n }\r\n \r\n
\r\n \r\n {showCopyMoveDialog &&\r\n \r\n }\r\n {newFolderDialogState.show &&\r\n \r\n }\r\n {editFolderDialogState.show &&\r\n loadFolderNode(\"\")}\r\n onPrevious={() => {}}\r\n onNext={() => {}}\r\n />\r\n }\r\n
\r\n );\r\n};\r\n","import { Box, Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../../../framework/saveData\";\r\nimport * as documentService from \"../../../../../models/services/documentService\";\r\nimport { Dialog } from \"../../../../framework/Dialog/Dialog\";\r\nimport { DialogItemsNav } from \"../../../../framework/Dialog/DialogItemsNav\";\r\nimport { FormField } from \"../../../../framework/FormField\";\r\nimport { GridRow } from \"../../../../framework/Grid/GridRow\";\r\nimport { ModifyUserInfo } from \"../../../../framework/User/ModifyUserInfo\";\r\nimport { DialogButtons } from \"source/components/framework/Dialog/DialogButtons\";\r\nimport { IKeywordEditItem } from \"source/models/keyword/keywordEditItem\";\r\n\r\nexport interface IDocumentKeywordDialogProp {\r\n classes?: string;\r\n id: string;\r\n companyId: string;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onOk: () => void;\r\n onCancel: () => void;\r\n onRemove: (ids: string[]) => Promise;\r\n onRefreshList: () => Promise;\r\n}\r\n\r\nexport interface IDocumentKeywordDialogState {\r\n code: string;\r\n comment: string;\r\n\r\n item: IKeywordEditItem;\r\n rowId: string;\r\n}\r\n\r\nexport class DocumentKeywordDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IDocumentKeywordDialogProp) {\r\n super(props);\r\n this.state = {\r\n item: null,\r\n code: \"\",\r\n comment: \"\",\r\n rowId: \"\",\r\n };\r\n }\r\n\r\n loadData = async () => {\r\n const props = this.props;\r\n const result = await AppUtils.callService(() => documentService.getKeywordEdit(props.companyId, props.id), false);\r\n if (!result) return;\r\n const item = result.item;\r\n const state = {\r\n ...this.state,\r\n item,\r\n code: item.code,\r\n comment: item.comment,\r\n rowId: item.rowId\r\n };\r\n this.setState(state);\r\n const saveData = this.getSaveDataFromState(this.props, state);\r\n this.orgStateHash = saveData.hash;\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadData();\r\n }\r\n\r\n async componentDidUpdate(prevProps: IDocumentKeywordDialogProp, prevState: IDocumentKeywordDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if (prevProps.companyId === props.companyId && prevProps.id === props.id) return;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb()) return;\r\n props.onRefreshList();\r\n }\r\n this.loadData();\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"code\") {\r\n this.setState({ code: value });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n }\r\n };\r\n\r\n getSaveDataFromState = (props: IDocumentKeywordDialogProp, state: IDocumentKeywordDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.item.id);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"code\", state.code);\r\n result.append(\"comment\", state.comment);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.code) {\r\n AppUtils.showErrorMessage(Translations.NameMustBeDefined);\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n return !!(await AppUtils.callService(() => documentService.saveKeywordEdit(saveData.obj)));\r\n };\r\n\r\n handleSave = async () => {\r\n if (!await this.saveToDb()) return;\r\n this.props.onOk();\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.item.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveKeywordParameter, state.item.code), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await props.onRemove([state.item.id]);\r\n if (!result) return;\r\n props.onOk();\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut(this.getSaveDataFromState(props, this.state).hash, this.orgStateHash, this.saveToDb, props.onRefreshList);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.item) return null;\r\n const isNew = state.item.isNew();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!isNew &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { infiniteListPageSize } from \"../../../../models/common/webConsts\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport * as documentService from \"../../../../models/services/documentService\";\r\nimport { IListUsingComponentState, List } from \"../../../framework/List/List\";\r\nimport { SaveDataObj } from \"source/framework/saveData\";\r\nimport { DialogSettingsCard } from \"source/components/framework/Container/DialogSettingsCard\";\r\nimport { ActionContainer } from \"source/components/framework/ActionContainer\";\r\nimport { ListSearchFilter } from \"source/components/framework/List/ListSearchFilter\";\r\nimport { ListIconButtonsItem } from \"source/components/framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { IKeywordListItem } from \"source/models/keyword/keywordListItem\";\r\nimport { ListLinkValue } from \"source/components/framework/List/ListLinkValue\";\r\nimport { DocumentKeywordDialog } from \"./DocumentKeywordDialog\";\r\n\r\nexport interface IDocumentKeywordListProp {\r\n companyId: string;\r\n}\r\n\r\ninterface IDocumentKeywordListState extends IListUsingComponentState {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n pageSize: number;\r\n page: number;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n checkedIds: string[];\r\n}\r\n\r\nexport class DocumentKeywordList extends React.Component {\r\n constructor(props: IDocumentKeywordListProp) {\r\n super(props);\r\n this.state = {\r\n intialized: false,\r\n isLoading: false,\r\n page: 1,\r\n hasMore: true,\r\n filter: \"\",\r\n pageSize: infiniteListPageSize,\r\n sortColumn: \"code\",\r\n sortOrderIsAsc: true,\r\n items: [],\r\n selectedId: null,\r\n checkedIds: [],\r\n showEditDialog: false,\r\n editDialogId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false,\r\n detailsItem: null\r\n };\r\n }\r\n\r\n searchItems = async (pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean, moveNext: boolean = false, setEditDialogData: boolean = true) => {\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => documentService.getKeywordListItems(this.props.companyId, !refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1, filter, sortColumn, sortOrderIsAsc), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const state = this.state;\r\n const items = List.getListItems(state.items, state.selectedId, state.checkedIds, result.items, resetItems, refreshList);\r\n let selectedId = items.selectedId;\r\n let index = items.items.findIndex(i => i.id === selectedId);\r\n let selectedItem = index > -1 ? items.items[index] : null;\r\n if (moveNext && selectedItem && index < items.items.length - 1) {\r\n index = index + 1;\r\n selectedItem = items.items[index];\r\n selectedId = items.items[index].id;\r\n }\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n selectedId,\r\n checkedIds: items.checkedIds,\r\n editDialogId: setEditDialogData ? (moveNext && selectedItem ? selectedItem.id : \"\") : state.editDialogId,\r\n editDialogHasPrevious: setEditDialogData ? index > 0 : state.editDialogHasPrevious,\r\n editDialogHasNext: setEditDialogData ? (index < items.items.length - 1 || result.hasMore) : state.editDialogHasNext,\r\n });\r\n };\r\n\r\n refreshList = async (setEducationDialogData: boolean = true) => {\r\n const state = this.state;\r\n await this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, true, false, setEducationDialogData);\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: IDocumentKeywordListProp, prevState: IDocumentKeywordListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n if (companyId === prevCompanyId) return;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n handleAdd = () => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, Base.emptyGuid));\r\n };\r\n\r\n handleOpenLine = (id: string) => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, id));\r\n };\r\n\r\n handleEditDialogOk = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n this.refreshList();\r\n };\r\n\r\n handleEditDialogCancel = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n };\r\n\r\n getRemoveSaveData = (props: IDocumentKeywordListProp, ids: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"ids\", ids);\r\n return result;\r\n };\r\n\r\n remove = async (ids: string[]): Promise => {\r\n const props = this.props;\r\n if (ids.length < 1) return;\r\n const saveData = this.getRemoveSaveData(props, ids);\r\n // Call server\r\n const result = await AppUtils.callService(() => documentService.removeKeywords(saveData.obj));\r\n if (!result) return null;\r\n this.refreshList();\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n const selectedItems = state.items.filter(i => selectedIds.indexOf(i.id) > -1);\r\n if (selectedItems.length < 1) return;\r\n if (await AppUtils.showConfirmationDialog(selectedItems.length > 1\r\n ? Translations.DoYouReallyWantToRemoveSelectedKeywords\r\n : String.format(Translations.DoYouReallyWantToRemoveKeywordParameter, selectedItems[0].code), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n this.remove(selectedIds);\r\n }\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n this.setState(List.getEditDialogItemByIndexStateChange(this.state, index, () => this.searchItems(state.pageSize, state.page + 1, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false, true)));\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n }\r\n rightItems={\r\n \r\n }\r\n />\r\n }\r\n content={\r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 5,\r\n content: this.handleOpenLine(item.id)}>{item.code}\r\n },\r\n { size: 7, content: item.comment }\r\n ],\r\n id: item.id\r\n };\r\n })}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpenLine}\r\n />\r\n } />\r\n {(state.showEditDialog && !!state.editDialogId) &&\r\n this.refreshList(false)}\r\n onPrevious={() => List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","import { Box, Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../../../framework/saveData\";\r\nimport * as documentService from \"../../../../../models/services/documentService\";\r\nimport { Dialog } from \"../../../../framework/Dialog/Dialog\";\r\nimport { DialogItemsNav } from \"../../../../framework/Dialog/DialogItemsNav\";\r\nimport { FormField } from \"../../../../framework/FormField\";\r\nimport { GridRow } from \"../../../../framework/Grid/GridRow\";\r\nimport { ModifyUserInfo } from \"../../../../framework/User/ModifyUserInfo\";\r\nimport { DialogButtons } from \"source/components/framework/Dialog/DialogButtons\";\r\nimport { IFileFilterEditItem } from \"source/models/fileFilter/fileFilterEditItem\";\r\n\r\nexport interface IFileFilterDialogProp {\r\n classes?: string;\r\n id: string;\r\n companyId: string;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onOk: () => void;\r\n onCancel: () => void;\r\n onRemove: (ids: string[]) => Promise;\r\n onRefreshList: () => Promise;\r\n}\r\n\r\nexport interface IFileFilterDialogState {\r\n code: string;\r\n name: string;\r\n\r\n item: IFileFilterEditItem;\r\n rowId: string;\r\n}\r\n\r\nexport class FileFilterDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IFileFilterDialogProp) {\r\n super(props);\r\n this.state = {\r\n item: null,\r\n code: \"\",\r\n name: \"\",\r\n rowId: \"\",\r\n };\r\n }\r\n\r\n loadData = async () => {\r\n const props = this.props;\r\n const result = await AppUtils.callService(() => documentService.getFileFilterEdit(props.companyId, props.id), false);\r\n if (!result) return;\r\n const item = result.item;\r\n const state = {\r\n ...this.state,\r\n item,\r\n code: item.code,\r\n name: item.name,\r\n rowId: item.rowId\r\n };\r\n this.setState(state);\r\n const saveData = this.getSaveDataFromState(this.props, state);\r\n this.orgStateHash = saveData.hash;\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadData();\r\n }\r\n\r\n async componentDidUpdate(prevProps: IFileFilterDialogProp, prevState: IFileFilterDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if (prevProps.companyId === props.companyId && prevProps.id === props.id) return;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb()) return;\r\n props.onRefreshList();\r\n }\r\n this.loadData();\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"code\") {\r\n this.setState({ code: value });\r\n } else if (name === \"name\") {\r\n this.setState({ name: value });\r\n }\r\n };\r\n\r\n getSaveDataFromState = (props: IFileFilterDialogProp, state: IFileFilterDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.item.id);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"code\", state.code);\r\n result.append(\"name\", state.name);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.code) {\r\n AppUtils.showErrorMessage(Translations.FileFilterCodeMustBeDefined);\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n return !!(await AppUtils.callService(() => documentService.saveFileFilterEdit(saveData.obj)));\r\n };\r\n\r\n handleSave = async () => {\r\n if (!await this.saveToDb()) return;\r\n this.props.onOk();\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.item.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveFileFilterParameter, state.item.code), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await props.onRemove([state.item.id]);\r\n if (!result) return;\r\n props.onOk();\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut(this.getSaveDataFromState(props, this.state).hash, this.orgStateHash, this.saveToDb, props.onRefreshList);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.item) return null;\r\n const isNew = state.item.isNew();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!isNew &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { infiniteListPageSize } from \"../../../../models/common/webConsts\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport * as documentService from \"../../../../models/services/documentService\";\r\nimport { IListUsingComponentState, List } from \"../../../framework/List/List\";\r\nimport { SaveDataObj } from \"source/framework/saveData\";\r\nimport { DialogSettingsCard } from \"source/components/framework/Container/DialogSettingsCard\";\r\nimport { ActionContainer } from \"source/components/framework/ActionContainer\";\r\nimport { ListSearchFilter } from \"source/components/framework/List/ListSearchFilter\";\r\nimport { ListIconButtonsItem } from \"source/components/framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { ListLinkValue } from \"source/components/framework/List/ListLinkValue\";\r\nimport { IFileFilterListItem } from \"source/models/fileFilter/fileFilterListItem\";\r\nimport { FileFilterDialog } from \"./FileFilterDialog\";\r\n\r\nexport interface IFileFilterListProp {\r\n companyId: string;\r\n}\r\n\r\ninterface IFileFilterListState extends IListUsingComponentState {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n pageSize: number;\r\n page: number;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n checkedIds: string[];\r\n}\r\n\r\nexport class FileFilterList extends React.Component {\r\n constructor(props: IFileFilterListProp) {\r\n super(props);\r\n this.state = {\r\n intialized: false,\r\n isLoading: false,\r\n page: 1,\r\n hasMore: true,\r\n filter: \"\",\r\n pageSize: infiniteListPageSize,\r\n sortColumn: \"code\",\r\n sortOrderIsAsc: true,\r\n items: [],\r\n selectedId: null,\r\n checkedIds: [],\r\n showEditDialog: false,\r\n editDialogId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false,\r\n detailsItem: null\r\n };\r\n }\r\n\r\n searchItems = async (pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean, moveNext: boolean = false, setEditDialogData: boolean = true) => {\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => documentService.getFileFilterListItems(this.props.companyId, !refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1, filter, sortColumn, sortOrderIsAsc), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const state = this.state;\r\n const items = List.getListItems(state.items, state.selectedId, state.checkedIds, result.items, resetItems, refreshList);\r\n let selectedId = items.selectedId;\r\n let index = items.items.findIndex(i => i.id === selectedId);\r\n let selectedItem = index > -1 ? items.items[index] : null;\r\n if (moveNext && selectedItem && index < items.items.length - 1) {\r\n index = index + 1;\r\n selectedItem = items.items[index];\r\n selectedId = items.items[index].id;\r\n }\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n selectedId,\r\n checkedIds: items.checkedIds,\r\n editDialogId: setEditDialogData ? (moveNext && selectedItem ? selectedItem.id : \"\") : state.editDialogId,\r\n editDialogHasPrevious: setEditDialogData ? index > 0 : state.editDialogHasPrevious,\r\n editDialogHasNext: setEditDialogData ? (index < items.items.length - 1 || result.hasMore) : state.editDialogHasNext,\r\n });\r\n };\r\n\r\n refreshList = async (setEducationDialogData: boolean = true) => {\r\n const state = this.state;\r\n await this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, true, false, setEducationDialogData);\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: IFileFilterListProp, prevState: IFileFilterListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n if (companyId === prevCompanyId) return;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n handleAdd = () => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, Base.emptyGuid));\r\n };\r\n\r\n handleOpenLine = (id: string) => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, id));\r\n };\r\n\r\n handleEditDialogOk = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n this.refreshList();\r\n };\r\n\r\n handleEditDialogCancel = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n };\r\n\r\n getRemoveSaveData = (props: IFileFilterListProp, ids: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"ids\", ids);\r\n return result;\r\n };\r\n\r\n remove = async (ids: string[]): Promise => {\r\n const props = this.props;\r\n if (ids.length < 1) return;\r\n const saveData = this.getRemoveSaveData(props, ids);\r\n // Call server\r\n const result = await AppUtils.callService(() => documentService.removeFileFilters(saveData.obj));\r\n if (!result) return null;\r\n this.refreshList();\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n const selectedItems = state.items.filter(i => selectedIds.indexOf(i.id) > -1);\r\n if (selectedItems.length < 1) return;\r\n if (await AppUtils.showConfirmationDialog(selectedItems.length > 1\r\n ? Translations.DoYouReallyWantToRemoveSelectedFileFilters\r\n : String.format(Translations.DoYouReallyWantToRemoveFileFilterParameter, selectedItems[0].code), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n this.remove(selectedIds);\r\n }\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n this.setState(List.getEditDialogItemByIndexStateChange(state, index, () => this.searchItems(state.pageSize, state.page + 1, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false, true)));\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n }\r\n rightItems={\r\n \r\n }\r\n />\r\n }\r\n content={\r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 5,\r\n content: this.handleOpenLine(item.id)}>{item.code}\r\n },\r\n { size: 7, content: item.name }\r\n ],\r\n id: item.id\r\n };\r\n })}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpenLine}\r\n />\r\n } />\r\n {(state.showEditDialog && !!state.editDialogId) &&\r\n this.refreshList(false)}\r\n onPrevious={() => List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","import React from \"react\";\r\nimport { Alert, Grid, TextField } from \"@mui/material\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { FormField } from \"source/components/framework/FormField\";\r\nimport { ISessionState } from \"../../../../models/session/sessionState\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport * as documentService from \"../../../../models/services/documentService\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { IdTitleDropdown } from \"ui/Scripts/source/components/framework/Dropdown/IdTitleDropdown\";\r\nimport { SaveDataObj } from \"source/framework/saveData\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { DocumentSettingsSave } from \"source/models/documentSettings/documentSettingsSave\";\r\nimport { DialogSettingsCard } from \"source/components/framework/Container/DialogSettingsCard\";\r\n\r\ninterface IDocumentOtherSettingsProps {\r\n sessionState: ISessionState;\r\n companyId: string;\r\n}\r\n\r\ninterface IDocumentOtherSettingsState {\r\n initialized: boolean;\r\n ignoreFolderPatterns: string;\r\n ignoreFilePatterns: string;\r\n documentVersionAutoSaveHistorySize: string;\r\n documentVersionPublishHistorySize: string;\r\n}\r\n\r\nexport interface IDocumentOtherSettingsCancelResult {\r\n canChangePage: boolean;\r\n refreshFolders: boolean;\r\n}\r\n\r\nexport class DocumentOtherSettings extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IDocumentOtherSettingsProps) {\r\n super(props);\r\n this.state = {\r\n initialized: false,\r\n ignoreFolderPatterns: \"\",\r\n ignoreFilePatterns: \"\",\r\n documentVersionAutoSaveHistorySize: \"0\",\r\n documentVersionPublishHistorySize: \"1\",\r\n };\r\n }\r\n\r\n loadData = async () => {\r\n const result = await AppUtils.callService(() => documentService.getDocumentSettings(this.props.companyId), false);\r\n if (!result) return;\r\n const newState = {\r\n initialized: true,\r\n ignoreFolderPatterns: result.ignoreFolderPatterns,\r\n ignoreFilePatterns: result.ignoreFilePatterns,\r\n documentVersionAutoSaveHistorySize: result.documentVersionAutoSaveHistorySize.toString(10),\r\n documentVersionPublishHistorySize: result.documentVersionPublishHistorySize.toString(10)\r\n };\r\n this.setState(newState);\r\n this.orgStateHash = this.getSaveDataFromState(newState).hash;\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadData();\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"ignoreFolderPatterns\") {\r\n this.setState({ ignoreFolderPatterns: value });\r\n } else if (name === \"ignoreFilePatterns\") {\r\n this.setState({ ignoreFilePatterns: value });\r\n }\r\n };\r\n\r\n getSaveDataFromState = (aState: IDocumentOtherSettingsState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"companyId\", this.props.companyId);\r\n result.append(\"ignoreFolderPatterns\", aState.ignoreFolderPatterns);\r\n result.append(\"ignoreFilePatterns\", aState.ignoreFilePatterns);\r\n result.append(\"documentVersionAutoSaveHistorySize\", aState.documentVersionAutoSaveHistorySize.toInteger());\r\n result.append(\"documentVersionPublishHistorySize\", aState.documentVersionPublishHistorySize.toInteger());\r\n return result;\r\n };\r\n\r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n const saveData = this.getSaveDataFromState(this.state);\r\n //Call server\r\n const result = await AppUtils.callService(() => documentService.saveDocumentSettings(saveData.obj));\r\n if (!result) return null;\r\n this.orgStateHash = this.getSaveDataFromState(this.state).hash;\r\n return result;\r\n };\r\n\r\n handleSave = async (): Promise => {\r\n const result = await this.saveToDb();\r\n if (!result) return false;\r\n return result.refreshFolders;\r\n };\r\n\r\n handleCancel = async (): Promise => {\r\n const result: IDocumentOtherSettingsCancelResult = {\r\n canChangePage: true,\r\n refreshFolders: false\r\n };\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(this.state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) {\r\n result.canChangePage = false;\r\n return result;\r\n }\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n const saveResult = await this.saveToDb();\r\n result.canChangePage = !!saveResult;\r\n result.refreshFolders = saveResult?.refreshFolders ?? false;\r\n return result;\r\n }\r\n return result;\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.initialized) return null;\r\n return (\r\n \r\n {props.sessionState.isSuperAdmin &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n { return { id: i.toString(10), title: i.toString(10) }; }))}\r\n onChange={(value) => this.setState({ documentVersionAutoSaveHistorySize: value })}\r\n />\r\n \r\n \r\n \r\n \r\n { return { id: i.toString(10), title: i.toString(10) }; })}\r\n onChange={(value) => this.setState({ documentVersionPublishHistorySize: value })}\r\n />\r\n \r\n \r\n \r\n {Translations.DecreasingVersionHistorySizeRemovesCurrentlySavedVersionHistoryRecords}\r\n
\r\n }\r\n />\r\n );\r\n }\r\n};\r\n","// MessageSettingsDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Grid } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { IPageNavMenuItem, PageNavMenuItems } from \"../../framework/PageNav/PageNavMenuItems\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { DocumentKeywordList } from \"./DocumentKeywordList\";\r\nimport { DocumentTemplateList } from \"./DocumentTemplateList\";\r\nimport { FileFilterList } from \"./FileFilterList\";\r\nimport { DocumentOtherSettings, IDocumentOtherSettingsCancelResult } from \"./DocumentOtherSettings\";\r\nimport { DialogButtons } from \"source/components/framework/Dialog/DialogButtons\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum DocumentSettingsDialogMenuItem {\r\n Keywords = \"1\",\r\n FileFilters = \"2\",\r\n DocumentTemplates = \"3\",\r\n SharedDocumentTemplates = \"4\",\r\n OtherSettings = \"5\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n//DocumentSettingsDialog\r\nexport interface IDocumentSettingsDialogProp {\r\n sessionState: ISessionState;\r\n companyId: string;\r\n classes?: string;\r\n settingsActions: IPageNavMenuItem[];\r\n onClose: () => void;\r\n}\r\n\r\nexport interface IDocumentSettingsDialogState {\r\n activeMenuItem: DocumentSettingsDialogMenuItem;\r\n}\r\n\r\nexport class DocumentSettingsDialog extends React.Component {\r\n otherSettingsRef = React.createRef();\r\n\r\n constructor(props: IDocumentSettingsDialogProp) {\r\n super(props);\r\n this.state = {\r\n activeMenuItem: DocumentSettingsDialogMenuItem.Keywords,\r\n };\r\n }\r\n\r\n // #region Other Settings\r\n onOtherSettingsCancel = async (): Promise => {\r\n return await this.otherSettingsRef.current.handleCancel();\r\n };\r\n\r\n handleOtherSettingsSave = async () => {\r\n await this.otherSettingsRef.current.handleSave();\r\n };\r\n // #endregion Other Settings\r\n\r\n handleToggleActiveMenuItem = async (menuItem: DocumentSettingsDialogMenuItem) => {\r\n const state = this.state;\r\n if (state.activeMenuItem === menuItem) return;\r\n //Check current tab cancel\r\n if (state.activeMenuItem === DocumentSettingsDialogMenuItem.OtherSettings) {\r\n const result = await this.onOtherSettingsCancel();\r\n if (!result.canChangePage) return;\r\n }\r\n //Set new tab active\r\n this.setState({\r\n activeMenuItem: menuItem\r\n });\r\n };\r\n\r\n handleCancel = async (closeDialog: boolean) => {\r\n if (!closeDialog) return;\r\n this.props.onClose();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n this.handleCancel(true)}\r\n body={\r\n \r\n \r\n \r\n \r\n \r\n {(state.activeMenuItem === DocumentSettingsDialogMenuItem.Keywords) && (\r\n \r\n )}\r\n {state.activeMenuItem === DocumentSettingsDialogMenuItem.DocumentTemplates && (\r\n \r\n )}\r\n {state.activeMenuItem === DocumentSettingsDialogMenuItem.SharedDocumentTemplates &&\r\n \r\n }\r\n {state.activeMenuItem === DocumentSettingsDialogMenuItem.FileFilters &&\r\n \r\n }\r\n {state.activeMenuItem === DocumentSettingsDialogMenuItem.OtherSettings &&\r\n \r\n }\r\n \r\n \r\n }\r\n buttons={\r\n state.activeMenuItem !== DocumentSettingsDialogMenuItem.OtherSettings\r\n ? [{ title: Translations.Close, variant: \"outlined\", onClick: () => this.handleCancel(true) }]\r\n : null\r\n }\r\n actions={\r\n state.activeMenuItem === DocumentSettingsDialogMenuItem.OtherSettings\r\n ? \r\n this.handleCancel(true)}\r\n onSave={this.handleOtherSettingsSave}\r\n />\r\n \r\n : null\r\n }\r\n />\r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IIdTitle, IdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { ApplicationPermissionType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IListFilterItem, ListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { ISavedListFilter } from \"../../../models/common/savedListFilter\";\r\nimport { ITypedOption } from \"../../../models/common/typedOption\";\r\nimport { IReportItem } from \"../../../models/report/reportItem\";\r\nimport * as documentService from \"../../../models/services/documentService\";\r\nimport { recordLockManager } from \"../../../models/services/recordLockService\";\r\nimport * as userService from \"../../../models/services/userService\";\r\nimport { IAppSessionState } from \"../../../models/store/storeTypes\";\r\nimport { HeaderMenuItem, NavigationMenu } from \"../../app/NavigationMenu\";\r\nimport { ListFilterSaveDialog } from \"../../framework/Filters/ListFilterSaveDialog\";\r\nimport { PageContainer } from \"../../framework/Page/PageContainer\";\r\nimport { PageContent } from \"../../framework/Page/PageContent\";\r\nimport { IPageNavMenuItem } from \"../../framework/PageNav/PageNavMenuItems\";\r\n// import { PageListAndReportsContainer } from \"../../framework/Page/PageListAndReportsContainer\";\r\nimport { PageTopBar } from \"../../framework/Page/PageTopBar\";\r\n// import { FilterTabs } from \"../../framework/PageNavMenuItem/FilterTabs\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { userParameterCodeShowDocumentPreview } from \"source/models/common/webConsts\";\r\nimport { IDocumentPage } from \"source/models/document/documentPage\";\r\nimport { UserMenu } from \"../../app/UserMenu\";\r\nimport { DocumentFilterDrawer } from \"../DocumentFilterDrawer\";\r\nimport { DocumentFolders } from \"../DocumentFolders\";\r\nimport { DocumentPageDashboardChart, IDocumentPageFilterState } from \"../DocumentPageDashboardChart\";\r\nimport { DocumentSettingsDialog, DocumentSettingsDialogMenuItem } from \"../DocumentSettingsDialog\";\r\nimport { abortManager } from \"source/models/services/tokenService\";\r\n\r\n// DocumentPage\r\nexport interface IDocumentPageOwnProps {\r\n}\r\n\r\nexport interface IDocumentPageStateProps {\r\n appState: IAppSessionState;\r\n dataId: number;\r\n documentPage: IDocumentPage;\r\n}\r\n\r\nexport interface IDocumentPageDispatchProps {\r\n onGetDocumentPage: () => void;\r\n onLogout: () => void;\r\n onSetCulture: (culture: string) => void;\r\n onSaveUserParameters: (parameters: ITypedOption[]) => void;\r\n onRefreshSessionState: () => void;\r\n}\r\n\r\ntype DocumentPageProp = IDocumentPageOwnProps & IDocumentPageStateProps & IDocumentPageDispatchProps;\r\n\r\ninterface IDocumentPageState extends IDocumentPageFilterState {\r\n initialized: boolean;\r\n listDataPreloaded: boolean;\r\n keywords: IIdTitle[];\r\n dynamicTimeFilters: IIdTitle[];\r\n documentEndDateDynamicTimeFilters: IIdTitle[];\r\n activeCompanyId: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n settingsActions: IPageNavMenuItem[];\r\n canEditProperties: boolean;\r\n // Filters\r\n listFilterIsSet: boolean;\r\n showListFilter: boolean;\r\n listFilterFilter: IListFilterItem;\r\n filters: IListFilterItem[];\r\n savedFilters: IListFilterItem[];\r\n activeFilterId: string;\r\n activeSavedFilterId: string;\r\n showListFilterSaveDialog: boolean;\r\n listFilterSaveDialogFilter: IListFilterItem;\r\n listFilterSaveDialogGeneralFilter: any;\r\n listFilterSaveDialogReservedNames: string[];\r\n listFilterSaveDialogOnGetGeneralFilter: () => any;\r\n // Permissions\r\n dataId: number;\r\n // Settings\r\n showSettingsDialog: boolean;\r\n // Preview\r\n editMode: boolean;\r\n showDocumentPreview: boolean;\r\n showPublishedVersionOnDocumentPreview: boolean;\r\n}\r\n\r\nexport class DocumentPage extends React.Component {\r\n getDynamicTimeFilters = (): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(\"0\", \"'\" + Translations.SpecifedTimeFrame + \"'\"));\r\n result.push(IdTitle.createIdTitle(\"1\", Translations.Last7Days));\r\n result.push(IdTitle.createIdTitle(\"2\", Translations.Last30Days));\r\n result.push(IdTitle.createIdTitle(\"3\", Translations.LastYear));\r\n result.push(IdTitle.createIdTitle(\"4\", Translations.PreviousCalendarWeek));\r\n result.push(IdTitle.createIdTitle(\"5\", Translations.PreviousCalendarMonth));\r\n result.push(IdTitle.createIdTitle(\"6\", Translations.PreviousCalendarYear));\r\n return result;\r\n };\r\n\r\n getDocumentEndDateDynamicTimeFilters = (): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(\"0\", \"'\" + Translations.SpecifedTimeFrame + \"'\"));\r\n result.push(IdTitle.createIdTitle(\"1\", Translations.Expired));\r\n result.push(IdTitle.createIdTitle(\"2\", String.format(Translations.ExpiresInParameterDays, 7)));\r\n result.push(IdTitle.createIdTitle(\"3\", String.format(Translations.ExpiresInParameterDays, 30)));\r\n result.push(IdTitle.createIdTitle(\"4\", String.format(Translations.ExpiresInParameterDays, 60)));\r\n result.push(IdTitle.createIdTitle(\"5\", String.format(Translations.ExpiresInParameterMonths, 3)));\r\n result.push(IdTitle.createIdTitle(\"6\", String.format(Translations.ExpiresInParameterMonths, 6)));\r\n result.push(IdTitle.createIdTitle(\"7\", Translations.ExpiresInYear));\r\n return result;\r\n };\r\n\r\n getHtlmlReportItems = (): IReportItem[] => {\r\n const result: IReportItem[] = [];\r\n return result;\r\n };\r\n \r\n getFilters = (): IListFilterItem[] => {\r\n const result: IListFilterItem[] = [];\r\n result.push(ListFilterItem.createListFilterItem(Translations.Documents, Translations.Documents,\r\n DocumentPageDashboardChart.getGeneralFilterFromState(null), \"name\", true, 0));\r\n ListFilterItem.sortListFilterItems(result);\r\n return result;\r\n };\r\n\r\n getListFilterIsSet = (state: IDocumentPageState): boolean => {\r\n return DocumentFilterDrawer.filterIsSet(state, state);\r\n };\r\n\r\n // getReportFilterIsSet = (state: IMessagePageState): boolean => {\r\n // return MessageReportFilterPanel.filterIsSet(state, state);\r\n // };\r\n\r\n getSettingsActions = (canEditProperties: boolean): IPageNavMenuItem[] => {\r\n const result: IPageNavMenuItem[] = [];\r\n const props = this.props;\r\n const sessionState = props.appState.state;\r\n if (canEditProperties) {\r\n result.push({ id: DocumentSettingsDialogMenuItem.Keywords, title: Translations.Keywords });\r\n result.push({ id: DocumentSettingsDialogMenuItem.DocumentTemplates, title: Translations.DocumentTemplates });\r\n }\r\n if (sessionState.isSuperAdmin) {\r\n result.push({ id: DocumentSettingsDialogMenuItem.SharedDocumentTemplates, title: Translations.SharedDocumentTemplates });\r\n }\r\n if (canEditProperties) {\r\n result.push({ id: DocumentSettingsDialogMenuItem.FileFilters, title: Translations.FileFilters });\r\n }\r\n if (canEditProperties) {\r\n result.push({ id: DocumentSettingsDialogMenuItem.OtherSettings, title: sessionState.isSuperAdmin ? Translations.OtherSettings : Translations.VersionHistory });\r\n }\r\n return result;\r\n };\r\n\r\n constructor(props: DocumentPageProp) {\r\n super(props);\r\n abortManager.abortAll(); //Abort all abortable calls regardless of module\r\n const sessionState = props.appState.state;\r\n const filters = this.getFilters();\r\n const filterProps = ListFilterItem.getFilterProps(filters[0], \"name\", true, DocumentPageDashboardChart.getStateFilterPropsFromGeneralFilter);\r\n const dynamicTimeFilters = this.getDynamicTimeFilters();\r\n const documentEndDateDynamicTimeFilters = this.getDocumentEndDateDynamicTimeFilters();\r\n const canEditProperties = props.documentPage?.canEditProperties;\r\n const state = {\r\n ...filterProps,\r\n initialized: false,\r\n activeCompanyId: sessionState.companyId,\r\n listDataPreloaded: true,\r\n keywords: props.documentPage?.keywords ?? [],\r\n dynamicTimeFilters,\r\n documentEndDateDynamicTimeFilters,\r\n selectedStartDate: 0,\r\n selectedEndDate: 0,\r\n selectedDynamicTimeFilterId: dynamicTimeFilters[0].id,\r\n selectedDocumentEndDateStartDate: 0,\r\n selectedDocumentEndDateEndDate: 0,\r\n selectedDynamicDocumentEndDateFilterId: documentEndDateDynamicTimeFilters[0].id,\r\n canEditProperties,\r\n settingsActions: this.getSettingsActions(canEditProperties),\r\n // Folders\r\n folderNode: null,\r\n // Filters\r\n listFilterIsSet: false,\r\n activeFilterId: filters[0].id,\r\n activeSavedFilterId: \"\",\r\n filters,\r\n savedFilters: ListFilterItem.getListFilterItems(props.documentPage?.companyFilters, props.documentPage?.userFilters),\r\n showListFilter: false,\r\n listFilterFilter: null,\r\n showListFilterSaveDialog: false,\r\n listFilterSaveDialogFilter: null,\r\n listFilterSaveDialogGeneralFilter: null,\r\n listFilterSaveDialogReservedNames: [],\r\n listFilterSaveDialogOnGetGeneralFilter: null,\r\n // Permissions\r\n dataId: props.dataId,\r\n // Settings\r\n showSettingsDialog: false,\r\n // Preview\r\n editMode: false,\r\n showDocumentPreview: false,\r\n showPublishedVersionOnDocumentPreview: true\r\n };\r\n this.state = {\r\n ...state,\r\n //dashBoardPanels: SavedChartPanel.getDashBoardPanels(props.messagePage?.panels, props.messagePage?.chartPanels, state.chartItems, ApplicationPermissionType.Message),\r\n listFilterIsSet: this.getListFilterIsSet(state),\r\n //reportFilterIsSet: this.getReportFilterIsSet(state)\r\n };\r\n }\r\n\r\n // getReports = async (companyId: string) => {\r\n // const state = this.state;\r\n // const newState = await ReportItems.getReportsState(companyId, state.activeReportId, this.getHtlmlReportItems(), eventService.getEventPageReportItems,\r\n // () => {\r\n // if (!this._isMounted) return;\r\n // this.setState({ loadingReports: true });\r\n // },\r\n // () => {\r\n // if (!this._isMounted) return;\r\n // this.setState({ loadingReports: false });\r\n // });\r\n // if (!this._isMounted || !newState) return;\r\n // const props = this.props;\r\n // this.setState({\r\n // ...newState,\r\n // dashBoardPanels: SavedChartPanel.getDashBoardPanels(props.messagePage?.panels, props.messagePage?.chartPanels, newState.chartItems, ApplicationPermissionType.Message)\r\n // });\r\n // };\r\n\r\n componentDidMount(): void {\r\n const sessionState = this.props.appState.state;\r\n recordLockManager.unlockAll(sessionState?.companyId, sessionState?.code);\r\n this.props.onGetDocumentPage();\r\n // this.getReports(sessionState.companyId);\r\n }\r\n\r\n componentDidUpdate(prevProps: DocumentPageProp, prevState: IDocumentPageState): void {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n const equalCompanyIds = Base.equalStrArrays(prevProps.documentPage?.companies.map(i => i.id) ?? [], props.documentPage?.companies.map(i => i.id) ?? []);\r\n // const prevCompanyId = prevProps.documentPage && prevProps.documentPage.companies.length > 0 ? prevProps.documentPage.companies[0].id : sessionState.companyId;\r\n // const companyId = props.documentPage && props.documentPage.companies.length > 0 ? props.documentPage.companies[0].id : sessionState.companyId;\r\n const prevCompanyId = prevProps.documentPage ? prevProps.documentPage.companyId : sessionState.companyId;\r\n const companyId = props.documentPage ? props.documentPage.companyId : sessionState.companyId;\r\n const prevCanEditDocuments = prevProps.documentPage?.canEditDocuments ?? false;\r\n const canEditDocuments = props.documentPage?.canEditDocuments ?? false;\r\n const prevCanEditProperties = prevProps.documentPage?.canEditProperties ?? false;\r\n const canEditProperties = props.documentPage?.canEditProperties ?? false;\r\n const prevCanEditRootFolderProperties = prevProps.documentPage?.canEditRootFolderProperties ?? false;\r\n const canEditRootFolderProperties = props.documentPage?.canEditRootFolderProperties ?? false;\r\n const keywords = props.documentPage?.keywords ?? [];\r\n const equalKeywords = IdTitle.equal(prevProps.documentPage?.keywords ?? [], keywords);\r\n if (prevProps.dataId === props.dataId && prevCompanyId === companyId && prevCanEditDocuments === canEditDocuments &&\r\n prevCanEditProperties === canEditProperties && prevCanEditRootFolderProperties === canEditRootFolderProperties &&\r\n equalCompanyIds && equalKeywords) return;\r\n const savedFilters = ListFilterItem.getListFilterItems(props.documentPage?.companyFilters, props.documentPage?.userFilters);\r\n const selectedKeywordIds = equalKeywords ? state.selectedKeywordIds : [];\r\n const activeSavedFilterId = savedFilters.find(i => i.id === state.activeSavedFilterId)\r\n ? state.activeSavedFilterId\r\n : \"\";\r\n const stateChange = {\r\n dataId: props.dataId,\r\n initialized: !!props.documentPage,\r\n //dashBoardPanels: SavedChartPanel.getDashBoardPanels(props.documentPage?.panels, props.documentPage?.chartPanels, state.chartItems, ApplicationPermissionType.Document),\r\n //activeViewTypeId: companyId !== sessionState.companyId ? MessagePageViewTypeId.Records : state.activeViewTypeId,\r\n activeCompanyId: companyId,\r\n keywords,\r\n selectedKeywordIds,\r\n savedFilters,\r\n activeSavedFilterId,\r\n canEditProperties,\r\n settingsActions: this.getSettingsActions(canEditProperties),\r\n showDocumentPreview: props.documentPage?.showDocumentPreview ?? state.showDocumentPreview\r\n };\r\n const newState = { ...state, ...stateChange };\r\n this.setState({\r\n ...stateChange,\r\n listFilterIsSet: this.getListFilterIsSet(newState),\r\n //reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n });\r\n }\r\n\r\n // #region Saved Filter\r\n getFilterPropsWithState = (listItemFilter: IListFilterItem) => {\r\n const state = this.state;\r\n let result = {\r\n selectedKeywordIds: state.selectedKeywordIds,\r\n selectedKeywordOperatorId: state.selectedKeywordOperatorId,\r\n selectedDocumentApprovalId: state.selectedDocumentApprovalId,\r\n selectedDocumentContentSearchId: state.selectedDocumentContentSearchId,\r\n selectedMaxResultsCount: state.selectedMaxResultsCount,\r\n selectedStartDate: state.selectedStartDate,\r\n selectedEndDate: state.selectedEndDate,\r\n selectedDynamicTimeFilterId: state.selectedDynamicTimeFilterId,\r\n selectedDocumentEndDateStartDate: state.selectedDocumentEndDateStartDate,\r\n selectedDocumentEndDateEndDate: state.selectedDocumentEndDateEndDate,\r\n selectedDynamicDocumentEndDateFilterId: state.selectedDynamicDocumentEndDateFilterId,\r\n sortColumn: state.sortColumn,\r\n sortOrderIsAsc: state.sortOrderIsAsc\r\n };\r\n if (listItemFilter) {\r\n result = ListFilterItem.getFilterProps(listItemFilter, result.sortColumn, result.sortOrderIsAsc, DocumentPageDashboardChart.getStateFilterPropsFromGeneralFilter);\r\n }\r\n return result;\r\n };\r\n\r\n handleChangeActiveCompanyId = async (companyId: string) => {\r\n if (this.state.activeCompanyId === companyId) return;\r\n await this.handleRefreshPageData(companyId);\r\n };\r\n\r\n getStateChangeAfterChangeActiveFilter = (activeFilterId: string): any => {\r\n const state = this.state;\r\n const filter = state.filters.find(i => i.id === activeFilterId);\r\n if (!filter) return {};\r\n const filterProps = this.getFilterPropsWithState(filter);\r\n const activeSavedFilterId = \"\";\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId };\r\n return {\r\n ...filterProps,\r\n activeFilterId,\r\n activeSavedFilterId: \"\",\r\n listFilterIsSet: this.getListFilterIsSet(newState),\r\n //reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n };\r\n };\r\n\r\n handleChangeActiveFilter = (activeFilterId: string) => {\r\n this.setState(this.getStateChangeAfterChangeActiveFilter(activeFilterId));\r\n };\r\n\r\n getStateChangeAfterChangeActiveSavedFilter = (activeSavedFilterId: string): any => {\r\n const state = this.state;\r\n const savedFilter = state.savedFilters.find(i => i.id === activeSavedFilterId);\r\n if (!savedFilter) return {};\r\n const filterProps = this.getFilterPropsWithState(savedFilter);\r\n const activeFilterId = \"\";\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId };\r\n return {\r\n ...filterProps,\r\n activeFilterId,\r\n activeSavedFilterId,\r\n listFilterIsSet: this.getListFilterIsSet(newState),\r\n //reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n };\r\n };\r\n\r\n handleChangeActiveSavedFilter = (activeSavedFilterId: string) => {\r\n this.setState(this.getStateChangeAfterChangeActiveSavedFilter(activeSavedFilterId));\r\n };\r\n\r\n handleRemoveSavedFilter = async (savedFilterId: string) => {\r\n const state = this.state;\r\n const savedFilter = state.savedFilters.find(i => i.id === savedFilterId);\r\n if (!savedFilter) return;\r\n const result = await ListFilterSaveDialog.removeListFilterFromDb(state.savedFilters, state.activeCompanyId, savedFilterId, savedFilter.isShared, ApplicationPermissionType.Document);\r\n if (!result) return;\r\n const savedFilters = state.savedFilters.filter(i => i.id !== savedFilterId);\r\n let activeFilterId = \"\";\r\n let activeSavedFilterId = \"\";\r\n let newfilter: IListFilterItem = null;\r\n if (savedFilters.length > 0) {\r\n newfilter = savedFilters[0];\r\n activeSavedFilterId = newfilter.id;\r\n } else if (state.filters.length > 0) {\r\n newfilter = state.filters[0];\r\n activeFilterId = newfilter.id;\r\n }\r\n const filterProps = this.getFilterPropsWithState(newfilter);\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId, savedFilters };\r\n this.setState({\r\n ...filterProps,\r\n showListFilter: false,\r\n activeFilterId,\r\n activeSavedFilterId,\r\n savedFilters,\r\n listFilterIsSet: this.getListFilterIsSet(newState),\r\n //reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n });\r\n };\r\n\r\n handleFilterSortData = (sortColumn: string, sortOrderIsAsc: boolean) => {\r\n this.setState({\r\n sortColumn,\r\n sortOrderIsAsc,\r\n });\r\n };\r\n\r\n updateFiltersAfterSave = (orgFilterId: string, savedListFilter: ISavedListFilter, isShared: boolean) => {\r\n if (!savedListFilter) return;\r\n const state = this.state;\r\n const savedFilters = state.savedFilters.filter(i => i.id !== orgFilterId || i.isShared !== isShared);\r\n const filter = ListFilterItem.createListFilterItemFromSavedListFilter(savedListFilter, isShared);\r\n savedFilters.push(filter);\r\n ListFilterItem.sortListFilterItems(savedFilters);\r\n this.setState({\r\n showListFilterSaveDialog: false,\r\n savedFilters,\r\n activeFilterId: \"\",\r\n activeSavedFilterId: savedListFilter.id,\r\n listFilterFilter: filter\r\n });\r\n };\r\n\r\n getActiveFilter = (): IListFilterItem => {\r\n const state = this.state;\r\n return state.activeFilterId\r\n ? state.filters.find(i => i.id === state.activeFilterId)\r\n : state.savedFilters.find(i => i.id === state.activeSavedFilterId);\r\n };\r\n\r\n handleSaveListFilter = async (saveAs: boolean, onGetGeneralFilter: () => any) => {\r\n const state = this.state;\r\n const filter = this.getActiveFilter();\r\n if (!filter) return;\r\n if (!saveAs) {\r\n const savedListFilter = await ListFilterSaveDialog.saveListFilterToDb(filter, DocumentPageDashboardChart.getGeneralFilterFromState(state), state.sortColumn, state.sortOrderIsAsc, state.activeCompanyId, ApplicationPermissionType.Document);\r\n this.updateFiltersAfterSave(filter.id, savedListFilter, filter.isShared);\r\n } else {\r\n this.setState({\r\n showListFilterSaveDialog: true,\r\n listFilterSaveDialogFilter: filter,\r\n listFilterSaveDialogReservedNames: state.savedFilters.map(i => i.id).concat(state.filters.map(i => i.title)),\r\n listFilterSaveDialogGeneralFilter: DocumentPageDashboardChart.getGeneralFilterFromState(state),\r\n listFilterSaveDialogOnGetGeneralFilter: onGetGeneralFilter\r\n });\r\n }\r\n };\r\n\r\n handleSaveListFilterDialogOk = (savedListFilter: ISavedListFilter, isShared: boolean) => {\r\n this.updateFiltersAfterSave(\"\", savedListFilter, isShared);\r\n };\r\n\r\n handleSaveListFilterDialogCancel = () => {\r\n this.setState({\r\n showListFilterSaveDialog: false\r\n });\r\n };\r\n // #endregion Saved Filter\r\n\r\n // #region Record Filter\r\n handleShowListFilter = () => {\r\n const filter = this.getActiveFilter();\r\n if (!filter) return;\r\n this.setState({\r\n showListFilter: true, //this.state.activeViewTypeId !== DocumentPageViewTypeId.Reports,\r\n listFilterFilter: filter\r\n });\r\n };\r\n\r\n handleListFilterPanelOk = (closeDialog: boolean, newFilterState: IDocumentPageFilterState): any => {\r\n const newState = {\r\n ...this.state,\r\n ...newFilterState\r\n };\r\n this.setState({\r\n showListFilter: !closeDialog,\r\n ...newFilterState,\r\n //dataId: this.state.dataId + 1,\r\n listFilterIsSet: this.getListFilterIsSet(newState),\r\n //reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n });\r\n return DocumentPageDashboardChart.getGeneralFilterFromState(newState);\r\n };\r\n \r\n handleFilterPanelCancel = () => {\r\n this.setState({ showListFilter: false });\r\n };\r\n // #endregion Record Filter\r\n\r\n // #region Units\r\n handleRefreshPageData = async (companyId: string) => {\r\n const pageData = await documentService.getDocumentPageData(companyId);\r\n if (!pageData) return;\r\n const state = this.state;\r\n //Keywords\r\n const keywords = pageData.keywords ?? [];\r\n const selectedKeywordIds = Base.keepAvailableSelectedIds(keywords, state.selectedKeywordIds);\r\n const stateChange = {\r\n activeCompanyId: companyId,\r\n dataId: state.dataId + 1,\r\n keywords,\r\n selectedKeywordIds,\r\n canEditProperties: pageData.canEditProperties,\r\n settingsActions: this.getSettingsActions(pageData.canEditProperties)\r\n };\r\n const newState = { ...state, ...stateChange };\r\n this.setState({\r\n ...stateChange,\r\n listFilterIsSet: this.getListFilterIsSet(newState)\r\n //reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n });\r\n };\r\n // #endregion Units\r\n\r\n handleShowDetailsPanel = (showDocumentPreview) => {\r\n this.setState({ showDocumentPreview });\r\n AppUtils.callService(() => userService.saveUserParameter(userParameterCodeShowDocumentPreview, showDocumentPreview ? \"TRUE\" : \"FALSE\"), false, true);\r\n };\r\n\r\n handleShowPublishedVersionOnDocumentPreview = (showPublishedVersionOnDocumentPreview) => {\r\n this.setState({ showPublishedVersionOnDocumentPreview });\r\n };\r\n\r\n handleChangeEditMode = (editMode: boolean) => {\r\n this.setState({ editMode });\r\n };\r\n\r\n // #region Settings\r\n handleShowSettingsDialog = () => {\r\n this.setState({\r\n showSettingsDialog: true\r\n });\r\n };\r\n \r\n handleSettingsDialogOk = async () => {\r\n this.setState({\r\n showSettingsDialog: false,\r\n dataId: this.state.dataId + 1\r\n });\r\n await this.handleRefreshPageData(this.state.activeCompanyId);\r\n };\r\n // #endregion Settings\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n const companies = props.documentPage ? props.documentPage.companies : [];\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n 0}\r\n onShowSettingsDialog={this.handleShowSettingsDialog}\r\n onChangeShowDocumentPreview={this.handleShowDetailsPanel}\r\n onChangeShowPublishedVersionOnDocumentPreview={this.handleShowPublishedVersionOnDocumentPreview}\r\n onChangeEditMode={this.handleChangeEditMode}\r\n onOpenFiltersPanel={this.handleShowListFilter}\r\n onChangeActiveCompany={this.handleChangeActiveCompanyId}\r\n />\r\n \r\n \r\n {state.showListFilterSaveDialog &&\r\n \r\n }\r\n {state.showSettingsDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","/* eslint-disable no-unused-vars */\r\nimport * as React from \"react\";\r\n/* eslint-enable no-unused-vars */\r\nimport { connect } from \"react-redux\";\r\nimport { IApplicationState } from \"../../models/store/storeTypes\";\r\nimport * as storeEffects from \"../../models/store/storeEffects\";\r\nimport { IDocumentPageOwnProps, IDocumentPageStateProps, IDocumentPageDispatchProps, DocumentPage } from \"../../components/document/DocumentPage/DocumentPage\";\r\nimport { ITypedOption } from \"../../models/common/typedOption\";\r\n\r\nexport function mapStateToProps(applicationState: IApplicationState, ownProps: IDocumentPageOwnProps): IDocumentPageStateProps {\r\n if (!applicationState || !applicationState.front) {\r\n return {\r\n appState: null,\r\n dataId: -1,\r\n documentPage: null\r\n };\r\n }\r\n const documents = applicationState.documents;\r\n return {\r\n appState: applicationState.session,\r\n dataId: documents.dataId,\r\n documentPage: documents.documentPage\r\n };\r\n}\r\n\r\nexport function mapDispatchToProps(dispatch: storeEffects.DocumentsThunkDispatch): IDocumentPageDispatchProps {\r\n return {\r\n onGetDocumentPage: () => dispatch(storeEffects.getDocumentPage()),\r\n onLogout: () => dispatch(storeEffects.logout()),\r\n onSetCulture: (culture: string) => dispatch(storeEffects.setCulture(culture)),\r\n onSaveUserParameters: (parameters: ITypedOption[]) => dispatch(storeEffects.saveUserParameters(parameters)),\r\n onRefreshSessionState: () => dispatch(storeEffects.refreshSessionState()),\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(DocumentPage);","import { IdTitle, IIdTitle } from \"./idTitle\";\r\n\r\nexport interface IIdTitleClass extends IIdTitle {\r\n classes: string;\r\n\r\n getHash(): string;\r\n}\r\n\r\nexport class IdTitleClass extends IdTitle implements IIdTitleClass {\r\n classes: string;\r\n\r\n constructor();\r\n constructor(obj: IIdTitleClass);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.classes = obj && obj.classes || \"\";\r\n }\r\n\r\n getHash(): string {\r\n return super.getHash() + \"#\" + this.classes;\r\n }\r\n\r\n static createIdTitleClass(id: string, title: string, classes: string): IIdTitleClass {\r\n const result = new IdTitleClass();\r\n result.id = id;\r\n result.title = title;\r\n result.classes = classes;\r\n return result;\r\n }\r\n}","import InsertChartOutlinedIcon from \"@mui/icons-material/InsertChartOutlined\";\r\nimport React, { ReactNode } from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { PageDrawer } from \"../PageDrawer\";\r\n\r\ninterface IPagePanelsDrawerProps {\r\n open: boolean;\r\n children: ReactNode;\r\n onClose: () => void;\r\n}\r\n\r\nexport const PagePanelsDrawer = (props: IPagePanelsDrawerProps) => (\r\n } onClose={props.onClose} >\r\n {props.children}\r\n \r\n);\r\n","// FrontPanelPropertiesDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Checkbox, FormControlLabel, MenuItem, Select } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { ConfirmationButton } from \"../../framework/Button/ConfirmationButton\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { PageDrawer } from \"../../framework/Page/PageDrawer\";\r\nimport { AppSettingsIcon } from \"source/components/framework/Icon/AppSettingsIcon\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\n//FrontPanelPropertiesDialog\r\nexport interface IFrontPanelPropertiesDrawerProp {\r\n classes?: string;\r\n title: string;\r\n panelSize: number;\r\n panelType: number;\r\n visible: boolean;\r\n hidePanelSize?: boolean;\r\n onOk: (panelType: number, panelSize: number, visible: boolean) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IFrontPanelPropertiesDrawerState {\r\n panelSize: string;\r\n visible: boolean;\r\n}\r\n\r\nexport class FrontPanelPropertiesDrawer extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IFrontPanelPropertiesDrawerProp) {\r\n super(props);\r\n this.state = {\r\n panelSize: props.panelSize.toString(10),\r\n visible: props.visible\r\n };\r\n const saveData = this.getSaveDataFromState(props, this.state);\r\n this.orgStateHash = saveData.hash;\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"panelSize\") {\r\n this.setState({ panelSize: value });\r\n }\r\n };\r\n\r\n changeVisibility = (visible: boolean) => {\r\n this.setState({ visible });\r\n };\r\n\r\n getSaveDataFromState = (props: IFrontPanelPropertiesDrawerProp, state: IFrontPanelPropertiesDrawerState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"panelSize\", state.panelSize);\r\n return result;\r\n };\r\n\r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return;\r\n props.onOk(props.panelType, state.panelSize.toInteger(), state.visible);\r\n };\r\n\r\n handleSave = () => {\r\n this.saveToDb();\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.saveToDb();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n handleClear = () => {\r\n this.setState({ panelSize: \"1\" });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n }\r\n title={props.title}\r\n parentTitle={Translations.Panels}\r\n onClose={this.handleCancel}\r\n >\r\n \r\n \r\n this.changeVisibility(!state.visible)}\r\n />\r\n } />\r\n \r\n {!props.hidePanelSize &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n {Translations.Clear}\r\n \r\n \r\n \r\n {Translations.Cancel}\r\n \r\n \r\n {Translations.Save}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}","import { Box, Divider, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { DragDropContext, Draggable, DropResult, Droppable, ResponderProvided } from \"react-beautiful-dnd\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ContentPagePanelType, EnumHelper } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { IPagePanel, PagePanel } from \"../../../models/common/pagePanel\";\r\nimport { IReportItem } from \"../../../models/report/reportItem\";\r\nimport { PagePanelsDrawer } from \"../../framework/Page/PagePanelsDrawer/PagePanelsDrawer\";\r\nimport { FrontPanelPropertiesDrawer } from \"../../front/FrontPanelPropertiesDrawer\";\r\nimport { AddButton } from \"source/components/framework/Button/AddButton\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\n// DashboardNavPanel\r\nexport interface IDashboardPanelListProps {\r\n hidden: boolean;\r\n panels: IPagePanel[];\r\n savedFilters: IListFilterItem[];\r\n savedReports: IReportItem[];\r\n isFrontPage?: boolean;\r\n onUpdatePanels: (panels: IPagePanel[]) => void;\r\n onSavePanels: (panels: IPagePanel[]) => void;\r\n onToggleMenuPanel: () => void;\r\n onShowChartPanelPropertiesDialog?: (panelId: string) => void;\r\n onAddChart?: () => void;\r\n onFrontPagePanelProperyClick?: (panelType: number, panelSize: number, visible: boolean, title: string) => void;\r\n}\r\n\r\nexport interface IDashboardPanelListState {\r\n showFrontPanelPropertiesDialog: boolean;\r\n frontPanelPropertiesDialogTitle: string;\r\n frontPanelPropertiesDialogPanelType: number;\r\n frontPanelPropertiesDialogPanelSize: number;\r\n frontPanelPropertiesDialogPanelVisible: boolean;\r\n}\r\n\r\nexport class DashboardPanelList extends React.Component {\r\n constructor(props: IDashboardPanelListProps) {\r\n super(props);\r\n this.state = {\r\n showFrontPanelPropertiesDialog: false,\r\n frontPanelPropertiesDialogTitle: \"\",\r\n frontPanelPropertiesDialogPanelType: 0,\r\n frontPanelPropertiesDialogPanelSize: 1,\r\n frontPanelPropertiesDialogPanelVisible: false,\r\n };\r\n }\r\n \r\n savePanels = async (panels: IPagePanel[]) => {\r\n await this.props.onSavePanels(panels);\r\n this.setState({\r\n showFrontPanelPropertiesDialog: false\r\n });\r\n };\r\n\r\n getPanelOptionItemStyle = (isDragging: boolean, draggableStyle: any) => {\r\n return {\r\n // some basic styles to make the items look a bit nicer\r\n userSelect: \"none\",\r\n // change background colour if dragging\r\n //background: isDragging ? \"lightgreen\" : \"grey\",\r\n // styles we need to apply on draggables\r\n ...draggableStyle\r\n };\r\n };\r\n\r\n handlePanelCheckBoxDragEnd = (result: DropResult, provided: ResponderProvided) => {\r\n const props = this.props;\r\n // dropped outside the list\r\n if (!result.destination) {\r\n return;\r\n }\r\n const panels = PagePanel.swapPagePanels(props.panels, result.source.index, result.destination.index);\r\n for (let i = 0; i < panels.length; i++) {\r\n panels[i].position = i;\r\n }\r\n props.onUpdatePanels(panels);\r\n this.savePanels(panels);\r\n };\r\n\r\n handleSavePanelSize = (panelType: number, panelSize: number, visible: boolean) => {\r\n const panels = this.props.panels.slice(0);\r\n const panel = panels.find(i => Base.equalInt(i.panelType, panelType));\r\n if (!panel) return;\r\n panel.size = panelSize;\r\n panel.visible = visible;\r\n this.savePanels(panels);\r\n };\r\n \r\n handlePropertiesClick = (id: string, panelType: number, panelSize: number, visible: boolean, title: string) => {\r\n const props = this.props;\r\n if (props.isFrontPage) {\r\n props.onFrontPagePanelProperyClick(panelType, panelSize, visible, title);\r\n return;\r\n }\r\n if (!EnumHelper.isEqual(panelType, ContentPagePanelType.Chart)) {\r\n this.setState({\r\n showFrontPanelPropertiesDialog: true,\r\n frontPanelPropertiesDialogPanelType: panelType,\r\n frontPanelPropertiesDialogPanelSize: panelSize,\r\n frontPanelPropertiesDialogPanelVisible: visible,\r\n frontPanelPropertiesDialogTitle: title\r\n });\r\n } else if (props.onShowChartPanelPropertiesDialog) {\r\n props.onShowChartPanelPropertiesDialog(id);\r\n }\r\n };\r\n\r\n handleFrontPanelPropertiesDialogCancel = () => {\r\n this.setState({\r\n showFrontPanelPropertiesDialog: false\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n \r\n return (\r\n \r\n {!!props.panels &&\r\n \r\n {!!props.onAddChart &&\r\n <>\r\n \r\n {Translations.AddPanel}\r\n \r\n \r\n \r\n }\r\n \r\n \r\n {(provided, snapshot) => (\r\n \r\n {props.panels.map((panel, index) => {\r\n if (!props.isFrontPage && (EnumHelper.isEqual(panel.panelType, ContentPagePanelType.SharedFiltersAndReports) || panel.getDisabled())) {\r\n return null;\r\n }\r\n return \r\n {(provided, snapshot) => (\r\n this.handlePropertiesClick(panel.getId(), panel.panelType, panel.size, panel.visible, panel.getTitle())}\r\n ref={provided.innerRef}\r\n {...provided.draggableProps}\r\n {...provided.dragHandleProps}\r\n style={this.getPanelOptionItemStyle(snapshot.isDragging, provided.draggableProps.style)}\r\n title={panel.visible ? Translations.PanelVisible : \"\"}\r\n sx={{\r\n borderRadius: \".5rem\",\r\n border: \"1px solid\",\r\n borderColor: \"divider\",\r\n backgroundColor: panel.visible ? \"action.selected\" : \"action.hover\",\r\n marginBottom: \"1rem\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n padding: \"6px 0\"\r\n }}\r\n >\r\n {panel.getIcon()}\r\n {panel.getTitle()}\r\n \r\n )}\r\n ;\r\n })}\r\n {provided.placeholder}\r\n
\r\n )}\r\n \r\n \r\n \r\n }\r\n {state.showFrontPanelPropertiesDialog &&\r\n \r\n }\r\n \r\n \r\n {Translations.Close}\r\n \r\n \r\n \r\n );\r\n }\r\n}","import { Box } from \"@mui/material\";\r\nimport React, { ReactNode } from \"react\";\r\n\r\ninterface DashboardContainerProps {\r\n children: ReactNode;\r\n}\r\n\r\nexport const DashboardContainer = ({ children }: DashboardContainerProps) => (\r\n \r\n {children}\r\n \r\n);\r\n","import { Box, Card, useMediaQuery, useTheme } from \"@mui/material\";\r\nimport React, { ReactNode } from \"react\";\r\nimport { EnumHelper, FrontPagePanelSize } from \"ui/Scripts/source/models/enums\";\r\n\r\ninterface PanelContainerProps {\r\n size: number;\r\n children: ReactNode;\r\n}\r\n\r\nconst getPanelWidth = (panelSize: number): string => {\r\n return EnumHelper.isEqual(panelSize, FrontPagePanelSize.TwoXOne) ||\r\n EnumHelper.isEqual(panelSize, FrontPagePanelSize.TwoXTwo)\r\n ? \"66.666667%\"\r\n : \"33.333334%\";\r\n};\r\n\r\nconst getPanelHeight = (panelSize: number): string => {\r\n return EnumHelper.isEqual(panelSize, FrontPagePanelSize.OneXTwo) ||\r\n EnumHelper.isEqual(panelSize, FrontPagePanelSize.TwoXTwo)\r\n ? \"calc(100vh - 174px)\"\r\n : \"calc(50vh - 87px)\";\r\n};\r\n\r\nexport const PanelContainer = ({\r\n size,\r\n children,\r\n}: PanelContainerProps) => {\r\n const theme = useTheme();\r\n const largeScreen = useMediaQuery(theme.breakpoints.up(\"lg\"));\r\n\r\n return (\r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n};\r\n","// eslint-disable-next-line no-unused-vars\r\nimport * as React from \"react\";\r\nimport styled from \"@emotion/styled\";\r\n\r\nexport const Container = styled.div`\r\n height: calc(100% - 76px);\r\n margin: 0 1rem 1rem 1rem;\r\n overflow-y: auto;\r\n overflow-x: hidden;\r\n`;","import React, { ReactNode } from \"react\";\r\nimport * as Styled from \"./CardContainer.styles\";\r\n\r\ninterface CardContainerProps {\r\n children?: ReactNode;\r\n}\r\n\r\nexport const CardContainer = ({ children }: CardContainerProps) => {\r\n return {children};\r\n};\r\n","// DashboardStatistics - MODULE\r\n// ***********************************************************************************************************************\r\n/// \r\nimport { Box, Chip, List, ListItem, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { CardContainer } from \"../../framework/CardContainer\";\r\nimport { IFrontToDoItems } from \"../../../models/front/frontToDoItems\";\r\nimport { DashboardCardTitle } from \"../../framework/DashboardCard/DashboardCardTitle\";\r\nimport { DashboardCardProgress } from \"../DashboardCard/DashboardCardProgress\";\r\n\r\n// DashboardStatistics\r\nexport interface IDashboardStatisticsProp {\r\n loading: boolean;\r\n title: string;\r\n toDoItems: IFrontToDoItems;\r\n onClick: () => void;\r\n}\r\n\r\nexport class DashboardStatistics extends React.Component {\r\n handleStatisticsClick = (e: any) => {\r\n e.stopPropagation();\r\n this.props.onClick();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const toDoItems = props.toDoItems;\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n {!!toDoItems && toDoItems.items.map(item =>\r\n \r\n \r\n {item.title}\r\n {item.important\r\n ? (\r\n \r\n )\r\n : (\r\n {item.amount.toString(10)}\r\n )}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n );\r\n }\r\n}","import { Box, Typography } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { SvgReport } from \"source/shared/icons/Report.svg\";\r\n\r\ninterface DashboardPanelNoReportProps {\r\n title: string;\r\n}\r\n\r\nexport const DashboardPanelNoReport = ({\r\n title,\r\n}: DashboardPanelNoReportProps) => {\r\n return (\r\n \r\n \r\n \r\n {title}\r\n \r\n \r\n );\r\n};\r\n","// DashboardPanelFiltersReports - MODULE\r\n// ***********************************************************************************************************************\r\n/// \r\nimport FilterAltOutlinedIcon from \"@mui/icons-material/FilterAltOutlined\";\r\nimport { Avatar, Box, Chip, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { FileType, ReportType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { IReportItem } from \"../../../models/report/reportItem\";\r\nimport { AttachmentIcon } from \"../../attachments/AttachmentIcon\";\r\nimport { CardContainer } from \"../../framework/CardContainer\";\r\nimport { DashboardCardTitle } from \"../../framework/DashboardCard/DashboardCardTitle\";\r\nimport { CircularLoading } from \"../../framework/Loading/CircularLoading\";\r\nimport { DashboardPanelNoReport } from \"./DashboardPanelNoReport\";\r\n\r\n// DashboardPanelFiltersReports\r\nexport interface IDashboardPanelFiltersReportsProps {\r\n loading: boolean;\r\n title: string;\r\n filters: IListFilterItem[];\r\n reports: IReportItem[];\r\n noFiltersMessage: string;\r\n noReportsMessage: string;\r\n onFilterClick: (filterId: string) => void;\r\n onReportClick: (reportId: string) => void;\r\n}\r\n\r\nexport class DashboardPanelFiltersReports extends React.Component {\r\n render() {\r\n const props = this.props;\r\n return (\r\n <>\r\n \r\n \r\n {props.loading\r\n ? (\r\n \r\n \r\n \r\n )\r\n : (\r\n <>\r\n \r\n {Translations.Filters}\r\n {(!props.loading && props.filters.length < 1) &&\r\n \r\n }\r\n {props.filters.length > 0 &&\r\n \r\n {props.filters.map(filter =>\r\n }\r\n onClick={() => props.onFilterClick(filter.id)}\r\n sx={{ margin: \".25rem .5rem .25rem 0\" }}\r\n />\r\n )}\r\n \r\n }\r\n \r\n \r\n {Translations.Reports}\r\n {(!props.loading && props.reports.length < 1) &&\r\n \r\n }\r\n {props.reports.length > 0 &&\r\n \r\n {props.reports.map(report =>\r\n props.onReportClick(report.id)}\r\n sx={{ margin: \".25rem .5rem .25rem 0\" }}\r\n icon={\r\n \r\n \r\n \r\n }\r\n />\r\n )}\r\n \r\n }\r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n }\r\n}","import InsertChartOutlinedRoundedIcon from \"@mui/icons-material/InsertChartOutlinedRounded\";\r\nimport { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ContentPagePanelType, EnumHelper, ReportSharingType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { FrontToDoItems, IFrontToDoItems } from \"source/models/front/frontToDoItems\";\r\nimport { IPagePanel } from \"source/models/common/pagePanel\";\r\nimport { IListFilterItem } from \"source/models/common/listFilterItem\";\r\nimport { IReportItem, ReportItem } from \"source/models/report/reportItem\";\r\nimport { IChartItem } from \"source/models/chart/chartItem\";\r\nimport { PageTitle } from \"../PageTitle\";\r\nimport { SettingsButton } from \"../../Button/SettingsButton\";\r\nimport { DashboardContainer } from \"../../Dashboard/DashboardContainer\";\r\nimport { PanelContainer } from \"../../Panel/PanelContainer\";\r\nimport { DashboardStatistics } from \"../../DashboardStatistics\";\r\nimport { DashboardPanelFiltersReports } from \"source/components/app/DashboardPanelFiltersReports\";\r\nimport { ISavedChartPanel } from \"source/models/chart/savedChartPanel\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\ntype DashBoardChartProps = {\r\n companyId?: string;\r\n chartPanel: ISavedChartPanel;\r\n chartItems: IChartItem[];\r\n onShowChartPanelPropertiesDialog: (panelId: string) => void;\r\n};\r\n\r\n// PageDashboard\r\nexport interface IPageDashboardProps {\r\n settingsVisible: boolean;\r\n panels: IPagePanel[];\r\n companyId: string;\r\n filters: IListFilterItem[];\r\n savedFilters: IListFilterItem[];\r\n loadingReports: boolean;\r\n title: string;\r\n reports: IReportItem[];\r\n savedReports: IReportItem[];\r\n chartItems: IChartItem[];\r\n dashboardChart: React.ElementType;\r\n addButton?: React.ReactNode;\r\n onSavedFilterClick: (filterId: string) => void;\r\n onFilterClick: (filterId: string) => void;\r\n onSavedReportClick: (reportId: string) => void;\r\n onReportClick: (reportId: string) => void;\r\n onShowChartPanelPropertiesDialog: (panelId: string) => void;\r\n onToggleMenuPanel: () => void;\r\n onToggleSettingsDialog: () => void;\r\n onGetToDoItems: () => Promise;\r\n onStatisticsClick: () => void;\r\n}\r\n\r\nexport interface IPageDashboardState {\r\n loadingStatistics: boolean;\r\n toDoItems: IFrontToDoItems;\r\n standardAndSharedReports: IReportItem[];\r\n}\r\n\r\nexport class PageDashboard extends React.Component {\r\n _isMounted: boolean;\r\n\r\n constructor(props: IPageDashboardProps) {\r\n super(props);\r\n this.state = {\r\n loadingStatistics: true,\r\n toDoItems: null,\r\n standardAndSharedReports: ReportItem.getSharedAndStandardReports(props.reports, props.savedReports.filter(i => i.reportSharingType > ReportSharingType.NotShared))\r\n };\r\n }\r\n\r\n getRecordStatistics = async () => {\r\n this.setState({\r\n loadingStatistics: true\r\n });\r\n const toDoItems = await AppUtils.callService(() => this.props.onGetToDoItems(), false, true, () => {\r\n if (!this._isMounted) return;\r\n this.setState({\r\n loadingStatistics: false\r\n });\r\n });\r\n if (!toDoItems || !this._isMounted) return;\r\n this.setState({\r\n toDoItems\r\n });\r\n };\r\n \r\n async componentDidMount(): Promise {\r\n this.getRecordStatistics();\r\n this._isMounted = true;\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this._isMounted = false;\r\n }\r\n\r\n componentDidUpdate(prevProps: IPageDashboardProps, prevState: IPageDashboardState): void {\r\n const props = this.props;\r\n const prevCompanyId = prevProps.companyId ?? \"\";\r\n const companyId = props.companyId ?? \"\";\r\n if (ReportItem.getItemsHash(prevProps.reports, prevProps.savedReports) !== ReportItem.getItemsHash(props.reports, props.savedReports)) {\r\n this.setState({\r\n standardAndSharedReports: ReportItem.getSharedAndStandardReports(props.reports, props.savedReports.filter(i => i.reportSharingType > ReportSharingType.NotShared))\r\n });\r\n }\r\n if (prevCompanyId === companyId) {\r\n return;\r\n }\r\n this.getRecordStatistics();\r\n }\r\n \r\n handleReportClick = (reportId: string) => {\r\n const props = this.props;\r\n const state = this.state;\r\n const report = state.standardAndSharedReports.find(i => i.id === reportId);\r\n if (!report) return;\r\n if (report.reportSharingType > ReportSharingType.NotShared) {\r\n props.onSavedReportClick(reportId);\r\n } else {\r\n props.onReportClick(reportId);\r\n }\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const DashboardChart = props.dashboardChart;\r\n return (\r\n \r\n \r\n {props.settingsVisible\r\n ? (\r\n \r\n {Translations.Settings}\r\n \r\n )\r\n : null\r\n }\r\n {props.addButton}\r\n } onClick={props.onToggleMenuPanel}>\r\n {Translations.Panels}\r\n \r\n \r\n \r\n {props.panels.map(panel => {\r\n if (EnumHelper.isEqual(panel.panelType, ContentPagePanelType.Statistics) && panel.visible) {\r\n return \r\n \r\n ;\r\n } else if (EnumHelper.isEqual(panel.panelType, ContentPagePanelType.MyFiltersAndReports) && panel.visible) {\r\n return \r\n !i.isShared)}\r\n reports={props.savedReports.filter(i => !i.getIsShared())}\r\n noFiltersMessage={Translations.NoFilters}\r\n noReportsMessage={Translations.NoReports}\r\n onFilterClick={props.onSavedFilterClick}\r\n onReportClick={props.onSavedReportClick}\r\n />\r\n ;\r\n } else if (EnumHelper.isEqual(panel.panelType, ContentPagePanelType.StandardFiltersAndReports) && panel.visible) {\r\n return \r\n \r\n ;\r\n } else if (EnumHelper.isEqual(panel.panelType, ContentPagePanelType.Chart) && panel.visible && !panel.getDisabled()) {\r\n return \r\n \r\n ;\r\n } else {\r\n return null;\r\n }\r\n })}\r\n \r\n \r\n );\r\n }\r\n}","import { Box, BoxProps } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\nexport const PageListAndReportsContainer = (props: BoxProps) => (\r\n \r\n {props.children}\r\n \r\n);\r\n","import { Box, BoxProps } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\nexport const PageReportsContainer = (props: BoxProps) => (\r\n \r\n {props.children}\r\n \r\n);\r\n","// eslint-disable-next-line no-unused-vars\r\nimport * as React from \"react\";\r\nimport { Box, styled } from \"@mui/material\";\r\n\r\nexport const Container = styled(Box)(\r\n ({ theme }) => `\r\n margin-top: 48px;\r\n max-width: 436px;\r\n max-height: calc(100vh - 48px);\r\n background: ${theme.palette.background.paper};\r\n display: flex;\r\n flex-direction: column;\r\n flex-grow: 2;\r\n overflow-y: auto;\r\n`\r\n);","import ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\r\nimport { Accordion, AccordionDetails, AccordionSummary } from \"@mui/material\";\r\nimport React, { ReactNode } from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport * as Styled from \"./ReportSettings.styles\";\r\n\r\ninterface ReportSettingsProps {\r\n reports?: ReactNode;\r\n filters?: ReactNode;\r\n filtersPadding?: string;\r\n}\r\n\r\nexport const ReportSettings = ({ filters, filtersPadding, reports }: ReportSettingsProps) => {\r\n return (\r\n \r\n \r\n }>\r\n {Translations.Reports}\r\n \r\n \r\n {reports}\r\n \r\n \r\n \r\n }>\r\n {Translations.FilterCondition}\r\n \r\n \r\n {filters}\r\n \r\n \r\n \r\n );\r\n};\r\n","// PageNavMenuReportItem\r\n// ***********************************************************************************************************************\r\nimport CheckIcon from \"@mui/icons-material/Check\";\r\nimport { ListItem, ListItemAvatar, Tooltip, alpha } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { FileType, ReportType } from \"ui/Scripts/source/models/enums\";\r\nimport { IReportItem, ReportItem } from \"../../../../models/report/reportItem\";\r\nimport { AttachmentIcon } from \"../../../attachments/AttachmentIcon\";\r\nimport { EllipsisTypography } from \"../../../framework/Typography/EllipsisTypography\";\r\n\r\nexport interface IPageNavMenuReportItemItem {\r\n reportItem: IReportItem;\r\n title: string;\r\n}\r\n\r\nexport class PageNavMenuReportItemItem implements IPageNavMenuReportItemItem {\r\n reportItem: ReportItem;\r\n title: string;\r\n\r\n constructor();\r\n constructor(obj: IPageNavMenuReportItemItem);\r\n constructor(obj?: any) {\r\n this.title = obj && obj.title || \"\";\r\n this.reportItem = null;\r\n if (obj && obj.reportItem) {\r\n this.reportItem = new ReportItem(obj.reportItem);\r\n }\r\n }\r\n}\r\n\r\n// PageNavMenuReportItemReportLine\r\nexport interface IPageNavMenuReportItemReportLineProp {\r\n classes?: boolean;\r\n item: IReportItem;\r\n canRemoveSharedReports: boolean;\r\n activeItemId: string;\r\n onSetActiveItem: (reportId: string) => void;\r\n}\r\n\r\nexport class PageNavMenuReportItemReportLine extends React.Component {\r\n handleOnClick = (ev, reportId: string) => {\r\n const props = this.props;\r\n ev.stopPropagation();\r\n if (!props.onSetActiveItem) return;\r\n props.onSetActiveItem(reportId);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n if (!props.item) return null;\r\n const report = props.item;\r\n const selected = props.activeItemId === props.item.id;\r\n\r\n return (\r\n this.handleOnClick(ev, report.id) }\r\n secondaryAction={(\r\n <>\r\n {selected && (\r\n \r\n )}\r\n \r\n )}\r\n sx={(theme) => ({\r\n \"border\": \"1px solid\",\r\n \"borderColor\": theme.palette.divider,\r\n \"padding\": \"2px 12px\",\r\n \"margin\": \"8px 0\",\r\n \"cursor\": \"pointer\",\r\n \"background\": selected\r\n ? alpha(\r\n theme.palette.primary.main,\r\n theme.palette.action.selectedOpacity\r\n )\r\n : undefined,\r\n \"&:hover\": {\r\n background: selected\r\n ? alpha(\r\n theme.palette.primary.main,\r\n theme.palette.action.selectedOpacity +\r\n theme.palette.action.hoverOpacity\r\n )\r\n : theme.palette.action.hover\r\n }\r\n })}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {report.title}\r\n \r\n );\r\n }\r\n}","// PageNavMenuReportItem\r\n// ***********************************************************************************************************************\r\nimport { List, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ReportSharingType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IReportItem, ReportItem } from \"../../../models/report/reportItem\";\r\nimport { IPageNavMenuReportItemItem, PageNavMenuReportItemItem, PageNavMenuReportItemReportLine } from \"./PageNavMenuItemReportItem\";\r\n\r\nexport interface IPageNavMenuReportListProp {\r\n classes?: boolean;\r\n canRemoveSharedReports: boolean;\r\n showingSavedReports: boolean;\r\n items: IReportItem[];\r\n standardReports: IReportItem[];\r\n hidden?: boolean;\r\n activeItemId: string;\r\n activeStandardItemId: string;\r\n title: string;\r\n onSetActiveItem: (reportId: string) => void;\r\n onSetActiveStandardItem: (reportId: string) => void;\r\n}\r\n\r\nexport interface IPageNavMenuReportListState {\r\n items: IPageNavMenuReportItemItem[];\r\n}\r\n\r\nexport class PageNavMenuReportList extends React.Component {\r\n private getItems = (props: IPageNavMenuReportListProp): IPageNavMenuReportItemItem[] => {\r\n if (props.showingSavedReports) {\r\n const userReports = props.items.filter(i => i.reportSharingType === ReportSharingType.NotShared);\r\n let result: IPageNavMenuReportItemItem[] = [];\r\n if (userReports.length > 0) {\r\n result.push(new PageNavMenuReportItemItem({ reportItem: null, title: Translations.MyReports }));\r\n result = result.concat(userReports.map(i => new PageNavMenuReportItemItem({ reportItem: i, title: null })));\r\n }\r\n const standardAndSharedReports = ReportItem.getSharedAndStandardReports(props.standardReports, props.items.filter(i => i.reportSharingType > ReportSharingType.NotShared));\r\n if (standardAndSharedReports.length > 0) {\r\n result.push(new PageNavMenuReportItemItem({ reportItem: null, title: Translations.ReportsStandard }));\r\n result = result.concat(standardAndSharedReports.map(i => new PageNavMenuReportItemItem({ reportItem: i, title: null })));\r\n }\r\n return result;\r\n } else {\r\n return props.items.map(i => new PageNavMenuReportItemItem({ reportItem: i, title: null }));\r\n }\r\n };\r\n\r\n constructor(props: IPageNavMenuReportListProp) {\r\n super(props);\r\n this.state = {\r\n items: this.getItems(props)\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps: IPageNavMenuReportListProp, prevState: IPageNavMenuReportListState): void {\r\n const props = this.props;\r\n if (ReportItem.getItemsHash(prevProps.standardReports, prevProps.items) === ReportItem.getItemsHash(props.standardReports, props.items)) return;\r\n this.setState({\r\n items: this.getItems(props)\r\n });\r\n }\r\n\r\n render() {\r\n const props = this.props;\r\n if (props.hidden) return null;\r\n const reports = this.state.items;\r\n return (\r\n \r\n {reports.map((report) => {\r\n return (report.reportItem\r\n ? \r\n : {report.title}\r\n );\r\n })}\r\n \r\n );\r\n }\r\n}","import { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { postApiCall } from \"./tokenService\";\r\n\r\nexport const saveReport = (obj: any): Promise => {\r\n return postApiCall(\"api/report/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeReport = (obj: any): Promise => {\r\n return postApiCall(\"api/report/remove\", ApiSuccess, JSON.stringify(obj));\r\n};","// SaveReportDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, FormControlLabel, Radio, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ApplicationPermissionType, ConfirmationDialogResult, ReportSharingType } from \"ui/Scripts/source/models/enums\";\r\nimport { ITaskDataRow, TaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../../framework/saveData\";\r\nimport { IReportItem, ReportItem } from \"../../../../models/report/reportItem\";\r\nimport { ISavedReport, SavedReport } from \"../../../../models/report/savedReport\";\r\nimport * as reportService from \"../../../../models/services/reportService\";\r\nimport { ISessionState } from \"../../../../models/session/sessionState\";\r\nimport { Dialog } from \"../../../framework/Dialog/Dialog\";\r\nimport { FormField } from \"../../../framework/FormField\";\r\n\r\n//SaveReportDialog\r\n\r\nexport interface ISaveReportFilters {\r\n generalFilter: any;\r\n reportFilter: any;\r\n showInFrontPage: boolean;\r\n}\r\n\r\nexport interface ISaveReportDialogProp {\r\n sessionState: ISessionState;\r\n classes?: string;\r\n companyId: string;\r\n applicationPermissionType: ApplicationPermissionType;\r\n report: IReportItem;\r\n generalFilter: any;\r\n reservedNames: string[];\r\n onGetReportSaveFilters?: () => ISaveReportFilters;\r\n onOk: (savedReport: SavedReport, reportSharingType: ReportSharingType) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface ISaveReportDialogState {\r\n name: string;\r\n reportSharingType: ReportSharingType;\r\n}\r\n\r\nexport class SaveReportDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: ISaveReportDialogProp) {\r\n super(props);\r\n this.state = {\r\n name: props.report.getTitle(),\r\n reportSharingType: props.sessionState.isSuperAdmin ? props.report.reportSharingType : ReportSharingType.NotShared\r\n };\r\n this.orgStateHash = this.getHashFromState(props, this.state);\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"name\") {\r\n this.setState({ name: value });\r\n }\r\n };\r\n\r\n changeSharingType = (reportSharingType: ReportSharingType) => {\r\n this.setState({ reportSharingType });\r\n };\r\n \r\n static getReportFilterFromTaskType = (taskType: ITaskEditTypeItem, taskDataRow: ITaskDataRow): any => {\r\n let result = null;\r\n if (taskType && taskDataRow) {\r\n const rows = TaskDataRow.getDynamicDataRowsFromJsonTaskDataRows([taskDataRow], taskType.formCols);\r\n if (rows.length > 0) {\r\n result = rows[0];\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n static getReportFilter = (report: IReportItem): any => {\r\n return this.getReportFilterFromTaskType(report.taskType, report.taskDataRow);\r\n };\r\n\r\n static getSavedReport = (report: IReportItem, name: string, generalFilter: any, reportFilter: any, showInFrontPage: boolean, applicationPermissionType: number): SavedReport => {\r\n const result = new SavedReport();\r\n result.id = name;\r\n result.title = name;\r\n result.reportId = report.reportId;\r\n result.applicationPermissionType = applicationPermissionType;\r\n result.generalFilter = generalFilter ?? {};\r\n result.reportFilter = reportFilter ?? {};\r\n result.sortColumn = report.sortColumn;\r\n result.sortOrderIsAsc = report.sortOrderIsAsc;\r\n result.showInFrontPage = !!showInFrontPage;\r\n return result;\r\n };\r\n\r\n getSavedReportFromState = (props: ISaveReportDialogProp, state: ISaveReportDialogState, beforeSave: boolean): SavedReport => {\r\n let generalFilter = props.generalFilter;\r\n let reportFilter = SaveReportDialog.getReportFilter(props.report);\r\n let showInFrontPage = props.report.showInFrontPage;\r\n if (beforeSave && props.onGetReportSaveFilters) {\r\n const filters = props.onGetReportSaveFilters();\r\n generalFilter = filters.generalFilter;\r\n reportFilter = filters.reportFilter;\r\n showInFrontPage = filters.showInFrontPage;\r\n }\r\n return SaveReportDialog.getSavedReport(props.report, state.name, generalFilter, reportFilter, showInFrontPage, props.applicationPermissionType);\r\n };\r\n\r\n static getSaveData = (companyId: string, orgReportId: string, reportSharingType: ReportSharingType, applicationPermissionType: number, savedReport: SavedReport): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"companyId\", companyId);\r\n result.append(\"applicationPermissionType\", applicationPermissionType);\r\n result.append(\"orgId\", !Base.isNullOrUndefined(orgReportId) ? orgReportId : \"\");\r\n result.append(\"reportSharingType\", reportSharingType.toString(10));\r\n result.append(\"item\", savedReport);\r\n return result;\r\n };\r\n\r\n getSaveDataFromState = (props: ISaveReportDialogProp, state: ISaveReportDialogState, savedReport: SavedReport): SaveDataObj => {\r\n return SaveReportDialog.getSaveData(props.companyId, null, state.reportSharingType, props.applicationPermissionType, savedReport);\r\n };\r\n \r\n getHashFromState = (props: ISaveReportDialogProp, state: ISaveReportDialogState): string => {\r\n return this.getSaveDataFromState(props, state, this.getSavedReportFromState(props, state, false)).hash;\r\n };\r\n\r\n checkErrors = (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.name) {\r\n AppUtils.showErrorMessage(Translations.NameMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (props.reservedNames.find(i => i.equalIgnoreCase(state.name))) {\r\n AppUtils.showErrorMessage(Translations.NameIsAlreadyInUse);\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n const savedReport = this.getSavedReportFromState(props, state, true);\r\n const saveData = this.getSaveDataFromState(props, state, savedReport);\r\n //Call server\r\n const result = await AppUtils.callService(() => reportService.saveReport(saveData.obj));\r\n if (!result) return null;\r\n this.orgStateHash = saveData.hash;\r\n return savedReport;\r\n };\r\n\r\n handleSave = async () => {\r\n const props = this.props;\r\n const result = await this.saveToDb();\r\n if (!result) return;\r\n props.onOk(result, this.state.reportSharingType);\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getHashFromState(props, state), this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n static saveReportToDb = async (report: IReportItem, generalFilter: any, companyId: string, applicationPermissionType: number): Promise => {\r\n if (!report) return;\r\n const savedReport = SaveReportDialog.getSavedReport(report, report.getTitle(), generalFilter, SaveReportDialog.getReportFilter(report), report.showInFrontPage, applicationPermissionType);\r\n const saveData = SaveReportDialog.getSaveData(companyId, report.id, report.reportSharingType, applicationPermissionType, savedReport);\r\n const result = await AppUtils.callService(() => reportService.saveReport(saveData.obj));\r\n if (!result) return null;\r\n return savedReport;\r\n };\r\n\r\n static removeReportFromDb = async (userReports: IReportItem[], companyId: string, reportId: string, reportSharingType: ReportSharingType, applicationPermissionType: number): Promise => {\r\n if (!reportId) return;\r\n const userReport = userReports.find(i => i.id === reportId);\r\n if (!userReport) return;\r\n const confirmationResult = await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveReportParameter, userReport.title));\r\n if (confirmationResult !== ConfirmationDialogResult.Yes) return;\r\n const saveData = new SaveDataObj();\r\n saveData.append(\"companyId\", companyId);\r\n saveData.append(\"applicationPermissionType\", applicationPermissionType);\r\n saveData.append(\"id\", reportId);\r\n saveData.append(\"reportSharingType\", reportSharingType);\r\n return await AppUtils.callService(() => reportService.removeReport(saveData.obj), false);\r\n };\r\n\r\n static getReportStateChangeAfterReportSave = (state: { reports: IReportItem[], savedReports: IReportItem[] }, orgReportId: string, savedReport: ISavedReport, reportSharingType: ReportSharingType): {\r\n showReportSaveDialog: boolean,\r\n savedReports: IReportItem[],\r\n activeReportId: string,\r\n activeSavedReportId: string,\r\n reportPanelFilterReport: IReportItem\r\n } => {\r\n if (!savedReport) return;\r\n const savedReports = state.savedReports.filter(i => i.id !== orgReportId || i.reportSharingType !== reportSharingType);\r\n const report = state.reports.find(i => i.id === savedReport.reportId);\r\n if (!report) return;\r\n const newReport = ReportItem.createReportItemFromSavedReport(report, savedReport, reportSharingType);\r\n savedReports.push(newReport);\r\n ReportItem.sortReportItems(savedReports);\r\n return {\r\n showReportSaveDialog: false,\r\n savedReports,\r\n activeReportId: \"\",\r\n activeSavedReportId: savedReport.id,\r\n reportPanelFilterReport: newReport\r\n };\r\n };\r\n\r\n static getReportStateChangeAfterReportFilterChange = (state: { reports: IReportItem[], savedReports: IReportItem[], activeReportId: string, activeSavedReportId: string }, parameters: ITaskDataRow, showInFrontPage: boolean): {\r\n reports: IReportItem[],\r\n savedReports: IReportItem[],\r\n reportFilter: any\r\n } => {\r\n const reports = state.reports.slice(0);\r\n const savedReports = state.savedReports.slice(0);\r\n const index = state.activeReportId\r\n ? reports.findIndex(i => i.id === state.activeReportId)\r\n : savedReports.findIndex(i => i.id === state.activeSavedReportId);\r\n if (index < 0) return null;\r\n let reportFilter = null;\r\n if (state.activeReportId) {\r\n const report = new ReportItem(reports[index]);\r\n report.taskDataRow = parameters;\r\n report.showInFrontPage = showInFrontPage;\r\n reportFilter = SaveReportDialog.getReportFilter(report);\r\n reports[index] = report;\r\n } else {\r\n const savedReport = new ReportItem(savedReports[index]);\r\n savedReport.taskDataRow = parameters;\r\n savedReport.showInFrontPage = showInFrontPage;\r\n savedReport.reportFilter = SaveReportDialog.getReportFilter(savedReport);\r\n reportFilter = savedReport.reportFilter;\r\n savedReports[index] = savedReport;\r\n }\r\n return {\r\n reports,\r\n savedReports,\r\n reportFilter\r\n };\r\n };\r\n\r\n render() {\r\n const state = this.state;\r\n const props = this.props;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.sessionState.isSuperAdmin &&\r\n \r\n this.changeSharingType(ReportSharingType.NotShared)}\r\n />\r\n }\r\n />\r\n this.changeSharingType(ReportSharingType.Company)}\r\n />}\r\n />\r\n this.changeSharingType(ReportSharingType.AllCompanies)}\r\n />\r\n }\r\n />\r\n \r\n }\r\n \r\n }\r\n buttons={[\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: this.handleCancel },\r\n { title: Translations.Save, variant: \"confirmation\", onClick: this.handleSave },\r\n ]}\r\n />\r\n );\r\n }\r\n}","// EventPageDashboardChart - MODULE\r\n// ***********************************************************************************************************************\r\n/// \r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IdColorTitle } from \"ui/Scripts/source/models/common/idColorTitle\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { EventStateFilter } from \"ui/Scripts/source/models/enums\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IChartItem } from \"../../../models/chart/chartItem\";\r\nimport { ISavedChartPanel } from \"../../../models/chart/savedChartPanel\";\r\nimport { IReportParameterValue } from \"../../../models/report/reportParameterValue\";\r\nimport * as eventService from \"../../../models/services/eventService\";\r\nimport { IReportChartData } from \"source/models/report/reportChartData\";\r\nimport { DashboardChart } from \"source/components/framework/DashboardChart\";\r\n\r\nexport interface IEventPageFilterLists {\r\n units: IIdTitleNode[];\r\n states: IIdTitle[];\r\n urgencyClasses: IdColorTitle[];\r\n partners: IIdTitle[];\r\n creators: IIdTitle[];\r\n handlers: IIdTitle[];\r\n observers: IIdTitle[];\r\n eventTypes: IIdTitleNode[];\r\n eventTypeBs: IIdTitleNode[];\r\n eventTypeCs: IIdTitleNode[];\r\n dynamicTimeFilters: IIdTitle[];\r\n}\r\n\r\nexport const EventTypeNotSetId = \"00000000-0000-0000-0000-000000000001\";\r\n\r\nexport interface IEventPageFilterStateWithoutDates {\r\n selectedUnitIds: string[];\r\n selectedStateIds: string[];\r\n selectedUrgencyClassIds: string[];\r\n selectedEventTypeIds: string[];\r\n selectedEventTypeBIds: string[];\r\n selectedEventTypeCIds: string[];\r\n selectedPartnerCompanyIds: string[];\r\n selectedCreateUserCodes: string[];\r\n selectedHandlerUserCodes: string[];\r\n selectedObservers: string[];\r\n selectedDynamicTimeFilterId: string;\r\n}\r\n\r\nexport interface IEventPageFilterState extends IEventPageFilterStateWithoutDates {\r\n selectedStartDate: number;\r\n selectedEndDate: number\r\n}\r\n\r\nexport interface IEventGeneralFilter {\r\n startDate: number;\r\n endDate: number;\r\n unitIds: string[];\r\n states: number[];\r\n urgencyClassIds: string[];\r\n eventTypeIds: string[];\r\n eventTypeBIds: string[];\r\n eventTypeCIds: string[];\r\n partnerCompanyIds: string[];\r\n createUserCodes: string[];\r\n handlerUserCodes: string[];\r\n observers: string[];\r\n dynamicTimeFilterId: number;\r\n}\r\n\r\nexport interface IEventGeneralFilterChange extends IEventGeneralFilter {\r\n notChanged: boolean;\r\n}\r\n\r\n// EventPageDashboardChart\r\nexport interface IEventPageDashboardChartProp {\r\n companyId: string;\r\n chartPanel: ISavedChartPanel;\r\n chartItems: IChartItem[];\r\n onShowChartPanelPropertiesDialog: (panelId: string) => void;\r\n}\r\n\r\nexport interface IEventPageDashboardChartState extends IEventGeneralFilter {\r\n isLoading: boolean;\r\n chartData: IReportChartData;\r\n chartId: string;\r\n reportId: string;\r\n parameterValues: IReportParameterValue[]\r\n}\r\n\r\nexport class EventPageDashboardChart extends React.Component {\r\n _isMounted: boolean;\r\n\r\n static getGeneralFilterFromState = (state: IEventPageFilterState): IEventGeneralFilter => {\r\n return {\r\n startDate: state?.selectedStartDate ? state.selectedStartDate : null,\r\n endDate: state?.selectedEndDate ? state.selectedEndDate : null,\r\n unitIds: state?.selectedUnitIds ? state.selectedUnitIds.filter(i => i !== Base.emptyGuid) : [],\r\n states: state?.selectedStateIds ? state.selectedStateIds.map(i => i.toInteger(true)).filter(i => i >= 0) : [],\r\n urgencyClassIds: state?.selectedUrgencyClassIds ? state.selectedUrgencyClassIds.filter(i => i !== Base.emptyGuid) : [],\r\n eventTypeIds: state?.selectedEventTypeIds ? state.selectedEventTypeIds.filter(i => i !== Base.emptyGuid) : [],\r\n eventTypeBIds: state?.selectedEventTypeBIds ? state.selectedEventTypeBIds.filter(i => i !== Base.emptyGuid) : [],\r\n eventTypeCIds: state?.selectedEventTypeCIds ? state.selectedEventTypeCIds.filter(i => i !== Base.emptyGuid) : [],\r\n partnerCompanyIds: state?.selectedPartnerCompanyIds ? state.selectedPartnerCompanyIds.filter(i => i !== Base.emptyGuid) : [],\r\n createUserCodes: state?.selectedCreateUserCodes ? state.selectedCreateUserCodes.filter(i => !!i) : [],\r\n handlerUserCodes: state?.selectedHandlerUserCodes ? state.selectedHandlerUserCodes.filter(i => !!i) : [],\r\n observers: state?.selectedObservers ? state.selectedObservers.filter(i => i !== Base.emptyGuid) : [],\r\n dynamicTimeFilterId: state?.selectedDynamicTimeFilterId ? parseInt(state.selectedDynamicTimeFilterId, 10) : 0\r\n };\r\n };\r\n\r\n static getStateFilterPropsFromGeneralFilter = (generalFilter: any): IEventPageFilterState => {\r\n return {\r\n selectedStartDate: generalFilter?.startDate ? generalFilter.startDate : 0,\r\n selectedEndDate: generalFilter?.endDate ? generalFilter.endDate : 0,\r\n selectedUnitIds: generalFilter?.unitIds?.length ? generalFilter.unitIds : [Base.emptyGuid],\r\n selectedStateIds: generalFilter?.states?.length ? generalFilter.states.map(i => i.toString(10)) : [EventStateFilter.All.toString(10)],\r\n selectedUrgencyClassIds: generalFilter?.urgencyClassIds?.length ? generalFilter.urgencyClassIds : [Base.emptyGuid],\r\n selectedEventTypeIds: generalFilter?.eventTypeIds?.length ? generalFilter.eventTypeIds : [Base.emptyGuid],\r\n selectedEventTypeBIds: generalFilter?.eventTypeBIds?.length ? generalFilter.eventTypeBIds : [Base.emptyGuid],\r\n selectedEventTypeCIds: generalFilter?.eventTypeCIds?.length ? generalFilter.eventTypeCIds : [Base.emptyGuid],\r\n selectedPartnerCompanyIds: generalFilter?.partnerCompanyIds?.length ? generalFilter.partnerCompanyIds : [Base.emptyGuid],\r\n selectedCreateUserCodes: generalFilter?.createUserCodes?.length ? generalFilter.createUserCodes : [\"\"],\r\n selectedHandlerUserCodes: generalFilter?.handlerUserCodes?.length ? generalFilter.handlerUserCodes : [\"\"],\r\n selectedObservers: generalFilter?.observers?.length ? generalFilter.observers : [Base.emptyGuid],\r\n selectedDynamicTimeFilterId: !Base.isNullOrUndefined(generalFilter?.dynamicTimeFilterId) ? generalFilter.dynamicTimeFilterId.toString(10) : \"0\"\r\n };\r\n };\r\n\r\n static getEventGeneralFilterChange(prevProps: IEventPageFilterState, props: IEventPageFilterState): IEventGeneralFilterChange {\r\n const prevValues = EventPageDashboardChart.getGeneralFilterFromState(prevProps);\r\n const values = EventPageDashboardChart.getGeneralFilterFromState(props);\r\n return {\r\n ...values,\r\n notChanged: (prevValues.startDate ?? -99).toString(10) === (values.startDate ?? -99).toString(10) &&\r\n (prevValues.endDate ?? -99).toString(10) === (values.endDate ?? -99).toString(10) &&\r\n Base.equalStrArrays(prevValues.unitIds, values.unitIds) &&\r\n Base.equalStrArrays(prevValues.states.map(i => i.toString(10)), values.states.map(i => i.toString(10))) &&\r\n Base.equalStrArrays(prevValues.urgencyClassIds, values.urgencyClassIds) &&\r\n Base.equalStrArrays(prevValues.eventTypeIds, values.eventTypeIds) &&\r\n Base.equalStrArrays(prevValues.eventTypeBIds, values.eventTypeBIds) &&\r\n Base.equalStrArrays(prevValues.eventTypeCIds, values.eventTypeCIds) &&\r\n Base.equalStrArrays(prevValues.partnerCompanyIds, values.partnerCompanyIds) &&\r\n Base.equalStrArrays(prevValues.createUserCodes, values.createUserCodes) &&\r\n Base.equalStrArrays(prevValues.handlerUserCodes, values.handlerUserCodes) &&\r\n Base.equalStrArrays(prevValues.observers, values.observers) &&\r\n prevValues.dynamicTimeFilterId.toString(10) === values.dynamicTimeFilterId.toString(10)\r\n };\r\n }\r\n\r\n static cloneGeneralFilter = (state: IEventGeneralFilter): IEventGeneralFilter => {\r\n return {\r\n startDate: state?.startDate,\r\n endDate: state?.endDate,\r\n unitIds: state?.unitIds ?? [],\r\n states: state?.states ?? [],\r\n urgencyClassIds: state?.urgencyClassIds ?? [],\r\n eventTypeIds: state?.eventTypeIds ?? [],\r\n eventTypeBIds: state?.eventTypeBIds ?? [],\r\n eventTypeCIds: state?.eventTypeCIds ?? [],\r\n partnerCompanyIds: state?.partnerCompanyIds ?? [],\r\n createUserCodes: state?.createUserCodes ?? [],\r\n handlerUserCodes: state?.handlerUserCodes ?? [],\r\n observers: state?.observers ?? [],\r\n dynamicTimeFilterId: state?.dynamicTimeFilterId ?? 0\r\n };\r\n };\r\n\r\n static cloneEventPageFilterState = (state: IEventPageFilterState): IEventPageFilterState => {\r\n return {\r\n selectedStartDate: state?.selectedStartDate,\r\n selectedEndDate: state?.selectedEndDate,\r\n selectedUnitIds: state?.selectedUnitIds ?? [Base.emptyGuid],\r\n selectedStateIds: state?.selectedStateIds ?? [EventStateFilter.All.toString(10)],\r\n selectedUrgencyClassIds: state?.selectedUrgencyClassIds ?? [Base.emptyGuid],\r\n selectedEventTypeIds: state?.selectedEventTypeIds ?? [Base.emptyGuid],\r\n selectedEventTypeBIds: state?.selectedEventTypeBIds ?? [Base.emptyGuid],\r\n selectedEventTypeCIds: state?.selectedEventTypeCIds ?? [Base.emptyGuid],\r\n selectedPartnerCompanyIds: state?.selectedPartnerCompanyIds ?? [Base.emptyGuid],\r\n selectedCreateUserCodes: state?.selectedCreateUserCodes ?? [\"\"],\r\n selectedHandlerUserCodes: state?.selectedHandlerUserCodes ?? [\"\"],\r\n selectedObservers: state?.selectedObservers ?? [Base.emptyGuid],\r\n selectedDynamicTimeFilterId: state?.selectedDynamicTimeFilterId ?? \"0\"\r\n };\r\n };\r\n\r\n getStateChangeFromProps = (props: IEventPageDashboardChartProp): any => {\r\n const chartItem = props.chartPanel && props.chartItems\r\n ? props.chartItems.find(i => i.reportName === props.chartPanel.reportId)\r\n : null;\r\n const reportFilterProps = EventPageDashboardChart.getStateFilterPropsFromGeneralFilter(props.chartPanel?.generalFilter);\r\n const result = {\r\n startDate: reportFilterProps.selectedStartDate ? reportFilterProps.selectedStartDate : null,\r\n endDate: reportFilterProps.selectedEndDate ? reportFilterProps.selectedEndDate : null,\r\n unitIds: reportFilterProps.selectedUnitIds ? reportFilterProps.selectedUnitIds.filter(i => i !== Base.emptyGuid) : [],\r\n states: reportFilterProps.selectedStateIds ? reportFilterProps.selectedStateIds.map(i => i.toInteger(true)).filter(i => i >= 0) : [],\r\n urgencyClassIds: reportFilterProps.selectedUrgencyClassIds ? reportFilterProps.selectedUrgencyClassIds.filter(i => i !== Base.emptyGuid) : [],\r\n eventTypeIds: reportFilterProps.selectedEventTypeIds ? reportFilterProps.selectedEventTypeIds.filter(i => i !== Base.emptyGuid) : [],\r\n eventTypeBIds: reportFilterProps.selectedEventTypeBIds ? reportFilterProps.selectedEventTypeBIds.filter(i => i !== Base.emptyGuid) : [],\r\n eventTypeCIds: reportFilterProps.selectedEventTypeCIds ? reportFilterProps.selectedEventTypeCIds.filter(i => i !== Base.emptyGuid) : [],\r\n partnerCompanyIds: reportFilterProps.selectedPartnerCompanyIds ? reportFilterProps.selectedPartnerCompanyIds.filter(i => i !== Base.emptyGuid) : [],\r\n createUserCodes: reportFilterProps.selectedCreateUserCodes ? reportFilterProps.selectedCreateUserCodes.filter(i => !!i) : [],\r\n handlerUserCodes: reportFilterProps.selectedHandlerUserCodes ? reportFilterProps.selectedHandlerUserCodes.filter(i => !!i) : [],\r\n observers: reportFilterProps.selectedObservers ? reportFilterProps.selectedObservers.filter(i => i !== Base.emptyGuid) : [],\r\n dynamicTimeFilterId: reportFilterProps.selectedDynamicTimeFilterId ? parseInt(reportFilterProps.selectedDynamicTimeFilterId, 10) : 0,\r\n reportId: props.chartPanel?.reportId ?? \"\",\r\n chartId: props.chartPanel?.chartId ?? \"\",\r\n parameterValues: props.chartPanel && chartItem ? props.chartPanel.getReportParameterValues(chartItem) : []\r\n };\r\n return result;\r\n };\r\n\r\n constructor(props: IEventPageDashboardChartProp) {\r\n super(props);\r\n this.state = {\r\n ...this.getStateChangeFromProps(props),\r\n chart: \"\",\r\n isLoading: true\r\n };\r\n }\r\n\r\n setLoading = (value: boolean) => {\r\n if (!this._isMounted) return;\r\n this.setState({ isLoading: value });\r\n };\r\n\r\n createChart = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!this._isMounted || !props.chartPanel || !props.chartItems || state.parameterValues.length < 1) return;\r\n this.setLoading(true);\r\n // const chart = await AppUtils.callService(() => eventService.getChart(props.chartPanel.id, props.companyId, props.chartPanel.reportId, props.chartPanel.chartId,\r\n // state.startDate, state.endDate, state.dynamicTimeFilterId, state.unitIds, state.states, state.urgencyClassIds, state.eventTypeIds, state.eventTypeBIds, state.eventTypeCIds,\r\n // state.partnerCompanyIds, state.createUserCodes, state.handlerUserCodes, state.observers, state.parameterValues), false, true, () => this.setLoading(false));\r\n const chartData = await AppUtils.callService(() => eventService.getChart(props.chartPanel.id, props.companyId, props.chartPanel.reportId, props.chartPanel.chartId,\r\n state.startDate, state.endDate, state.dynamicTimeFilterId, state.unitIds, state.states, state.urgencyClassIds, state.eventTypeIds, state.eventTypeBIds, state.eventTypeCIds,\r\n state.partnerCompanyIds, state.createUserCodes, state.handlerUserCodes, state.observers, state.parameterValues), false, true, () => this.setLoading(false));\r\n if (!this._isMounted) return;\r\n this.setState({\r\n chartData\r\n //chart\r\n });\r\n };\r\n\r\n componentDidUpdate(prevProps: IEventPageDashboardChartProp) {\r\n const state = this.state;\r\n const prevCompanyId = prevProps.companyId;\r\n const newState = this.getStateChangeFromProps(this.props);\r\n const prevChartId = state.chartId;\r\n const chartId = newState.chartId;\r\n const prevReportId = state.reportId;\r\n const reportId = newState.reportId;\r\n const prevStartDate = state.startDate ?? -99;\r\n const startDate = newState.startDate ?? -99;\r\n const prevEndDate = state.endDate ?? -99;\r\n const endDate = newState.endDate ?? -99;\r\n const prevStates = state.states ? state.states : [];\r\n const states = newState.states ? newState.states : [];\r\n const prevDynamicTimeFilterId = state.dynamicTimeFilterId ?? 0;\r\n const dynamicTimeFilterId = newState.dynamicTimeFilterId ?? 0;\r\n const prevParameterValues = state.parameterValues ?? [];\r\n const parameterValues = newState.parameterValues ?? [];\r\n if (prevCompanyId === this.props.companyId &&\r\n prevReportId === reportId && prevChartId === chartId &&\r\n prevStartDate.toString(10) === startDate.toString(10) &&\r\n prevEndDate.toString(10) === endDate.toString(10) &&\r\n prevDynamicTimeFilterId.toString(10) === dynamicTimeFilterId.toString(10) &&\r\n Base.equalStrArrays(state.unitIds, newState.unitIds) &&\r\n Base.equalStrArrays(prevStates.map(i => i.toString(10)), states.map(i => i.toString(10))) &&\r\n Base.equalStrArrays(state.urgencyClassIds, newState.urgencyClassIds) &&\r\n Base.equalStrArrays(state.eventTypeIds, newState.eventTypeIds) &&\r\n Base.equalStrArrays(state.eventTypeBIds, newState.eventTypeBIds) &&\r\n Base.equalStrArrays(state.eventTypeCIds, newState.eventTypeCIds) &&\r\n Base.equalStrArrays(state.partnerCompanyIds, newState.partnerCompanyIds) &&\r\n Base.equalStrArrays(state.createUserCodes, newState.createUserCodes) &&\r\n Base.equalStrArrays(state.handlerUserCodes, newState.handlerUserCodes) &&\r\n Base.equalStrArrays(state.observers, newState.observers) &&\r\n JSON.stringify(prevParameterValues) === JSON.stringify(parameterValues)) return;\r\n this.setState({\r\n ...newState\r\n }, this.createChart);\r\n }\r\n\r\n componentDidMount(): void {\r\n this._isMounted = true;\r\n this.createChart();\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this._isMounted = false;\r\n }\r\n \r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const chartPanel = props.chartPanel;\r\n if (!chartPanel) return null;\r\n return (\r\n \r\n );\r\n }\r\n}","// EventFilterDrawer - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Grid, MenuItem, Select, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { CheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/CheckboxDropdown\";\r\nimport { TreeCheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/TreeCheckboxDropdown\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { EventStateFilter } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { DatePicker } from \"../../framework/DateTime/DatePicker\";\r\nimport { DrawerContent } from \"../../framework/Drawer/DrawerContent\";\r\nimport { FilterButtons } from \"../../framework/Filters/FilterButtons\";\r\nimport { FilterSearchField } from \"../../framework/Filters/FilterSearchField\";\r\nimport { FormSectionTitle } from \"../../framework/Form/FormSectionTitle\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { PageFilterConditionDrawer } from \"../../framework/Page/PageFilterConditionDrawer\";\r\nimport { EventPageDashboardChart, EventTypeNotSetId, IEventPageFilterLists, IEventPageFilterState, IEventPageFilterStateWithoutDates } from \"../EventPageDashboardChart/EventPageDashboardChart\";\r\n\r\n//EventFilterDrawer\r\nexport interface IEventFilterDrawerProp extends IEventPageFilterLists, IEventPageFilterState {\r\n open: boolean;\r\n classes?: string;\r\n filter: IListFilterItem;\r\n canRemoveSharedFilters: boolean;\r\n stateIsReadOnly?: boolean;\r\n onSaveFilter: (saveAs: boolean, onGetGeneralFilter: () => any) => void;\r\n onRemoveFilter: (filterId: string) => void;\r\n onOk: (closeDialog: boolean, filterState: IEventPageFilterState) => any;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IEventFilterDrawerState extends IEventPageFilterStateWithoutDates {\r\n startDateStr: string;\r\n endDateStr: string;\r\n startEndDateDisabled: boolean;\r\n}\r\n\r\nexport class EventFilterDrawer extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n getStateFromProps = (props: IEventFilterDrawerProp): IEventFilterDrawerState => {\r\n return {\r\n startDateStr: props.selectedStartDate ? Base.timeToDateStr(props.selectedStartDate) : \"\",\r\n endDateStr: props.selectedEndDate ? Base.timeToDateStr(props.selectedEndDate) : \"\",\r\n selectedUnitIds: props.selectedUnitIds.slice(0),\r\n selectedStateIds: props.selectedStateIds.slice(0),\r\n selectedUrgencyClassIds: props.selectedUrgencyClassIds.slice(0),\r\n selectedEventTypeIds: props.selectedEventTypeIds.slice(0),\r\n selectedEventTypeBIds: props.selectedEventTypeBIds.slice(0),\r\n selectedEventTypeCIds: props.selectedEventTypeCIds.slice(0),\r\n selectedPartnerCompanyIds: props.selectedPartnerCompanyIds.slice(0),\r\n selectedCreateUserCodes: props.selectedCreateUserCodes.slice(0),\r\n selectedHandlerUserCodes: props.selectedHandlerUserCodes.slice(0),\r\n selectedObservers: props.selectedObservers.slice(0),\r\n selectedDynamicTimeFilterId: props.selectedDynamicTimeFilterId,\r\n startEndDateDisabled: props.selectedDynamicTimeFilterId !== props.dynamicTimeFilters[0].id\r\n };\r\n };\r\n\r\n constructor(props: IEventFilterDrawerProp) {\r\n super(props);\r\n this.state = this.getStateFromProps(props);\r\n this.orgStateHash = this.getSaveDataFromState(props, this.state).hash;\r\n }\r\n\r\n componentDidUpdate(prevProps: IEventFilterDrawerProp, prevState: IEventFilterDrawerState): void {\r\n const props = this.props;\r\n if (!prevProps || prevProps.filter?.getHash() === props.filter?.getHash()) return;\r\n const state = this.getStateFromProps(props);\r\n this.setState(state);\r\n this.orgStateHash = this.getSaveDataFromState(props, state).hash;\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"selectedDynamicTimeFilterId\") {\r\n if (value.toInteger() > 0) {\r\n this.setState({ selectedDynamicTimeFilterId: value, startDateStr: \"\", endDateStr: \"\", startEndDateDisabled: true });\r\n } else {\r\n this.setState({ selectedDynamicTimeFilterId: value, startEndDateDisabled: false });\r\n }\r\n }\r\n };\r\n\r\n handleStartDateChange = (value: string) => {\r\n this.setState({ startDateStr: value });\r\n };\r\n\r\n handleEndDateChange = (value: string) => {\r\n this.setState({ endDateStr: value });\r\n };\r\n\r\n getSaveDataFromState = (props: IEventFilterDrawerProp, state: IEventFilterDrawerState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"startDate\", state.startDateStr);\r\n result.append(\"endDate\", state.endDateStr);\r\n result.append(\"selectedStateIds\", state.selectedStateIds);\r\n result.append(\"selectedUnitIds\", state.selectedUnitIds);\r\n result.append(\"selectedUrgencyClassIds\", state.selectedUrgencyClassIds);\r\n result.append(\"selectedEventTypeIds\", state.selectedEventTypeIds);\r\n result.append(\"selectedEventTypeBIds\", state.selectedEventTypeBIds);\r\n result.append(\"selectedEventTypeCIds\", state.selectedEventTypeCIds);\r\n result.append(\"selectedPartnerCompanyIds\", state.selectedPartnerCompanyIds);\r\n result.append(\"selectedCreateUserCodes\", state.selectedCreateUserCodes);\r\n result.append(\"selectedHandlerUserCodes\", state.selectedHandlerUserCodes);\r\n result.append(\"selectedObservers\", state.selectedObservers);\r\n result.append(\"selectedDynamicTimeFilterId\", state.selectedDynamicTimeFilterId ? state.selectedDynamicTimeFilterId : null);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n static filterIsSet = (filterLists: IEventPageFilterLists, filterState: IEventPageFilterState): boolean => {\r\n return !!filterState.selectedStartDate || !!filterState.selectedEndDate ||\r\n !(Base.equalStrArrays(filterState.selectedUnitIds, [filterLists.units[0].id]) &&\r\n Base.equalStrArrays(filterState.selectedStateIds, [filterLists.states[0].id]) &&\r\n Base.equalStrArrays(filterState.selectedUrgencyClassIds, [filterLists.urgencyClasses[0].id]) &&\r\n Base.equalStrArrays(filterState.selectedEventTypeIds, [filterLists.eventTypes[0].id]) &&\r\n Base.equalStrArrays(filterState.selectedEventTypeBIds, [filterLists.eventTypeBs[0].id]) &&\r\n Base.equalStrArrays(filterState.selectedEventTypeCIds, [filterLists.eventTypeCs[0].id]) &&\r\n Base.equalStrArrays(filterState.selectedPartnerCompanyIds, [filterLists.partners[0].id]) &&\r\n Base.equalStrArrays(filterState.selectedCreateUserCodes, [filterLists.creators[0].id]) &&\r\n Base.equalStrArrays(filterState.selectedHandlerUserCodes, [filterLists.handlers[0].id]) &&\r\n Base.equalStrArrays(filterState.selectedObservers, [filterLists.observers[0].id]) &&\r\n filterState.selectedDynamicTimeFilterId === filterLists.dynamicTimeFilters[0].id);\r\n };\r\n\r\n handleSaveFilter = async (saveAs: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage)) return false;\r\n const selectedStartDate = state.startDateStr ? state.startDateStr.toDate().getTime() : null;\r\n const selectedEndDate = state.endDateStr ? state.endDateStr.toDate().getTime() : null;\r\n if (!saveAs) {\r\n props.onOk(false, EventPageDashboardChart.cloneEventPageFilterState({ ...state, selectedStartDate, selectedEndDate }));\r\n await this.props.onSaveFilter(false, null);\r\n } else {\r\n await this.props.onSaveFilter(true, () => {\r\n return props.onOk(false, EventPageDashboardChart.cloneEventPageFilterState({ ...state, selectedStartDate, selectedEndDate }));\r\n });\r\n }\r\n };\r\n\r\n handleClear = () => {\r\n const props = this.props;\r\n this.setState({\r\n startDateStr: \"\",\r\n endDateStr: \"\",\r\n selectedUnitIds: [props.units[0].id],\r\n selectedStateIds: [props.states[0].id],\r\n selectedUrgencyClassIds: [props.urgencyClasses[0].id],\r\n selectedEventTypeIds: [props.eventTypes[0].id],\r\n selectedEventTypeBIds: [props.eventTypeBs[0].id],\r\n selectedEventTypeCIds: [props.eventTypeCs[0].id],\r\n selectedPartnerCompanyIds: [props.partners[0].id],\r\n selectedCreateUserCodes: [props.creators[0].id],\r\n selectedHandlerUserCodes: [props.handlers[0].id],\r\n selectedObservers: [props.observers[0].id],\r\n selectedDynamicTimeFilterId: props.dynamicTimeFilters[0].id\r\n });\r\n };\r\n\r\n handleSave = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage)) return false;\r\n const selectedStartDate = state.startDateStr ? state.startDateStr.toDate().getTime() : null;\r\n const selectedEndDate = state.endDateStr ? state.endDateStr.toDate().getTime() : null;\r\n props.onOk(true, EventPageDashboardChart.cloneEventPageFilterState({ ...state, selectedStartDate, selectedEndDate }));\r\n };\r\n\r\n handleCancel = async (checkChanges: boolean) => {\r\n AppUtils.cancelEditDialog(checkChanges, this.getSaveDataFromState(this.props, this.state).hash, this.orgStateHash, this.handleSave, this.props.onCancel, Translations.YouHaveUnapprovedChangesDoYouWantApproveChanges);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n this.handleCancel(false)}\r\n >\r\n \r\n {!!props.onSaveFilter && !!props.onRemoveFilter &&\r\n \r\n }\r\n {Translations.Event}\r\n \r\n \r\n \r\n {!state.startEndDateDisabled &&\r\n \r\n }\r\n {state.startEndDateDisabled &&\r\n \r\n }\r\n \r\n \r\n {!state.startEndDateDisabled &&\r\n \r\n }\r\n {state.startEndDateDisabled &&\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ selectedUnitIds })}\r\n />\r\n \r\n \r\n \r\n \r\n this.setState({ selectedStateIds })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ selectedUrgencyClassIds })}\r\n />\r\n \r\n \r\n \r\n \r\n this.setState({ selectedPartnerCompanyIds })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ selectedCreateUserCodes })}\r\n />\r\n \r\n \r\n \r\n \r\n this.setState({ selectedHandlerUserCodes })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ selectedObservers })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n {Translations.Identification}\r\n \r\n \r\n \r\n this.setState({ selectedEventTypeIds })}\r\n />\r\n \r\n \r\n \r\n \r\n this.setState({ selectedEventTypeBIds })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ selectedEventTypeCIds })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n actions={\r\n this.handleCancel(false)}\r\n onClear={this.handleClear}\r\n />\r\n }\r\n />\r\n \r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { Base } from \"../../framework/base\";\r\nimport { EventState, EventUserState } from \"../../models/enums\";\r\nimport { Translations } from \"../../models/translations\";\r\n\r\n// EventListStateCol\r\nexport interface IEventListStateColItem {\r\n isRead: boolean;\r\n userState: EventUserState;\r\n imported: boolean;\r\n exported: boolean;\r\n locked: boolean;\r\n state: EventState;\r\n stateStr: string;\r\n urgencyClassCode: string;\r\n urgencyClassColor: string;\r\n\r\n getModifyDate(): number;\r\n}\r\n\r\nexport interface IEventListStateColProp {\r\n reverse?: boolean;\r\n item: IEventListStateColItem;\r\n}\r\n\r\nexport class EventListStateCol extends React.Component {\r\n render() {\r\n const nowDate = Date.now();\r\n const props = this.props;\r\n const item = props.item;\r\n return (\r\n
\r\n {!props.reverse && !item.isRead &&\r\n \r\n }\r\n {item.stateStr}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {item.userState === EventUserState.NotApproved &&\r\n \r\n }\r\n {item.userState === EventUserState.Approved &&\r\n \r\n }\r\n {item.imported &&\r\n \r\n }\r\n {item.exported &&\r\n \r\n }\r\n {(nowDate - item.getModifyDate()) <= Base.oneHourInMs &&\r\n \r\n }\r\n {item.locked &&\r\n \r\n }\r\n {!!props.reverse && !item.isRead &&\r\n \r\n }\r\n
\r\n );\r\n }\r\n}","// PrintOptionsDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { TreeCheckBoxDropdownItems } from \"ui/Scripts/source/components/framework/Dropdown/TreeCheckboxDropdown/TreeCheckboxDropdownItems\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { ApplicationPermissionType, ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { ISavedPrint, SavedPrint } from \"../../../models/common/savedPrint\";\r\nimport * as printService from \"../../../models/services/printService\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogButtons } from \"../Dialog/DialogButtons\";\r\nimport { FormField } from \"../FormField\";\r\nimport { GridRow } from \"../Grid/GridRow\";\r\n\r\n//PrintOptionsDialog\r\nexport interface IPrintOptionsDialogProp {\r\n classes?: string;\r\n print: ISavedPrint;\r\n printableFields: IIdTitleNode[];\r\n applicationPermissionType: ApplicationPermissionType;\r\n reservedNames: string[];\r\n onPrintSaved: (print: ISavedPrint) => void;\r\n onPrintRemoved: (printId: string) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IPrintOptionsDialogState {\r\n name: string;\r\n fields: string[];\r\n}\r\n\r\nexport class PrintOptionsDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n getStateFromProps = (props: IPrintOptionsDialogProp): IPrintOptionsDialogState => {\r\n return {\r\n name: props.print.title,\r\n fields: props.print.fields.slice(0)\r\n };\r\n };\r\n\r\n constructor(props: IPrintOptionsDialogProp) {\r\n super(props);\r\n this.state = this.getStateFromProps(props);\r\n this.orgStateHash = this.getSaveDataFromState(props, this.state).hash;\r\n }\r\n\r\n componentDidUpdate(prevProps: IPrintOptionsDialogProp, prevState: IPrintOptionsDialogState): void {\r\n const props = this.props;\r\n if (!prevProps || prevProps.print.getHash() === props.print.getHash()) return;\r\n const state = this.getStateFromProps(props);\r\n this.setState(state);\r\n this.orgStateHash = this.getSaveDataFromState(props, state).hash;\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"name\") {\r\n this.setState({ name: value });\r\n }\r\n };\r\n\r\n handleSetSelectedField = (selected: boolean, fieldId: string) => {\r\n if (!fieldId) return;\r\n const fields = this.state.fields.filter(i => i !== fieldId);\r\n if (selected) {\r\n fields.push(fieldId);\r\n }\r\n this.setState({\r\n fields\r\n });\r\n };\r\n\r\n getSaveDataFromState = (props: IPrintOptionsDialogProp, state: IPrintOptionsDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"fields\", state.fields);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.name) {\r\n AppUtils.showErrorMessage(Translations.NameMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (props.reservedNames.find(i => i.equalIgnoreCase(state.name))) {\r\n AppUtils.showErrorMessage(Translations.NameIsAlreadyInUse);\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n handleSave = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n const print = new SavedPrint(props.print);\r\n if (!props.print.defaultPrint) {\r\n print.id = state.name;\r\n print.title = state.name;\r\n }\r\n print.fields = state.fields.slice(0);\r\n const saveData = new SaveDataObj();\r\n saveData.append(\"applicationPermissionType\", props.applicationPermissionType);\r\n saveData.append(\"orgId\", props.print.id);\r\n saveData.append(\"item\", print);\r\n //Call server\r\n const result = await AppUtils.callService(() => printService.savePrint(saveData.obj));\r\n if (!result) return null;\r\n props.onPrintSaved(print);\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n if (props.print.isNew()) return;\r\n const confirmationResult = await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemovePrintParameter, props.print.title));\r\n if (confirmationResult !== ConfirmationDialogResult.Yes) return;\r\n const saveData = new SaveDataObj();\r\n saveData.append(\"applicationPermissionType\", props.applicationPermissionType);\r\n saveData.append(\"id\", props.print.id);\r\n const result = await AppUtils.callService(() => printService.removePrint(saveData.obj), false);\r\n if (!result) return;\r\n props.onPrintRemoved(props.print.id);\r\n };\r\n\r\n handleCancel = async (checkChanges: boolean) => {\r\n AppUtils.cancelEditDialog(checkChanges, this.getSaveDataFromState(this.props, this.state).hash, this.orgStateHash, this.handleSave, this.props.onCancel, Translations.YouHaveUnapprovedChangesDoYouWantApproveChanges);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ fields: ids })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n actions={\r\n this.handleCancel(false)}\r\n onRemove={!props.print.isNew() && !props.print.defaultPrint ? this.handleRemove : null}\r\n onSave={this.handleSave}\r\n />\r\n }\r\n onClose={() => this.handleCancel(true)}/>\r\n );\r\n }\r\n}","import { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { postApiCall } from \"./tokenService\";\r\n\r\nexport const savePrint = (obj: any): Promise => {\r\n return postApiCall(\"api/print/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removePrint = (obj: any): Promise => {\r\n return postApiCall(\"api/print/remove\", ApiSuccess, JSON.stringify(obj));\r\n};","import * as React from \"react\";\r\n\r\nexport interface IMapMarker {\r\n tooltip: string;\r\n classes?: string;\r\n}\r\n\r\nexport class MapMarker extends React.Component {\r\n render() {\r\n const props = this.props;\r\n //const coordProps: IMapCoords = props;\r\n return (\r\n
// {...coordProps}\r\n );\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\n\r\nexport interface ITreeNode {\r\n id: string;\r\n name: string;\r\n comment: string;\r\n children: ITreeNode[];\r\n parent: ITreeNode;\r\n level: number;\r\n collapsed: boolean;\r\n disabled: boolean;\r\n\r\n getIsRoot(): boolean;\r\n getHasChildren(): boolean;\r\n getParentIsRoot(): boolean;\r\n getAncesterIsCollapsed(): boolean;\r\n getSiblings(): ITreeNode[];\r\n getSiblingNames(lowerCase: boolean): string[];\r\n getTreeNodeById(id: string): ITreeNode;\r\n setCollapsed(value: boolean);\r\n getAsList(list: ITreeNode[], level: number): ITreeNode[];\r\n}\r\n\r\nexport class TreeNode implements ITreeNode {\r\n id: string;\r\n name: string;\r\n comment: string;\r\n children: TreeNode[];\r\n parent: TreeNode;\r\n level: number;\r\n collapsed: boolean;\r\n disabled: boolean;\r\n\r\n constructor();\r\n constructor(obj: ITreeNode);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.level = obj && obj.level || 0;\r\n this.collapsed = obj && obj.collapsed || false;\r\n this.disabled = obj && obj.disabled || false;\r\n this.children = [];\r\n this.parent = null;\r\n if (obj && obj.children) {\r\n this.children = Base.getTypedArray(obj.children, TreeNode);\r\n for (const child of this.children) {\r\n child.parent = this;\r\n }\r\n }\r\n }\r\n\r\n getIsRoot(): boolean {\r\n return !this.parent;\r\n }\r\n\r\n getHasChildren(): boolean {\r\n return this.children.length > 0;\r\n }\r\n\r\n getParentIsRoot(): boolean {\r\n if (!this.parent) return false;\r\n return this.parent.getIsRoot();\r\n }\r\n\r\n getAncesterIsCollapsed(): boolean {\r\n if (!this.parent) return false;\r\n if (this.parent.collapsed) return true;\r\n return this.parent.getAncesterIsCollapsed();\r\n }\r\n\r\n getSiblings(): ITreeNode[] {\r\n if (this.getIsRoot()) return [];\r\n return this.parent.children.filter(i => i.id !== this.id);\r\n }\r\n\r\n getTreeNodeById(id: string): ITreeNode {\r\n if (!id) return null;\r\n if (this.id.equalIgnoreCase(id)) return this;\r\n for (const child of this.children) {\r\n const childResult = child.getTreeNodeById(id);\r\n if (childResult) return childResult;\r\n }\r\n return null;\r\n }\r\n\r\n getSiblingNames(lowerCase: boolean): string[] {\r\n if (!this.parent) return [];\r\n return this.parent.children.filter(i => i.id !== this.id).map(i => lowerCase ? i.name.toLowerCase() : i.name);\r\n }\r\n\r\n setCollapsed(value: boolean) {\r\n this.collapsed = value;\r\n }\r\n\r\n getAsList(list: ITreeNode[], level: number = 0): ITreeNode[] {\r\n list.push(this);\r\n this.level = level;\r\n if (this.children.length < 1) return list;\r\n for (const child of this.children) {\r\n child.getAsList(list, level + 1);\r\n }\r\n return list;\r\n }\r\n\r\n static getTreeNodeById(items: ITreeNode[], id: string): ITreeNode {\r\n if (!items || items.length < 1) return null;\r\n for (const item of items) {\r\n const result = item.getTreeNodeById(id);\r\n if (!result) continue;\r\n return result;\r\n }\r\n return null;\r\n }\r\n \r\n static getTreeNodes(items: IIdTitleNode[], parent: ITreeNode = null, level: number = 0): ITreeNode[] {\r\n if (!items || items.length < 1) return [];\r\n const result: ITreeNode[] = [];\r\n for (const item of items) {\r\n const treeNode = new TreeNode();\r\n treeNode.id = item.id;\r\n treeNode.name = item.title;\r\n treeNode.comment = \"\";\r\n treeNode.children = TreeNode.getTreeNodes(item.children, treeNode, level + 1);\r\n treeNode.parent = parent;\r\n treeNode.level = level;\r\n treeNode.collapsed = false;\r\n treeNode.disabled = !item.active;\r\n result.push(treeNode);\r\n }\r\n return result;\r\n }\r\n}","import DoNotDisturbIcon from \"@mui/icons-material/DoNotDisturb\";\r\nimport React from \"react\";\r\nimport { ListStateIcon } from \"../ListStateIcon/ListStateIcon\";\r\n\r\ninterface ListStateIconCanceledProps {\r\n color?: string;\r\n noMargin?: boolean;\r\n tooltip?: string;\r\n}\r\n\r\nexport const ListStateIconCanceled = ({\r\n noMargin,\r\n tooltip,\r\n color = \"error\",\r\n}: ListStateIconCanceledProps) => (\r\n \r\n);\r\n","import { Box, ListItemButton, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ITreeNode } from \"../../../../models/common/treeNode\";\r\nimport { ListStateIconCanceled } from \"../../List/ListStateIconCanceled\";\r\nimport { ListStateIconExpanded } from \"../../List/ListStateIconExpanded\";\r\nimport { ListStateIconHome } from \"../../List/ListStateIconHome\";\r\n\r\nexport interface IUiTreeNodeProp {\r\n classes?: string;\r\n node: ITreeNode;\r\n selectedId?: string;\r\n isFirstNode: boolean;\r\n hideDisabledIcon?: boolean;\r\n onClick: (id: string) => void;\r\n onDoubleClick: () => void;\r\n onSetCollapsed: (id: string, value: boolean) => void;\r\n}\r\n\r\nexport class UiTreeNode extends React.Component {\r\n handleNodeClick = (e) => {\r\n const props = this.props;\r\n e.stopPropagation();\r\n if (props.node.disabled) return;\r\n props.onClick(props.node.id);\r\n };\r\n\r\n handleNodeDoubleClick = (e) => {\r\n const props = this.props;\r\n e.stopPropagation();\r\n if (props.node.disabled) return;\r\n props.onDoubleClick();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const node = props.node;\r\n if (!node || (node.parent && node.getAncesterIsCollapsed())) return null;\r\n const hasChildren = node.children.length > 0;\r\n const isRoot = node.getIsRoot();\r\n let selectedId = props.selectedId;\r\n if (!props.selectedId && isRoot) {\r\n selectedId = node.id;\r\n }\r\n return (\r\n \r\n \r\n {!isRoot && !props.isFirstNode && (\r\n props.onSetCollapsed(node.id, !node.collapsed)\r\n : null\r\n }\r\n />\r\n )}\r\n \r\n {!props.hideDisabledIcon && node.disabled ? : null}\r\n \r\n {node.name}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","import { List } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ITreeNode, TreeNode } from \"../../../../models/common/treeNode\";\r\nimport { UiTreeNode } from \"../UiTreeNode\";\r\n\r\nexport interface IUiTreeProp {\r\n classes?: string;\r\n firstColumnTitle: string;\r\n nodes: ITreeNode[];\r\n selectedId?: string;\r\n isFirstNode: boolean;\r\n hideDisabledIcon?: boolean;\r\n onClick: (id: string) => void;\r\n onDoubleClick?: () => void;\r\n onSetCollapsed: (id: string, value: boolean) => void;\r\n}\r\n\r\nexport interface IUiTreeState {\r\n nodes: ITreeNode[];\r\n}\r\n\r\nexport class UiTree extends React.Component {\r\n constructor(props: IUiTreeProp) {\r\n super(props);\r\n this.state = {\r\n nodes: props.nodes.map(i => new TreeNode(i))\r\n };\r\n }\r\n \r\n render() {\r\n const props = this.props;\r\n const nodes = props.nodes;\r\n if (!nodes) return null;\r\n return (\r\n \r\n {nodes.map((node, index) =>\r\n \r\n )}\r\n \r\n );\r\n }\r\n}","//SelectUnitDialog\r\n//***********************************************************************************************************************\r\nimport { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { IIdTitleNode, IdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ITreeNode, TreeNode } from \"../../../../models/common/treeNode\";\r\nimport { Dialog } from \"../../Dialog/Dialog\";\r\nimport { UiTree } from \"../../Tree/UiTree\";\r\n\r\n//SelectUnitTree\r\nexport interface ISelectUnitTreeProps {\r\n classes?: string;\r\n hideDisabledIcon?: boolean;\r\n nodes: IIdTitleNode[];\r\n firstColumnTitle: string;\r\n selectedId: string;\r\n margin?: string | number;\r\n onClick: (id: string) => void;\r\n}\r\n\r\nexport interface ISelectUnitTreeState {\r\n treeNode: ITreeNode;\r\n nodes: ITreeNode[];\r\n}\r\n\r\nexport class SelectUnitTree extends React.Component {\r\n static defaultProps = {\r\n margin: \"0 -1.5rem\",\r\n };\r\n\r\n constructor(props: ISelectUnitTreeProps) {\r\n super(props);\r\n const treeNodes = TreeNode.getTreeNodes(props.nodes);\r\n this.state = {\r\n treeNode: treeNodes.length > 0 ? treeNodes[0] : null,\r\n nodes: treeNodes.length > 0 ? treeNodes[0].getAsList([], 0) : []\r\n };\r\n }\r\n\r\n handleSetCollapsed = (id: string, value: boolean) => {\r\n const state = this.state;\r\n if (!id || !state.treeNode) return;\r\n const treeNode = new TreeNode(state.treeNode);\r\n const node = treeNode.getTreeNodeById(id);\r\n if (!node) return;\r\n node.collapsed = value;\r\n this.setState({\r\n treeNode,\r\n nodes: treeNode.getAsList([], 0),\r\n });\r\n this.props.onClick(id);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\n//SelectUnitDialog\r\nexport interface ISelectUnitDialogProps {\r\n classes?: string;\r\n hideDisabledIcon?: boolean;\r\n nodes: IIdTitleNode[];\r\n title: string;\r\n firstColumnTitle: string;\r\n selectedId: string;\r\n onOk: (node: IIdTitleNode) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface ISelectUnitDialogState {\r\n selectedId: string;\r\n}\r\n\r\nexport class SelectUnitDialog extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n selectedId: props.selectedId\r\n };\r\n }\r\n\r\n handleOk = () => {\r\n const state = this.state;\r\n if (!state.selectedId) return;\r\n const node = IdTitleNode.getById(this.props.nodes, state.selectedId);\r\n if (!node) return;\r\n this.props.onOk(node);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n this.setState({ selectedId: id })}\r\n />\r\n }\r\n buttons={[\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: props.onCancel },\r\n { title: Translations.OK, variant: \"confirmation\", onClick: this.handleOk, disabled: !state.selectedId },\r\n ]}\r\n />\r\n );\r\n }\r\n}","//ToolButton\r\n//***********************************************************************************************************************\r\nimport { Button, IconButton, Tooltip } from \"@mui/material\";\r\nimport * as React from \"react\";\r\n\r\nexport interface IToolButtonProp {\r\n removeDefaultClasses?: boolean;\r\n stopPropagation?: boolean;\r\n title?: string | React.ReactNode;\r\n classes?: string;\r\n variant: \"outlined\" | \"contained\" | \"text\" | \"icon\";\r\n tooltip?: string;\r\n icon?: React.ReactNode;\r\n disabled?: boolean;\r\n onClick: () => void;\r\n}\r\n\r\nexport class ToolButton extends React.Component {\r\n handleClick = (e) => {\r\n const props = this.props;\r\n if (!!props.disabled || !props.onClick) return;\r\n if (props.stopPropagation) {\r\n e.stopPropagation();\r\n }\r\n props.onClick();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const tooltip = props.tooltip ? props.tooltip : (typeof props.title === \"string\" ? props.title : null);\r\n return (\r\n \r\n \r\n {props.variant !== \"icon\"\r\n ? (\r\n \r\n )\r\n : (\r\n {props.icon}\r\n )}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\n// export interface IToolAddFileButtonProp {\r\n// removeDefaultClasses?: boolean;\r\n// stopPropagation?: boolean;\r\n// accept?: string;\r\n// title?: string | JSX.Element;\r\n// tooltip?: string;\r\n// classes?: string;\r\n// disabled?: boolean;\r\n// fileInputName: string;\r\n// onChange: (fileList: FileList) => void;\r\n// }\r\n\r\n// export class ToolAddFileButton extends React.Component {\r\n// handleClick = (e) => {\r\n// const props = this.props;\r\n// if (props.stopPropagation) {\r\n// e.stopPropagation();\r\n// }\r\n// };\r\n\r\n// handleChange = (e: React.ChangeEvent) => {\r\n// const props = this.props;\r\n// if (props.disabled) return;\r\n// if (props.stopPropagation) {\r\n// e.stopPropagation();\r\n// }\r\n// if (!e.target.files || e.target.files.length < 1) return;\r\n// this.props.onChange(e.target.files);\r\n// };\r\n\r\n// render() {\r\n// const props = this.props;\r\n// const hasTitle = !!props.title;\r\n// const tooltip = props.tooltip ? props.tooltip : (typeof props.title === \"string\" ? props.title : null);\r\n// const buttonClasses = (props.removeDefaultClasses ? \"\" : \"btn btn-tool\") + (props.classes ? \" \" + props.classes : \"\") + (props.disabled ? \" disabled\" : \"\") + (hasTitle ? \" text\" : \"\");\r\n// if (!props.disabled) {\r\n// return (\r\n// \r\n// );\r\n// }\r\n// return (\r\n// \r\n// );\r\n// }\r\n// }","import * as React from \"react\";\r\nimport { ToolButton } from \"ui/Scripts/source/components/framework/Button/ToolButton\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport FullscreenIcon from \"@mui/icons-material/Fullscreen\";\r\nimport FullscreenExitIcon from \"@mui/icons-material/FullscreenExit\";\r\nimport { Box, TextField, Typography } from \"@mui/material\";\r\n\r\n// LongText\r\n// ***********************************************************************************************************************\r\nexport interface ILongTextProp {\r\n autoFocus?: boolean;\r\n classes?: string;\r\n disabled?: boolean;\r\n expandable?: boolean;\r\n maxLength?: number;\r\n name?: string;\r\n required?: boolean;\r\n title?: string;\r\n titleClasses?: string;\r\n value: string;\r\n valueClasses?: string;\r\n marginTop?: string | number;\r\n onChange(e: any);\r\n}\r\n\r\nexport interface ILongTextState {\r\n expanded: boolean;\r\n}\r\n\r\nexport class LongText extends React.Component {\r\n static defaultProps = {\r\n marginTop: \"1rem\",\r\n };\r\n\r\n private orgRect: DOMRect;\r\n private mainDiv: HTMLDivElement;\r\n private contentDiv: HTMLDivElement;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n expanded: false,\r\n };\r\n }\r\n\r\n handleExpand = (expand: boolean) => {\r\n if (expand) {\r\n this.orgRect = this.mainDiv.getBoundingClientRect();\r\n this.mainDiv.style.height = this.orgRect.height.toString(10) + \"px\";\r\n this.contentDiv.style.position = \"fixed\";\r\n this.contentDiv.style.top = this.orgRect.top.toString(10) + \"px\";\r\n this.contentDiv.style.left = this.orgRect.left.toString(10) + \"px\";\r\n this.contentDiv.style.width = this.orgRect.width.toString(10) + \"px\";\r\n this.contentDiv.style.height = this.orgRect.height.toString(10) + \"px\";\r\n window.setTimeout(() => {\r\n this.contentDiv.style.top = \"0\";\r\n this.contentDiv.style.left = \"0\";\r\n this.contentDiv.style.width = \"100%\";\r\n this.contentDiv.style.height = \"100%\";\r\n this.contentDiv.style.padding = \"15px\";\r\n this.contentDiv.style.backgroundColor = \"#ced4da\";\r\n }, 50);\r\n this.setState({ expanded: expand });\r\n } else {\r\n window.setTimeout(() => {\r\n this.contentDiv.style.top = this.orgRect.top.toString(10) + \"px\";\r\n this.contentDiv.style.left = this.orgRect.left.toString(10) + \"px\";\r\n this.contentDiv.style.width = this.orgRect.width.toString(10) + \"px\";\r\n this.contentDiv.style.height = this.orgRect.height.toString(10) + \"px\";\r\n this.contentDiv.style.padding = \"0\";\r\n this.contentDiv.style.backgroundColor = null;\r\n window.setTimeout(() => {\r\n this.mainDiv.style.height = null;\r\n this.contentDiv.style.position = null;\r\n this.contentDiv.style.top = null;\r\n this.contentDiv.style.left = null;\r\n this.contentDiv.style.width = null;\r\n this.contentDiv.style.height = null;\r\n this.contentDiv.style.padding = null;\r\n this.setState({ expanded: expand });\r\n }, 200);\r\n }, 50);\r\n }\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n {\r\n this.mainDiv = div;\r\n }}\r\n sx={{ marginTop: props.marginTop, marginBottom: \"0 !important\" }}\r\n >\r\n {\r\n this.contentDiv = div;\r\n }}\r\n >\r\n {!!props.title && (\r\n e.preventDefault() }\r\n >\r\n \r\n {props.title}\r\n \r\n {!!props.expandable && (\r\n : }\r\n tooltip={state.expanded ? Translations.Collapse : Translations.Expand}\r\n onClick={() => this.handleExpand(!state.expanded)}\r\n />\r\n )}\r\n \r\n )}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","/* global JSX */\r\nimport { Alert, Box, Chip, Stack, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IUserListItem } from \"../../../models/user/userListItem\";\r\nimport { UserListItems } from \"../../../models/user/userListItems\";\r\nimport { ToolTitle } from \"../../framework/Tool/ToolTitle\";\r\nimport { SelectUserDialog } from \"../SelectUserDialog/SelectUserDialog\";\r\nimport { ListStateIconSuccess } from \"source/components/framework/List/ListStateIconSuccess\";\r\nimport { ApproveButton } from \"source/components/framework/Button/ApproveButton\";\r\nimport { AddUserToolButton } from \"source/components/framework/Button/AddUserToolButton\";\r\nimport { RemoveUserToolButton } from \"source/components/framework/Button/RemoveUserToolButton\";\r\n\r\n//UserBlockItem\r\nexport interface IUserBlockItemProp {\r\n user: IModifyUser;\r\n userCode?: string;\r\n selectedCodes: string[];\r\n onClick: (code: string) => void;\r\n onApprove?: (code: string) => void;\r\n}\r\n\r\nexport class UserBlockItem extends React.Component {\r\n handleApproveClick = (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.props.onApprove(this.props.user.code);\r\n return 0;\r\n };\r\n\r\n handleBadgeClick = (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.props.onClick(this.props.user.code);\r\n return 0;\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const user = props.user;\r\n const selected = props.selectedCodes.indexOf(user.code) > -1;\r\n\r\n return (\r\n \r\n {user.name}\r\n {(!!props.onApprove && !!props.userCode && !user.date && props.userCode === user.code) &&\r\n (\r\n \r\n )}\r\n {(!!props.onApprove && !!user.date) &&\r\n <>\r\n \r\n {Base.timeToDateTimeStr(user.date)}\r\n \r\n }\r\n \r\n }\r\n avatar={\r\n \r\n }\r\n variant={selected ? \"filled\" : \"outlined\"}\r\n disabled={false}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n props.onClick(user.code);\r\n }}\r\n />\r\n );\r\n }\r\n}\r\n\r\n//UserBlocks\r\nexport interface IUserBlocksProp {\r\n classes?: string;\r\n companyId: string;\r\n userCode?: string;\r\n isReadOnly?: boolean;\r\n title: string | JSX.Element;\r\n noUsersMessage?: string;\r\n parentIsNew?: boolean;\r\n parentIsNewMessage?: string;\r\n users: IModifyUser[];\r\n removeUsersConfirmation?: string;\r\n margin?: string | number;\r\n maxHeight?: string | number;\r\n onAddUsers: (users: IModifyUser[]) => Promise;\r\n onRemoveUsers: (userCodes: string[]) => Promise;\r\n onGetUserSelectListItems?: (companyId: string, pageSize: number, page: number, filter: string,\r\n ignoreUserIds: string[], ignoreUserCodes: string[], activityState: number, ignoreRecordUserConnected: boolean,\r\n doNotIgnoreRecordUserConnectedUserCode: string, sortColumn: string, sortOrderIsAsc: boolean) => Promise;\r\n onApprove?: (userCode: string) => void;\r\n}\r\n\r\ninterface IUserBlocksState {\r\n selectedCodes: string[];\r\n showSelectUserDialog: boolean;\r\n}\r\n\r\nexport class UserBlocks extends React.Component {\r\n static defaultProps = {\r\n margin: \"1rem 0 0 0\"\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n selectedCodes: [],\r\n showSelectUserDialog: false\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps: IUserBlocksProp, prevState: IUserBlocksState) {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevHash = JSON.stringify(prevProps.users);\r\n const hash = JSON.stringify(props.users);\r\n if (prevHash === hash) return;\r\n const userCodes = props.users.map(i => i.code);\r\n this.setState({\r\n selectedCodes: state.selectedCodes.filter(i => userCodes.indexOf(i) > -1)\r\n });\r\n }\r\n\r\n handleBlockClick = (selectedCode: string) => {\r\n this.setState({\r\n selectedCodes: [selectedCode]\r\n });\r\n };\r\n\r\n // #region Add User\r\n handleAdd = () => {\r\n this.setState({\r\n showSelectUserDialog: true\r\n });\r\n };\r\n\r\n onSelectUserDialogOk = async (users: IUserListItem[]) => {\r\n const props = this.props;\r\n if (!users || users.length < 1) return;\r\n const newUsers = users.map(user => {\r\n const newUser = new ModifyUser();\r\n newUser.code = user.code;\r\n newUser.name = user.getName();\r\n newUser.picture = user.picture;\r\n newUser.date = Base.getNowTicks();\r\n return newUser;\r\n });\r\n // Call server\r\n const result = await AppUtils.callService(() => props.onAddUsers(newUsers));\r\n if (!result) return;\r\n this.setState({\r\n showSelectUserDialog: false\r\n });\r\n };\r\n\r\n onSelectUserDialogCancel = () => {\r\n this.setState({\r\n showSelectUserDialog: false\r\n });\r\n };\r\n // #endregion Add User\r\n\r\n // #region Remove User\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.selectedCodes.length < 1) return;\r\n if (await AppUtils.showConfirmationDialog(props.removeUsersConfirmation ?? Translations.DoYouReallyWantToRemoveSelectedUsers, false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n await AppUtils.callService(() => props.onRemoveUsers(state.selectedCodes));\r\n }\r\n };\r\n // #endregion Remove User\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const users = props.users;\r\n const titleIsString = Base.isString(props.title);\r\n return (\r\n <>\r\n \r\n {titleIsString &&\r\n \r\n }\r\n {!titleIsString &&\r\n props.title\r\n }\r\n \r\n {!props.isReadOnly &&\r\n \r\n }\r\n {!props.isReadOnly &&\r\n \r\n }\r\n \r\n \r\n \r\n {!props.isReadOnly && !!props.parentIsNew && !!props.parentIsNewMessage &&\r\n {props.parentIsNewMessage}\r\n }\r\n {!props.isReadOnly && users.length < 1 && !!props.noUsersMessage &&\r\n {props.noUsersMessage}\r\n }\r\n {users.map((user) =>\r\n \r\n )}\r\n \r\n {state.showSelectUserDialog &&\r\n i.code)}\r\n multiSelect={true}\r\n onOk={this.onSelectUserDialogOk}\r\n onCancel={this.onSelectUserDialogCancel}\r\n onGetUserSelectListItems={props.onGetUserSelectListItems}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","import { Box, BoxProps } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\nexport const MessageContainer = (props: BoxProps) => {\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n","import { Box, BoxProps } from \"@mui/material\";\r\nimport React, { forwardRef } from \"react\";\r\n\r\nconst MessageListContainer = forwardRef((props: BoxProps & { height?: string | number, padding?: string | number }, ref) => {\r\n return (\r\n \r\n \r\n {props.children}\r\n \r\n \r\n );\r\n});\r\n\r\nMessageListContainer.displayName = \"MessageListContainer\";\r\n\r\nexport default MessageListContainer;\r\n","import { Box, ImageListItem, Tooltip } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\n\r\nexport interface NewMessageAttachmentImageProps {\r\n attachment: IFileAttachment;\r\n onClick: (id: string) => void;\r\n}\r\n\r\nexport const NewMessageAttachmentImage = ({ attachment, onClick }: NewMessageAttachmentImageProps) => (\r\n \r\n { onClick(attachment.id); }}>\r\n \r\n \r\n \r\n);","import { Box, ListItem, Tooltip, Typography } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { AttachmentIcon } from \"../../../../attachments/AttachmentIcon\";\r\nimport { EllipsisTypography } from \"../../../../framework/Typography/EllipsisTypography\";\r\n\r\nexport interface NewMessageAttachmentItemProps {\r\n attachment: IFileAttachment;\r\n onClick: (id: string) => void;\r\n}\r\n\r\nexport const NewMessageAttachmentItem = ({ attachment, onClick }: NewMessageAttachmentItemProps) => (\r\n { e.stopPropagation(); onClick(attachment.id); }}\r\n sx={{ padding: \"2px 4px\", cursor: \"pointer\" }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n
\r\n {attachment.name}\r\n
\r\n
\r\n {Base.intToFileSizeStr(attachment.size, false)}\r\n
\r\n
\r\n
\r\n \r\n);\r\n","// eslint-disable-next-line no-unused-vars\r\nimport * as React from \"react\";\r\nimport { Box, Typography, alpha, styled } from \"@mui/material\";\r\nimport { SvgBubbleTipLeft, SvgBubbleTipRight } from \"../../../../shared/icons\";\r\n\r\nexport const Message = styled(Box)<{ message: \"true\" | \"false\" }>`\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: ${({ message }) => (message === \"true\" ? \"flex-end\" : \"flex-start\")};\r\n`;\r\n\r\nexport const MessageBox = styled(Box)<{ message: \"true\" | \"false\" }>(\r\n ({ theme, message }) => `\r\n background: ${message === \"true\"\r\n ? alpha(\r\n theme.palette.primary.main,\r\n theme.palette.action.selectedOpacity\r\n )\r\n : theme.palette.action.hover};\r\n padding: .5rem 1rem;\r\n border-radius: ${message === \"true\" ? \"4px 0 4px 4px\" : \"0 4px 4px 4px\"};\r\n min-width: 200px;\r\n position: relative;\r\n margin: ${message === \"true\" ? \"0 .5rem 0 0\" : \"0 0 0 .5rem\"};\r\n white-space: break-spaces;\r\n word-wrap: break-word;\r\n align-self: ${message === \"true\" ? \"flex-end\" : \"flex-start\"};\r\n width: 100%;\r\n`);\r\n\r\nexport const MessageTipLeft = styled(SvgBubbleTipLeft)(\r\n ({ theme }) => `\r\n left: -9px;\r\n top: 0;\r\n position: absolute;\r\n color: ${theme.palette.action.hover};\r\n`);\r\n\r\nexport const MessageTipRight = styled(SvgBubbleTipRight)(\r\n ({ theme }) => `\r\n right: -9px;\r\n top: 0;\r\n position: absolute;\r\n color: ${alpha(\r\n theme.palette.primary.main,\r\n theme.palette.action.selectedOpacity\r\n )};\r\n`);\r\n\r\nexport const AttachmentTitle = styled(Typography)`\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n margin-left: 4px;\r\n`;\r\n","import * as React from \"react\";\r\n\r\nexport const SvgBubbleTipLeft = ({\r\n ...props\r\n}: React.SVGProps) => (\r\n \r\n \r\n \r\n \r\n \r\n);","import * as React from \"react\";\r\n\r\nexport const SvgBubbleTipRight = ({\r\n ...props\r\n}: React.SVGProps) => (\r\n \r\n \r\n \r\n \r\n \r\n);","import DoneAllOutlinedIcon from \"@mui/icons-material/DoneAllOutlined\";\r\nimport DoneOutlinedIcon from \"@mui/icons-material/DoneOutlined\";\r\nimport NewReleasesIcon from \"@mui/icons-material/NewReleases\";\r\nimport ReplyIcon from \"@mui/icons-material/Reply\";\r\nimport RestoreIcon from \"@mui/icons-material/Restore\";\r\nimport { Box, IconButton, ImageList, Stack, Tooltip, Typography } from \"@mui/material\";\r\nimport downloadjs from \"downloadjs\";\r\nimport React, { forwardRef, useState } from \"react\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { FileType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport * as attachmentService from \"../../../../models/services/attachmentService\";\r\nimport { NewMessageAttachmentImage } from \"../NewMessage/NewMessageAttachmentImage\";\r\nimport { NewMessageAttachmentItem } from \"../NewMessage/NewMessageAttachmentItem\";\r\nimport * as Styled from \"./MessageLine.styles\";\r\nimport { RemoveToolButton } from \"../../Button/RemoveToolButton\";\r\n\r\nexport interface IMessageListLineProp {\r\n id: string;\r\n userCode?: string;\r\n content: string;\r\n sender: string;\r\n date: number;\r\n myMessage: boolean;\r\n attachments?: IFileAttachment[];\r\n someRead?: boolean;\r\n allRead?: boolean;\r\n isLate?: boolean;\r\n isDeleted?: boolean;\r\n isNew?: boolean;\r\n image?: string;\r\n showAvatar?: boolean;\r\n readTooltip?: string;\r\n senderDisabled?: boolean;\r\n senderTooltip?: string;\r\n replyText?: string;\r\n replySender?: string;\r\n onClick?: (id: string) => void;\r\n onRemove?: () => void;\r\n onReply?: () => void;\r\n onRestore?: () => void;\r\n}\r\n\r\nconst MessageListLine = forwardRef((\r\n props: IMessageListLineProp,\r\n ref\r\n) => {\r\n const imageAttachments = props.attachments?.filter((i) => i.type === FileType.Image);\r\n const fileAttachments = props.attachments?.filter((i) => i.type !== FileType.Image);\r\n const [hover, setHover] = useState(false);\r\n\r\n const handleAttachmentClick = async (id: string) => {\r\n if (!id) return;\r\n const attachment = props.attachments.find((i) => i.id === id);\r\n if (!attachment) return;\r\n if (attachment.file) {\r\n downloadjs(attachment.file, attachment.name);\r\n return;\r\n }\r\n if (attachment.isNew()) return;\r\n const fileName = await AppUtils.callService(() => attachmentService.getAttachment(id));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(\r\n String.format(Translations.AttachmentParameterDownloaded, fileName)\r\n );\r\n };\r\n\r\n return (\r\n setHover(true)}\r\n onMouseLeave={() => setHover(false)}\r\n >\r\n {props.showAvatar &&\r\n \r\n }\r\n \r\n {\r\n e.stopPropagation();\r\n props.onClick(props.id);\r\n }}\r\n >\r\n {props.myMessage ? : }\r\n {!props.isDeleted && imageAttachments?.length > 0 && (\r\n \r\n {imageAttachments.map((attachment) => (\r\n \r\n ))}\r\n \r\n )}\r\n {!props.isDeleted && fileAttachments?.length > 0 && (\r\n
\r\n {fileAttachments.map((attachment) => (\r\n \r\n ))}\r\n
\r\n )}\r\n {props.replyText &&\r\n ({\r\n bgcolor: theme.palette.background.paper,\r\n borderLeft: \".25rem solid\",\r\n borderColor: \"success.light\",\r\n borderRadius: \"4px 4px 0 0\",\r\n padding: \".25rem .75rem\",\r\n marginBottom: \".25rem\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n })}\r\n >\r\n \r\n {props.replySender}\r\n {props.replyText}\r\n \r\n \r\n }\r\n {props.content}\r\n \r\n \r\n \r\n {props.sender}\r\n \r\n \r\n \r\n {` - ${Base.timeToDateTimeStr(props.date)}`}\r\n \r\n {props.myMessage && (props.someRead || props.allRead) && (\r\n \r\n {props.allRead\r\n ? (\r\n \r\n )\r\n : (\r\n \r\n )}\r\n \r\n )}\r\n {props.isNew &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n {(props.onRemove || props.onReply) && hover &&\r\n \r\n {props.onRemove &&\r\n \r\n }\r\n {props.onRestore &&\r\n \r\n \r\n \r\n }\r\n {props.onReply &&\r\n \r\n \r\n \r\n }\r\n \r\n }\r\n \r\n\r\n );\r\n});\r\n\r\nMessageListLine.displayName = \"MessageListLine\";\r\n\r\nexport default MessageListLine;\r\n","import { Box, Chip, Typography } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\n\r\ninterface MessageListEventProps {\r\n name: string;\r\n uiType: number;\r\n date?: number;\r\n}\r\n\r\nexport const MessageListEvent = ({\r\n name,\r\n uiType,\r\n date,\r\n}: MessageListEventProps) => (\r\n \r\n \r\n {Base.timeToDateTimeStr(date)}\r\n \r\n \r\n {name}\r\n \r\n);\r\n","import * as React from \"react\";\r\nimport { IEventEditItemMessage } from \"../../../models/event/eventEditItemMessage\";\r\nimport MessageListLine from \"../../framework/Message/MessageLine/MessageLine\";\r\nimport { MessageListEvent } from \"../../framework/Message/MessageListEvent\";\r\n\r\n//EventEditDialogMessageListLine\r\nexport interface IEventEditDialogMessageListLineProp {\r\n observer: IntersectionObserver;\r\n message: IEventEditItemMessage;\r\n selectedId: string;\r\n lateThreshold: number;\r\n onClick: (id: string) => void;\r\n}\r\n\r\nexport class EventEditDialogMessageListLine extends React.Component {\r\n private observer: IntersectionObserver = null;\r\n private lineDiv = React.createRef();\r\n\r\n registerToObserver = () => {\r\n const props = this.props;\r\n if (!props.observer || !this.lineDiv.current || !props.message || props.message.myMessage) return;\r\n this.observer = props.observer;\r\n this.observer.observe(this.lineDiv.current);\r\n };\r\n\r\n unregisterFromObserver = () => {\r\n if (!this.observer || !this.lineDiv.current) return;\r\n this.observer.unobserve(this.lineDiv.current);\r\n };\r\n\r\n componentDidMount(): void {\r\n this.registerToObserver();\r\n }\r\n\r\n componentDidUpdate(prevProps: IEventEditDialogMessageListLineProp) {\r\n const props = this.props;\r\n const prevObserverExists = !!prevProps.observer;\r\n const observerExists = !!props.observer;\r\n if (prevObserverExists === observerExists) return;\r\n this.unregisterFromObserver();\r\n if (observerExists) {\r\n this.registerToObserver();\r\n }\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this.unregisterFromObserver();\r\n }\r\n \r\n render() {\r\n const props = this.props;\r\n const message = props.message;\r\n const timeToleranceInJsTicks = 500;\r\n const isLate = props.lateThreshold && message.modifyUser.date > (props.lateThreshold + timeToleranceInJsTicks);\r\n if (message.uiType < 0.5) {\r\n return (\r\n \r\n );\r\n }\r\n return (\r\n \r\n );\r\n }\r\n}","import AttachFileIcon from \"@mui/icons-material/AttachFile\";\r\nimport HighlightOffIcon from \"@mui/icons-material/HighlightOff\";\r\nimport SendIcon from \"@mui/icons-material/Send\";\r\nimport { Box, IconButton, ImageList, List, TextField, Tooltip, Typography } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { NewMessageAttachmentImage } from \"./NewMessageAttachmentImage\";\r\nimport { NewMessageAttachmentItem } from \"./NewMessageAttachmentItem\";\r\n\r\ninterface NewMessageProps {\r\n imageAttachments?: IFileAttachment[];\r\n fileAttachments?: IFileAttachment[];\r\n message?: string;\r\n sendButtonTooltip?: string;\r\n disabled?: boolean;\r\n sendDisabled?: boolean;\r\n accept?: string;\r\n placeholder?: string;\r\n replyText?: string;\r\n replySender?: string;\r\n replyDate?: number;\r\n onChange: (\r\n event: React.ChangeEvent\r\n ) => void;\r\n onSend: () => void;\r\n onAddAttachment?: (attachment: FileList) => void;\r\n onAddAttachments?: (attachments: IFileAttachment[]) => void;\r\n onRemoveAttachment?: (id: string) => void;\r\n onRemoveReply?: () => void;\r\n}\r\n\r\nexport const NewMessage = ({\r\n imageAttachments,\r\n fileAttachments,\r\n message,\r\n sendButtonTooltip,\r\n accept,\r\n placeholder,\r\n replyText,\r\n replySender,\r\n replyDate,\r\n disabled = false,\r\n sendDisabled,\r\n onChange,\r\n onSend,\r\n onAddAttachment,\r\n onRemoveAttachment,\r\n onRemoveReply,\r\n}: NewMessageProps) => {\r\n const fileUploadRef = React.useRef(null);\r\n\r\n const handleAddAttachment = async (\r\n e: React.ChangeEvent\r\n ) => {\r\n if (!e.target.files || e.target.files.length < 1) return;\r\n onAddAttachment(e.target.files);\r\n };\r\n\r\n const hendleKeyPress = (event: React.KeyboardEvent) => {\r\n if (event.key === \"Enter\") {\r\n event.preventDefault();\r\n onSend();\r\n }\r\n };\r\n\r\n const handlePasteAttachments = async (e: any) => {\r\n if (!e.clipboardData.files || e.clipboardData.files.length < 1) return;\r\n onAddAttachment(e.clipboardData.files);\r\n };\r\n\r\n return (\r\n \r\n {(imageAttachments?.length > 0 || fileAttachments?.length > 0) && (\r\n \r\n {imageAttachments?.length > 0 && (\r\n \r\n {imageAttachments.map((attachment) => (\r\n \r\n ))}\r\n \r\n )}\r\n {fileAttachments?.length > 0 && (\r\n \r\n {fileAttachments.map((attachment) => (\r\n \r\n ))}\r\n \r\n )}\r\n \r\n )}\r\n \r\n {replyText &&\r\n ({\r\n bgcolor: theme.palette.background.default,\r\n borderLeft: \".25rem solid\",\r\n borderColor: \"success.light\",\r\n borderRadius: \"4px 4px 0 0\",\r\n padding: \".25rem .75rem\",\r\n marginBottom: \"-2px\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n })}\r\n >\r\n \r\n {replySender}\r\n {replyText}\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n {!!onAddAttachment && (\r\n \r\n \r\n fileUploadRef.current.click()}\r\n disabled={disabled}\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n }}\r\n />\r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { NewMessage } from \"source/components/framework/Message/NewMessage\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { EventEditItemMessage, IEventEditItemMessage } from \"../../../models/event/eventEditItemMessage\";\r\nimport * as eventService from \"../../../models/services/eventService\";\r\nimport { StoreUtils } from \"../../../models/store/storeUtils\";\r\n\r\n// EventEditDialogMessageListNew\r\nexport interface IEventEditDialogMessageListNewProp {\r\n classes?: string;\r\n isReadOnly: boolean;\r\n companyId: string;\r\n eventId: string;\r\n onEventMessageSaved: (item: IEventEditItemMessage) => void;\r\n}\r\n\r\ninterface IEventEditDialogMessageListNewState {\r\n content: string;\r\n sending: boolean;\r\n}\r\n\r\nexport class EventEditDialogMessageListNew extends React.Component {\r\n constructor(props: IEventEditDialogMessageListNewProp) {\r\n super(props);\r\n this.state = {\r\n content: \"\",\r\n sending: false\r\n };\r\n }\r\n\r\n getSendingDisabled = (): boolean => {\r\n return this.state.sending;\r\n };\r\n\r\n getSaveDataFromState = (props: IEventEditDialogMessageListNewProp, state: IEventEditDialogMessageListNewState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"eventId\", props.eventId);\r\n result.append(\"content\", state.content);\r\n return result;\r\n };\r\n\r\n updateSavedMessageToList = (id: string) => {\r\n const props = this.props;\r\n const state = this.state;\r\n const newMessage = new EventEditItemMessage();\r\n newMessage.id = id;\r\n newMessage.content = state.content;\r\n newMessage.myMessage = true;\r\n newMessage.modifyUser = StoreUtils.getNowModifyUser(Base.getNowTicks());\r\n props.onEventMessageSaved(newMessage);\r\n };\r\n\r\n saveEventMessage = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (this.getSendingDisabled()) return;\r\n const confirmation = await AppUtils.showConfirmationDialog(Translations.EventMessageConfirmation);\r\n if (confirmation !== ConfirmationDialogResult.Yes) return;\r\n this.setState({ sending: true });\r\n try {\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = await AppUtils.callService(() => eventService.eventEditAddMessage(saveData.obj), false, true);\r\n if (!result) return null;\r\n this.updateSavedMessageToList(result.id);\r\n this.setState({\r\n content: \"\"\r\n });\r\n } finally {\r\n this.setState({ sending: false });\r\n }\r\n };\r\n\r\n //# region General\r\n handleChange = (event) => {\r\n this.setState({ content: event.target.value });\r\n };\r\n // #endregion General\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n this.handleChange(e)}\r\n onSend={this.saveEventMessage}\r\n disabled={props.isReadOnly}\r\n sendDisabled={props.isReadOnly || this.getSendingDisabled()}\r\n sendButtonTooltip={Translations.SaveComment}\r\n />\r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { MessageContainer } from \"source/components/framework/Message/MessageContainer\";\r\nimport { MessageListContainer } from \"source/components/framework/Message/MessageListContainer\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { IEventEditItem } from \"../../../models/event/eventEditItem\";\r\nimport { EventEditItemMessage, IEventEditItemMessage } from \"../../../models/event/eventEditItemMessage\";\r\nimport * as eventService from \"../../../models/services/eventService\";\r\nimport { EventEditDialogMessageListLine } from \"../EventEditDialogMessageListLine\";\r\nimport { EventEditDialogMessageListNew } from \"../EventEditDialogMessageListNew\";\r\n\r\n//EventEditDialogMessageList\r\nexport interface IEventEditDialogMessageListProp {\r\n classes?: string;\r\n companyId: string;\r\n lateThreshold: number;\r\n isReadOnly: boolean;\r\n event: IEventEditItem;\r\n handlers: IModifyUser[];\r\n messages: IEventEditItemMessage[];\r\n hideNewMessageInput?: boolean;\r\n onEventMessageSaved: (newMessage: IEventEditItemMessage) => void;\r\n onEventMessageRead: (id: string) => void;\r\n}\r\n\r\ninterface IEventEditDialogMessageListState {\r\n selectedId: string;\r\n observer: IntersectionObserver;\r\n messages: IEventEditItemMessage[];\r\n}\r\n\r\nexport class EventEditDialogMessageList extends React.Component {\r\n private messagesContainerDiv = React.createRef();\r\n private readReceiptProcessingIds: string[] = [];\r\n private readReceiptProcessedIds: string[] = [];\r\n\r\n intersectionCallback = (entries: IntersectionObserverEntry[], observer: IntersectionObserver) => {\r\n const props = this.props;\r\n for (const entry of entries) {\r\n if (!entry.isIntersecting || entry.intersectionRatio < 0.75) continue;\r\n const line = entry.target as HTMLDivElement;\r\n if (!line) continue;\r\n //line.style.backgroundColor = \"#FFD800\"\r\n const id = line.getAttribute(\"data-id\");\r\n if (!id) return;\r\n const item = this.props.messages.find(i => i.id === id);\r\n if (!item || item.myMessage || item.isRead) continue;\r\n const processing = this.readReceiptProcessingIds.indexOf(id) > -1;\r\n if (processing) continue;\r\n const processed = this.readReceiptProcessedIds.indexOf(id) > -1;\r\n if (processed) continue;\r\n this.readReceiptProcessingIds.push(id);\r\n eventService.sendEventMessageReadReceipts(props.companyId, props.event.id, [id])\r\n .then(result => {\r\n if (result) {\r\n this.readReceiptProcessedIds.push(id);\r\n props.onEventMessageRead(id);\r\n }\r\n })\r\n .finally(() => {\r\n this.readReceiptProcessingIds = this.readReceiptProcessingIds.filter(i => i !== id);\r\n });\r\n }\r\n };\r\n\r\n createObserver = (): IntersectionObserver => {\r\n const observer = new IntersectionObserver(this.intersectionCallback, {\r\n root: this.messagesContainerDiv.current,\r\n rootMargin: \"0px\",\r\n threshold: 0.9\r\n });\r\n this.setState({\r\n observer\r\n });\r\n return observer;\r\n };\r\n\r\n removeObserver = () => {\r\n const state = this.state;\r\n if (!state.observer) return;\r\n state.observer.disconnect();\r\n this.setState({\r\n observer: null\r\n });\r\n };\r\n\r\n scrollToBottom = () => {\r\n this.messagesContainerDiv.current.scrollTo({\r\n top: this.messagesContainerDiv.current.scrollHeight,\r\n left: 0,\r\n behavior: \"auto\"\r\n });\r\n };\r\n\r\n getMessages(props: IEventEditDialogMessageListProp): IEventEditItemMessage[] {\r\n const result = props.messages.map(i => new EventEditItemMessage(i)) ?? [];\r\n //Published\r\n if (props.event.publishUser) {\r\n const message = new EventEditItemMessage();\r\n message.modifyUser = props.event.publishUser;\r\n message.id = Base.getGuid();\r\n message.uiType = 1;\r\n result.push(message);\r\n }\r\n //Approved\r\n let closed = true;\r\n let lastApprovedHandler: IModifyUser = null;\r\n for (const handler of props.handlers) {\r\n if (!handler.date) {\r\n closed = false;\r\n continue;\r\n }\r\n const message = new EventEditItemMessage();\r\n message.modifyUser = handler;\r\n message.id = Base.getGuid();\r\n message.uiType = 2;\r\n result.push(message);\r\n if (closed && (!lastApprovedHandler || lastApprovedHandler.date < handler.date)) {\r\n lastApprovedHandler = handler;\r\n }\r\n }\r\n //Closed\r\n if (closed && lastApprovedHandler) {\r\n const message = new EventEditItemMessage();\r\n message.modifyUser = lastApprovedHandler;\r\n message.id = Base.getGuid();\r\n message.uiType = 3;\r\n result.push(message);\r\n }\r\n return EventEditItemMessage.sortEventEditItemMessages(result);\r\n }\r\n\r\n constructor(props: IEventEditDialogMessageListProp) {\r\n super(props);\r\n this.state = {\r\n observer: null,\r\n selectedId: null,\r\n messages: this.getMessages(props)\r\n };\r\n }\r\n\r\n componentDidMount(): void {\r\n //Observer\r\n this.createObserver();\r\n this.scrollToBottom();\r\n }\r\n\r\n componentWillUnmount(): void {\r\n //Observer\r\n this.removeObserver();\r\n }\r\n\r\n componentDidUpdate(prevProps: IEventEditDialogMessageListProp) {\r\n const props = this.props;\r\n const prevMessages = prevProps.messages ?? [];\r\n const messages = props.messages ?? [];\r\n if (prevMessages.map(i => i.id + \"#\" + i.content).join(\", \") === messages.map(i => i.id + \"#\" + i.content).join(\", \")) return;\r\n this.setState({\r\n messages: this.getMessages(props)\r\n });\r\n }\r\n \r\n handleMessageClick = (id: string) => {\r\n this.setState({\r\n selectedId: id\r\n });\r\n };\r\n\r\n handleEventMessageSaved = (item: IEventEditItemMessage) => {\r\n const props = this.props;\r\n props.onEventMessageSaved(item);\r\n window.setTimeout(() => {\r\n this.scrollToBottom();\r\n }, 50);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const messages = state.messages;\r\n return (\r\n \r\n \r\n {messages.map((message) =>\r\n \r\n )}\r\n \r\n {!props.hideNewMessageInput &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","// EventEditDialogAction - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Grid, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { DialogSectionCard } from \"source/components/framework/Dialog/DialogSectionCard\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { IIdTitleNode, IdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { IEventSettingSimple } from \"ui/Scripts/source/models/eventSettings/eventSettingSimple\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { IEventEditItem } from \"../../../models/event/eventEditItem\";\r\nimport { IEventEditItemMessage } from \"../../../models/event/eventEditItemMessage\";\r\nimport * as eventService from \"../../../models/services/eventService\";\r\nimport { UserListItems } from \"../../../models/user/userListItems\";\r\nimport { AttachmentList } from \"../../attachments/AttachmentList\";\r\nimport { LongText } from \"../../framework/Form/LongText\";\r\nimport { TextFieldWithButtonGroup } from \"../../framework/Form/TextFieldWithButtonGroup\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { UserBlocks } from \"../../user/UserBlocks/UserBlocks\";\r\nimport { EventEditDialogMessageList } from \"../EventEditDialogMessageList\";\r\n\r\n//EventEditDialogAction\r\nexport interface IEventEditDialogActionProp {\r\n eventSetting: IEventSettingSimple;\r\n companyId: string;\r\n unitId: string;\r\n unitCode: string;\r\n userCode: string;\r\n event: IEventEditItem;\r\n units: IIdTitleNode[];\r\n isClosed: boolean;\r\n canHandleEvent: boolean;\r\n isLockedToOtherUser: boolean;\r\n lastApproveUser: IModifyUser;\r\n processingTimeStr: string;\r\n // Action, Comments\r\n immediateAction: string;\r\n preventiveAction: string;\r\n rootCause: string;\r\n handlers: IModifyUser[];\r\n attachments: IFileAttachment[];\r\n messages: IEventEditItemMessage[];\r\n onChange: (name: string, value: string) => void;\r\n onAddUsers: (users: IModifyUser[]) => Promise;\r\n onRemoveUsers: (userCodes: string[]) => Promise;\r\n onApprove: (userCode: string) => void;\r\n onRemoveAttachment: (id: string) => void;\r\n onDownloadAttachment: (id: string) => void;\r\n onAddAttachments: (fileList: FileList) => void;\r\n onEventMessageSaved: (newMessage: IEventEditItemMessage) => void;\r\n onEventMessageRead: (id: string) => void;\r\n onSelectUnit: () => void;\r\n}\r\n\r\nexport interface IEventEditDialogActionState {\r\n}\r\n\r\nexport class EventEditDialogAction extends React.Component {\r\n handleChange = (event) => {\r\n const target = event.target;\r\n this.props.onChange(target.name, target.value);\r\n };\r\n\r\n // #region Handlers\r\n handleGetHandlersSelectListItems = (companyId: string, pageSize: number, page: number, filter: string,\r\n ignoreUserIds: string[], ignoreUserCodes: string[], activityState: number, ignoreRecordUserConnected: boolean,\r\n doNotIgnoreRecordUserConnectedUserCode: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n const props = this.props;\r\n return eventService.getHandlersSelectUserListItems(props.companyId, props.event.id, props.unitId, pageSize, page, filter,\r\n ignoreUserIds, ignoreUserCodes, activityState, ignoreRecordUserConnected, doNotIgnoreRecordUserConnectedUserCode,\r\n sortColumn, sortOrderIsAsc);\r\n };\r\n // #endregion Handlers\r\n \r\n render() {\r\n const props = this.props;\r\n const event = props.event;\r\n if (!event) return null;\r\n const activeCompanyIsReceivingCompany = props.companyId === event.companyId;\r\n const isReadOnly = props.isLockedToOtherUser || props.isClosed || !activeCompanyIsReceivingCompany || !props.canHandleEvent;\r\n const unitSelectIsReadOnly = props.isLockedToOtherUser ||\r\n !IdTitleNode.getFirstActiveNode(props.units) ||\r\n (event.publishUser && !props.canHandleEvent);\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {activeCompanyIsReceivingCompany && !!event.publishUser &&\r\n \r\n \r\n \r\n }\r\n \r\n {!!props.processingTimeStr &&\r\n \r\n \r\n \r\n {props.processingTimeStr}\r\n \r\n \r\n \r\n }\r\n
\r\n i.category > 0.5)}\r\n isReadOnly={!activeCompanyIsReceivingCompany || !props.canHandleEvent}\r\n onRemoveAttachment={props.onRemoveAttachment}\r\n onDownloadAttachment={props.onDownloadAttachment}\r\n onAddAttachments={props.onAddAttachments}\r\n />\r\n
\r\n
\r\n
\r\n \r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { IIdColorTitle } from \"../../../models/common/idColorTitle\";\r\nimport { Base } from \"../../../framework/base\";\r\nimport { Box, Typography } from \"@mui/material\";\r\n\r\nexport interface IEventEditUrgencyClassStateTextProp {\r\n urgencyClass: IIdColorTitle;\r\n thick?: boolean;\r\n wide?: boolean;\r\n}\r\n\r\nexport class EventEditUrgencyClassStateText extends React.Component<\r\n IEventEditUrgencyClassStateTextProp,\r\n {}\r\n> {\r\n render() {\r\n const props = this.props;\r\n const backColor = props.urgencyClass?.color;\r\n const textColor = Base.invertColor(backColor);\r\n const bordered = Base.isWhite(backColor);\r\n return (\r\n \r\n {props.urgencyClass?.title}\r\n \r\n );\r\n }\r\n}\r\n","import { FormControl, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { IIdColorTitle } from \"../../../models/common/idColorTitle\";\r\nimport { Translations } from \"../../../models/translations\";\r\nimport { Dropdown } from \"../../framework/Dropdown/Dropdown\";\r\nimport { EventEditUrgencyClassStateText } from \"../EventEditUrgencyClassStateText/EventEditUrgencyClassStateText\";\r\n\r\nexport interface IEventEditUrgencyClassFieldProp {\r\n urgencyClasses: IIdColorTitle[];\r\n disabled?: boolean;\r\n urgencyClassId: string;\r\n onChange: (urgencyClassId) => void;\r\n}\r\n\r\nexport class EventEditUrgencyClassField extends React.Component {\r\n render() {\r\n const props = this.props;\r\n const urgencyClass = props.urgencyClasses.find(i => i.id === props.urgencyClassId);\r\n return (\r\n \r\n \r\n {Translations.EventUrgencyClass}\r\n \r\n {!props.disabled &&\r\n }\r\n selectMode={true}\r\n actions={props.urgencyClasses.map((uc) => {\r\n return {\r\n title: ,\r\n textTitle: uc.title,\r\n selected: uc.id === props.urgencyClassId,\r\n onClick: () => props.onChange(uc.id)\r\n };\r\n })}\r\n />\r\n }\r\n {!!props.disabled &&\r\n
\r\n }\r\n
\r\n );\r\n }\r\n}","// EventEditDialogBasicInformation - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Grid, TextField, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { EventEditUrgencyClassField } from \"ui/Scripts/source/components/event/EventEditUrgencyClassField/EventEditUrgencyClassField\";\r\nimport { IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { IIdColorTitle } from \"ui/Scripts/source/models/common/idColorTitle\";\r\nimport { IIdTitleNode, IdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { IEventSettingSimple } from \"ui/Scripts/source/models/eventSettings/eventSettingSimple\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { IEventEditItem } from \"../../../models/event/eventEditItem\";\r\nimport { AttachmentList } from \"../../attachments/AttachmentList\";\r\nimport { DatePicker } from \"../../framework/DateTime/DatePicker\";\r\nimport { DialogSectionCard } from \"../../framework/Dialog/DialogSectionCard\";\r\nimport { LongText } from \"../../framework/Form/LongText\";\r\nimport { TextFieldWithButtonGroup } from \"../../framework/Form/TextFieldWithButtonGroup\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { FormFieldLockedToUser } from \"../../framework/FormFieldLockedToUser\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { AvatarName } from \"../../framework/User/AvatarName\";\r\nimport { ModifyUserInfo } from \"../../framework/User/ModifyUserInfo\";\r\nimport { TimePicker } from \"source/components/framework/DateTime\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\n//EventEditDialogBasicInformation\r\nexport interface IEventEditDialogBasicInformationProp {\r\n companyId: string;\r\n eventSetting: IEventSettingSimple;\r\n event: IEventEditItem;\r\n createCompany: ICompanyMenuItem;\r\n companies: ICompanyMenuItem[];\r\n units: IIdTitleNode[];\r\n urgencyClasses: IIdColorTitle[];\r\n hasBeenApproved: boolean;\r\n isSuperAdmin: boolean;\r\n canHandleEvent: boolean;\r\n canEditIdentificationData: boolean;\r\n isLockedToOtherUser: boolean;\r\n userIsCreator: boolean;\r\n isClosed: boolean;\r\n // General\r\n dateStr: string;\r\n timeStr: string;\r\n unitId: string;\r\n unitCode: string;\r\n urgencyClassId: string;\r\n createCompanyUnitCode: string;\r\n name: string;\r\n observer: string;\r\n observerAction: string;\r\n description: string;\r\n attachments: IFileAttachment[];\r\n lockedUser: IModifyUser;\r\n firstApproveUser: IModifyUser;\r\n lastApproveUser: IModifyUser;\r\n onChange: (name: string, value: string) => void;\r\n onSelectUnit: () => void;\r\n onRemoveAttachment: (id: string) => void;\r\n onDownloadAttachment: (id: string) => void;\r\n onAddAttachments: (fileList: FileList) => void;\r\n onUnlock: () => void;\r\n}\r\n\r\nexport class EventEditDialogBasicInformation extends React.Component {\r\n handleChange = (event) => {\r\n const target = event.target;\r\n this.props.onChange(target.name, target.value);\r\n };\r\n \r\n render() {\r\n const props = this.props;\r\n const event = props.event;\r\n if (!event) return null;\r\n const isReadOnly = props.isLockedToOtherUser || props.hasBeenApproved || !(props.isSuperAdmin || props.userIsCreator);\r\n const activeCompanyIsReceivingCompany = props.companyId === event.companyId;\r\n const senderCompanyIsReceivingCompany = event.createCompanyId === event.companyId;\r\n const unitSelectIsReadOnly = props.isLockedToOtherUser ||\r\n !IdTitleNode.getFirstActiveNode(props.units) ||\r\n (event.publishUser && !props.canEditIdentificationData);\r\n const urgencyClassIsEditable = !props.isLockedToOtherUser && activeCompanyIsReceivingCompany &&\r\n (!event.publishUser || (!props.hasBeenApproved && props.userIsCreator) || (!props.isClosed && props.canHandleEvent));\r\n const receiverCompany = props.companies.find(i => i.id === event.companyId);\r\n return (\r\n \r\n \r\n \r\n {!senderCompanyIsReceivingCompany &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n }\r\n \r\n \r\n \r\n {!isReadOnly &&\r\n props.onChange(\"date\", value)}\r\n />\r\n }\r\n {isReadOnly &&\r\n \r\n }\r\n \r\n \r\n {!isReadOnly &&\r\n \r\n \r\n props.onChange(\"time\", value)}\r\n />\r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n props.onChange(\"urgencyClassId\", id)}\r\n />\r\n \r\n {(!activeCompanyIsReceivingCompany || (activeCompanyIsReceivingCompany && !event.publishUser)) &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.eventSetting.locationIsInUse() && !!event.locationName &&\r\n \r\n \r\n {event.locationName}\r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.eventSetting.observerActionIsInUse() &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n {!!props.event.publishUser &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {!!props.lastApproveUser &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {props.isLockedToOtherUser &&\r\n \r\n \r\n \r\n }\r\n \r\n
\r\n
\r\n \r\n \r\n i.category === 0)}\r\n isReadOnly={!(props.isSuperAdmin || props.userIsCreator)}\r\n lateThreshold={props.firstApproveUser?.date}\r\n onRemoveAttachment={props.onRemoveAttachment}\r\n onDownloadAttachment={props.onDownloadAttachment}\r\n onAddAttachments={props.onAddAttachments}\r\n />\r\n \r\n \r\n
\r\n );\r\n }\r\n}","//SelectIdTitleNodeDialog\r\n//***********************************************************************************************************************\r\nimport { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { TreeCheckBoxDropdownItems } from \"ui/Scripts/source/components/framework/Dropdown/TreeCheckboxDropdown/TreeCheckboxDropdownItems\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Dialog } from \"../../../framework/Dialog/Dialog\";\r\n\r\n//SelectIdTitleNodesDialog\r\nexport interface ISelectIdTitleNodesDialogProps {\r\n classes?: string;\r\n required?: boolean;\r\n singleSelect?: boolean;\r\n toggleAllId?: string;\r\n nodes: IIdTitleNode[];\r\n title: string;\r\n selectedIds: string[];\r\n onOk: (selectedIds: string[]) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface ISelectIdTitleNodesDialogState {\r\n selectedIds: string[];\r\n}\r\n\r\nexport class SelectIdTitleNodesDialog extends React.Component {\r\n constructor(props: ISelectIdTitleNodesDialogProps) {\r\n super(props);\r\n this.state = {\r\n selectedIds: props.selectedIds ?? []\r\n };\r\n }\r\n\r\n handleOk = () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (props.required && state.selectedIds.length < 1) return;\r\n props.onOk(state.selectedIds);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n this.setState({ selectedIds })}\r\n />\r\n \r\n }\r\n buttons={[\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: props.onCancel },\r\n { title: Translations.OK, variant: \"confirmation\", onClick: this.handleOk, disabled: props.required && state.selectedIds.length < 1 },\r\n ]}\r\n onClose={props.onCancel}\r\n />\r\n );\r\n }\r\n}","// EventEditDialogIdentificationEventTypeList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport {\r\n IdTitleNode,\r\n IIdTitleNode,\r\n} from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { EventTypeCategory } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as eventService from \"../../../models/services/eventService\";\r\nimport { DialogSectionCard } from \"../../framework/Dialog/DialogSectionCard\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListIconButtonsItem } from \"../../framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { SelectIdTitleNodesDialog } from \"../../framework/Select/SelectIdTitleNodeDialog\";\r\nimport { useEffect, useState } from \"react\";\r\n\r\n// EventEditDialogIdentificationEventTypeList\r\nexport interface EventEditDialogIdentificationEventTypeListProp {\r\n isReadOnly: boolean;\r\n screenHeight: number;\r\n companyId: string;\r\n eventId: string;\r\n eventTypeCategory: EventTypeCategory;\r\n eventTypes: IIdTitleNode[];\r\n eventTypeIds: string[];\r\n onChange: (eventTypeIds: string[]) => void;\r\n}\r\n\r\ninterface IEventEditDialogIdentificationEventTypeListState {\r\n // List\r\n items: IIdTitleNode[];\r\n selectedId: string;\r\n checkedIds: string[];\r\n\r\n // Dialog\r\n showSelectEventTypesDialog: boolean;\r\n}\r\n\r\nexport const EventEditDialogIdentificationEventTypeList = (props: EventEditDialogIdentificationEventTypeListProp) => {\r\n const getItems = (): IIdTitleNode[] => {\r\n if (!props.eventTypes || props.eventTypes.length < 0 || !props.eventTypeIds || props.eventTypeIds.length < 0) {\r\n return [];\r\n }\r\n const result: IIdTitleNode[] = props.eventTypes.map((i) => new IdTitleNode(i));\r\n IdTitleNode.setHierarchialTitles(result);\r\n IdTitleNode.sortUIdTitleNodes(result);\r\n return IdTitleNode.getByIds(result, props.eventTypeIds);\r\n };\r\n\r\n const [state, setState] = useState(\r\n {\r\n items: getItems(),\r\n selectedId: null,\r\n checkedIds: [],\r\n showSelectEventTypesDialog: false,\r\n }\r\n );\r\n\r\n useEffect(() => {\r\n setState(old => ({\r\n ...old,\r\n selectedId: null,\r\n checkedIds: []\r\n }));\r\n }, [props.companyId ?? \"\"]);\r\n\r\n useEffect(() => {\r\n setState(old => ({\r\n ...old,\r\n items: getItems()\r\n }));\r\n }, [(props.eventTypeIds ?? []).join(\",\")]);\r\n\r\n const handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n setState(old => ({\r\n ...old,\r\n selectedId,\r\n checkedIds,\r\n }));\r\n };\r\n\r\n // #region Add\r\n const handleSelectIdTitleNodesDialogOk = async (selectedIds: string[]) => {\r\n if (!selectedIds) return;\r\n if (props.eventId) {\r\n //Save to Db\r\n const result = await AppUtils.callService(() =>\r\n eventService.eventEditSaveEventTypes(\r\n props.companyId,\r\n props.eventId,\r\n props.eventTypeCategory,\r\n selectedIds\r\n )\r\n );\r\n if (!result) return;\r\n }\r\n setState(old => ({\r\n ...old,\r\n showSelectEventTypesDialog: false,\r\n }));\r\n props.onChange(selectedIds);\r\n };\r\n\r\n const onSelectIdTitleNodesDialogCancel = () => {\r\n setState(old => ({\r\n ...old,\r\n showSelectEventTypesDialog: false,\r\n }));\r\n };\r\n\r\n const handleAdd = () => {\r\n setState(old => ({\r\n ...old,\r\n showSelectEventTypesDialog: true,\r\n }));\r\n };\r\n // #endregion Add\r\n\r\n // #region Remove\r\n const handleRemove = async () => {\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n if (selectedIds.length < 1) return;\r\n const newEventTypeIds = props.eventTypeIds.filter(\r\n (i) => selectedIds.indexOf(i) < 0\r\n );\r\n if (props.eventId) {\r\n //Save to Db\r\n const result = await AppUtils.callService(() =>\r\n eventService.eventEditSaveEventTypes(\r\n props.companyId,\r\n props.eventId,\r\n props.eventTypeCategory,\r\n newEventTypeIds\r\n )\r\n );\r\n if (!result) return null;\r\n }\r\n props.onChange(newEventTypeIds);\r\n };\r\n // #endregion Remove\r\n\r\n return (\r\n \r\n }\r\n >\r\n \r\n {\r\n return {\r\n columns: [{ classes: \"col-12\", content: item.title }],\r\n id: item.id,\r\n };\r\n })}\r\n noDataMessage={\r\n props.eventTypeCategory === EventTypeCategory.A\r\n ? Translations.AddEventType\r\n : props.eventTypeCategory === EventTypeCategory.B\r\n ? Translations.AddEventTypeB\r\n : Translations.AddEventTypeC\r\n }\r\n sortColumn={\"\"}\r\n sortOrderIsAsc={true}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={handleSetSelectedIds}\r\n onSearchLines={null}\r\n />\r\n \r\n {state.showSelectEventTypesDialog && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n","// EventEditDialogIdentification - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { EventTypeCategory } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IEventEditItem } from \"../../../models/event/eventEditItem\";\r\nimport { DialogSectionCard } from \"../../framework/Dialog/DialogSectionCard\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { EventEditDialogIdentificationEventTypeList } from \"../EventEditDialogIdentificationEventTypeList\";\r\n\r\n//EventEditDialogIdentification\r\nexport interface IEventEditDialogIdentificationProp {\r\n screenHeight: number;\r\n companyId: string;\r\n event: IEventEditItem;\r\n isClosed: boolean;\r\n isLockedToOtherUser: boolean;\r\n canEditIdentificationData: boolean;\r\n eventTypeNodes: IIdTitleNode[];\r\n eventTypeBNodes: IIdTitleNode[];\r\n eventTypeCNodes: IIdTitleNode[];\r\n //Identification\r\n eventTypeIds: string[];\r\n eventTypeBIds: string[];\r\n eventTypeCIds: string[];\r\n identificationDetails: string;\r\n directCostsStr: string;\r\n indirectCostsStr: string;\r\n amountStr: string;\r\n onChange: (name: string, value: string) => void;\r\n onBlur: (name: string, value: string) => void;\r\n onChangeEventTypeIds: (ids: string[]) => void;\r\n onChangeEventTypeBIds: (ids: string[]) => void;\r\n onChangeEventTypeCIds: (ids: string[]) => void;\r\n}\r\n\r\nconst numRegex = /^(?:\\d+(?:,\\d+)*,?)?$/;\r\n\r\nexport const EventEditDialogIdentification = (props: IEventEditDialogIdentificationProp) => {\r\n const handleChange = (event) => {\r\n const target = event.target;\r\n if (target.name !== \"identificationDetails\" && !numRegex.test(target.value)) return;\r\n props.onChange(target.name, target.value);\r\n };\r\n\r\n const handleBlur = (event) => {\r\n const target = event.target;\r\n props.onBlur(target.name, target.value);\r\n };\r\n\r\n const isReadOnly = props.isLockedToOtherUser;\r\n const isPublished = props.event.isPublished();\r\n const hasEventTypeBs = props.eventTypeBNodes.length > 0;\r\n const hasEventTypeCs = props.eventTypeCNodes.length > 0;\r\n const eventTypeColWidth = hasEventTypeBs && hasEventTypeCs\r\n ? 4\r\n : (hasEventTypeBs || hasEventTypeCs ? 6 : 12);\r\n\r\n if (!props.event) return null;\r\n \r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n {hasEventTypeBs &&\r\n \r\n \r\n \r\n }\r\n {hasEventTypeCs &&\r\n \r\n \r\n \r\n }\r\n \r\n {props.canEditIdentificationData &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n );\r\n};","// EventEditDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport SaveOutlinedIcon from \"@mui/icons-material/SaveOutlined\";\r\nimport { Box } from \"@mui/material\";\r\nimport downloadjs from \"downloadjs\";\r\nimport GoogleMapReact from \"google-map-react\";\r\nimport * as React from \"react\";\r\nimport { MapMarker } from \"ui/Scripts/source/components/framework/mapMarker\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { EditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { FileAttachment, IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { IdColorTitle } from \"ui/Scripts/source/models/common/idColorTitle\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { LockedRecord } from \"ui/Scripts/source/models/common/lockedRecord\";\r\nimport { SaveAttachmentBase64 } from \"ui/Scripts/source/models/common/saveAttachmentBase64\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { removeConfirmationWord } from \"ui/Scripts/source/models/consts\";\r\nimport { ConfirmationDialogResult, DatabaseRecordType } from \"ui/Scripts/source/models/enums\";\r\nimport { IEventSettingSimple } from \"ui/Scripts/source/models/eventSettings/eventSettingSimple\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { EventEditItem, IEventEditItem } from \"../../../models/event/eventEditItem\";\r\nimport { EventEditItemMessage, IEventEditItemMessage } from \"../../../models/event/eventEditItemMessage\";\r\nimport { EventTypeNode } from \"../../../models/eventType/eventTypeNode\";\r\nimport * as attachmentService from \"../../../models/services/attachmentService\";\r\nimport * as eventService from \"../../../models/services/eventService\";\r\nimport { recordLockManager } from \"../../../models/services/recordLockService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { StoreUtils } from \"../../../models/store/storeUtils\";\r\nimport { ConfirmationButton } from \"../../framework/Button/ConfirmationButton\";\r\nimport { DangerButton } from \"../../framework/Button/DangerButton\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { DialogTabs } from \"../../framework/Dialog/DialogTabs\";\r\nimport { SelectUnitDialog } from \"../../framework/Unit/SelectUnitDialog\";\r\nimport { EventEditDialogAction } from \"../EventEditDialogAction\";\r\nimport { EventEditDialogBasicInformation } from \"../EventEditDialogBasicInformation\";\r\nimport { EventEditDialogIdentification } from \"../EventEditDialogIdentification\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum EventEditDialogMenuItem {\r\n Event = \"1\",\r\n Handling = \"2\",\r\n Identification = \"3\",\r\n Location = \"4\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n//EventEditDialog\r\n interface IEventEditDialogProp {\r\n sessionState: ISessionState;\r\n companyId: string;\r\n eventId: string;\r\n classes?: string;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onOk: () => void;\r\n onCancel: () => void;\r\n onRemoved: () => void;\r\n onRefreshList: () => Promise;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n}\r\n\r\ninterface IEventEditDialogState {\r\n screenHeight: number;\r\n activeMenuItem: EventEditDialogMenuItem;\r\n isLoading: boolean;\r\n event: IEventEditItem;\r\n createCompany: ICompanyMenuItem;\r\n companies: ICompanyMenuItem[];\r\n units: IIdTitleNode[];\r\n eventSetting: IEventSettingSimple;\r\n urgencyClasses: IdColorTitle[];\r\n eventTypeNodes: IIdTitleNode[];\r\n eventTypeBNodes: IIdTitleNode[];\r\n eventTypeCNodes: IIdTitleNode[];\r\n canHandleEvent: boolean;\r\n canRemoveEvent: boolean;\r\n canEditIdentificationData: boolean;\r\n isLockedToOtherUser: boolean;\r\n userIsCreator: boolean;\r\n processingTimeStr: string;\r\n // General\r\n dateStr: string;\r\n timeStr: string;\r\n unitId: string;\r\n unitCode: string;\r\n urgencyClassId: string;\r\n createCompanyUnitId: string;\r\n createCompanyUnitCode: string;\r\n name: string;\r\n observer: string;\r\n observerAction: string;\r\n description: string;\r\n firstApproveUser: IModifyUser;\r\n lastApproveUser: IModifyUser;\r\n lockedUser: IModifyUser;\r\n handlers: IModifyUser[];\r\n attachments: IFileAttachment[];\r\n //Actions\r\n immediateAction: string;\r\n preventiveAction: string;\r\n rootCause: string;\r\n messages: IEventEditItemMessage[];\r\n //Identification\r\n eventTypeIds: string[];\r\n eventTypeBIds: string[];\r\n eventTypeCIds: string[];\r\n identificationDetails: string;\r\n directCostsStr: string;\r\n indirectCostsStr: string;\r\n amountStr: string;\r\n //Dialogs\r\n showSelectUnitDialog: boolean;\r\n}\r\n\r\nexport class EventEditDialog extends React.Component {\r\n private defaultPrintId = \"00000000-0000-0000-0000-000000000000\";\r\n private orgStateHash: string = \"\";\r\n\r\n getScreenHeight = () => {\r\n return window.innerHeight >= 800\r\n ? 0\r\n : (window.innerHeight >= 650\r\n ? 1\r\n : 2);\r\n };\r\n\r\n constructor(props: IEventEditDialogProp) {\r\n super(props);\r\n this.state = {\r\n screenHeight: this.getScreenHeight(),\r\n activeMenuItem: EventEditDialogMenuItem.Event,\r\n isLoading: false,\r\n event: null,\r\n createCompany: null,\r\n companies: [],\r\n units: [],\r\n eventSetting: null,\r\n urgencyClasses: [],\r\n eventTypeNodes: [],\r\n eventTypeBNodes: [],\r\n eventTypeCNodes: [],\r\n canHandleEvent: false,\r\n canRemoveEvent: false,\r\n canEditIdentificationData: false,\r\n isLockedToOtherUser: false,\r\n userIsCreator: false,\r\n processingTimeStr: \"\",\r\n // General\r\n dateStr: \"\",\r\n timeStr: \"\",\r\n unitId: \"\",\r\n unitCode: \"\",\r\n urgencyClassId: \"\",\r\n createCompanyUnitId: \"\",\r\n createCompanyUnitCode: \"\",\r\n name: \"\",\r\n observer: \"\",\r\n observerAction: \"\",\r\n description: \"\",\r\n firstApproveUser: null,\r\n lastApproveUser: null,\r\n lockedUser: null,\r\n handlers: [],\r\n attachments: [],\r\n //Actions\r\n immediateAction: \"\",\r\n preventiveAction: \"\",\r\n rootCause: \"\",\r\n messages: [],\r\n //Identification\r\n eventTypeIds: [],\r\n eventTypeBIds: [],\r\n eventTypeCIds: [],\r\n identificationDetails: \"\",\r\n directCostsStr: \"\",\r\n indirectCostsStr: \"\",\r\n amountStr: \"\",\r\n //Dialogs\r\n showSelectUnitDialog: false,\r\n };\r\n }\r\n\r\n loadEvent = async (eventId: string): Promise => {\r\n const props = this.props;\r\n //Unlock current event\r\n if (LockedRecord.isLockedToUser(this.state.lockedUser, props.sessionState.code)) {\r\n await recordLockManager.unlock(props.companyId, this.state.event?.id, DatabaseRecordType.Event);\r\n }\r\n //Load and lock event\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => eventService.getEventEdit(props.companyId, eventId, true), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const event = result.item;\r\n const firstAndLastApproved = EventEditItem.getFirstAndLastApproveHandler(event.handlers);\r\n const userIsCreator = event.createUser.code === props.sessionState.code;\r\n const state = {\r\n ...this.state,\r\n activeMenuItem: (this.state.activeMenuItem === EventEditDialogMenuItem.Identification && !result.canEditIdentificationData) || (this.state.activeMenuItem === EventEditDialogMenuItem.Location && !event.locationName)\r\n ? EventEditDialogMenuItem.Event\r\n : this.state.activeMenuItem,\r\n event,\r\n createCompany: result.createCompany,\r\n companies: result.companies,\r\n units: result.units,\r\n eventSetting: result.eventSetting,\r\n urgencyClasses: result.urgencyClasses,\r\n eventTypeNodes: EventTypeNode.getAsIdTitleNodes(result.eventTypeNodes),\r\n eventTypeBNodes: EventTypeNode.getAsIdTitleNodes(result.eventTypeBNodes),\r\n eventTypeCNodes: EventTypeNode.getAsIdTitleNodes(result.eventTypeCNodes),\r\n canHandleEvent: result.canHandleEvent,\r\n canRemoveEvent: result.canRemoveEvent,\r\n canEditIdentificationData: result.canEditIdentificationData,\r\n isLockedToOtherUser: event.isLockedToOtherUser(props.sessionState.code),\r\n userIsCreator,\r\n processingTimeStr: EventEditItem.getProcessingTimeStr(firstAndLastApproved.lastApprove, event.publishUser, event.createUser),\r\n // General\r\n id: event.id,\r\n companyId: props.companyId,\r\n dateStr: Base.timeToDateStr(event.date),\r\n timeStr: Base.timeToTimeStr(event.date),\r\n unitId: event.unitId,\r\n unitCode: event.unitCode,\r\n urgencyClassId: event.urgencyClassId,\r\n createCompanyUnitId: event.createCompanyUnitId,\r\n createCompanyUnitCode: event.createCompanyUnitCode,\r\n name: event.name,\r\n observer: event.observer,\r\n observerAction: event.observerAction,\r\n description: event.description,\r\n lockedUser: event.lockedUser,\r\n handlers: ModifyUser.sortModifyUsers(event.handlers, { currentUserCode: props.sessionState.code }),\r\n attachments: event.attachments,\r\n firstApproveUser: firstAndLastApproved.firstApprove,\r\n lastApproveUser: firstAndLastApproved.lastApprove,\r\n //Actions\r\n eventTypeIds: event.eventTypeIds,\r\n eventTypeBIds: event.eventTypeBIds,\r\n eventTypeCIds: event.eventTypeCIds,\r\n immediateAction: event.immediateAction,\r\n preventiveAction: event.preventiveAction,\r\n rootCause: event.rootCause,\r\n messages: event.messages,\r\n //Identification\r\n identificationDetails: event.identificationDetails,\r\n directCostsStr: event.directCosts.toLocaleFixed(2),\r\n indirectCostsStr: event.indirectCosts.toLocaleFixed(2),\r\n amountStr: event.amount.toLocaleFixed(2),\r\n };\r\n this.setState(state);\r\n const saveData = this.getSaveDataFromState(props, state);\r\n this.orgStateHash = saveData.hash;\r\n //Add locked record to idb\r\n if (LockedRecord.isLockedToUser(event.lockedUser, props.sessionState.code)) {\r\n recordLockManager.addLock(LockedRecord.createLockedRecord(props.companyId, event.id, props.sessionState.code, DatabaseRecordType.Event));\r\n }\r\n //Send read receipt for event\r\n if (!userIsCreator && !event.isRead && event.isPublished()) {\r\n AppUtils.callService(() => eventService.sendEventReadReceipt(props.companyId, event.id), false, true);\r\n }\r\n };\r\n\r\n updateHeight = () => {\r\n const screenHeight = this.getScreenHeight();\r\n if (screenHeight === this.state.screenHeight) return;\r\n this.setState({ screenHeight });\r\n };\r\n\r\n componentDidMount(): void {\r\n window.addEventListener(\"resize\", this.updateHeight);\r\n this.loadEvent(this.props.eventId);\r\n }\r\n\r\n async componentWillUnmount(): Promise {\r\n const props = this.props;\r\n window.removeEventListener(\"resize\", this.updateHeight);\r\n if (LockedRecord.isLockedToUser(this.state.lockedUser, props.sessionState.code)) {\r\n await recordLockManager.unlock(props.companyId, props.eventId, DatabaseRecordType.Event);\r\n }\r\n }\r\n\r\n async componentDidUpdate(prevProps: IEventEditDialogProp, prevState: IEventEditDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if (prevProps.companyId === props.companyId && prevProps.eventId === props.eventId) return;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb(false)) return;\r\n if (!props.onRefreshList) {\r\n await props.onRefreshList();\r\n }\r\n }\r\n await this.loadEvent(props.eventId);\r\n }\r\n\r\n handleToggleActiveMenuItem = (userDialogMenuItem: EventEditDialogMenuItem) => {\r\n this.setState({ activeMenuItem: userDialogMenuItem });\r\n };\r\n\r\n handleChange = (name: string, value: string) => {\r\n if (!name) return;\r\n if (name === \"date\") {\r\n this.setState({ dateStr: value });\r\n } else if (name === \"time\") {\r\n this.setState({ timeStr: value });\r\n } else if (name === \"unitId\") {\r\n this.setState({ unitId: value });\r\n } else if (name === \"urgencyClassId\") {\r\n this.setState({ urgencyClassId: value });\r\n } else if (name === \"name\") {\r\n this.setState({ name: value });\r\n } else if (name === \"observer\") {\r\n this.setState({ observer: value });\r\n } else if (name === \"observerAction\") {\r\n this.setState({ observerAction: value });\r\n } else if (name === \"description\") {\r\n this.setState({ description: value });\r\n //Actions\r\n } else if (name === \"immediateAction\") {\r\n this.setState({ immediateAction: value });\r\n } else if (name === \"preventiveAction\") {\r\n this.setState({ preventiveAction: value });\r\n } else if (name === \"rootCause\") {\r\n this.setState({ rootCause: value });\r\n //Identification\r\n } else if (name === \"identificationDetails\") {\r\n this.setState({ identificationDetails: value });\r\n } else if (name === \"directCosts\") {\r\n this.setState({ directCostsStr: value });\r\n } else if (name === \"indirectCosts\") {\r\n this.setState({ indirectCostsStr: value });\r\n } else if (name === \"amount\") {\r\n this.setState({ amountStr: value });\r\n }\r\n };\r\n\r\n handleBlur = (name: string, value: string) => {\r\n if (!name) return;\r\n //Identification\r\n if (name === \"directCosts\") {\r\n this.setState({ directCostsStr: value.toDecimal().toLocaleFixed(2) });\r\n } else if (name === \"indirectCosts\") {\r\n this.setState({ indirectCostsStr: value.toDecimal().toLocaleFixed(2) });\r\n } else if (name === \"amount\") {\r\n this.setState({ amountStr: value.toDecimal().toLocaleFixed(2) });\r\n }\r\n };\r\n\r\n handleChangeEventTypeIds = (ids: string[]) => {\r\n this.setState({ eventTypeIds: ids });\r\n };\r\n\r\n handleChangeEventTypeBIds = (ids: string[]) => {\r\n this.setState({ eventTypeBIds: ids });\r\n };\r\n\r\n handleChangeEventTypeCIds = (ids: string[]) => {\r\n this.setState({ eventTypeCIds: ids });\r\n };\r\n\r\n // #region Locking\r\n handleUnlockAndLockToMe = async () => {\r\n const props = this.props;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToUnlockEvent, this.state.event.name), false) !== ConfirmationDialogResult.Yes) {\r\n return;\r\n }\r\n const result = await recordLockManager.lock(props.companyId, props.eventId, props.sessionState.code, DatabaseRecordType.Event);\r\n if (!result || result.items.length < 1) return;\r\n this.setState({\r\n lockedUser: StoreUtils.getNowModifyUser(result.items[0].lockedDate),\r\n isLockedToOtherUser: false\r\n });\r\n };\r\n // #endregion Locking\r\n\r\n // #region Attachments\r\n handleAttachmentDownload = async (id: string) => {\r\n if (!id) return;\r\n const state = this.state;\r\n const attachment = state.attachments.find(i => i.id === id);\r\n if (!attachment) return;\r\n if (attachment.file) {\r\n downloadjs(attachment.file, attachment.name);\r\n return;\r\n }\r\n if (attachment.isNew()) return;\r\n const fileName = await AppUtils.callService(() => attachmentService.getAttachment(id));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.AttachmentParameterDownloaded, fileName));\r\n };\r\n\r\n getRemoveAttachmentsSaveData = (state: IEventEditDialogState, category: number, attachmentIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.event.id);\r\n result.append(\"companyId\", state.event.companyId);\r\n result.append(\"category\", category);\r\n result.append(\"ids\", attachmentIds);\r\n return result;\r\n };\r\n\r\n handleAttachmentRemove = async (category: number, id: string) => {\r\n if (!id) return;\r\n const state = this.state;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveAttachmentParameter, state.attachments.find(x => x.id === id)?.name), false) === ConfirmationDialogResult.No) return;\r\n const saveData = this.getRemoveAttachmentsSaveData(state, category, [id]);\r\n const result = AppUtils.callService(() => eventService.eventEditRemoveAttachments(saveData.obj));\r\n if (!result) return;\r\n this.setState({\r\n attachments: state.attachments.filter(i => i.id !== id)\r\n });\r\n };\r\n\r\n getAddAttachmentsSaveData = async (state: IEventEditDialogState, category: number, attachments: IFileAttachment[]): Promise => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.event.id);\r\n result.append(\"companyId\", state.event.companyId);\r\n result.append(\"subOwnerId\", null);\r\n result.append(\"category\", category);\r\n result.append(\"attachments\", await SaveAttachmentBase64.fromFileAttachments(attachments.filter(i => !!i.file)));\r\n return result;\r\n };\r\n \r\n handleAttachmentsAdd = async (category: number, fileList: FileList) => {\r\n const state = this.state;\r\n const attachments = await FileAttachment.addFileListToFileAttachments([], fileList, category);\r\n if (attachments.length < 1) return;\r\n const saveData = await this.getAddAttachmentsSaveData(state, category, attachments);\r\n const result = await AppUtils.callService(() => eventService.eventEditAddAttachments(saveData.obj));\r\n if (!result) return;\r\n EditItem.setItemIdsFromIds(attachments, result.ids);\r\n this.setState({\r\n attachments: state.attachments.concat(attachments)\r\n });\r\n };\r\n // #endregion Attachments\r\n\r\n // #region Select Unit\r\n handleSelectUnit = () => {\r\n this.setState({\r\n showSelectUnitDialog: true\r\n });\r\n };\r\n\r\n handleSelectUnitDialogOk = async (node: IIdTitleNode) => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!node) return;\r\n const event = state.event;\r\n const activeCompanyIsReceivingCompany = props.companyId === event.companyId;\r\n const activeCompanyIsSendingCompany = props.companyId === event.createCompanyId;\r\n if (activeCompanyIsReceivingCompany) {\r\n const result = await AppUtils.callService(() => eventService.getDefaultEventHandlersForUnit(event.companyId, event.companyId, node.id, event.isNew()));\r\n if (!result) return null;\r\n const oldHandlerCodes = state.handlers.map(i => i.code);\r\n this.setState({\r\n showSelectUnitDialog: false,\r\n unitId: result.unitId,\r\n unitCode: result.unitCode,\r\n createCompanyUnitId: activeCompanyIsSendingCompany\r\n ? result.unitId\r\n : state.createCompanyUnitId,\r\n createCompanyUnitCode: activeCompanyIsSendingCompany\r\n ? result.unitCode\r\n : state.createCompanyUnitCode,\r\n canHandleEvent: result.canHandleEvent,\r\n canEditIdentificationData: result.canEditIdentificationData,\r\n });\r\n //Save added handlers\r\n const isPublished = !!event.publishUser;\r\n const handlerResult = !isPublished\r\n ? this.updateHandlers(result.handlers, true, false)\r\n : this.addHandlers(result.handlers.filter(i => oldHandlerCodes.indexOf(i.code) < 0), false);\r\n if (!handlerResult) return;\r\n this.handleSave(isPublished);\r\n } else {\r\n this.setState({\r\n showSelectUnitDialog: false,\r\n createCompanyUnitId: node.id,\r\n createCompanyUnitCode: node.title\r\n });\r\n }\r\n };\r\n\r\n handleSelectUnitDialogCancel = () => {\r\n this.setState({\r\n showSelectUnitDialog: false\r\n });\r\n };\r\n // #endregion Select Unit\r\n\r\n // #region Handlers\r\n updateHandlers = async (newHandlers: IModifyUser[], canRemove: boolean, showSuccessMessage: boolean): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n const oldHandlerCodes = state.handlers.map(i => i.code);\r\n const addHandlers = (newHandlers ?? []).filter(i => oldHandlerCodes.indexOf(i.code) < 0);\r\n const removeHandlerCodes = canRemove\r\n ? oldHandlerCodes.filter(i => (newHandlers ?? []).findIndex(j => j.code === i) < 0)\r\n : [];\r\n if (addHandlers.length < 1 && removeHandlerCodes.length < 1) return;\r\n let handlers: IModifyUser[] = state.handlers.slice(0);\r\n if (removeHandlerCodes.length > 0) {\r\n const removeResult = await AppUtils.callService(() => eventService.eventEditRemoveHandlers(props.companyId, state.event.id, removeHandlerCodes), showSuccessMessage);\r\n if (!removeResult) return null;\r\n handlers = handlers.filter(i => removeHandlerCodes.indexOf(i.code) < 0);\r\n }\r\n if (addHandlers.length > 0) {\r\n const addResult = await AppUtils.callService(() => eventService.eventEditAddHandlers(props.companyId, state.event.id, addHandlers.map(i => i.code)), showSuccessMessage);\r\n if (!addResult) return null;\r\n for (const user of addHandlers) {\r\n user.date = 0;\r\n }\r\n handlers = handlers.concat(addHandlers);\r\n }\r\n handlers = ModifyUser.sortModifyUsers(handlers, { currentUserCode: props.sessionState.code });\r\n const firstAndLastApproved = EventEditItem.getFirstAndLastApproveHandler(handlers);\r\n this.setState({\r\n handlers,\r\n processingTimeStr: EventEditItem.getProcessingTimeStr(firstAndLastApproved.lastApprove, state.event.publishUser, state.event.createUser)\r\n });\r\n return new ApiSuccess();\r\n };\r\n\r\n addHandlers = async (users: IModifyUser[], showSuccessMessage: boolean): Promise => {\r\n if (!users || users.length < 1) return null;\r\n return this.updateHandlers(users, false, showSuccessMessage);\r\n };\r\n\r\n handleAddHandlers = async (users: IModifyUser[]): Promise => {\r\n return this.addHandlers(users, true);\r\n };\r\n\r\n handleRemoveHandlers = async (userCodes: string[]): Promise => {\r\n const state = this.state;\r\n if (!userCodes || userCodes.length < 1) return null;\r\n return this.updateHandlers(state.handlers.filter(i => userCodes.indexOf(i.code) < 0), true, true);\r\n };\r\n\r\n handleApprove = async (userCode: string) => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!userCode) return;\r\n const handler = state.handlers.find(i => i.code === userCode);\r\n if (!handler) return;\r\n if (!state.immediateAction) {\r\n if (await AppUtils.showConfirmationDialog(Translations.ApproveEventHandlerConfirmation, false) !== ConfirmationDialogResult.Yes) {\r\n return;\r\n }\r\n }\r\n // Save event\r\n const saveResult = await this.handleSave(false);\r\n if (!saveResult) return;\r\n // Call server\r\n const result = await AppUtils.callService(() => eventService.approveEvent(props.companyId, state.event.createCompanyId, state.event.id));\r\n if (!result) return;\r\n handler.date = Base.getNowTicks();\r\n const handlers = ModifyUser.sortModifyUsers(state.handlers.filter(i => i.code !== userCode).concat([new ModifyUser(handler)]), { currentUserCode: props.sessionState.code });\r\n const firstAndLastApproved = EventEditItem.getFirstAndLastApproveHandler(handlers);\r\n this.setState({\r\n handlers,\r\n firstApproveUser: firstAndLastApproved.firstApprove,\r\n lastApproveUser: firstAndLastApproved.lastApprove,\r\n processingTimeStr: EventEditItem.getProcessingTimeStr(firstAndLastApproved.lastApprove, state.event.publishUser, state.event.createUser)\r\n });\r\n };\r\n // #endregion Handlers\r\n\r\n // #region Messages\r\n handleMessageAdded = (newMessage: IEventEditItemMessage) => {\r\n if (!newMessage) return;\r\n const state = this.state;\r\n this.setState({\r\n messages: EventEditItemMessage.sortEventEditItemMessages(state.messages.concat([newMessage]))\r\n });\r\n };\r\n\r\n handleMessageRead = (id: string) => {\r\n if (!id) return;\r\n const state = this.state;\r\n const messages = state.messages.slice(0);\r\n const message = messages.find(i => i.id === id && !i.isRead);\r\n message.isRead = true;\r\n this.setState({\r\n messages\r\n });\r\n };\r\n // #endregion Messages\r\n\r\n getSaveDataFromState = (props: IEventEditDialogProp, state: IEventEditDialogState, publish: boolean = false): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n const event = state.event;\r\n result.append(\"rowId\", event.rowId);\r\n result.append(\"activeCompanyId\", props.companyId);\r\n result.append(\"companyId\", event.companyId);\r\n result.append(\"unitId\", state.unitId);\r\n result.append(\"urgencyClassId\", state.urgencyClassId);\r\n result.append(\"createCompanyId\", event.createCompanyId);\r\n result.append(\"createCompanyUnitId\", state.createCompanyUnitId);\r\n result.append(\"id\", event.id);\r\n result.append(\"date\", Base.getDateTime(state.dateStr, state.timeStr).getTime());\r\n result.append(\"name\", state.name);\r\n result.append(\"observer\", state.observer);\r\n result.append(\"observerAction\", state.observerAction);\r\n result.append(\"description\", state.description);\r\n result.append(\"immediateAction\", state.immediateAction);\r\n result.append(\"preventiveAction\", state.preventiveAction);\r\n result.append(\"rootCause\", state.rootCause);\r\n result.append(\"identificationDetails\", state.identificationDetails);\r\n result.append(\"directCosts\", state.directCostsStr.toDecimal());\r\n result.append(\"indirectCosts\", state.indirectCostsStr.toDecimal());\r\n result.append(\"amount\", state.amountStr.toDecimal());\r\n result.append(\"publish\", publish);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.dateStr) {\r\n AppUtils.showErrorMessage(Translations.DateMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (!state.name) {\r\n AppUtils.showErrorMessage(Translations.TitleMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (!state.description) {\r\n AppUtils.showErrorMessage(Translations.DescriptionMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (state.eventSetting.observerActionIsRequired() && !state.observerAction) {\r\n AppUtils.showErrorMessage(Translations.ObserverActionMustBeDefined);\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (publish: boolean): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n const saveData = this.getSaveDataFromState(props, state, publish);\r\n //Call server\r\n const result = await AppUtils.callService(() => eventService.saveEventEdit(saveData.obj));\r\n if (!result) return null;\r\n this.orgStateHash = saveData.hash;\r\n return result;\r\n };\r\n\r\n handlePrint = async () => {\r\n const state = this.state;\r\n if (!state.event) return;\r\n const fileName = await AppUtils.callService(() => eventService.getEventPrint(this.props.companyId, state.event.id, this.defaultPrintId));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.PrintParameterDownloaded, fileName));\r\n };\r\n\r\n handleSave = async (publish: boolean): Promise => {\r\n const props = this.props;\r\n const result = await this.saveToDb(publish);\r\n if (!result) return null;\r\n await this.loadEvent(result.id);\r\n props.onOk();\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.canRemoveEvent || !state.event || state.event.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveEventParameter, state.event.name), false, removeConfirmationWord) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await AppUtils.callService(() => eventService.removeEvent(props.companyId, state.event.createCompanyId, state.event.id));\r\n if (!result) return;\r\n props.onRemoved();\r\n this.setState({ lockedUser: null }, props.onCancel);\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave(false);\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut(this.getSaveDataFromState(props, this.state).hash, this.orgStateHash, async () => !!await this.saveToDb(false), props.onRefreshList);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const event = state.event;\r\n if (!event) return null;\r\n const isNew = event.isNew();\r\n const isPublished = event.isPublished();\r\n const hasBeenApproved = !!state.handlers.find(i => i.date);\r\n const activeCompanyIsReceivingCompany = props.companyId === event.companyId;\r\n const identificationDataIsVisible = state.userIsCreator || state.canEditIdentificationData;\r\n const locationIsVisible = state.eventSetting?.locationIsInUse() && event.locationName;\r\n return (\r\n \r\n }\r\n body={\r\n <>\r\n {state.activeMenuItem === EventEditDialogMenuItem.Event &&\r\n this.handleAttachmentRemove(0, id)}\r\n onDownloadAttachment={this.handleAttachmentDownload}\r\n onAddAttachments={(fileList) => this.handleAttachmentsAdd(0, fileList)}\r\n onUnlock={this.handleUnlockAndLockToMe}\r\n />\r\n }\r\n {state.activeMenuItem === EventEditDialogMenuItem.Handling &&\r\n this.handleAttachmentRemove(1, id)}\r\n onDownloadAttachment={this.handleAttachmentDownload}\r\n onAddAttachments={(fileList) => this.handleAttachmentsAdd(1, fileList)}\r\n onAddUsers={this.handleAddHandlers}\r\n onRemoveUsers={this.handleRemoveHandlers}\r\n onApprove={this.handleApprove}\r\n onEventMessageSaved={this.handleMessageAdded}\r\n onEventMessageRead={this.handleMessageRead}\r\n onSelectUnit={this.handleSelectUnit}\r\n />\r\n }\r\n {state.activeMenuItem === EventEditDialogMenuItem.Identification && identificationDataIsVisible &&\r\n \r\n \r\n \r\n }\r\n {state.activeMenuItem === EventEditDialogMenuItem.Location &&\r\n <>\r\n \r\n \r\n \r\n \r\n }\r\n {state.showSelectUnitDialog &&\r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n {!isNew && (\r\n <>\r\n {Translations.Remove}\r\n {Translations.Print}\r\n \r\n )}\r\n {Translations.Close}\r\n {!isPublished && (\r\n } variant=\"contained\" color=\"success\" onClick={isPublished ? null : () => this.handleSave(false)} sx={{ marginRight: \".5rem\", backgroundColor: \"success.light\" }}>{Translations.SaveDraft}\r\n )}\r\n this.handleSave(!isPublished)}>{isNew ? Translations.Next : (isPublished ? Translations.Save : Translations.SaveAndSend)}\r\n \r\n \r\n }\r\n onClose={this.handleCancel}/>\r\n );\r\n }\r\n}","// EventEditNewEventDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { EventEditUrgencyClassField } from \"ui/Scripts/source/components/event/EventEditUrgencyClassField/EventEditUrgencyClassField\";\r\nimport { Dropdown } from \"ui/Scripts/source/components/framework/Dropdown/Dropdown\";\r\nimport { TreeCheckBoxDropdownItems } from \"ui/Scripts/source/components/framework/Dropdown/TreeCheckboxDropdown/TreeCheckboxDropdownItems\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IIdColorTitle } from \"ui/Scripts/source/models/common/idColorTitle\";\r\nimport { IIdTitleNode, IdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { IEventSettingSimple } from \"ui/Scripts/source/models/eventSettings/eventSettingSimple\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IEventEditNew } from \"../../../models/event/eventEditNew\";\r\nimport { EventTypeNode } from \"../../../models/eventType/eventTypeNode\";\r\nimport * as eventService from \"../../../models/services/eventService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { DatePicker } from \"../../framework/DateTime/DatePicker\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { FormSectionTitle } from \"../../framework/Form/FormSectionTitle\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { SelectUnitTree } from \"../../framework/Unit/SelectUnitDialog\";\r\nimport { AvatarName } from \"../../framework/User/AvatarName\";\r\nimport { TimePicker } from \"source/components/framework/DateTime\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nconst enum NewEventDialogPage {\r\n Receiver = \"1\",\r\n EventType = \"2\",\r\n EventTypeB = \"3\",\r\n EventTypeC = \"4\",\r\n Basic = \"5\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n//EventEditNewEventDialog\r\nexport interface IEventEditNewEventDialogProp {\r\n classes?: string;\r\n sessionState: ISessionState;\r\n companyId: string;\r\n onOk: (eventId: string) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IEventEditNewEventDialogState {\r\n page: NewEventDialogPage;\r\n pageIsLastPage: boolean;\r\n eventEditNew: IEventEditNew;\r\n urgencyClasses: IIdColorTitle[];\r\n eventTypeNodes: IIdTitleNode[];\r\n eventTypeBNodes: IIdTitleNode[];\r\n eventTypeCNodes: IIdTitleNode[];\r\n eventSetting: IEventSettingSimple;\r\n // Receiver\r\n createCompanyId: string;\r\n createCompanyUnitId: string;\r\n createCompanyUnitCode: string;\r\n companyId: string;\r\n unitId: string;\r\n unitCode: string;\r\n handlers: IModifyUser[];\r\n // Basic\r\n urgencyClassId: string;\r\n dateStr: string;\r\n timeStr: string;\r\n name: string;\r\n description: string;\r\n observerAction: string;\r\n showSelectCompanyDialog: boolean;\r\n // EventTypes\r\n eventTypeIds: string[];\r\n eventTypeBIds: string[];\r\n eventTypeCIds: string[];\r\n}\r\n\r\nexport class EventEditNewEventDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n \r\n getStateFromProps = (props: IEventEditNewEventDialogProp): IEventEditNewEventDialogState => {\r\n const nowTicks = Base.getNowTicks();\r\n return {\r\n page: NewEventDialogPage.Receiver,\r\n pageIsLastPage: false,\r\n eventEditNew: null,\r\n urgencyClasses: [],\r\n eventTypeNodes: [],\r\n eventTypeBNodes: [],\r\n eventTypeCNodes: [],\r\n eventSetting: null,\r\n // Receiver\r\n createCompanyId: props.companyId,\r\n createCompanyUnitId: \"\",\r\n createCompanyUnitCode: \"\",\r\n companyId: props.companyId,\r\n unitId: \"\",\r\n unitCode: \"\",\r\n handlers: [],\r\n // Basic\r\n urgencyClassId: \"\",\r\n dateStr: Base.timeToDateStr(nowTicks),\r\n timeStr: Base.timeToTimeStr(nowTicks),\r\n name: \"\",\r\n description: \"\",\r\n observerAction: \"\",\r\n showSelectCompanyDialog: false,\r\n // EventTypes\r\n eventTypeIds: [],\r\n eventTypeBIds: [],\r\n eventTypeCIds: []\r\n };\r\n };\r\n\r\n constructor(props: IEventEditNewEventDialogProp) {\r\n super(props);\r\n this.state = this.getStateFromProps(props);\r\n this.orgStateHash = this.getSaveData(this.props, this.state).hash;\r\n }\r\n\r\n async componentDidMount(): Promise {\r\n const props = this.props;\r\n const eventEditNew = await AppUtils.callService(() => eventService.getEventEditNew(props.companyId), false, false);\r\n if (!eventEditNew) return;\r\n const companyId = eventEditNew.companies[0].id;\r\n const unit = IdTitleNode.getFirstActiveNode(eventEditNew.units);\r\n const result = await AppUtils.callService(() => eventService.getDefaultEventHandlersForUnit(companyId, companyId, unit.id, true));\r\n if (!result) return;\r\n for (const handler of result.handlers) {\r\n handler.date = 0;\r\n }\r\n const handlers = ModifyUser.sortModifyUsers(result.handlers, { currentUserCode: props.sessionState.code });\r\n const stateChange = {\r\n eventEditNew,\r\n createCompanyId: companyId,\r\n companyId,\r\n unitId: result.unitId,\r\n unitCode: result.unitCode,\r\n urgencyClassId: eventEditNew.urgencyClassId,\r\n createCompanyUnitId: result.unitId,\r\n createCompanyUnitCode: result.unitCode,\r\n handlers,\r\n urgencyClasses: eventEditNew.urgencyClasses,\r\n eventTypeNodes: EventTypeNode.getAsIdTitleNodes(eventEditNew.eventTypeNodes),\r\n eventTypeBNodes: EventTypeNode.getAsIdTitleNodes(eventEditNew.eventTypeBNodes),\r\n eventTypeCNodes: EventTypeNode.getAsIdTitleNodes(eventEditNew.eventTypeCNodes),\r\n eventSetting: eventEditNew.eventSetting\r\n };\r\n this.orgStateHash = this.getSaveData(this.props, { ...this.state, ...stateChange }).hash;\r\n this.setState(stateChange);\r\n }\r\n \r\n handleMoveToPreviousPage = () => {\r\n const state = this.state;\r\n const oldPage = state.page;\r\n const eventTypesExist = state.eventTypeNodes.length > 0;\r\n const eventTypeBsExist = state.eventTypeBNodes.length > 0;\r\n const eventTypeCsExist = state.eventTypeCNodes.length > 0;\r\n let page = oldPage;\r\n if (oldPage === NewEventDialogPage.EventType) {\r\n page = NewEventDialogPage.Receiver;\r\n } else if (oldPage === NewEventDialogPage.EventTypeB) {\r\n page = eventTypesExist\r\n ? NewEventDialogPage.EventType\r\n : NewEventDialogPage.Receiver;\r\n } else if (oldPage === NewEventDialogPage.EventTypeC) {\r\n page = eventTypeBsExist\r\n ? NewEventDialogPage.EventTypeB\r\n : (eventTypesExist\r\n ? NewEventDialogPage.EventType\r\n : NewEventDialogPage.Receiver);\r\n } else if (oldPage === NewEventDialogPage.Basic) {\r\n page = eventTypeCsExist\r\n ? NewEventDialogPage.EventTypeC\r\n : (eventTypeBsExist\r\n ? NewEventDialogPage.EventTypeB\r\n : (eventTypesExist\r\n ? NewEventDialogPage.EventType\r\n : NewEventDialogPage.Receiver));\r\n }\r\n this.setState({\r\n page,\r\n pageIsLastPage: false\r\n });\r\n };\r\n \r\n handleMoveToNextPage = async () => {\r\n const state = this.state;\r\n const oldPage = state.page;\r\n const eventTypesExist = state.eventTypeNodes.length > 0;\r\n const eventTypeBsExist = state.eventTypeBNodes.length > 0;\r\n const eventTypeCsExist = state.eventTypeCNodes.length > 0;\r\n if (oldPage === NewEventDialogPage.Basic) {\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return;\r\n }\r\n let page = oldPage;\r\n if (oldPage === NewEventDialogPage.Receiver) {\r\n page = eventTypesExist\r\n ? NewEventDialogPage.EventType\r\n : (eventTypeBsExist\r\n ? NewEventDialogPage.EventTypeB\r\n : (eventTypeCsExist\r\n ? NewEventDialogPage.EventTypeC\r\n : NewEventDialogPage.Basic));\r\n } else if (oldPage === NewEventDialogPage.EventType) {\r\n page = eventTypeBsExist\r\n ? NewEventDialogPage.EventTypeB\r\n : (eventTypeCsExist\r\n ? NewEventDialogPage.EventTypeC\r\n : NewEventDialogPage.Basic);\r\n } else if (oldPage === NewEventDialogPage.EventTypeB) {\r\n page = eventTypeCsExist\r\n ? NewEventDialogPage.EventTypeC\r\n : NewEventDialogPage.Basic;\r\n } else if (oldPage === NewEventDialogPage.EventTypeC) {\r\n page = NewEventDialogPage.Basic;\r\n }\r\n this.setState({\r\n page,\r\n pageIsLastPage: page === NewEventDialogPage.Basic\r\n });\r\n };\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n // Basic\r\n if (name === \"name\") {\r\n this.setState({ name: value });\r\n } else if (name === \"description\") {\r\n this.setState({ description: value });\r\n } else if (name === \"observerAction\") {\r\n this.setState({ observerAction: value });\r\n }\r\n };\r\n\r\n handleChangeEventTypeIds = (ids: string[]) => {\r\n this.setState({ eventTypeIds: ids });\r\n };\r\n\r\n handleChangeEventTypeBIds = (ids: string[]) => {\r\n this.setState({ eventTypeBIds: ids });\r\n };\r\n\r\n handleChangeEventTypeCIds = (ids: string[]) => {\r\n this.setState({ eventTypeCIds: ids });\r\n };\r\n\r\n // #region Company\r\n handleCompanyChange = async (companyId: string) => {\r\n const state = this.state;\r\n const activeCompanyIsSendingCompany = companyId === state.createCompanyId;\r\n const result = await AppUtils.callService(() => eventService.getDefaultEventHandlersForUnit(companyId, state.createCompanyId, activeCompanyIsSendingCompany ? state.createCompanyUnitId : null, true));\r\n if (!result) return null;\r\n for (const handler of result.handlers) {\r\n handler.date = 0;\r\n }\r\n const handlers = ModifyUser.sortModifyUsers(result.handlers, { currentUserCode: this.props.sessionState.code });\r\n this.setState({\r\n companyId,\r\n unitId: result.unitId,\r\n unitCode: result.unitCode,\r\n createCompanyUnitId: activeCompanyIsSendingCompany ? result.unitId : state.createCompanyUnitId,\r\n createCompanyUnitCode: activeCompanyIsSendingCompany ? result.unitCode : state.createCompanyUnitCode,\r\n handlers,\r\n eventSetting: result.eventSetting\r\n });\r\n };\r\n // #endregion Company\r\n\r\n // #region Select Unit\r\n handleSelectUnit = async (selectedId: string) => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!selectedId) return;\r\n const node = IdTitleNode.getById(state.eventEditNew.units.filter(i => i.id !== Base.emptyGuid), selectedId);\r\n if (!node) return;\r\n const activeCompanyIsReceivingCompany = props.companyId === state.companyId;\r\n const activeCompanyIsSendingCompany = props.companyId === state.createCompanyId;\r\n if (activeCompanyIsReceivingCompany) {\r\n const result = await AppUtils.callService(() => eventService.getDefaultEventHandlersForUnit(state.companyId, state.createCompanyId, node.id, true));\r\n if (!result) return null;\r\n for (const handler of result.handlers) {\r\n handler.date = 0;\r\n }\r\n const handlers = ModifyUser.sortModifyUsers(result.handlers, { currentUserCode: props.sessionState.code });\r\n this.setState({\r\n unitId: result.unitId,\r\n unitCode: result.unitCode,\r\n createCompanyUnitId: activeCompanyIsSendingCompany ? result.unitId : state.createCompanyUnitId,\r\n createCompanyUnitCode: activeCompanyIsSendingCompany ? result.unitCode : state.createCompanyUnitCode,\r\n handlers\r\n });\r\n } else {\r\n this.setState({\r\n createCompanyUnitId: node.id,\r\n createCompanyUnitCode: node.title\r\n });\r\n }\r\n };\r\n \r\n // #endregion Select Unit\r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.dateStr) {\r\n AppUtils.showErrorMessage(Translations.DateMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (!state.timeStr) {\r\n AppUtils.showErrorMessage(Translations.TimeMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (!state.name) {\r\n AppUtils.showErrorMessage(Translations.TitleMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (!state.description) {\r\n AppUtils.showErrorMessage(Translations.DescriptionMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (state.eventSetting.observerActionIsRequired() && !state.observerAction) {\r\n AppUtils.showErrorMessage(Translations.ObserverActionMustBeDefined);\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n \r\n getSaveData = (props: IEventEditNewEventDialogProp, state: IEventEditNewEventDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"activeCompanyId\", props.companyId);\r\n result.append(\"companyId\", state.companyId);\r\n result.append(\"unitId\", state.unitId);\r\n result.append(\"urgencyClassId\", state.urgencyClassId);\r\n result.append(\"createCompanyId\", state.createCompanyId);\r\n result.append(\"createCompanyUnitId\", state.createCompanyUnitId);\r\n result.append(\"date\", Base.getDateTime(state.dateStr, state.timeStr).getTime());\r\n result.append(\"name\", state.name);\r\n result.append(\"description\", state.description);\r\n result.append(\"observerAction\", state.observerAction);\r\n result.append(\"eventTypeIds\", state.eventTypeIds);\r\n result.append(\"eventTypeBIds\", state.eventTypeBIds);\r\n result.append(\"eventTypeCIds\", state.eventTypeCIds);\r\n result.append(\"handlers\", state.handlers.map(i => i.code));\r\n return result;\r\n };\r\n\r\n handleSave = async () => {\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n // Set data\r\n const saveData = this.getSaveData(this.props, state);\r\n // Call server\r\n const result = await AppUtils.callService(() => eventService.saveEventEditNew(saveData.obj));\r\n if (!result) return null;\r\n this.orgStateHash = this.getSaveData(this.props, state).hash;\r\n if (result) {\r\n this.props.onOk(result.id);\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveData(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.eventEditNew) return null;\r\n const eventEditNew = state.eventEditNew;\r\n const activeCompanyIsReceivingCompany = props.companyId === state.companyId;\r\n const receiverCompany = eventEditNew.companies.find(i => i.id === state.companyId);\r\n return (\r\n \r\n {state.page === NewEventDialogPage.Receiver &&\r\n <>\r\n \r\n \r\n {Translations.SelectEventReceiver}\r\n \r\n \r\n \r\n \r\n \r\n }\r\n selectMode={true}\r\n actions={eventEditNew.companies.map((company) => {\r\n return {\r\n title: ,\r\n textTitle: company.name,\r\n selected: company.id === state.companyId,\r\n onClick: () => this.handleCompanyChange(company.id)\r\n };\r\n })}\r\n />\r\n \r\n \r\n \r\n {activeCompanyIsReceivingCompany &&\r\n \r\n \r\n \r\n this.setState({ urgencyClassId })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n i.id !== Base.emptyGuid)}\r\n firstColumnTitle={Translations.Unit}\r\n selectedId={state.unitId}\r\n margin={0}\r\n onClick={this.handleSelectUnit}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n {state.page === NewEventDialogPage.Basic &&\r\n <>\r\n \r\n \r\n {Translations.Event}\r\n \r\n \r\n \r\n \r\n \r\n this.setState({ dateStr: value })}\r\n />\r\n \r\n \r\n \r\n \r\n this.setState({ timeStr })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {state.eventSetting.observerActionIsInUse() &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n {state.page === NewEventDialogPage.EventType &&\r\n <>\r\n \r\n \r\n {Translations.SelectEventType + \" (\" + Translations.Voluntary.toLocaleLowerCase() + \")\"}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {state.page === NewEventDialogPage.EventTypeB &&\r\n <>\r\n \r\n \r\n {Translations.SelectEventTypeB + \" (\" + Translations.Voluntary.toLocaleLowerCase() + \")\"}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {state.page === NewEventDialogPage.EventTypeC &&\r\n <>\r\n \r\n \r\n {Translations.SelectEventTypeC + \" (\" + Translations.Voluntary.toLocaleLowerCase() + \")\"}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n buttons={[\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: this.handleCancel },\r\n { title: Translations.Previous, variant: \"outlined\", onClick: state.page === NewEventDialogPage.Receiver ? null : this.handleMoveToPreviousPage },\r\n { title: Translations.Next, variant: \"confirmation\", onClick: !state.pageIsLastPage ? this.handleMoveToNextPage : this.handleSave },\r\n ]}\r\n onClose={this.handleCancel}/>\r\n );\r\n }\r\n}","import { Alert, Box, Grid, Typography } from \"@mui/material\";\r\nimport downloadjs from \"downloadjs\";\r\nimport GoogleMapReact from \"google-map-react\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { UserBlocks } from \"source/components/user/UserBlocks/UserBlocks\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { EventEditItem, IEventEditItem } from \"source/models/event/eventEditItem\";\r\nimport { EventTypeNode } from \"source/models/eventType/eventTypeNode\";\r\nimport { ISessionState } from \"source/models/session/sessionState\";\r\nimport { EventEditUrgencyClassField } from \"ui/Scripts/source/components/event/EventEditUrgencyClassField/EventEditUrgencyClassField\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IIdColorTitle } from \"ui/Scripts/source/models/common/idColorTitle\";\r\nimport { IdTitleNode, IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { IEventSettingSimple } from \"ui/Scripts/source/models/eventSettings/eventSettingSimple\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport * as attachmentService from \"../../../models/services/attachmentService\";\r\nimport * as eventService from \"../../../models/services/eventService\";\r\nimport { AttachmentList } from \"../../attachments/AttachmentList\";\r\nimport { FormField } from \"../../framework/FormField/FormField\";\r\nimport { FormFieldLockedToUser } from \"../../framework/FormFieldLockedToUser\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { ListDetailsPanel } from \"../../framework/List/ListDetailsPanel\";\r\nimport { ListDetailsPanelAccordion } from \"../../framework/List/ListDetailsPanel/ListDetailsPanelAccordion\";\r\nimport { LocalLoading } from \"../../framework/Loading/LocalLoading\";\r\nimport { AvatarName } from \"../../framework/User/AvatarName\";\r\nimport { ModifyUserInfo } from \"../../framework/User/ModifyUserInfo\";\r\nimport { EventEditDialogMessageList } from \"../EventEditDialogMessageList\";\r\nimport { MapMarker } from \"ui/Scripts/source/components/framework/mapMarker\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { recordLockManager } from \"../../../models/services/recordLockService\";\r\nimport { StoreUtils } from \"source/models/store/storeUtils\";\r\n\r\ninterface EventListDetailsPanelProps {\r\n sessionState: ISessionState;\r\n companyId: string;\r\n eventId: string;\r\n dataId: string;\r\n editDialogVisible: boolean;\r\n onRefreshList: () => void;\r\n onClose: () => void;\r\n}\r\n\r\ninterface EventListDetailsPanelState {\r\n event: IEventEditItem;\r\n eventSetting: IEventSettingSimple;\r\n lastApproveUser: IModifyUser;\r\n urgencyClasses: IIdColorTitle[];\r\n eventTypeNodes: IIdTitleNode[];\r\n eventTypeBNodes: IIdTitleNode[];\r\n eventTypeCNodes: IIdTitleNode[];\r\n createCompany: ICompanyMenuItem;\r\n companies: ICompanyMenuItem[];\r\n processingTimeStr: string;\r\n handlers: IModifyUser[];\r\n}\r\n\r\nexport const EventListDetailsPanel = (props: EventListDetailsPanelProps) => {\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [state, setState] = useState({\r\n event: null,\r\n eventSetting: null,\r\n lastApproveUser: null,\r\n urgencyClasses: [],\r\n eventTypeNodes: [],\r\n eventTypeBNodes: [],\r\n eventTypeCNodes: [],\r\n createCompany: null,\r\n companies: [],\r\n processingTimeStr: \"\",\r\n handlers: []\r\n });\r\n const receiverCompany = state.companies.find(i => i.id === state.event?.companyId);\r\n const activeCompanyIsReceivingCompany = props.companyId === state.event?.companyId;\r\n \r\n const changeState = (obj: any) => {\r\n setState(prevState => ({\r\n ...prevState,\r\n ...obj\r\n }));\r\n };\r\n\r\n const loadEvent = async () => {\r\n if (!props.eventId) return;\r\n setIsLoading(true);\r\n const result = await AppUtils.callService(() => eventService.getEventEdit(props.companyId, props.eventId, false), false, true, () => setIsLoading(false));\r\n if (!result) return;\r\n const event = result.item;\r\n const firstAndLastApproved = EventEditItem.getFirstAndLastApproveHandler(event.handlers);\r\n changeState({\r\n event,\r\n eventSetting: result.eventSetting,\r\n urgencyClasses: result.urgencyClasses,\r\n eventTypeNodes: EventTypeNode.getAsIdTitleNodes(result.eventTypeNodes),\r\n eventTypeBNodes: EventTypeNode.getAsIdTitleNodes(result.eventTypeBNodes),\r\n eventTypeCNodes: EventTypeNode.getAsIdTitleNodes(result.eventTypeCNodes),\r\n lastApproveUser: firstAndLastApproved.lastApprove,\r\n processingTimeStr: EventEditItem.getProcessingTimeStr(firstAndLastApproved.lastApprove, event.publishUser, event.createUser),\r\n isLockedToOtherUser: event.isLockedToOtherUser(props.sessionState.code),\r\n createCompany: result.createCompany,\r\n companies: result.companies,\r\n handlers: event.handlers\r\n });\r\n };\r\n\r\n const recordUnLocked = (id: string) => {\r\n if (!id || !state.event?.id || state.event.id !== id) return;\r\n const event = new EventEditItem(state.event);\r\n event.lockedUser = null;\r\n changeState({\r\n event,\r\n isLockedToOtherUser: event.isLockedToOtherUser(props.sessionState.code),\r\n });\r\n };\r\n\r\n const recordLockedToMe = (id: string) => {\r\n if (!id || !state.event?.id || state.event.id !== id) return;\r\n const event = new EventEditItem(state.event);\r\n event.lockedUser = StoreUtils.getNowModifyUser();\r\n changeState({\r\n event,\r\n isLockedToOtherUser: event.isLockedToOtherUser(props.sessionState.code),\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n recordLockManager.addUnlockCallBack(recordUnLocked);\r\n recordLockManager.addLockCallBack(recordLockedToMe);\r\n\r\n return () => {\r\n recordLockManager.removeUnlockCallBack(recordUnLocked);\r\n recordLockManager.removeLockCallBack(recordLockedToMe);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (props.editDialogVisible) return;\r\n loadEvent();\r\n }, [props.companyId, props.eventId, props.dataId, props.editDialogVisible]);\r\n\r\n const handleAttachmentDownload = async (id: string) => {\r\n if (!id) return;\r\n const attachment = state.event?.attachments.find(i => i.id === id);\r\n if (!attachment) return;\r\n if (attachment.file) {\r\n downloadjs(attachment.file, attachment.name);\r\n return;\r\n }\r\n if (attachment.isNew()) return;\r\n const fileName = await AppUtils.callService(() => attachmentService.getAttachment(id));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.AttachmentParameterDownloaded, fileName));\r\n };\r\n\r\n const getEventTypesString = (eventTypeNodes: IIdTitleNode[], eventTypeIds: string[]) => {\r\n if (!eventTypeNodes || !eventTypeIds || !eventTypeNodes.length || !eventTypeIds.length) return \"\";\r\n const result: IIdTitleNode[] = eventTypeNodes.map(\r\n (i) => new IdTitleNode(i)\r\n );\r\n IdTitleNode.setHierarchialTitles(result);\r\n IdTitleNode.sortUIdTitleNodes(result);\r\n return IdTitleNode.getByIds(result, eventTypeIds).map(eventType => eventType.title).join(\", \");\r\n };\r\n\r\n const getDateStr = (): string => {\r\n if (!state.event?.date) return \"\";\r\n return Base.timeToDateStr(state.event.date) + (!Base.isZeroTime(state.event.date) ? \" \" + Base.timeToTimeStr(state.event.date) : \"\");\r\n };\r\n\r\n const handleApprove = async (userCode: string) => {\r\n if (!userCode) return;\r\n const handler = (state.handlers).find(i => i.code === userCode);\r\n if (!handler) return;\r\n if (!state.event?.immediateAction) {\r\n if (await AppUtils.showConfirmationDialog(Translations.ApproveEventHandlerConfirmation, false) !== ConfirmationDialogResult.Yes) {\r\n return;\r\n }\r\n }\r\n // Call server\r\n const result = await AppUtils.callService(() => eventService.approveEvent(props.companyId, state.event.createCompanyId, state.event.id));\r\n if (!result) return;\r\n handler.date = Base.getNowTicks();\r\n const handlers = ModifyUser.sortModifyUsers(state.handlers.filter(i => i.code !== userCode).concat([new ModifyUser(handler)]), { currentUserCode: props.sessionState.code });\r\n const firstAndLastApproved = EventEditItem.getFirstAndLastApproveHandler(handlers);\r\n changeState({\r\n handlers,\r\n lastApproveUser: firstAndLastApproved.lastApprove,\r\n processingTimeStr: EventEditItem.getProcessingTimeStr(firstAndLastApproved.lastApprove, state.event.publishUser, state.event.createUser)\r\n });\r\n props.onRefreshList();\r\n };\r\n\r\n return (\r\n \r\n {!props.eventId &&\r\n {Translations.SelectEventInListToSeeThePreview}\r\n }\r\n {!!isLoading &&\r\n
\r\n \r\n
\r\n }\r\n {(!isLoading && props.eventId && state.event) &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {state.event?.publishUser &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {state.lastApproveUser &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {(!state.event?.publishUser || !state.lastApproveUser) && state.event?.lockedUser &&\r\n \r\n \r\n \r\n }\r\n \r\n {(state.event?.publishUser && state.lastApproveUser && state.event?.lockedUser) &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n {state.event?.createCompanyId !== state?.event.companyId &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n }\r\n \r\n \r\n \r\n {getDateStr()}\r\n \r\n \r\n \r\n \r\n {state.event?.code}\r\n \r\n \r\n \r\n {}}\r\n />\r\n \r\n {(!activeCompanyIsReceivingCompany || (activeCompanyIsReceivingCompany && !state.event?.publishUser)) &&\r\n \r\n \r\n {state.event?.createCompanyUnitCode}\r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n {state.event?.name}\r\n \r\n \r\n \r\n \r\n {state.event?.observer}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {state.event?.description}\r\n \r\n \r\n \r\n \r\n {state.event?.attachments.length > 0 &&\r\n \r\n i.category === 0)}\r\n imageSize={state.eventSetting?.attachmentImageSize}\r\n margin={0}\r\n title={null}\r\n isReadOnly\r\n onRemoveAttachment={() => { }}\r\n onDownloadAttachment={handleAttachmentDownload}\r\n ignoreAspectRatio\r\n onAddAttachments={() => { }}\r\n />\r\n \r\n }\r\n {(state.event?.immediateAction || state.event?.preventiveAction || state.event?.rootCause) && (\r\n \r\n {state.event?.immediateAction &&\r\n \r\n \r\n \r\n {state.event?.immediateAction}\r\n \r\n \r\n \r\n }\r\n {state.event?.preventiveAction &&\r\n \r\n \r\n \r\n {state.event?.preventiveAction}\r\n \r\n \r\n \r\n }\r\n {state.event?.rootCause &&\r\n \r\n \r\n \r\n {state.event?.rootCause}\r\n \r\n \r\n \r\n }\r\n \r\n )}\r\n {state.event?.messages.length > 0 &&\r\n \r\n {}}\r\n onEventMessageRead={() => {}}\r\n />\r\n \r\n }\r\n \r\n \r\n {(activeCompanyIsReceivingCompany && !!state.event?.publishUser) &&\r\n \r\n \r\n \r\n {state.event?.unitCode}\r\n \r\n \r\n \r\n }\r\n \r\n new Promise(() => {})}\r\n onRemoveUsers={() => new Promise(() => {})}\r\n onGetUserSelectListItems={() => new Promise(() => [])}\r\n onApprove={handleApprove}\r\n />\r\n \r\n \r\n {(state.processingTimeStr?.length > 0) &&\r\n \r\n \r\n \r\n {state.processingTimeStr}\r\n \r\n \r\n \r\n }\r\n {state.event?.attachments.filter(i => i.category > 0.5)?.length > 0 &&\r\n \r\n \r\n \r\n i.category > 0.5)}\r\n imageSize={state.eventSetting?.attachmentImageSize}\r\n margin={0}\r\n title={null}\r\n isReadOnly\r\n ignoreAspectRatio\r\n onRemoveAttachment={() => { }}\r\n onDownloadAttachment={handleAttachmentDownload}\r\n onAddAttachments={() => { }}\r\n />\r\n \r\n \r\n \r\n }\r\n \r\n {state.event?.eventTypeIds.length > 0 &&\r\n \r\n \r\n {getEventTypesString(state.eventTypeNodes, state.event?.eventTypeIds)}\r\n \r\n \r\n }\r\n {state.event?.eventTypeBIds.length > 0 &&\r\n \r\n \r\n {getEventTypesString(state.eventTypeBNodes, state.event?.eventTypeBIds)}\r\n \r\n \r\n }\r\n {state.event?.eventTypeCIds.length > 0 &&\r\n \r\n \r\n {getEventTypesString(state.eventTypeCNodes, state.event?.eventTypeCIds)}\r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n {state.event?.directCosts.toLocaleFixed(2)}\r\n \r\n \r\n \r\n \r\n {state.event?.indirectCosts.toLocaleFixed(2)}\r\n \r\n \r\n \r\n \r\n {state.event?.amount.toLocaleFixed(2)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {state.event?.identificationDetails}\r\n \r\n \r\n \r\n \r\n {state.eventSetting?.locationIsInUse() && state.event?.locationName &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n
\r\n }\r\n
\r\n );\r\n};\r\n","/* global JSX */\r\n// EventList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Grid, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { EventListStateCol } from \"ui/Scripts/source/components/event/eventListStateCol\";\r\nimport { ToolButtonDropdown } from \"ui/Scripts/source/components/framework/Button/ToolButtonDropdown\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IdColorTitle } from \"ui/Scripts/source/models/common/idColorTitle\";\r\nimport { IIdTitleNode, IdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { ApplicationPermissionType, ConfirmationDialogResult, EventUserState } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ModifyUser } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/user/modifyUser\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { ISavedPrint, SavedPrint } from \"../../../models/common/savedPrint\";\r\nimport { infiniteListPageSize } from \"../../../models/common/webConsts\";\r\nimport { IEventListItem } from \"../../../models/event/eventListItem\";\r\nimport { IEventListItems } from \"../../../models/event/eventListItems\";\r\nimport * as eventService from \"../../../models/services/eventService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { AddButton } from \"../../framework/Button/AddButton\";\r\nimport { ApproveButton } from \"../../framework/Button/ApproveButton\";\r\nimport { EditToolButton } from \"../../framework/Button/EditToolButton\";\r\nimport { PreviewToggleButton } from \"../../framework/Button/PreviewToggleButton\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { AppPrintIcon } from \"../../framework/Icon/AppPrintIcon\";\r\nimport { IListUsingComponentState, List } from \"../../framework/List/List\";\r\nimport { ListActionButtons } from \"../../framework/List/ListActionButtons\";\r\nimport { ListCardField } from \"../../framework/List/ListCardField\";\r\nimport { ListContainer } from \"../../framework/List/ListContainer\";\r\nimport { ListDetailsButton } from \"../../framework/List/ListDetailsButton\";\r\nimport { ListLinkValue } from \"../../framework/List/ListLinkValue\";\r\nimport { ListSearchContainer } from \"../../framework/List/ListSearchContainer\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { ListToggleButtons } from \"../../framework/List/ListToggleButtons\";\r\nimport { PageTitle } from \"../../framework/Page/PageTitle\";\r\nimport { PrintOptionsDialog } from \"../../framework/PrintOptionsDialog/PrintOptionsDialog\";\r\nimport { EventEditDialog } from \"../EventEditDialog\";\r\nimport { EventEditNewEventDialog } from \"../EventEditNewEventDialog\";\r\nimport { EventListDetailsPanel } from \"../EventListDetailsPanel\";\r\nimport { EventPageDashboardChart, IEventGeneralFilter, IEventPageFilterState } from \"../EventPageDashboardChart/EventPageDashboardChart\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum EventEditViewMode {\r\n Informant = \"1\",\r\n Company = \"2\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n// EventListHandlersCol\r\nexport interface IEventListHandlersColProp {\r\n item: IEventListItem;\r\n}\r\n\r\nexport class EventListHandlersCol extends React.Component {\r\n render() {\r\n const item = this.props.item;\r\n const otherHandlers = item.handlers.length > 1 ? item.handlers.slice(1) : [];\r\n return (\r\n
i.name).join(\", \")}>\r\n {item.handlers.length > 0 &&\r\n {item.handlers[0].name}\r\n }\r\n {otherHandlers.length > 0 &&\r\n i.name).join(\", \")}>{\"+\" + otherHandlers.length.toString(10)}\r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\n// EventListDetailsHandlersField\r\nexport interface IEventListDetailsHandlersFieldProp {\r\n sessionState: ISessionState;\r\n item: IEventListItem;\r\n onApprove: (item: IEventListItem) => void;\r\n}\r\n\r\nexport class EventListDetailsHandlersField extends React.Component {\r\n render() {\r\n const props = this.props;\r\n const item = props.item;\r\n const sessionState = props.sessionState;\r\n return (\r\n
i.name + (i.date ? \": \" + Base.timeToDateStr(i.date) : \"-\")).join(\",\\n\")}>\r\n {item.handlers.map((handler) => {\r\n const isUserNotApprovedRow = handler.code === sessionState.code && item.userState === EventUserState.NotApproved;\r\n return \r\n {handler.name}\r\n \r\n {isUserNotApprovedRow\r\n ? props.onApprove(item)}\r\n />\r\n : (handler.date ? Base.timeToDateStr(handler.date) : \"-\")\r\n }\r\n \r\n ;\r\n })}\r\n
\r\n );\r\n }\r\n}\r\n\r\n// EventList\r\nexport interface IEventListProp extends IEventPageFilterState {\r\n sessionState: ISessionState;\r\n savedFilter: IListFilterItem;\r\n companyId: string;\r\n disableGlobalLoading?: boolean;\r\n preloaded?: boolean;\r\n addRecord: boolean;\r\n waitingPreloadedData?: boolean;\r\n list?: IEventListItems;\r\n listFilterIsSet: boolean;\r\n units: IIdTitleNode[];\r\n dataId?: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n titleSuffix?: JSX.Element;\r\n reportTabs: React.ReactNode;\r\n userPrints: ISavedPrint[];\r\n printableFields: IIdTitleNode[];\r\n showDocumentPreview?: boolean;\r\n urgencyClasses: IdColorTitle[];\r\n onSetSortData: (sortColumn: string, sortOrderIsAsc: boolean) => void;\r\n onLoadPageData: () => void;\r\n onUserPrintsModified: (userPrints: ISavedPrint[]) => void;\r\n onOpenFiltersDialog: () => void;\r\n onChangeShowDocumentPreview?: (showDocumentPreview: boolean) => void;\r\n}\r\n\r\ninterface IEventListState extends IListUsingComponentState, IEventGeneralFilter {\r\n userPrints: ISavedPrint[];\r\n\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n waitingPreloadedData: boolean;\r\n pageSize: number;\r\n page: number;\r\n filter: string;\r\n\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n listModeIsLine: boolean;\r\n checkedIds: string[];\r\n\r\n // Details\r\n detailsItem: IEventListItem;\r\n\r\n // New Dialog\r\n showNewEventDialog: boolean;\r\n\r\n // Prints\r\n showEventPrintDialog: boolean;\r\n eventPrintDialogPrint: ISavedPrint;\r\n eventPrintDialogReservedNames: string[];\r\n eventPrintDialogPrintableFields: IIdTitleNode[];\r\n}\r\n\r\nexport class EventList extends React.Component {\r\n static defaultPrintId = \"00000000-0000-0000-0000-000000000000\";\r\n static customPrintId = \"00000000-0000-0000-0000-000000000001\";\r\n sendReadReceipts: string[] = [];\r\n\r\n getUserPrints = (userPrints: ISavedPrint[]): ISavedPrint[] => {\r\n let result = userPrints.filter(i => i.defaultPrint);\r\n const customPrints = userPrints.filter(i => !i.defaultPrint);\r\n if (customPrints.length) {\r\n result.push(SavedPrint.createSpacer());\r\n result = result.concat(customPrints);\r\n }\r\n result.push(SavedPrint.createSpacer());\r\n const addItem = new SavedPrint();\r\n addItem.title = Translations.AddPrint;\r\n result.push(addItem);\r\n return result;\r\n };\r\n\r\n sortHandlers = (items: IEventListItem[]): IEventListItem[] => {\r\n for (const item of items) {\r\n item.handlers = ModifyUser.sortModifyUsers(item.handlers, { currentUserCode: this.props.sessionState.code });\r\n }\r\n return items;\r\n };\r\n\r\n constructor(props: IEventListProp) {\r\n super(props);\r\n const generalFilterValues = EventPageDashboardChart.getGeneralFilterFromState(props);\r\n this.state = {\r\n ...generalFilterValues,\r\n userPrints: this.getUserPrints(props.userPrints),\r\n intialized: props.list && !!props.preloaded,\r\n isLoading: false,\r\n waitingPreloadedData: !Base.isNullOrUndefined(props.waitingPreloadedData) ? props.waitingPreloadedData : (props.list ? false : props.preloaded),\r\n page: props.list ? props.list.page : 1,\r\n hasMore: props.list ? props.list.hasMore : true,\r\n filter: \"\",\r\n pageSize: props.list ? props.list.pageSize : infiniteListPageSize,\r\n sortColumn: props.sortColumn,\r\n sortOrderIsAsc: props.sortOrderIsAsc,\r\n listModeIsLine: true,\r\n items: this.sortHandlers(props.list ? props.list.items : []),\r\n selectedId: null,\r\n checkedIds: [],\r\n // Details\r\n detailsItem: null,\r\n // New Dialog\r\n showNewEventDialog: props.addRecord,\r\n // Dialog\r\n showEditDialog: false,\r\n editDialogId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false,\r\n // Prints\r\n showEventPrintDialog: false,\r\n eventPrintDialogPrint: null,\r\n eventPrintDialogReservedNames: [],\r\n eventPrintDialogPrintableFields: []\r\n };\r\n }\r\n\r\n setReadReceipt = (detailsItem: IEventListItem) => {\r\n const props = this.props;\r\n if (!detailsItem || detailsItem.isRead || !detailsItem.published) return;\r\n const userIsCreator = detailsItem.createUser.code === props.sessionState.code;\r\n if (userIsCreator || this.sendReadReceipts.indexOf(detailsItem.id) > -1) return;\r\n const result = AppUtils.callService(() => eventService.sendEventReadReceipt(props.companyId, detailsItem.id), false, true);\r\n if (!result) return;\r\n this.sendReadReceipts.push(detailsItem.id);\r\n const items = this.state.items.slice(0);\r\n const item = items.find(i => i.id === detailsItem.id);\r\n if (!item) return;\r\n item.isRead = true;\r\n this.setState({\r\n items\r\n });\r\n };\r\n\r\n searchItems = async (pageSize: number, page: number, filter: string, genralFilter: IEventGeneralFilter, sortColumn: string, sortOrderIsAsc: boolean,\r\n resetItems: boolean, refreshList: boolean, moveNext: boolean = false, setDialogData: boolean = true) => {\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => eventService.getEventListItems(this.props.companyId, !refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1, filter,\r\n genralFilter.startDate, genralFilter.endDate, genralFilter.unitIds, genralFilter.states, genralFilter.urgencyClassIds, genralFilter.eventTypeIds, genralFilter.eventTypeBIds,\r\n genralFilter.eventTypeCIds, genralFilter.partnerCompanyIds, genralFilter.createUserCodes, genralFilter.handlerUserCodes, genralFilter.observers, genralFilter.dynamicTimeFilterId,\r\n sortColumn, sortOrderIsAsc), false, this.props.disableGlobalLoading, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const items = List.getListItems(this.state.items, this.state.selectedId, this.state.checkedIds, this.sortHandlers(result.items), resetItems, refreshList);\r\n let selectedId = items.selectedId;\r\n let index = items.items.findIndex(i => i.id === selectedId);\r\n let detailsItem = index > -1 ? items.items[index] : null;\r\n if (moveNext && detailsItem && index < items.items.length - 1) {\r\n index = index + 1;\r\n detailsItem = items.items[index];\r\n selectedId = items.items[index].id;\r\n }\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n selectedId,\r\n checkedIds: items.checkedIds,\r\n detailsItem,\r\n editDialogId: setDialogData ? (moveNext && detailsItem ? detailsItem.id : \"\") : this.state.editDialogId,\r\n editDialogHasPrevious: setDialogData ? index > 0 : this.state.editDialogHasPrevious,\r\n editDialogHasNext: setDialogData ? (index < items.items.length - 1 || result.hasMore) : this.state.editDialogHasNext,\r\n ...genralFilter\r\n });\r\n this.props.onSetSortData(sortColumn, sortOrderIsAsc);\r\n this.setReadReceipt(detailsItem);\r\n };\r\n\r\n refreshList = async (setDialogData: boolean = true) => {\r\n const state = this.state;\r\n await this.searchItems(state.pageSize, state.page, state.filter, EventPageDashboardChart.cloneGeneralFilter(state), state.sortColumn, state.sortOrderIsAsc, false, true, false, setDialogData);\r\n };\r\n\r\n componentDidMount(): void {\r\n const props = this.props;\r\n const state = this.state;\r\n if (props.preloaded && !props.savedFilter) return;\r\n this.searchItems(state.pageSize, state.page, state.filter, EventPageDashboardChart.cloneGeneralFilter(state), state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: IEventListProp, prevState: IEventListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.waitingPreloadedData) {\r\n if (!props.list || (props.dataId ?? \"\") === (prevProps.dataId ?? \"\")) return;\r\n this.setState({\r\n intialized: true,\r\n waitingPreloadedData: false,\r\n page: props.list.page,\r\n hasMore: props.list.hasMore,\r\n items: props.list.items,\r\n pageSize: props.list.pageSize,\r\n userPrints: this.getUserPrints(props.userPrints)\r\n });\r\n } else {\r\n const prevDataId = prevProps.dataId ? prevProps.dataId : \"\";\r\n const dataId = props.dataId ? props.dataId : \"\";\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n const filterStateChange = EventPageDashboardChart.getEventGeneralFilterChange(prevProps, props);\r\n const prevSortColumn = prevProps.sortColumn;\r\n const sortColumn = props.sortColumn;\r\n const prevSortOrderIsAsc = prevProps.sortOrderIsAsc;\r\n const sortOrderIsAsc = props.sortOrderIsAsc;\r\n if (JSON.stringify(prevProps.userPrints) !== JSON.stringify(props.userPrints)) {\r\n this.setState({\r\n userPrints: this.getUserPrints(props.userPrints)\r\n });\r\n }\r\n if (dataId === prevDataId && companyId === prevCompanyId &&\r\n filterStateChange.notChanged &&\r\n prevSortColumn === sortColumn && prevSortOrderIsAsc === sortOrderIsAsc) {\r\n return;\r\n }\r\n this.searchItems(state.pageSize, 1, state.filter, filterStateChange, sortColumn, sortOrderIsAsc, true, false);\r\n }\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, filter, EventPageDashboardChart.cloneGeneralFilter(state), state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, EventPageDashboardChart.cloneGeneralFilter(state), sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n const detailsItem = this.state.items.find(i => i.id === selectedId);\r\n this.setState({\r\n selectedId,\r\n checkedIds,\r\n detailsItem\r\n });\r\n this.setReadReceipt(detailsItem);\r\n };\r\n\r\n handleListModeToggle = (_event: React.MouseEvent, listModeIsLine: boolean) => {\r\n this.setState({\r\n listModeIsLine,\r\n });\r\n };\r\n\r\n // #region Edit dialog\r\n handleOpenLine = (id: string) => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, id));\r\n };\r\n\r\n handleEventDialogOk = () => {\r\n this.refreshList(false);\r\n this.props.onLoadPageData();\r\n };\r\n\r\n handleEventDialogCancel = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n this.refreshList();\r\n this.props.onLoadPageData();\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n this.setState(List.getEditDialogItemByIndexStateChange(this.state, index, () => this.searchItems(state.pageSize, state.page + 1, state.filter, EventPageDashboardChart.cloneGeneralFilter(state), state.sortColumn, state.sortOrderIsAsc, false, false, true)));\r\n };\r\n // #endregion Edit dialog\r\n\r\n // #region Add dialog\r\n handleAdd = () => {\r\n this.setState({\r\n showNewEventDialog: true\r\n });\r\n };\r\n\r\n handleEditNewRecordDialogOk = async (eventId: string) => {\r\n this.setState({\r\n selectedId: eventId,\r\n showNewEventDialog: false\r\n });\r\n await this.refreshList();\r\n this.props.onLoadPageData();\r\n this.setState(List.getShowEditDialogStateChange(this.state, eventId));\r\n };\r\n\r\n handleEditNewRecordDialogCancel = () => {\r\n this.setState({\r\n showNewEventDialog: false\r\n });\r\n };\r\n // #endregion Add dialog\r\n\r\n handleApprove = async (item: IEventListItem) => {\r\n if (!item) return;\r\n if (await AppUtils.showConfirmationDialog(!item.immediateAction ? Translations.ApproveEventHandlerConfirmation : Translations.ApproveEventHandlerConfirmation2, false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await AppUtils.callService(() => eventService.approveEvent(item.companyId, item.createCompanyId, item.id));\r\n if (!result) return;\r\n this.refreshList(false);\r\n }\r\n };\r\n\r\n handleShowPrintProperties = (e: any, id: string) => {\r\n const props = this.props;\r\n e.stopPropagation();\r\n e.preventDefault();\r\n const print = props.userPrints.find(i => i.id === id);\r\n if (!print) return;\r\n this.setState({\r\n showEventPrintDialog: true,\r\n eventPrintDialogPrint: print,\r\n eventPrintDialogReservedNames: props.userPrints.map(i => i.title).filter(i => i !== print.title),\r\n eventPrintDialogPrintableFields: id !== EventList.customPrintId\r\n ? props.printableFields\r\n : IdTitleNode.removeIds(props.printableFields, [\"EventTypeA\", \"EventTypeB\", \"EventTypeC\", \"DirectCosts\", \"IndirectCosts\"])\r\n });\r\n };\r\n\r\n handleAddPrint = () => {\r\n const props = this.props;\r\n const print = props.userPrints.find(i => i.id === EventList.defaultPrintId);\r\n if (!print) return;\r\n const newPrint = new SavedPrint(print);\r\n newPrint.defaultPrint = false;\r\n newPrint.title = Translations.NewPrint;\r\n let index = 2;\r\n while (props.userPrints.find(i => i.title === newPrint.title)) {\r\n newPrint.title = Translations.NewPrint + \" \" + index.toString(10);\r\n index++;\r\n }\r\n newPrint.id = newPrint.title;\r\n this.setState({\r\n showEventPrintDialog: true,\r\n eventPrintDialogPrint: newPrint,\r\n eventPrintDialogReservedNames: props.userPrints.map(i => i.title).filter(i => i !== newPrint.title),\r\n eventPrintDialogPrintableFields: props.printableFields\r\n });\r\n };\r\n\r\n handlePrintDialogSaved = (print: ISavedPrint) => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!print || !state.eventPrintDialogPrint) return;\r\n this.setState({\r\n showEventPrintDialog: false\r\n });\r\n const userPrints = props.userPrints.filter(i => i.id !== state.eventPrintDialogPrint.id);\r\n userPrints.push(print);\r\n props.onUserPrintsModified(SavedPrint.sortSavedPrints(userPrints));\r\n };\r\n\r\n handlePrintDialogRemoved = (printId: string) => {\r\n const props = this.props;\r\n if (!printId) return;\r\n this.setState({\r\n showEventPrintDialog: false\r\n });\r\n props.onUserPrintsModified(props.userPrints.filter(i => i.id !== printId));\r\n };\r\n\r\n hanlePrintDialogCancel = () => {\r\n this.setState({\r\n showEventPrintDialog: false\r\n });\r\n };\r\n\r\n handlePrint = async (printId: string) => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.selectedId) return;\r\n const fileName = await AppUtils.callService(() => eventService.getEventPrint(props.companyId, state.selectedId, printId));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.PrintParameterDownloaded, fileName));\r\n };\r\n\r\n getTimeSuffix = (date: number): string => {\r\n return !Base.isZeroTime(date) ? \" \" + Base.timeToTimeStr(date) : \"\";\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n
\r\n \r\n \r\n {Translations.AddEvent}\r\n \r\n props.onChangeShowDocumentPreview(!props.showDocumentPreview)} style={{ marginLeft: \"24px\", padding: \"7px\" }} />\r\n \r\n \r\n \r\n \r\n ({\r\n divider: print.spacer,\r\n title: !print.spacer\r\n ? (\r\n \r\n {print.title}\r\n {print.id &&\r\n this.handleShowPrintProperties(e, print.id)} />\r\n }\r\n \r\n )\r\n : null,\r\n onClick: () => print.id\r\n ? this.handlePrint(print.id)\r\n : this.handleAddPrint(),\r\n }))}\r\n title={Translations.Print}\r\n icon={}\r\n disabled={!state.selectedId}\r\n tooltip={Translations.AdditionalFunctions}\r\n menuRight={true}\r\n margin=\"0 .5rem 0 0\"\r\n />\r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 2,\r\n content:\r\n this.handleOpenLine(item.id)}>\r\n {item.unitCode}\r\n \r\n },\r\n !props.showDocumentPreview ? { size: 2, content: item.eventTypes } : undefined,\r\n { size: props.showDocumentPreview ? 3 : 2, content: },\r\n { size: props.showDocumentPreview ? 2 : 1, content: Base.utcTimeToDateStr(item.date), tooltip: Base.timeToDateStr(item.date) + this.getTimeSuffix(item.date) },\r\n { size: props.showDocumentPreview ? 2 : 1, content: item.observer },\r\n { size: props.showDocumentPreview ? 3 : 2, content: item.name },\r\n !props.showDocumentPreview ? { size: 2, content: item.description } : undefined\r\n ],\r\n id: item.id\r\n };\r\n })\r\n : null\r\n }\r\n cards={!state.listModeIsLine\r\n ? state.items.map((item) => {\r\n return {\r\n sm: 4,\r\n rows: [\r\n {\r\n cols: [\r\n {\r\n size: 6,\r\n title: Translations.Code,\r\n value:\r\n \r\n this.handleOpenLine(item.id)}>\r\n {item.code}\r\n \r\n \r\n },\r\n { size: 6, title: Translations.Date, value: Base.timeToDateStr(item.date) + this.getTimeSuffix(item.date) }\r\n ]\r\n },\r\n {\r\n cols: [\r\n { title: Translations.Title, value: item.name },\r\n ]\r\n },\r\n {\r\n cols: [\r\n { title: Translations.Description, value: item.description },\r\n ]\r\n },\r\n {\r\n cols: [\r\n { size: 6, title: Translations.State, value: },\r\n { size: 6, title: Translations.Unit, value: item.unitCode }\r\n ]\r\n }],\r\n id: item.id\r\n };\r\n })\r\n : null\r\n }\r\n lineDetails={state.detailsItem && !props.showDocumentPreview\r\n ? \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {state.detailsItem.observerActionInUse &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.handleOpenLine(state.selectedId)}\r\n />\r\n \r\n : null}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpenLine}\r\n />\r\n \r\n {state.showNewEventDialog &&\r\n \r\n }\r\n {(state.showEditDialog && !!state.editDialogId) &&\r\n this.setState({ selectedId: \"\" })}\r\n onRefreshList={() => this.refreshList(false)}\r\n onPrevious={() => List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n />\r\n }\r\n {state.showEventPrintDialog &&\r\n \r\n }\r\n
\r\n {props.showDocumentPreview &&\r\n this.refreshList(false)}\r\n onClose={() => props.onChangeShowDocumentPreview(false)}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","// EventReportFilterSettings - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Checkbox, FormControlLabel, Grid, MenuItem, Select, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { CheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/CheckboxDropdown\";\r\nimport { TreeCheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/TreeCheckboxDropdown\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IIdTitle, IdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { ApplicationPermissionType, ConfirmationDialogResult, EventStateFilter, FrontPagePanelSize, ReportType } from \"ui/Scripts/source/models/enums\";\r\nimport { ITaskDataRow, TaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskDataRowCol } from \"ui/Scripts/source/models/task/taskDataRowCol\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IChartItem } from \"../../../models/chart/chartItem\";\r\nimport { ISavedChartPanel, SavedChartPanel } from \"../../../models/chart/savedChartPanel\";\r\nimport { IReportItem, ReportItem } from \"../../../models/report/reportItem\";\r\nimport * as chartPanelService from \"../../../models/services/chartPanelService\";\r\nimport { FilterButtons } from \"../../framework/Filters/FilterButtons\";\r\nimport { FilterSearchField } from \"../../framework/Filters/FilterSearchField\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { TaskDynamicForm } from \"../../task/TaskDynamicForm/TaskDynamicForm\";\r\nimport { EventFilterDrawer } from \"../EventFilterDrawer\";\r\nimport { EventPageDashboardChart, EventTypeNotSetId, IEventGeneralFilter, IEventPageFilterLists, IEventPageFilterState, IEventPageFilterStateWithoutDates } from \"../EventPageDashboardChart/EventPageDashboardChart\";\r\nimport { FormSectionTitle } from \"../../framework/Form/FormSectionTitle\";\r\nimport { DatePicker } from \"source/components/framework/DateTime/DatePicker\";\r\nimport { ISaveReportFilters, SaveReportDialog } from \"source/components/report/PageNavMenuItemReportList/SaveReportDialog\";\r\n\r\n//EventReportFilterSettings\r\nexport interface IEventReportFilterSettingsProp extends IEventPageFilterLists, IEventPageFilterState {\r\n classes?: string;\r\n chartPanelPropertiesMode?: boolean;\r\n chartPanel?: ISavedChartPanel;\r\n chartItems?: IChartItem[];\r\n reservedChartNames?: string[];\r\n report: IReportItem;\r\n panelSize?: number;\r\n panelVisible?: boolean;\r\n canRemoveSharedReports: boolean;\r\n onSaveReport: (saveAs: boolean, onGetReportSaveFilters: () => ISaveReportFilters) => void;\r\n onRemoveReport: (filterId: string) => void;\r\n onRemoveChart?: (chartId: string) => void;\r\n onOk: (closeDialog: boolean, selectedChartId: string, filterState: IEventPageFilterState, parameters: ITaskDataRow) => ISaveReportFilters;\r\n onChartPanelSaved?: (chartPanel: ISavedChartPanel) => void;\r\n onChartPanelRemoved?: (chartPanelId: string) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IEventReportFilterSettingsState extends IEventPageFilterStateWithoutDates {\r\n dynamicTimeFilters: IIdTitle[];\r\n taskType: ITaskEditTypeItem; //customer parameters schema\r\n taskDataRow: ITaskDataRow; //customer parameter values\r\n name: string;\r\n charts: IIdTitle[];\r\n panelSize: string;\r\n panelVisible: boolean;\r\n startDateStr: string;\r\n endDateStr: string;\r\n selectedReportId: string;\r\n selectedChartId: string;\r\n startEndDateDisabled: boolean;\r\n extraParameters: ITaskDataRow;\r\n}\r\n\r\nexport class EventReportFilterSettings extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n getReportByChartItem = (chartItem: IChartItem, generalFilter: any, reportFilter: any): IReportItem => {\r\n const result = ReportItem.createReportItem(chartItem?.id, \"\", ReportType.Pdf, chartItem?.taskType);\r\n result.taskDataRow = chartItem?.taskDataRow;\r\n result.generalFilter = generalFilter;\r\n result.reportFilter = reportFilter;\r\n result.copyReportParameterValuesFromSavedValues();\r\n return result;\r\n };\r\n\r\n getStateFromProps = (props: IEventReportFilterSettingsProp): IEventReportFilterSettingsState => {\r\n const selectedReportId = props.chartPanelPropertiesMode ? props.chartPanel?.reportId : \"\";\r\n const chartItem = props.chartPanelPropertiesMode ? props.chartItems.find(i => i.reportName === selectedReportId) : null;\r\n let taskType = props.report?.taskType;\r\n let taskDataRow = props.report?.taskDataRow;\r\n if (props.chartPanelPropertiesMode) {\r\n const report = this.getReportByChartItem(chartItem, props.chartPanel?.generalFilter, props.chartPanel?.reportFilter);\r\n taskType = report.taskType;\r\n taskDataRow = report.taskDataRow;\r\n }\r\n const dynamicTimeFilters = props.chartPanelPropertiesMode\r\n ? props.dynamicTimeFilters.filter(i => i.id !== \"0\")\r\n : props.dynamicTimeFilters;\r\n return {\r\n dynamicTimeFilters,\r\n taskType,\r\n taskDataRow,\r\n name: props.chartPanelPropertiesMode ? props.chartPanel?.reportTitle : \"\",\r\n panelSize: ((props.chartPanelPropertiesMode ? props.panelSize : null) ?? FrontPagePanelSize.OneXOne).toString(10),\r\n panelVisible: (props.chartPanelPropertiesMode ? props.panelVisible : null) ?? false,\r\n startDateStr: props.selectedStartDate ? Base.timeToDateStr(props.selectedStartDate) : \"\",\r\n endDateStr: props.selectedEndDate ? Base.timeToDateStr(props.selectedEndDate) : \"\",\r\n selectedReportId,\r\n selectedChartId: props.chartPanelPropertiesMode ? props.chartPanel?.chartId : \"\",\r\n charts: props.chartPanelPropertiesMode ? chartItem?.chartNames.map(i => IdTitle.createIdTitle(i, i)) : [],\r\n selectedUnitIds: props.selectedUnitIds?.slice(0) || [],\r\n selectedUrgencyClassIds: props.selectedUrgencyClassIds.slice(0) || [],\r\n selectedStateIds: props.selectedStateIds?.slice(0) || [],\r\n selectedEventTypeIds: props.selectedEventTypeIds?.slice(0) || [],\r\n selectedEventTypeBIds: props.selectedEventTypeBIds?.slice(0) || [],\r\n selectedEventTypeCIds: props.selectedEventTypeCIds?.slice(0) || [],\r\n selectedPartnerCompanyIds: props.selectedPartnerCompanyIds?.slice(0) || [],\r\n selectedCreateUserCodes: props.selectedCreateUserCodes?.slice(0) || [],\r\n selectedHandlerUserCodes: props.selectedHandlerUserCodes?.slice(0) || [],\r\n selectedObservers: props.selectedObservers?.slice(0) || [],\r\n selectedDynamicTimeFilterId: props.selectedDynamicTimeFilterId,\r\n startEndDateDisabled: props.selectedDynamicTimeFilterId !== \"0\",\r\n extraParameters: taskType && taskDataRow ? new TaskDataRow(taskDataRow) : null,\r\n };\r\n };\r\n\r\n constructor(props: IEventReportFilterSettingsProp) {\r\n super(props);\r\n this.state = this.getStateFromProps(props);\r\n this.orgStateHash = this.getSaveDataFromState(props, this.state).hash;\r\n }\r\n\r\n componentDidUpdate(prevProps: IEventReportFilterSettingsProp, prevState: IEventReportFilterSettingsState): void {\r\n const props = this.props;\r\n if (!prevProps || prevProps.report?.getHash() === props.report?.getHash()) return;\r\n const state = this.getStateFromProps(props);\r\n this.setState(state);\r\n this.orgStateHash = this.getSaveDataFromState(props, state).hash;\r\n }\r\n\r\n getGeneralFilterFromState = (): IEventGeneralFilter => {\r\n const state = this.state;\r\n const selectedStartDate = state.startDateStr ? state.startDateStr.toDate().getTime() : null;\r\n const selectedEndDate = state.endDateStr ? state.endDateStr.toDate().getTime() : null;\r\n return EventPageDashboardChart.getGeneralFilterFromState({\r\n selectedStartDate,\r\n selectedEndDate,\r\n selectedUnitIds: state.selectedUnitIds,\r\n selectedStateIds: state.selectedStateIds,\r\n selectedUrgencyClassIds: state.selectedUrgencyClassIds,\r\n selectedEventTypeIds: state.selectedEventTypeIds,\r\n selectedEventTypeBIds: state.selectedEventTypeBIds,\r\n selectedEventTypeCIds: state.selectedEventTypeCIds,\r\n selectedPartnerCompanyIds: state.selectedPartnerCompanyIds,\r\n selectedCreateUserCodes: state.selectedCreateUserCodes,\r\n selectedHandlerUserCodes: state.selectedHandlerUserCodes,\r\n selectedObservers: state.selectedObservers,\r\n selectedDynamicTimeFilterId: state.selectedDynamicTimeFilterId\r\n });\r\n };\r\n\r\n handleChange = (event) => {\r\n const props = this.props;\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"selectedReportId\") {\r\n const chartItem = props.chartItems.find(i => i.reportName === value);\r\n if (!chartItem) return;\r\n const charts = chartItem?.chartNames.map(i => IdTitle.createIdTitle(i, i));\r\n const report = this.getReportByChartItem(chartItem, this.getGeneralFilterFromState(), SaveReportDialog.getReportFilterFromTaskType(chartItem?.taskType, this.state.extraParameters));\r\n this.setState({\r\n taskType: report.taskType,\r\n taskDataRow: report.taskDataRow,\r\n selectedReportId: value,\r\n charts,\r\n selectedChartId: charts[0].id\r\n });\r\n } else if (name === \"selectedChartId\") {\r\n this.setState({ selectedChartId: value });\r\n } else if (name === \"panelSize\") {\r\n this.setState({ panelSize: value });\r\n } else if (name === \"selectedDynamicTimeFilterId\") {\r\n if (value.toInteger() > 0) {\r\n this.setState({ selectedDynamicTimeFilterId: value, startDateStr: \"\", endDateStr: \"\", startEndDateDisabled: true });\r\n } else {\r\n this.setState({ selectedDynamicTimeFilterId: value, startEndDateDisabled: false });\r\n }\r\n } else if (name === \"name\") {\r\n this.setState({ name: value });\r\n }\r\n };\r\n\r\n handleStartDateChange = (value: string) => {\r\n this.setState({ startDateStr: value });\r\n };\r\n\r\n handleEndDateChange = (value: string) => {\r\n this.setState({ endDateStr: value });\r\n };\r\n\r\n handleRefreshParameters = (taskDataRowCols: ITaskDataRowCol[]) => {\r\n const state = this.state;\r\n if (!state.extraParameters) return;\r\n const extraParameters = new TaskDataRow(state.extraParameters);\r\n extraParameters.cols = taskDataRowCols;\r\n this.setState({ extraParameters });\r\n };\r\n\r\n getSaveDataFromState = (props: IEventReportFilterSettingsProp, state: IEventReportFilterSettingsState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"name\", state.name);\r\n result.append(\"selectedReportId\", state.selectedReportId);\r\n result.append(\"selectedChartId\", state.selectedChartId);\r\n result.append(\"panelSize\", state.panelSize);\r\n result.append(\"panelVisible\", state.panelVisible);\r\n result.append(\"startDate\", state.startDateStr);\r\n result.append(\"endDate\", state.endDateStr);\r\n result.append(\"selectedStateIds\", state.selectedStateIds);\r\n result.append(\"selectedUnitIds\", state.selectedUnitIds);\r\n result.append(\"selectedUrgencyClassIds\", state.selectedUrgencyClassIds);\r\n result.append(\"selectedEventTypeIds\", state.selectedEventTypeIds);\r\n result.append(\"selectedEventTypeBIds\", state.selectedEventTypeBIds);\r\n result.append(\"selectedEventTypeCIds\", state.selectedEventTypeCIds);\r\n result.append(\"selectedPartnerCompanyIds\", state.selectedPartnerCompanyIds);\r\n result.append(\"selectedCreateUserCodes\", state.selectedCreateUserCodes);\r\n result.append(\"selectedHandlerUserCodes\", state.selectedHandlerUserCodes);\r\n result.append(\"selectedObservers\", state.selectedObservers);\r\n result.append(\"selectedDynamicTimeFilterId\", state.selectedDynamicTimeFilterId ? state.selectedDynamicTimeFilterId : null);\r\n if (state.taskType && state.taskDataRow) {\r\n result.append(\"parameters\", state.extraParameters.cols.map(i => state.extraParameters.getTaskDataRowColUiValue(i.field, state.taskType)));\r\n }\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (props.chartPanelPropertiesMode) {\r\n if (!state.name) {\r\n AppUtils.showErrorMessage(Translations.NameMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (props.reservedChartNames.find(i => i.equalIgnoreCase(state.name))) {\r\n AppUtils.showErrorMessage(Translations.NameIsAlreadyInUse);\r\n return resolve(false);\r\n }\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n static filterIsSet = (filterLists: IEventPageFilterLists, filterState: IEventPageFilterState, taskType: ITaskEditTypeItem, taskDataRow: ITaskDataRow): boolean => {\r\n return EventFilterDrawer.filterIsSet(filterLists, filterState) ||\r\n (taskDataRow && taskType ? !taskDataRow.hasDefaultValues(taskType) : false);\r\n };\r\n\r\n handleSaveReport = async (saveAs: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n const selectedStartDate = state.startDateStr ? state.startDateStr.toDate().getTime() : null;\r\n const selectedEndDate = state.endDateStr ? state.endDateStr.toDate().getTime() : null;\r\n if (!saveAs) {\r\n props.onOk(false, state.selectedChartId, EventPageDashboardChart.cloneEventPageFilterState({ ...state, selectedStartDate, selectedEndDate }), state.extraParameters);\r\n await this.props.onSaveReport(false, null);\r\n } else {\r\n await this.props.onSaveReport(true, () => {\r\n return props.onOk(false, state.selectedChartId, EventPageDashboardChart.cloneEventPageFilterState({ ...state, selectedStartDate, selectedEndDate }), state.extraParameters);\r\n });\r\n }\r\n };\r\n\r\n handleClear = () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const extraParameters = state.extraParameters ? new TaskDataRow(state.extraParameters) : null;\r\n if (extraParameters) {\r\n extraParameters.initializeToTaskType(state.taskType);\r\n }\r\n this.setState({\r\n startDateStr: \"\",\r\n endDateStr: \"\",\r\n selectedUnitIds: [props.units[0].id],\r\n selectedStateIds: [props.states[0].id],\r\n selectedUrgencyClassIds: [props.urgencyClasses[0].id],\r\n selectedEventTypeIds: [props.eventTypes[0].id],\r\n selectedEventTypeBIds: [props.eventTypeBs[0].id],\r\n selectedEventTypeCIds: [props.eventTypeCs[0].id],\r\n selectedPartnerCompanyIds: [props.partners[0].id],\r\n selectedCreateUserCodes: [props.creators[0].id],\r\n selectedHandlerUserCodes: [props.handlers[0].id],\r\n selectedObservers: [props.observers[0].id],\r\n selectedDynamicTimeFilterId: state.dynamicTimeFilters[0].id,\r\n extraParameters\r\n });\r\n };\r\n\r\n // #region ChartPanel\r\n saveChartPanel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return;\r\n const chartItem = props.chartItems.find(i => i.reportName === state.selectedReportId);\r\n if (!chartItem) return;\r\n //Update chartPanel\r\n const selectedStartDate = state.startDateStr ? state.startDateStr.toDate().getTime() : null;\r\n const selectedEndDate = state.endDateStr ? state.endDateStr.toDate().getTime() : null;\r\n const chartPanel = new SavedChartPanel(props.chartPanel);\r\n chartPanel.id = state.name;\r\n chartPanel.reportTitle = state.name;\r\n chartPanel.size = state.panelSize.toInteger();\r\n chartPanel.visible = state.panelVisible;\r\n chartPanel.reportId = state.selectedReportId;\r\n chartPanel.chartId = state.selectedChartId;\r\n chartPanel.generalFilter = EventPageDashboardChart.getGeneralFilterFromState({\r\n ...state,\r\n selectedStartDate,\r\n selectedEndDate\r\n });\r\n chartPanel.reportFilter = SaveReportDialog.getReportFilterFromTaskType(chartItem?.taskType, state.extraParameters);\r\n //Set SaveData\r\n const saveData = new SaveDataObj();\r\n saveData.append(\"applicationPermissionType\", ApplicationPermissionType.Event);\r\n saveData.append(\"orgId\", props.chartPanel?.id);\r\n saveData.append(\"item\", chartPanel);\r\n //Call server\r\n const result = await AppUtils.callService(() => chartPanelService.saveChartPanel(saveData.obj));\r\n if (!result) return null;\r\n props.onChartPanelSaved(chartPanel);\r\n };\r\n\r\n handleRemoveChartPanel = async () => {\r\n const props = this.props;\r\n if (props.chartPanel?.isNew()) return;\r\n const confirmationResult = await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveChartPanelParameter, props.chartPanel?.reportTitle));\r\n if (confirmationResult !== ConfirmationDialogResult.Yes) return;\r\n const saveData = new SaveDataObj();\r\n saveData.append(\"applicationPermissionType\", ApplicationPermissionType.Event);\r\n saveData.append(\"id\", props.chartPanel?.id);\r\n const result = await AppUtils.callService(() => chartPanelService.removeChartPanel(saveData.obj), false);\r\n if (!result) return;\r\n props.onChartPanelRemoved(props.chartPanel?.id);\r\n };\r\n // #end refion ChartPanel\r\n\r\n handleSave = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n if (props.onOk) {\r\n const selectedStartDate = state.startDateStr ? state.startDateStr.toDate().getTime() : null;\r\n const selectedEndDate = state.endDateStr ? state.endDateStr.toDate().getTime() : null;\r\n props.onOk(true, state.selectedChartId, EventPageDashboardChart.cloneEventPageFilterState({ ...state, selectedStartDate, selectedEndDate }), state.extraParameters);\r\n } else if (props.onChartPanelSaved) {\r\n this.saveChartPanel();\r\n }\r\n };\r\n\r\n handleCancel = async (checkChanges: boolean) => {\r\n AppUtils.cancelEditDialog(checkChanges, this.getSaveDataFromState(this.props, this.state).hash, this.orgStateHash, this.handleSave, this.props.onCancel, Translations.YouHaveUnapprovedChangesDoYouWantApproveChanges);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n \r\n {!!props.onSaveReport && !!props.onRemoveReport &&\r\n \r\n }\r\n {!!props.chartPanelPropertiesMode &&\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ panelVisible })}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {!!state.extraParameters &&\r\n \r\n \r\n \r\n }\r\n {Translations.Event}\r\n {!props.chartPanelPropertiesMode &&\r\n \r\n \r\n \r\n {!state.startEndDateDisabled &&\r\n \r\n }\r\n {state.startEndDateDisabled &&\r\n \r\n }\r\n \r\n \r\n {!state.startEndDateDisabled &&\r\n \r\n }\r\n {state.startEndDateDisabled &&\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {props.chartPanelPropertiesMode &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n this.setState({ selectedUnitIds })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ selectedStateIds })}\r\n />\r\n \r\n \r\n \r\n \r\n this.setState({ selectedUrgencyClassIds })}\r\n />\r\n \r\n \r\n \r\n {!props.chartPanelPropertiesMode &&\r\n \r\n \r\n \r\n this.setState({ selectedPartnerCompanyIds })}\r\n />\r\n \r\n \r\n \r\n \r\n this.setState({ selectedCreateUserCodes })}\r\n />\r\n \r\n \r\n \r\n }\r\n {!props.chartPanelPropertiesMode &&\r\n \r\n \r\n \r\n this.setState({ selectedHandlerUserCodes })}\r\n />\r\n \r\n \r\n \r\n \r\n this.setState({ selectedObservers })}\r\n />\r\n \r\n \r\n \r\n }\r\n {Translations.Identification}\r\n \r\n \r\n \r\n this.setState({ selectedEventTypeIds })}\r\n />\r\n \r\n \r\n \r\n \r\n this.setState({ selectedEventTypeBIds })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ selectedEventTypeCIds })}\r\n />\r\n \r\n \r\n \r\n \r\n this.handleCancel(false)}\r\n onClear={this.handleClear}\r\n onRemove={this.handleRemoveChartPanel}\r\n onSave={this.handleSave}\r\n />\r\n \r\n );\r\n }\r\n}","import { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { postApiCall } from \"./tokenService\";\r\n\r\nexport const saveChartPanel = (obj: any): Promise => {\r\n return postApiCall(\"api/chartpanel/save\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeChartPanel = (obj: any): Promise => {\r\n return postApiCall(\"api/chartpanel/remove\", ApiSuccess, JSON.stringify(obj));\r\n};","import React from \"react\";\r\nimport { AppDownloadIcon } from \"../../Icon/AppDownloadIcon\";\r\nimport { AppButton, IAppButtonProps } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\nexport const DownloadButton = (props: IAppButtonProps) => (\r\n }\r\n {...props}\r\n >\r\n {props.children}\r\n \r\n);\r\n","// eslint-disable-next-line no-unused-vars\r\nimport * as React from \"react\";\r\nimport styled from \"@emotion/styled\";\r\n\r\nexport const ExcelReportDataContainer = styled.div`\r\n height: 100%;\r\n & > div:not(:last-child) {\r\n margin-bottom: 38px;\r\n }\r\n`;","import * as React from \"react\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { ITaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskValidationRow } from \"ui/Scripts/source/models/task/taskValidationRow\";\r\nimport { Checkbox, TableCell } from \"@mui/material\";\r\n\r\nexport interface ITableRow {\r\n taskType: ITaskEditTypeItem;\r\n validationRows?: ITaskValidationRow[];\r\n dataRow: ITaskDataRow;\r\n divider?: boolean;\r\n}\r\n\r\nexport interface IReportExcelReportTableRowDataProp {\r\n tableRow: ITableRow;\r\n multiSelect: boolean;\r\n checkedIds: string[];\r\n onSetCheckedIds: (ids: string[]) => void;\r\n}\r\n\r\nexport const ReportExcelReportTableRowData = (props: IReportExcelReportTableRowDataProp) => {\r\n const validationRow = props.tableRow.validationRows?.length && props.tableRow.dataRow\r\n ? props.tableRow.validationRows.find(i => i.id === props.tableRow.dataRow.id)\r\n : null;\r\n\r\n const isChecked = props.multiSelect && !!props.tableRow.dataRow && props.checkedIds?.includes(props.tableRow.dataRow.id);\r\n\r\n const handleCheck = (id: string) => {\r\n const checkedIds = props.checkedIds.filter(i => i !== props.tableRow.dataRow.id);\r\n if (!isChecked) {\r\n checkedIds.push(props.tableRow.dataRow.id);\r\n }\r\n props.onSetCheckedIds(checkedIds);\r\n };\r\n\r\n return (\r\n <>\r\n {props.tableRow.taskType.lineCols.map((dataCol, index) => {\r\n if (props.tableRow.dataRow) {\r\n const validationCol = validationRow\r\n ? validationRow.cols.find(j => j.field === dataCol.field)\r\n : null;\r\n const hasErrors = validationCol?.errors && validationCol.errors.length > 0;\r\n const content = props.tableRow.dataRow.getTaskDataRowColListUiValue(dataCol.field, props.tableRow.taskType);\r\n let tooltip = content;\r\n if (hasErrors) {\r\n tooltip = validationCol.errors.join(\",\");\r\n }\r\n return \r\n {(props.multiSelect && !!props.tableRow.dataRow && index === 0 &&\r\n i.errors.length > 0)}\r\n sx={{ marginLeft: \"-5px\", marginRight: \"5px\", padding: \"0\" }}\r\n onChange={() => handleCheck(props.tableRow.dataRow.id)}\r\n />\r\n )}\r\n {content}\r\n ;\r\n } else {\r\n if (!props.tableRow.divider) {\r\n return \r\n {dataCol.title}\r\n ;\r\n } else {\r\n return \r\n  \r\n ;\r\n }\r\n }\r\n })}\r\n \r\n );\r\n};","import * as React from \"react\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { TaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { useEffect, useMemo, useState } from \"react\";\r\nimport { TableComponents, TableVirtuoso } from \"react-virtuoso\";\r\nimport { Box, Checkbox, Paper, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, TableSortLabel } from \"@mui/material\";\r\nimport { IReportGenerated2 } from \"source/models/report/reportGenerated2\";\r\nimport { ITableRow, ReportExcelReportTableRowData } from \"./ReportExcelReportTableRowData\";\r\nimport { visuallyHidden } from \"@mui/utils\";\r\n\r\nexport interface IReportExcelReportTablesProp {\r\n reportData: IReportGenerated2;\r\n sortingDisabled?: boolean;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n multiSelect?: boolean;\r\n selectedId?: string;\r\n selectedColumn?: string;\r\n checkedIds?: string[];\r\n onSetSortData: (sortColumn: string, sortOrderIsAsc: boolean) => void;\r\n onSetSelectedIds?: (selectedId: string, checkedIds: string[]) => void;\r\n onColumnClick?: (column: string) => void;\r\n}\r\n\r\nexport interface IReportExcelReportTablesState {\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n}\r\n\r\nexport const ReportExcelReportTables = (props: IReportExcelReportTablesProp) => {\r\n const hasMultipleTables = props.reportData.tables.length > 1;\r\n\r\n const getValidSortColumn = (taskType: ITaskEditTypeItem, sortColumn: string): string => {\r\n let result = sortColumn ?? \"\";\r\n if (taskType && taskType.lineCols.length > 0) {\r\n if (!taskType.lineCols.find(i => i.field === result)) {\r\n result = taskType.lineCols[0].field;\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n const [state, setState] = useState({\r\n sortColumn: \"\",\r\n sortOrderIsAsc: true\r\n });\r\n\r\n useEffect(() => {\r\n setState({\r\n sortColumn: hasMultipleTables || !props.reportData.tables?.length\r\n ? \"\"\r\n : getValidSortColumn(props.reportData.tables[0].taskType, props.sortColumn),\r\n sortOrderIsAsc: !hasMultipleTables && props.sortColumn\r\n ? props.sortOrderIsAsc\r\n : true\r\n });\r\n }, []);\r\n \r\n const tableRows = useMemo(() => {\r\n const result: ITableRow[] = [];\r\n for (let index = 0; index < props.reportData.tables.length; index++) {\r\n const table = props.reportData.tables[index];\r\n //Add header row to data\r\n if (hasMultipleTables) {\r\n result.push({\r\n taskType: table.taskType,\r\n dataRow: null\r\n });\r\n }\r\n //Add data rows to data\r\n const dataRows = table.dataRows ? table.dataRows.slice(0) : [];\r\n TaskDataRow.sortTaskDataRowsByColumn(dataRows, table.taskType, state.sortColumn, state.sortOrderIsAsc);\r\n for (const dataRow of dataRows) {\r\n result.push({\r\n validationRows: table.validationRows,\r\n taskType: table.taskType,\r\n dataRow,\r\n });\r\n }\r\n //Add divider row to data\r\n if (index < props.reportData.tables.length - 1) {\r\n result.push({\r\n taskType: table.taskType,\r\n dataRow: null,\r\n divider: true\r\n });\r\n }\r\n }\r\n return result;\r\n }, [props.reportData, state.sortColumn, state.sortOrderIsAsc]);\r\n\r\n const VirtuosoTableComponents: TableComponents = {\r\n // eslint-disable-next-line react/display-name\r\n Scroller: React.forwardRef((props, ref) => (\r\n \r\n )),\r\n Table: (props) => (\r\n \r\n ),\r\n // eslint-disable-next-line react/display-name\r\n TableHead: React.forwardRef((props, ref) => (\r\n \r\n )),\r\n TableRow: (rowProps) => (\r\n props.onSetSelectedIds(rowProps.item.dataRow?.id, props.checkedIds)} />\r\n ),\r\n // eslint-disable-next-line react/display-name\r\n TableBody: React.forwardRef((props, ref) => (\r\n \r\n )),\r\n };\r\n\r\n const handleChangeSort = (sortColumn: string, sortOrderIsAsc: boolean) => {\r\n setState(old => ({\r\n ...old,\r\n sortColumn,\r\n sortOrderIsAsc\r\n }));\r\n if (props.onSetSortData) {\r\n props.onSetSortData(state.sortColumn, state.sortOrderIsAsc);\r\n }\r\n };\r\n\r\n const allChecked = !hasMultipleTables && props.reportData.tables?.length && tableRows.length > 0 && props.checkedIds.length === tableRows.length;\r\n\r\n const handleToggleChecked = () => {\r\n let checkedIds: string[] = [];\r\n const checkableIds: string[] = [];\r\n for (const tableRow of tableRows) {\r\n if (!tableRow.dataRow) continue;\r\n const validationRow = tableRow.validationRows?.length\r\n ? tableRow.validationRows.find(i => i.id === tableRow.dataRow.id)\r\n : null;\r\n if (validationRow && validationRow.cols.some(i => i.errors.length > 0)) {\r\n continue;\r\n }\r\n checkableIds.push(tableRow.dataRow?.id);\r\n }\r\n if (checkableIds.length !== props.checkedIds.length) {\r\n checkedIds = checkableIds;\r\n }\r\n props.onSetSelectedIds(props.selectedId, checkedIds);\r\n };\r\n\r\n const checkBox = 0 && props.checkedIds.length < tableRows.length}\r\n checked={allChecked}\r\n sx={{ marginLeft: \"-5px\", marginRight: \"5px\", padding: \"0\" }}\r\n onChange={handleToggleChecked}\r\n onClick={(e) => e.stopPropagation()}\r\n />;\r\n\r\n const fixedHeaderContent = hasMultipleTables || !props.reportData.tables?.length\r\n ? null\r\n : () => (\r\n {props.reportData.tables[0].taskType.lineCols.map((i, index) =>\r\n \r\n {(!props.sortingDisabled\r\n ? handleChangeSort(i.field, state.sortColumn === i.field ? !state.sortOrderIsAsc : true)}\r\n >\r\n {(props.multiSelect && index === 0 ? checkBox : null)}\r\n {i.title}\r\n {state.sortColumn === i.field &&\r\n {state.sortOrderIsAsc ? \"sorted ascending\" : \"sorted descending\"}\r\n }\r\n \r\n : <>\r\n {(props.multiSelect && index === 0 ? checkBox : null)}\r\n {i.title}\r\n \r\n )}\r\n \r\n )}\r\n );\r\n\r\n return (\r\n props.onSetSelectedIds(props.selectedId, checkedIds)}\r\n />}\r\n />\r\n );\r\n};","import * as React from \"react\";\r\nimport { IReportGenerated2 } from \"source/models/report/reportGenerated2\";\r\nimport { ExcelReportDataContainer } from \"./ReportExcelReportstyles\";\r\nimport { Paper } from \"@mui/material\";\r\nimport { ReportExcelReportTables } from \"./ReportExcelReportTables/ReportExcelReportTables\";\r\n\r\nexport interface IReportExcelReportProp {\r\n reportData: IReportGenerated2;\r\n sortingDisabled: boolean;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n multiSelect?: boolean;\r\n selectedId?: string;\r\n checkedIds?: string[];\r\n margin?: string;\r\n height?: string;\r\n minHeight?: string;\r\n onSetSortData: (sortColumn: string, sortOrderIsAsc: boolean) => void;\r\n onSetSelectedIds?: (selectedId: string, checkedIds: string[]) => void;\r\n}\r\n\r\nexport class ReportExcelReport extends React.Component {\r\n render() {\r\n const props = this.props;\r\n if (!props.reportData) return null;\r\n return (\r\n \r\n 100.01 ? \" w-p\" + props.reportData.listWidth.toString(10) : \"\")}>\r\n \r\n \r\n \r\n );\r\n }\r\n}","import * as React from \"react\";\r\n\r\ninterface IReportPdfReportProps {\r\n reportDataUri: string;\r\n}\r\n\r\nexport const ReportPdfReport = (props: IReportPdfReportProps) => (\r\n \r\n);\r\n","// eslint-disable-next-line no-unused-vars\r\nimport * as React from \"react\";\r\nimport styled from \"@emotion/styled\";\r\n\r\nexport const Container = styled.div<{variant: \"document\" | \"html\" }>`\r\n height: calc(100% - 134px);\r\n margin-top: 134px;\r\n\r\n object {\r\n height: 100%;\r\n width: 100%;\r\n }\r\n`;","import React, { ReactNode } from \"react\";\r\nimport * as Styled from \"./ReportContainer.styles\";\r\n\r\ninterface ReportContainerProps {\r\n variant: \"document\" | \"html\";\r\n children?: ReactNode;\r\n}\r\n\r\nexport const ReportContainer = ({ variant, children }: ReportContainerProps) => {\r\n return (\r\n {children}\r\n );\r\n};\r\n","import { Box } from \"@mui/material\";\r\nimport downloadjs from \"downloadjs\";\r\nimport * as React from \"react\";\r\nimport { IReportGenerated2 } from \"source/models/report/reportGenerated2\";\r\nimport { IReportItem } from \"source/models/report/reportItem\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { downloadMimeType } from \"ui/Scripts/source/models/consts\";\r\nimport { ReportType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { DownloadButton } from \"../../Button/DownloadButton/DownloadButton\";\r\nimport { PageTitle } from \"../../Page/PageTitle\";\r\nimport { ReportExcelReport } from \"../../Report/ReportExcelReport\";\r\nimport { ReportPdfReport } from \"../../Report/ReportPdfReport\";\r\nimport { ReportContainer } from \"../../ReportContainer\";\r\n\r\nexport interface IPageReportProps {\r\n isLoading: boolean;\r\n htmlReport?: React.ReactNode;\r\n hidePageTitle?: boolean;\r\n report: IReportItem;\r\n reportGenerated: IReportGenerated2;\r\n reportDataUri: string;\r\n sortingDisabled?: boolean;\r\n multiSelect?: boolean;\r\n selectedId?: string;\r\n checkedIds?: string[];\r\n onSetSortData: (sortColumn: string, sortOrderIsAsc: boolean) => void;\r\n onSetSelectedIds?: (selectedId: string, checkedIds: string[]) => void;\r\n onDownload?: () => void;\r\n}\r\n\r\nexport const PageReport = (props: IPageReportProps) => {\r\n const handleDownload = () => {\r\n if (!props.reportGenerated || !props.reportGenerated.content) return;\r\n const blob = Base.base64ToBlob(props.reportGenerated.content, downloadMimeType);\r\n if (!blob) return;\r\n downloadjs(blob, props.reportGenerated.fileName);\r\n };\r\n\r\n return (\r\n \r\n {!props.hidePageTitle && (\r\n \r\n {!!props.report && props.report.type !== ReportType.Html && (\r\n \r\n {props.report.type === ReportType.Pdf ? Translations.DownloadPdf : Translations.ExportToExcel}\r\n \r\n )}\r\n \r\n )}\r\n {(!!props.report && props.report.type !== ReportType.Html) &&\r\n \r\n {(!!props.reportGenerated && props.report.type === ReportType.Pdf) &&\r\n \r\n }\r\n {(!!props.reportGenerated && props.report.type === ReportType.Excel) &&\r\n \r\n }\r\n \r\n }\r\n {(!!props.report && props.report.type === ReportType.Html && props.htmlReport) &&\r\n (props.htmlReport)\r\n }\r\n \r\n );\r\n};","/* global JSX */\r\n// EventReportList - MODULE\r\n// ***********************************************************************************************************************\r\nimport downloadjs from \"downloadjs\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { downloadMimeType } from \"ui/Scripts/source/models/consts\";\r\nimport { ReportType } from \"ui/Scripts/source/models/enums\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IReportGenerated2, ReportGenerated2 } from \"../../../models/report/reportGenerated2\";\r\nimport { IReportItem } from \"../../../models/report/reportItem\";\r\nimport { IReportParameterValue } from \"../../../models/report/reportParameterValue\";\r\nimport * as eventService from \"../../../models/services/eventService\";\r\nimport { PageReport } from \"../../framework/Report/PageReport\";\r\nimport { EventPageDashboardChart, IEventGeneralFilter, IEventPageFilterState } from \"../EventPageDashboardChart/EventPageDashboardChart\";\r\n\r\n// EventReportList\r\nexport interface IEventReportListProp extends IEventPageFilterState {\r\n companyId: string;\r\n reports: IReportItem[];\r\n reportId: string;\r\n dataId?: string;\r\n titleSuffix?: JSX.Element;\r\n onSetSortData: (sortColumn: string, sortOrderIsAsc: boolean) => void;\r\n}\r\n\r\ninterface IEventReportListState extends IEventGeneralFilter {\r\n isLoading: boolean;\r\n intialized: boolean;\r\n report: IReportItem;\r\n reportGenerated: IReportGenerated2;\r\n reportDataUri: string;\r\n}\r\n\r\nexport class EventReportList extends React.Component {\r\n parameterValues: IReportParameterValue[] = [];\r\n\r\n constructor(props: IEventReportListProp) {\r\n super(props);\r\n const report = props.reportId ? props.reports.find(i => i.id === props.reportId) : null;\r\n this.parameterValues = report ? report.getReportParameterValues() : [];\r\n const generalFilterValues = EventPageDashboardChart.getGeneralFilterFromState(props);\r\n this.state = {\r\n ...generalFilterValues,\r\n isLoading: false,\r\n intialized: false,\r\n reportGenerated: null,\r\n reportDataUri: \"\",\r\n report: props.reportId ? props.reports.find(i => i.id === props.reportId) : null,\r\n };\r\n }\r\n\r\n createReport = async (report: IReportItem, genralFilter: IEventGeneralFilter) => {\r\n if (!report) return;\r\n let reportGenerated: ReportGenerated2 = null;\r\n if (report.type !== ReportType.Html) {\r\n this.setState({ isLoading: true });\r\n reportGenerated = await AppUtils.callService(() => eventService.getReportGenerated(this.props.companyId, report.reportId, report.title,\r\n genralFilter.startDate, genralFilter.endDate, genralFilter.dynamicTimeFilterId, genralFilter.unitIds, genralFilter.states, genralFilter.urgencyClassIds,\r\n genralFilter.eventTypeIds, genralFilter.eventTypeBIds, genralFilter.eventTypeCIds, genralFilter.partnerCompanyIds, genralFilter.createUserCodes,\r\n genralFilter.handlerUserCodes, genralFilter.observers, this.parameterValues), false, false, () => { this.setState({ isLoading: false }); });\r\n if (!reportGenerated) return;\r\n }\r\n const reportBlob = reportGenerated && reportGenerated.content ? Base.base64ToBlob(reportGenerated.content, reportGenerated.mediaType) : null;\r\n const reportDataUri = reportBlob ? await Base.blobToBase64(reportBlob) : \"\";\r\n this.setState({\r\n intialized: true,\r\n report,\r\n reportGenerated,\r\n reportDataUri,\r\n ...genralFilter\r\n });\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.createReport(state.report, EventPageDashboardChart.cloneGeneralFilter(state));\r\n }\r\n\r\n componentDidUpdate(prevProps: IEventReportListProp, prevState: IEventReportListState) {\r\n const props = this.props;\r\n const prevDataId = prevProps.dataId ? prevProps.dataId : \"\";\r\n const dataId = props.dataId ? props.dataId : \"\";\r\n const prevReportId = prevProps.reportId ? prevProps.reportId : \"\";\r\n const reportId = props.reportId ? props.reportId : \"\";\r\n const prevReportIds = prevProps.reports ? prevProps.reports.map(i => i.id) : [];\r\n const reportIds = props.reports ? props.reports.map(i => i.id) : [];\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n const filterStateChange = EventPageDashboardChart.getEventGeneralFilterChange(prevProps, props);\r\n const report = props.reportId ? props.reports.find(i => i.id === props.reportId) : null;\r\n const parameterValues = report ? report.getReportParameterValues() : [];\r\n if (dataId === prevDataId && reportId === prevReportId && companyId === prevCompanyId &&\r\n filterStateChange.notChanged && Base.equalStrArrays(prevReportIds, reportIds) &&\r\n JSON.stringify(this.parameterValues) === JSON.stringify(parameterValues)) return;\r\n this.parameterValues = parameterValues;\r\n this.createReport(reportId ? props.reports.find(i => i.id === reportId) : null, filterStateChange);\r\n }\r\n\r\n handleDownload = () => {\r\n const state = this.state;\r\n if (!state.reportGenerated || !state.reportGenerated.content) return;\r\n const blob = Base.base64ToBlob(state.reportGenerated.content, downloadMimeType);\r\n if (!blob) return;\r\n downloadjs(blob, state.reportGenerated.fileName);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n );\r\n }\r\n}","// UnitDefaultHandlersEditDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Checkbox, FormControlLabel, Grid, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { ConfirmationDialogResult, DefaultHandlerType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../../framework/saveData\";\r\nimport { IUnitDefaultHandlersNode } from \"../../../../models/unit/unitDefaultHandlersNode\";\r\nimport { IUnitDefaultHandlersNodeUser, UnitDefaultHandlersNodeUser } from \"../../../../models/unit/unitDefaultHandlersNodeUser\";\r\nimport { IUserListItem } from \"../../../../models/user/userListItem\";\r\nimport { UserListItems } from \"../../../../models/user/userListItems\";\r\nimport { ActionContainer } from \"../../../framework/ActionContainer\";\r\nimport { Dialog } from \"../../../framework/Dialog/Dialog\";\r\nimport { GridRow } from \"../../../framework/Grid/GridRow\";\r\nimport { List } from \"../../../framework/List/List\";\r\nimport { PanelTitle } from \"../../../framework/Panel/PanelTitle\";\r\nimport { SelectUserDialog } from \"../../../user/SelectUserDialog/SelectUserDialog\";\r\nimport { AddUserToolButton } from \"source/components/framework/Button/AddUserToolButton\";\r\nimport { RemoveUserToolButton } from \"source/components/framework/Button/RemoveUserToolButton\";\r\n\r\n//UnitDefaultHandlersEditDialog\r\nexport interface IUnitDefaultHandlersEditDialogProp {\r\n classes?: string;\r\n companyId: string;\r\n showHandlerTypes?: boolean;\r\n unitNode: IUnitDefaultHandlersNode;\r\n onOk: (handlers: IUnitDefaultHandlersNodeUser[], clearSubUnitHandlers: boolean, copyHandlersToAllSameLevelUnits: boolean) => void;\r\n onRemove: () => void;\r\n onCancel: () => void;\r\n onGetUserSelectListItems?: (companyId: string, unitId: string, pageSize: number, page: number, filter: string,\r\n ignoreUserIds: string[], ignoreUserCodes: string[], activityState: number, ignoreRecordUserConnected: boolean,\r\n doNotIgnoreRecordUserConnectedUserCode: string, sortColumn: string, sortOrderIsAsc: boolean) => Promise;\r\n\r\n}\r\n\r\nexport interface IUnitDefaultHandlersEditDialogState {\r\n hasExplicitUsers: boolean;\r\n users: IUnitDefaultHandlersNodeUser[];\r\n selectedUserCodeHandler: string;\r\n checkedUserCodeHandlers: string[];\r\n selectedUserCodeNotified: string;\r\n checkedUserCodeNotifieds: string[];\r\n sortOrderIsAsc: boolean;\r\n isRoot: boolean;\r\n hasSiblings: boolean;\r\n clearSubUnitHandlers: boolean;\r\n copyHandlersToAllSameLevelUnits: boolean;\r\n showSelectUserDialog: boolean;\r\n selectUserDialogHandlerType: DefaultHandlerType;\r\n}\r\n\r\nexport class UnitDefaultHandlersEditDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IUnitDefaultHandlersEditDialogProp) {\r\n super(props);\r\n const isRoot = props.unitNode.getIsRoot();\r\n this.state = {\r\n hasExplicitUsers: props.unitNode.hasExplicitUsers(),\r\n users: props.unitNode.getUsers(),\r\n selectedUserCodeHandler: \"\",\r\n checkedUserCodeHandlers: [],\r\n selectedUserCodeNotified: \"\",\r\n checkedUserCodeNotifieds: [],\r\n sortOrderIsAsc: true,\r\n isRoot,\r\n hasSiblings: !isRoot && props.unitNode.hasSiblings(),\r\n clearSubUnitHandlers: false,\r\n copyHandlersToAllSameLevelUnits: false,\r\n showSelectUserDialog: false,\r\n selectUserDialogHandlerType: DefaultHandlerType.Handler\r\n };\r\n const saveData = this.getSaveDataFromState(props, this.state);\r\n this.orgStateHash = saveData.hash;\r\n }\r\n\r\n handleSetClearSubUnitHandlers = (clearSubUnitHandlers: boolean) => {\r\n this.setState({\r\n clearSubUnitHandlers\r\n });\r\n };\r\n\r\n handleSetCopyHandlersToAllSameLevelUnits = (copyHandlersToAllSameLevelUnits: boolean) => {\r\n this.setState({\r\n copyHandlersToAllSameLevelUnits\r\n });\r\n };\r\n\r\n getSaveDataFromState = (props: IUnitDefaultHandlersEditDialogProp, state: IUnitDefaultHandlersEditDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"hasExplicitUsers\", state.hasExplicitUsers);\r\n result.append(\"userIds\", state.users.map(i => i.code));\r\n result.append(\"clearSubUnitHandlers\", state.clearSubUnitHandlers);\r\n result.append(\"copyHandlersToAllSameLevelUnits\", state.copyHandlersToAllSameLevelUnits);\r\n return result;\r\n };\r\n\r\n handleRemove = async (defaultHandlerType: DefaultHandlerType) => {\r\n const state = this.state;\r\n if (!state.hasExplicitUsers) return;\r\n const selectedUserCodes = defaultHandlerType === DefaultHandlerType.Handler\r\n ? List.getSelectedIds(state.selectedUserCodeHandler, state.checkedUserCodeHandlers)\r\n : List.getSelectedIds(state.selectedUserCodeNotified, state.checkedUserCodeNotifieds);\r\n if (selectedUserCodes.length < 0) return;\r\n const users = state.users.filter(i => selectedUserCodes.indexOf(i.code) < 0);\r\n const hasExplicitUsers = users.length > 0;\r\n this.setState({\r\n hasExplicitUsers,\r\n users: hasExplicitUsers ? users : this.props.unitNode.getUsers()\r\n });\r\n };\r\n \r\n handleAdd = (selectUserDialogHandlerType: DefaultHandlerType) => {\r\n this.setState({\r\n showSelectUserDialog: true,\r\n selectUserDialogHandlerType\r\n });\r\n };\r\n\r\n handleSelectUserDialogOk = async (selectedUsers: IUserListItem[]) => {\r\n const state = this.state;\r\n if (!selectedUsers || selectedUsers.length < 1) return;\r\n const users = state.hasExplicitUsers ? state.users.slice(0) : [];\r\n for (const selectedUser of selectedUsers) {\r\n if (users.find(i => i.code === selectedUser.code)) {\r\n continue;\r\n }\r\n const newUser = new UnitDefaultHandlersNodeUser();\r\n newUser.code = selectedUser.code;\r\n newUser.name = selectedUser.getName();\r\n newUser.picture = selectedUser.picture;\r\n newUser.type = state.selectUserDialogHandlerType;\r\n users.push(newUser);\r\n }\r\n this.setState({\r\n showSelectUserDialog: false,\r\n hasExplicitUsers: true,\r\n users: UnitDefaultHandlersNodeUser.sortUnitDefaultHandlersNodeUsers(users, state.sortOrderIsAsc)\r\n });\r\n };\r\n\r\n handleSelectUserDialogCancel = () => {\r\n this.setState({\r\n showSelectUserDialog: false\r\n });\r\n };\r\n\r\n handleGetUserSelectListItems = (companyId: string, pageSize: number, page: number, filter: string,\r\n ignoreUserIds: string[], ignoreUserCodes: string[], activityState: number, ignoreRecordUserConnected: boolean,\r\n doNotIgnoreRecordUserConnectedUserCode: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n const props = this.props;\r\n return props.onGetUserSelectListItems(companyId, props.unitNode.id, pageSize, page, filter,\r\n ignoreUserIds, ignoreUserCodes, activityState, ignoreRecordUserConnected,\r\n doNotIgnoreRecordUserConnectedUserCode, sortColumn, sortOrderIsAsc);\r\n };\r\n \r\n handleSetSelectedHandlerIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedUserCodeHandler: selectedId,\r\n checkedUserCodeHandlers: checkedIds\r\n });\r\n };\r\n \r\n handleSetSelectedNotifiedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedUserCodeNotified: selectedId,\r\n checkedUserCodeNotifieds: checkedIds\r\n });\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.setState({\r\n sortOrderIsAsc,\r\n users: UnitDefaultHandlersNodeUser.sortUnitDefaultHandlersNodeUsers(state.users, sortOrderIsAsc)\r\n });\r\n };\r\n\r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n save = async () => {\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return;\r\n this.props.onOk(\r\n state.hasExplicitUsers ? state.users : [],\r\n state.clearSubUnitHandlers,\r\n state.copyHandlersToAllSameLevelUnits\r\n );\r\n };\r\n\r\n handleSave = () => {\r\n this.save();\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.save();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const handlers = props.showHandlerTypes ? state.users.filter(i => i.type === DefaultHandlerType.Handler) : state.users;\r\n const notified = props.showHandlerTypes ? state.users.filter(i => i.type === DefaultHandlerType.Notfied) : [];\r\n return (\r\n \r\n \r\n \r\n \r\n }\r\n rightItems={\r\n <>\r\n this.handleAdd(DefaultHandlerType.Handler)}\r\n />\r\n this.handleRemove(DefaultHandlerType.Handler)}\r\n />\r\n \r\n }\r\n margin=\"0 0 1rem 0\"\r\n />\r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 12,\r\n content:\r\n \r\n \r\n {item.name}\r\n \r\n }\r\n ],\r\n id: item.code,\r\n classes: state.hasExplicitUsers ? \"\" : \"inherited\"\r\n };\r\n })\r\n }\r\n sortColumn=\"name\"\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedUserCodeHandler}\r\n checkedIds={state.checkedUserCodeHandlers}\r\n onSetSelectedIds={this.handleSetSelectedHandlerIds}\r\n onSearchLines={this.handleSearchLines}\r\n />\r\n \r\n {!!props.showHandlerTypes &&\r\n \r\n \r\n }\r\n rightItems={\r\n <>\r\n this.handleAdd(DefaultHandlerType.Notfied)}\r\n />\r\n this.handleRemove(DefaultHandlerType.Notfied)}\r\n />\r\n \r\n }\r\n />\r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 12,\r\n content:\r\n \r\n \r\n {item.name}\r\n \r\n }\r\n ],\r\n id: item.code,\r\n classes: state.hasExplicitUsers ? \"\" : \"inherited\"\r\n };\r\n })\r\n }\r\n sortColumn=\"name\"\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedUserCodeNotified}\r\n checkedIds={state.checkedUserCodeNotifieds}\r\n onSetSelectedIds={this.handleSetSelectedNotifiedIds}\r\n onSearchLines={this.handleSearchLines}\r\n />\r\n \r\n }\r\n \r\n {(props.unitNode.hasChildren() || state.hasSiblings) &&\r\n \r\n }\r\n {props.unitNode.hasChildren() &&\r\n this.handleSetClearSubUnitHandlers(value)}\r\n />\r\n }\r\n />\r\n }\r\n {state.hasSiblings &&\r\n this.handleSetCopyHandlersToAllSameLevelUnits(value)}\r\n />\r\n } />\r\n }\r\n \r\n {state.showSelectUserDialog &&\r\n i.code) : []}\r\n multiSelect={true}\r\n onOk={this.handleSelectUserDialogOk}\r\n onCancel={this.handleSelectUserDialogCancel}\r\n onGetUserSelectListItems={this.handleGetUserSelectListItems}\r\n />\r\n }\r\n \r\n \r\n }\r\n buttons={[\r\n { title: Translations.Remove, variant: \"danger\", onClick: props.unitNode.hasExplicitUsers() && !state.isRoot ? props.onRemove : null },\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: this.handleCancel },\r\n { title: Translations.OK, variant: \"confirmation\", onClick: this.handleSave },\r\n ]}\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","// UnitDefaultHandlersTree\r\n// ***********************************************************************************************************************\r\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\r\nimport HomeIcon from \"@mui/icons-material/Home\";\r\nimport { Box, Grid, ListItemButton, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ListStateIconTool } from \"source/components/framework/List/ListStateIconTool\";\r\nimport { DefaultHandlerType } from \"../../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/enums\";\r\nimport { IUnitDefaultHandlersNode } from \"../../../../models/unit/unitDefaultHandlersNode\";\r\nimport { EllipsisTypography } from \"../../../framework/Typography/EllipsisTypography\";\r\n\r\nexport interface IUnitDefaultHandlersTreeProp {\r\n classes?: string;\r\n unitNode: IUnitDefaultHandlersNode;\r\n selectedId?: string;\r\n level?: number;\r\n isFirstNode: boolean;\r\n showHandlerTypes?: boolean;\r\n height?: string | number;\r\n onClick: (id: string) => void;\r\n onOpen: (id: string) => void;\r\n}\r\n\r\nexport class UnitDefaultHandlersTree extends React.Component {\r\n static defaultProps = {\r\n height: \"calc(100vh - 420px)\"\r\n };\r\n\r\n handleUnitNodeClick = (e) => {\r\n const props = this.props;\r\n e.stopPropagation();\r\n props.onClick(props.unitNode.id);\r\n };\r\n \r\n handleUnitNodeDoubleClick = (e) => {\r\n const props = this.props;\r\n if (e) {\r\n e.stopPropagation();\r\n }\r\n props.onOpen(props.unitNode.id);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const unitNode = props.unitNode;\r\n if (!unitNode) return null;\r\n const hasChildren = unitNode.children.length > 0;\r\n const hasVisibleChildren = hasChildren;\r\n const isRoot = unitNode.getIsRoot();\r\n let selectedId = props.selectedId;\r\n if (!props.selectedId && isRoot) {\r\n selectedId = unitNode.id;\r\n }\r\n const defaultHandlersText = unitNode.getDefaultUsersText(props.showHandlerTypes ? DefaultHandlerType.Handler : null);\r\n const defaultNotifiedText = props.showHandlerTypes ? unitNode.getDefaultUsersText(DefaultHandlerType.Notfied) : \"\";\r\n const hasExplicitUsers = unitNode.hasExplicitUsers();\r\n return (\r\n \r\n 0 ? \" hasPartners\" : \"\")}\r\n onClick={this.handleUnitNodeClick} onDoubleClick={this.handleUnitNodeDoubleClick}\r\n >\r\n \r\n \r\n \r\n {(!isRoot && !props.isFirstNode) &&\r\n <>\r\n {hasVisibleChildren\r\n ? (\r\n \r\n )\r\n : (\r\n \r\n )}\r\n \r\n }\r\n \r\n \r\n {unitNode.name}\r\n \r\n {unitNode.partnerCompanyIds.length ? * : null}\r\n \r\n \r\n \r\n \r\n this.handleUnitNodeDoubleClick(null)}>\r\n \r\n {hasExplicitUsers &&\r\n \r\n }\r\n {defaultHandlersText ? {defaultHandlersText} : \" \"}\r\n \r\n \r\n {!!props.showHandlerTypes &&\r\n this.handleUnitNodeDoubleClick(null)}>\r\n \r\n {hasExplicitUsers &&\r\n \r\n }\r\n {defaultNotifiedText ? {defaultNotifiedText} : \" \"}\r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n {unitNode.children.map((childUnitNode) =>\r\n \r\n )}\r\n \r\n );\r\n }\r\n}","// UnitDefaultHandlers\r\n// ***********************************************************************************************************************\r\nimport { Box, Grid, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport * as store from \"../../../../framework/customStore\";\r\nimport * as storeActions from \"../../../../models/store/storeActions\";\r\nimport { IUnitDefaultHandlersNode, UnitDefaultHandlersNode } from \"../../../../models/unit/unitDefaultHandlersNode\";\r\nimport { IUnitDefaultHandlersNodeUser } from \"../../../../models/unit/unitDefaultHandlersNodeUser\";\r\nimport { UserListItems } from \"../../../../models/user/userListItems\";\r\nimport { ActionContainer } from \"../../../framework/ActionContainer\";\r\nimport { DialogSettingsCard } from \"../../../framework/Container/DialogSettingsCard\";\r\nimport { ListIconButtonsPermission } from \"../../../framework/List/ListIconButtons/ListIconButtonsPermission\";\r\nimport { UnitDefaultHandlersEditDialog } from \"../UnitDefaultHandlersEditDialog\";\r\nimport { UnitDefaultHandlersTree } from \"../UnitDefaultHandlersTree\";\r\n\r\nexport interface IUnitDefaultHandlersProp {\r\n classes?: string;\r\n companyId: string;\r\n unitId: string;\r\n disabled?: boolean;\r\n showHandlerTypes?: boolean;\r\n unitNode: IUnitDefaultHandlersNode;\r\n partnerCompanyIds?: string[];\r\n onChangeSaveUnitNode: (saveUnitNode: IUnitDefaultHandlersNode) => void;\r\n onGetUserSelectListItems?: (companyId: string, unitId: string, pageSize: number, page: number, filter: string,\r\n ignoreUserIds: string[], ignoreUserCodes: string[], activityState: number, ignoreRecordUserConnected: boolean,\r\n doNotIgnoreRecordUserConnectedUserCode: string, sortColumn: string, sortOrderIsAsc: boolean) => Promise;\r\n}\r\n\r\ninterface IUnitDefaultHandlersState {\r\n copiedDefaultHandlers: IUnitDefaultHandlersNodeUser[];\r\n unitNode: IUnitDefaultHandlersNode;\r\n displayUnitNode: IUnitDefaultHandlersNode;\r\n editUnitNode: IUnitDefaultHandlersNode;\r\n selectedUnitNode: IUnitDefaultHandlersNode;\r\n showUnitDefaultHandlersEditDialog: boolean;\r\n}\r\n\r\nexport class UnitDefaultHandlers extends React.Component {\r\n constructor(props: IUnitDefaultHandlersProp) {\r\n super(props);\r\n const unitNode = new UnitDefaultHandlersNode(props.unitNode);\r\n this.state = {\r\n unitNode,\r\n displayUnitNode: unitNode.getUnitNodeById(props.unitId),\r\n editUnitNode: null,\r\n selectedUnitNode: unitNode.getUnitNodeById(props.unitId),\r\n copiedDefaultHandlers: [],\r\n showUnitDefaultHandlersEditDialog: false\r\n };\r\n }\r\n\r\n runLongTask = (task: () => IUnitDefaultHandlersNode): IUnitDefaultHandlersNode => {\r\n if (!task) return null;\r\n store.customStore.dispatch(storeActions.fetchStart());\r\n try {\r\n return task();\r\n } finally {\r\n store.customStore.dispatch(storeActions.fetchEnd());\r\n }\r\n };\r\n\r\n editDefaultHandlers = (id: string) => {\r\n const state = this.state;\r\n if (!id) return;\r\n const editUnitNode = state.unitNode.getUnitNodeById(id);\r\n if (!editUnitNode) return;\r\n this.setState({\r\n showUnitDefaultHandlersEditDialog: true,\r\n editUnitNode\r\n });\r\n };\r\n\r\n handleUnitNodeClick = (id: string) => {\r\n if (!id) return;\r\n this.setState({\r\n selectedUnitNode: this.state.unitNode.getUnitNodeById(id)\r\n });\r\n };\r\n\r\n handleEditPermission = (id: string) => {\r\n this.editDefaultHandlers(id);\r\n };\r\n\r\n copyDefaultHandlersToSiblings = (unitNode: IUnitDefaultHandlersNode, handlers: IUnitDefaultHandlersNodeUser[]) => {\r\n if (!unitNode.hasSiblings()) return;\r\n const siblings = unitNode.getSiblings();\r\n for (const sibling of siblings) {\r\n for (const handler of handlers) {\r\n sibling.setUser(handler.code, handler.type, handler.name, handler.picture, false);\r\n }\r\n }\r\n };\r\n\r\n handleUnitDefaultHandlersEditDialogOk = (handlers: IUnitDefaultHandlersNodeUser[], clearSubUnitHandlers: boolean, copyHandlersToAllSameLevelUnits: boolean) => {\r\n const state = this.state;\r\n const props = this.props;\r\n this.runLongTask(() => {\r\n const unitNode = new UnitDefaultHandlersNode(state.unitNode);\r\n const editUnitNode = unitNode.getUnitNodeById(state.editUnitNode.id);\r\n if (!editUnitNode) return;\r\n editUnitNode.removeUsers(clearSubUnitHandlers);\r\n for (const handler of handlers) {\r\n editUnitNode.setUser(handler.code, handler.type, handler.name, handler.picture, false);\r\n }\r\n if (copyHandlersToAllSameLevelUnits) {\r\n this.copyDefaultHandlersToSiblings(editUnitNode, handlers);\r\n }\r\n const displayUnitNode = unitNode.getUnitNodeById(props.unitId);\r\n this.setState({\r\n showUnitDefaultHandlersEditDialog: false,\r\n unitNode,\r\n displayUnitNode: unitNode.getUnitNodeById(props.unitId),\r\n });\r\n props.onChangeSaveUnitNode(displayUnitNode);\r\n return unitNode;\r\n });\r\n };\r\n\r\n handleUnitDefaultHandlersEditDialogCancel = () => {\r\n this.setState({\r\n showUnitDefaultHandlersEditDialog: false\r\n });\r\n };\r\n\r\n handleUnitDefaultHandlersEditDialogRemove = () => {\r\n const state = this.state;\r\n const props = this.props;\r\n if (!state.selectedUnitNode) return;\r\n const unitNode = new UnitDefaultHandlersNode(state.unitNode);\r\n const editUnitNode = unitNode.getUnitNodeById(state.selectedUnitNode?.id);\r\n if (!editUnitNode) return;\r\n editUnitNode.removeUsers(false);\r\n const displayUnitNode = unitNode.getUnitNodeById(props.unitId);\r\n this.setState({\r\n showUnitDefaultHandlersEditDialog: false,\r\n unitNode,\r\n displayUnitNode,\r\n });\r\n props.onChangeSaveUnitNode(displayUnitNode);\r\n };\r\n\r\n handleCopyDefaultHandlers = () => {\r\n const state = this.state;\r\n if (!state.selectedUnitNode) return;\r\n const displayUnitNode = state.displayUnitNode;\r\n if (!displayUnitNode) return;\r\n const modifyUnitNode = displayUnitNode.getUnitNodeById(state.selectedUnitNode?.id);\r\n if (!modifyUnitNode || !modifyUnitNode.hasExplicitUsers()) return;\r\n this.setState({\r\n copiedDefaultHandlers: modifyUnitNode.getUsers()\r\n });\r\n };\r\n\r\n handlePasteDefaultHandlers = () => {\r\n const obj = this;\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.selectedUnitNode || !state.copiedDefaultHandlers.length) return;\r\n const unitNode = new UnitDefaultHandlersNode(state.unitNode);\r\n const displayUnitNode = unitNode.getUnitNodeById(props.unitId);\r\n if (!displayUnitNode) return;\r\n return this.runLongTask(() => {\r\n const modifyUnitNode = unitNode.getUnitNodeById(state.selectedUnitNode?.id);\r\n modifyUnitNode.removeUsers(true);\r\n for (const user of state.copiedDefaultHandlers) {\r\n modifyUnitNode.setUser(user.code, user.type, user.name, user.picture, false);\r\n }\r\n obj.setState({\r\n unitNode,\r\n displayUnitNode\r\n });\r\n props.onChangeSaveUnitNode(displayUnitNode);\r\n return unitNode;\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n this.handleEditPermission(state.selectedUnitNode?.id ?? \"\")}\r\n onCopy={this.handleCopyDefaultHandlers}\r\n onPaste={this.handlePasteDefaultHandlers}\r\n />\r\n }\r\n />\r\n }\r\n content={\r\n \r\n \r\n \r\n \r\n {Translations.Unit}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {Translations.DefaultHandlers}\r\n \r\n \r\n {!!props.showHandlerTypes &&\r\n \r\n \r\n {Translations.NotifiedPersonsShort}\r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n {(props.partnerCompanyIds ?? []).length > 0 &&\r\n \r\n *\r\n {Translations.UnitIsRelatedToEventPartner}\r\n \r\n }\r\n \r\n }\r\n />\r\n {state.showUnitDefaultHandlersEditDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","// UnitDefaultHandlersSettings - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../../framework/saveData\";\r\nimport { IUnitDefaultHandlersNode } from \"../../../../models/unit/unitDefaultHandlersNode\";\r\nimport { UserListItems } from \"../../../../models/user/userListItems\";\r\nimport { ConfirmationButton } from \"../../../framework/Button/ConfirmationButton\";\r\nimport { UnitDefaultHandlers } from \"../UnitDefaultHandlers\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\n//UnitDefaultHandlersSettings\r\nexport interface IUnitDefaultHandlersSettingsProp {\r\n classes?: string;\r\n companyId: string;\r\n showHandlerTypes?: boolean;\r\n unitNode: IUnitDefaultHandlersNode;\r\n onSave: (obj: any) => Promise;\r\n onOk: () => void;\r\n onCancel: (closeDialog: boolean) => void;\r\n onGetUserSelectListItems?: (companyId: string, unitId: string, pageSize: number, page: number, filter: string,\r\n ignoreUserIds: string[], ignoreUserCodes: string[], activityState: number, ignoreRecordUserConnected: boolean,\r\n doNotIgnoreRecordUserConnectedUserCode: string, sortColumn: string, sortOrderIsAsc: boolean) => Promise;\r\n}\r\n\r\nexport interface IUnitDefaultHandlersSettingsState {\r\n saveUnitNode: IUnitDefaultHandlersNode;\r\n}\r\n\r\nexport class UnitDefaultHandlersSettings extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IUnitDefaultHandlersSettingsProp) {\r\n super(props);\r\n this.state = {\r\n saveUnitNode: props.unitNode\r\n };\r\n const saveData = this.getSaveDataFromState(props, this.state);\r\n this.orgStateHash = saveData.hash;\r\n }\r\n\r\n handleChangeSaveUnitNode = (saveUnitNode: IUnitDefaultHandlersNode) => {\r\n this.setState({\r\n saveUnitNode\r\n });\r\n };\r\n\r\n getSaveDataFromState = (props: IUnitDefaultHandlersSettingsProp, state: IUnitDefaultHandlersSettingsState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"handlers\", state.saveUnitNode?.getUnitDefaultHandlersNodeSaves([]));\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = await AppUtils.callService(() => props.onSave(saveData.obj));\r\n if (!result) return;\r\n // Save new hash since the window stays open in some scenarios\r\n this.orgStateHash = saveData.hash;\r\n props.onOk();\r\n };\r\n\r\n handleSave = () => {\r\n this.saveToDb();\r\n };\r\n\r\n handleCancel = async (closeDialog: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return false;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n await this.saveToDb();\r\n } else {\r\n props.onCancel(closeDialog);\r\n }\r\n\r\n return true;\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n \r\n \r\n this.handleCancel(true)} sx={{ marginRight: \".5rem\" }}>{Translations.Close}\r\n {Translations.Save}\r\n \r\n \r\n );\r\n }\r\n}","// UnitModuleDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Checkbox, FormControlLabel } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApplicationPermissionType, ConfirmationDialogResult, EnumHelper } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../../framework/saveData\";\r\nimport { ISessionState } from \"../../../../models/session/sessionState\";\r\nimport { IUnitModuleNode, UnitModuleNode } from \"../../../../models/unit/unitModuleNode\";\r\nimport { UnitModuleNodeSave } from \"../../../../models/unit/unitModuleNodeSave\";\r\nimport { IUnitModuleNodeUsage, UnitModuleNodeUsage } from \"../../../../models/unit/unitModuleNodeUsage\";\r\nimport { CompanyUnitDialog } from \"../../../company/Company/CompanyUnitDialog\";\r\nimport { ActionContainer } from \"../../../framework/ActionContainer\";\r\nimport { ConfirmationButton } from \"../../../framework/Button/ConfirmationButton\";\r\nimport { DialogSettingsCard } from \"../../../framework/Container/DialogSettingsCard\";\r\nimport { ListIconButtonsItem } from \"../../../framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { UnitModuleTree } from \"../UnitModuleTree\";\r\nimport { UnitModuleSaveResult } from \"source/models/unit/unitModuleSaveResult\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\n//UnitModuleSettings\r\nexport interface IUnitModuleSettingsProp {\r\n classes?: string;\r\n companyId: string;\r\n sessionState: ISessionState;\r\n applicationPermissionType: ApplicationPermissionType;\r\n unitModuleNode: IUnitModuleNode;\r\n onSave?: (obj: any) => Promise;\r\n onOk: (closeDialog: boolean) => void;\r\n onCancel: (closeDialog: boolean) => void;\r\n}\r\n\r\nexport interface IUnitModuleSettingsState {\r\n unitModuleNodeId: string;\r\n unitModuleNode: IUnitModuleNode;\r\n unitModuleNodes: IUnitModuleNode[];\r\n editUnitModuleNode: IUnitModuleNode;\r\n selectedUnitModuleNode: IUnitModuleNode;\r\n showUnitDialog: boolean;\r\n showUnitDialogForNew: boolean;\r\n saveUnitNodeIds: string[];\r\n removeUnitNodeIds: string[];\r\n showOnlyUnitsThatAreInUse: boolean;\r\n}\r\n\r\nexport class UnitModuleSettings extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n getStateFromProps = (props: IUnitModuleSettingsProp) => {\r\n const unitModuleNode = new UnitModuleNode(props.unitModuleNode);\r\n unitModuleNode.setNotInUseNodesHidden(props.applicationPermissionType, true);\r\n return {\r\n unitModuleNodeId: props.unitModuleNode?.id ?? \"\",\r\n unitModuleNode,\r\n unitModuleNodes: unitModuleNode.getAsList([], 0),\r\n editUnitModuleNode: null,\r\n selectedUnitModuleNode: unitModuleNode,\r\n showUnitDialog: false,\r\n showUnitDialogForNew: false,\r\n saveUnitNodeIds: [],\r\n removeUnitNodeIds: [],\r\n showOnlyUnitsThatAreInUse: true\r\n };\r\n };\r\n\r\n constructor(props: IUnitModuleSettingsProp) {\r\n super(props);\r\n this.state = this.getStateFromProps(props);\r\n const saveData = this.getSaveDataFromState(props, this.state);\r\n this.orgStateHash = saveData.hash;\r\n }\r\n\r\n componentDidUpdate(prevProps: IUnitModuleSettingsProp, prevState: IUnitModuleSettingsState) {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n if (companyId === prevCompanyId && state.unitModuleNodeId === (props.unitModuleNode?.id ?? \"\")) return;\r\n const newState = this.getStateFromProps(props);\r\n this.setState(newState);\r\n this.orgStateHash = this.getSaveDataFromState(props, newState).hash;\r\n }\r\n\r\n // #region Units\r\n handleUnitNodeClick = (id: string) => {\r\n if (!id) return;\r\n const selectedUnitModuleNode = this.state.unitModuleNode.getUnitModuleNodeById(id);\r\n if (!selectedUnitModuleNode) return;\r\n this.setState({\r\n selectedUnitModuleNode\r\n });\r\n };\r\n\r\n handleEditUnitNode = () => {\r\n const state = this.state;\r\n if (!state.selectedUnitModuleNode) return;\r\n this.setState({\r\n showUnitDialog: true,\r\n showUnitDialogForNew: false,\r\n editUnitModuleNode: state.selectedUnitModuleNode\r\n });\r\n };\r\n\r\n handleAddUnitNode = () => {\r\n const state = this.state;\r\n if (!state.selectedUnitModuleNode) return;\r\n const editUnitModuleNode = new UnitModuleNode();\r\n editUnitModuleNode.id = Base.getGuid();\r\n editUnitModuleNode.parent = state.selectedUnitModuleNode;\r\n editUnitModuleNode.usages = state.selectedUnitModuleNode.usages.slice(0);\r\n for (const usage of editUnitModuleNode.usages) {\r\n if (EnumHelper.isEqual(usage.applicationPermissionType, ApplicationPermissionType.Message) ||\r\n EnumHelper.isEqual(usage.applicationPermissionType, ApplicationPermissionType.Record) ||\r\n EnumHelper.isEqual(usage.applicationPermissionType, ApplicationPermissionType.Event) ||\r\n EnumHelper.isEqual(usage.applicationPermissionType, ApplicationPermissionType.Task) ||\r\n EnumHelper.isEqual(usage.applicationPermissionType, ApplicationPermissionType.WhistleBlow)) continue;\r\n usage.enabled = false;\r\n }\r\n this.setState({\r\n showUnitDialog: true,\r\n showUnitDialogForNew: true,\r\n editUnitModuleNode\r\n });\r\n };\r\n\r\n handleSetUsage = (id: string, applicationPermissionType: ApplicationPermissionType, inUse: boolean) => {\r\n const state = this.state;\r\n if (!id) return;\r\n const unitModuleNode = new UnitModuleNode(state.unitModuleNode);\r\n const selectedUnitModuleNode = unitModuleNode.getUnitModuleNodeById(id);\r\n if (!selectedUnitModuleNode) return;\r\n const usage = new UnitModuleNodeUsage();\r\n usage.applicationPermissionType = applicationPermissionType;\r\n usage.inUse = inUse;\r\n const modifiedUnitIds = selectedUnitModuleNode.setUsages([usage]);\r\n this.setState({\r\n selectedUnitModuleNode,\r\n unitModuleNode,\r\n unitModuleNodes: unitModuleNode.getAsList([]),\r\n saveUnitNodeIds: state.saveUnitNodeIds.filter(i => modifiedUnitIds.indexOf(i) < 0).concat(modifiedUnitIds)\r\n });\r\n };\r\n\r\n handleSetCollapsed = (id: string, value: boolean) => {\r\n const state = this.state;\r\n if (!id) return;\r\n const unitModuleNode = new UnitModuleNode(state.unitModuleNode);\r\n const selectedUnitModuleNode = unitModuleNode.getUnitModuleNodeById(id);\r\n if (!selectedUnitModuleNode) return;\r\n selectedUnitModuleNode.collapsed = value;\r\n this.setState({\r\n selectedUnitModuleNode,\r\n unitModuleNode,\r\n unitModuleNodes: unitModuleNode.getAsList([])\r\n });\r\n };\r\n\r\n handleCompanyUnitDialogOk = (name: string, comment: string, usages: IUnitModuleNodeUsage[]) => {\r\n const state = this.state;\r\n if (!state.editUnitModuleNode) return;\r\n const unitModuleNode = new UnitModuleNode(state.unitModuleNode);\r\n if (state.showUnitDialogForNew) {\r\n const selectedUnitModuleNode = unitModuleNode.getUnitModuleNodeById(state.selectedUnitModuleNode.id);\r\n if (!selectedUnitModuleNode) return;\r\n state.editUnitModuleNode.name = name;\r\n selectedUnitModuleNode.addUnitModuleNode(state.editUnitModuleNode);\r\n }\r\n const editUnitNode = unitModuleNode.getUnitModuleNodeById(state.editUnitModuleNode.id);\r\n if (!editUnitNode) return;\r\n editUnitNode.name = name;\r\n editUnitNode.comment = comment;\r\n const modifiedUnitIds = editUnitNode.setUsages(usages);\r\n this.setState({\r\n showUnitDialog: false,\r\n unitModuleNode,\r\n unitModuleNodes: unitModuleNode.getAsList([]),\r\n selectedUnitModuleNode: editUnitNode,\r\n saveUnitNodeIds: state.saveUnitNodeIds.filter(i => modifiedUnitIds.indexOf(i) < 0).concat(modifiedUnitIds)\r\n });\r\n };\r\n\r\n canRemoveUnitNode = (unitModuleNode: IUnitModuleNode): boolean => {\r\n return unitModuleNode && !unitModuleNode.getIsRoot() && !unitModuleNode.getHasChildren();\r\n };\r\n\r\n handleRemoveUnitNode = async () => {\r\n const state = this.state;\r\n if (!this.canRemoveUnitNode(state.selectedUnitModuleNode)) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveUnitParameter, state.selectedUnitModuleNode.name)) === ConfirmationDialogResult.Yes) {\r\n let removeUnitNodeIds = state.removeUnitNodeIds.slice(0);\r\n const unitModuleNode = new UnitModuleNode(state.unitModuleNode);\r\n const newRemoveUnitNodeIds = unitModuleNode.removeUnitModuleNodeById(state.selectedUnitModuleNode.id);\r\n if (!state.selectedUnitModuleNode.isNew()) {\r\n removeUnitNodeIds = removeUnitNodeIds.concat(newRemoveUnitNodeIds);\r\n }\r\n const selectedUnitModuleNode = state.selectedUnitModuleNode ? unitModuleNode.getUnitModuleNodeById(state.selectedUnitModuleNode.parent.id) : null;\r\n this.setState({\r\n unitModuleNode,\r\n unitModuleNodes: unitModuleNode.getAsList([]),\r\n removeUnitNodeIds,\r\n saveUnitNodeIds: state.saveUnitNodeIds.filter(i => newRemoveUnitNodeIds.indexOf(i) < 0),\r\n selectedUnitModuleNode: selectedUnitModuleNode ?? unitModuleNode\r\n });\r\n }\r\n };\r\n\r\n handleCompanyUnitDialogCancel = () => {\r\n this.setState({\r\n showUnitDialog: false\r\n });\r\n };\r\n\r\n //setUnitApplicationPermissionTypeVisible = (applicationPermissionType: number, value: boolean) => {\r\n // const state = this.state;\r\n // const unitModuleNode = new UnitModuleNode(this.state.unitModuleNode);\r\n // unitModuleNode.setApplicationPermissionTypeVisible(applicationPermissionType, value);\r\n // const selectedUnitModuleNode = state.selectedUnitModuleNode ? unitModuleNode.getUnitModuleNodeById(state.selectedUnitModuleNode.id) : null;\r\n // this.setState({\r\n // selectedUnitModuleNode,\r\n // unitModuleNode,\r\n // unitModuleNodes: unitModuleNode.getAsList([])\r\n // });\r\n //};\r\n\r\n setShowOnlyUnitsThatAreInUse = (value: boolean) => {\r\n const state = this.state;\r\n const unitModuleNode = new UnitModuleNode(this.state.unitModuleNode);\r\n unitModuleNode.setNotInUseNodesHidden(this.props.applicationPermissionType, value);\r\n const selectedUnitModuleNode = state.selectedUnitModuleNode ? unitModuleNode.getUnitModuleNodeById(state.selectedUnitModuleNode.id) : null;\r\n this.setState({\r\n showOnlyUnitsThatAreInUse: value,\r\n selectedUnitModuleNode,\r\n unitModuleNode,\r\n unitModuleNodes: unitModuleNode.getAsList([])\r\n });\r\n };\r\n // #endregion Units\r\n\r\n getSaveDataFromState = (props: IUnitModuleSettingsProp, state: IUnitModuleSettingsState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"companyId\", props.companyId);\r\n // units\r\n const saveUnitNodeIds = state.saveUnitNodeIds.slice(0);\r\n for (const unitModuleNode of state.unitModuleNodes) {\r\n if (unitModuleNode.getIsRoot()) continue;\r\n let modified = false;\r\n for (const usage of unitModuleNode.usages) {\r\n if (usage.visible) continue;\r\n if (!usage.inUse) continue;\r\n usage.inUse = false;\r\n modified = true;\r\n }\r\n if (modified && saveUnitNodeIds.indexOf(unitModuleNode.id) > -1) {\r\n saveUnitNodeIds.push(unitModuleNode.id);\r\n }\r\n }\r\n result.append(\"unitModuleNodeSaves\", state.unitModuleNodes.reduce((result, unitModuleNode) => {\r\n if (saveUnitNodeIds.indexOf(unitModuleNode.id) > -1) {\r\n result.push(new UnitModuleNodeSave(unitModuleNode));\r\n }\r\n return result;\r\n }, []));\r\n result.append(\"removeUnitIds\", state.removeUnitNodeIds);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (closeDialog: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = await AppUtils.callService(() => props.onSave(saveData.obj));\r\n if (!result) return;\r\n //Update rowIds after save since the window stays open in some scenarios\r\n const unitModuleNode = new UnitModuleNode(this.state.unitModuleNode);\r\n for (const idRowId of result.rowIds) {\r\n const node = unitModuleNode.getUnitModuleNodeById(idRowId.id);\r\n if (!node) continue;\r\n node.rowId = idRowId.rowId;\r\n }\r\n const selectedUnitModuleNode = state.selectedUnitModuleNode\r\n ? unitModuleNode.getUnitModuleNodeById(state.selectedUnitModuleNode.id)\r\n : null;\r\n const stateChange = {\r\n selectedUnitModuleNode,\r\n unitModuleNode,\r\n unitModuleNodes: unitModuleNode.getAsList([]),\r\n saveUnitNodeIds: [],\r\n removeUnitNodeIds: []\r\n };\r\n const newState = { ...this.state, ...stateChange };\r\n // Save new hash since the window stays open in some scenarios\r\n this.orgStateHash = this.getSaveDataFromState(props, newState).hash;\r\n this.setState(stateChange, () => props.onOk(closeDialog));\r\n };\r\n\r\n handleSave = () => {\r\n this.saveToDb(true);\r\n };\r\n\r\n handleCancel = async (closeDialog: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return false;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n await this.saveToDb(closeDialog);\r\n } else {\r\n props.onCancel(closeDialog);\r\n }\r\n\r\n return true;\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const selectedUnitId = state.selectedUnitModuleNode?.id;\r\n return (\r\n \r\n \r\n this.setShowOnlyUnitsThatAreInUse(v)}\r\n />\r\n }\r\n />\r\n }\r\n rightItems={\r\n \r\n }\r\n />\r\n }\r\n content={\r\n \r\n }\r\n />\r\n {state.showUnitDialog &&\r\n \r\n }\r\n \r\n \r\n this.handleCancel(true)}>{Translations.Close}\r\n {Translations.Save}\r\n \r\n \r\n );\r\n }\r\n}","// EventPartnerEditDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Grid } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IEventPartnerEditItem } from \"../../../models/eventPartner/eventPartnerEditItem\";\r\nimport * as eventService from \"../../../models/services/eventService\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogButtons } from \"../../framework/Dialog/DialogButtons\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { TextFieldWithButtonGroup } from \"../../framework/Form/TextFieldWithButtonGroup\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { SelectUnitDialog } from \"../../framework/Unit/SelectUnitDialog\";\r\nimport { AvatarName } from \"../../framework/User/AvatarName\";\r\nimport { ModifyUserInfo } from \"../../framework/User/ModifyUserInfo\";\r\n\r\n//EventPartnerEditDialog\r\nexport interface IEventPartnerEditDialogProp {\r\n userIsSuperAdmin: boolean;\r\n classes?: string;\r\n id: string;\r\n companyId: string;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onOk: () => void;\r\n onCancel: () => void;\r\n onRemove: (id: string, code: string) => Promise;\r\n onRefreshList: () => Promise;\r\n}\r\n\r\nexport interface IEventPartnerEditDialogState {\r\n units: IIdTitleNode[];\r\n item: IEventPartnerEditItem;\r\n unitId: string;\r\n unitCode: string;\r\n rowId: string;\r\n showSelectUnitDialog: boolean;\r\n}\r\n\r\nexport class EventPartnerEditDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IEventPartnerEditDialogProp) {\r\n super(props);\r\n this.state = {\r\n units: [],\r\n item: null,\r\n unitId: \"\",\r\n unitCode: \"\",\r\n rowId: \"\",\r\n showSelectUnitDialog: false\r\n };\r\n }\r\n\r\n loadEventPartner = async () => {\r\n const props = this.props;\r\n const result = await AppUtils.callService(() => eventService.getEventPartnerEdit(props.companyId, props.id), false);\r\n if (!result) return;\r\n const item = result.eventPartner;\r\n const state = {\r\n ...this.state,\r\n units: result.units,\r\n item,\r\n unitId: item.unitId,\r\n unitCode: item.unitCode,\r\n rowId: item.rowId\r\n };\r\n this.setState(state);\r\n const saveData = this.getSaveDataFromState(this.props, state);\r\n this.orgStateHash = saveData.hash;\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadEventPartner();\r\n }\r\n\r\n async componentDidUpdate(prevProps: IEventPartnerEditDialogProp, prevState: IEventPartnerEditDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if ((prevProps.companyId ?? \"\") === (props.companyId ?? \"\") && prevProps.id === props.id) return;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb()) return;\r\n props.onRefreshList();\r\n }\r\n this.loadEventPartner();\r\n }\r\n\r\n // #region Select Unit\r\n handleSelectUnit = () => {\r\n this.setState({\r\n showSelectUnitDialog: true\r\n });\r\n };\r\n\r\n handleSelectUnitDialogOk = async (node: IIdTitleNode) => {\r\n if (!node) return;\r\n this.setState({\r\n showSelectUnitDialog: false,\r\n unitId: node.id,\r\n unitCode: node.title\r\n });\r\n };\r\n\r\n handleSelectUnitDialogCancel = () => {\r\n this.setState({\r\n showSelectUnitDialog: false\r\n });\r\n };\r\n // #endregion Select Unit\r\n\r\n getSaveDataFromState = (props: IEventPartnerEditDialogProp, state: IEventPartnerEditDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.item.id);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"partnerCompanyId\", state.item.partnerCompanyId);\r\n result.append(\"unitId\", state.unitId);\r\n result.append(\"rowId\", state.rowId);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n return !!(await AppUtils.callService(() => eventService.saveEventPartnerEdit(saveData.obj)));\r\n };\r\n\r\n handleSave = async () => {\r\n if (!await this.saveToDb()) return;\r\n this.props.onOk();\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveEventPartnerParameter, state.item.partnerCompanyName), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await props.onRemove(state.item.id, state.item.partnerCompanyCode);\r\n if (!result) return;\r\n props.onOk();\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut(this.getSaveDataFromState(props, this.state).hash, this.orgStateHash, this.saveToDb, props.onRefreshList);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.item) return null;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {state.showSelectUnitDialog &&\r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","// EventPartnersDialogCompanyList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { CompanyActiveState, ConfirmationDialogResult, EnumHelper } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { ICompanyListItem } from \"../../../models/company/companyListItem\";\r\nimport { IEventPartnerListItem } from \"../../../models/eventPartner/eventPartnerListItem\";\r\nimport { EventPartnerListItems } from \"../../../models/eventPartner/eventPartnerListItems\";\r\nimport * as eventService from \"../../../models/services/eventService\";\r\nimport { SelectCompanyDialog } from \"../../company/SelectCompanyDialog/SelectCompanyDialog\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { DialogSettingsCard } from \"../../framework/Container/DialogSettingsCard\";\r\nimport { IListUsingComponentState, List } from \"../../framework/List/List\";\r\nimport { ListIconButtonsItem } from \"../../framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { ListLinkValue } from \"../../framework/List/ListLinkValue\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { EventPartnerEditDialog } from \"../EventPartnerEditDialog/EventPartnerEditDialog\";\r\n\r\n// EventPartnersDialogCompanyList\r\nexport interface EventPartnersDialogCompanyListProp {\r\n userIsSuperAdmin: boolean;\r\n companyId: string;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n eventPartnerListItems: EventPartnerListItems;\r\n getEventPartnerListItems: (page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, refreshList: boolean) => Promise;\r\n}\r\n\r\ninterface IEventPartnersDialogCompanyListState extends IListUsingComponentState {\r\n // List\r\n isLoading: boolean;\r\n page: number;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n defaultUnitId: string;\r\n checkedIds: string[];\r\n\r\n // Dialog\r\n showSelectCompanyDialog: boolean;\r\n}\r\n\r\nexport class EventPartnersDialogCompanyList extends React.Component {\r\n getStateFromEventPartnerListItems = (state: IEventPartnersDialogCompanyListState, eventPartnerListItems: EventPartnerListItems,\r\n page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean, moveNext: boolean = false, setEditDialogData: boolean = true) => {\r\n const items = List.getListItems(state.items, state.selectedId, state.checkedIds, eventPartnerListItems.items, resetItems, refreshList);\r\n let selectedId = items.selectedId;\r\n let index = items.items.findIndex(i => i.id === selectedId);\r\n let selectedItem = index > -1 ? items.items[index] : null;\r\n if (moveNext && selectedItem && index < items.items.length - 1) {\r\n index = index + 1;\r\n selectedItem = items.items[index];\r\n selectedId = items.items[index].id;\r\n }\r\n return {\r\n page: !refreshList ? eventPartnerListItems.page : page,\r\n hasMore: eventPartnerListItems.hasMore,\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n defaultUnitId: eventPartnerListItems.defaultUnitId,\r\n items: items.items,\r\n selectedId,\r\n checkedIds: items.checkedIds,\r\n editDialogId: setEditDialogData ? (moveNext && selectedItem ? selectedItem.id : \"\") : state.editDialogId,\r\n editDialogHasPrevious: setEditDialogData ? index > 0 : state.editDialogHasPrevious,\r\n editDialogHasNext: setEditDialogData ? (index < items.items.length - 1 || eventPartnerListItems.hasMore) : state.editDialogHasNext,\r\n };\r\n };\r\n \r\n constructor(props: EventPartnersDialogCompanyListProp) {\r\n super(props);\r\n const state = {\r\n isLoading: false,\r\n page: 1,\r\n hasMore: true,\r\n filter: props.filter,\r\n sortColumn: props.sortColumn,\r\n sortOrderIsAsc: props.sortOrderIsAsc,\r\n defaultUnitId: \"\",\r\n items: [],\r\n selectedId: null,\r\n checkedIds: [],\r\n showSelectCompanyDialog: false,\r\n showEditDialog: false,\r\n editDialogId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false,\r\n detailsItem: null\r\n };\r\n const newState = this.getStateFromEventPartnerListItems(state, props.eventPartnerListItems, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false);\r\n this.state = {\r\n ...state,\r\n ...newState\r\n };\r\n }\r\n\r\n searchItems = async (page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean, moveNext: boolean = false, setEditDialogData: boolean = true) => {\r\n this.setState({ isLoading: true });\r\n const result = await this.props.getEventPartnerListItems(page, filter, sortColumn, sortOrderIsAsc, refreshList);\r\n if (!result) return;\r\n this.setState({ isLoading: false });\r\n this.setState(this.getStateFromEventPartnerListItems(this.state, result, page, filter, sortColumn, sortOrderIsAsc, resetItems, refreshList, moveNext, setEditDialogData));\r\n };\r\n\r\n refreshList = async (setEducationDialogData: boolean = true) => {\r\n const state = this.state;\r\n await this.searchItems(state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, true, false, setEducationDialogData);\r\n };\r\n\r\n componentDidUpdate(prevProps: EventPartnersDialogCompanyListProp, prevState: IEventPartnersDialogCompanyListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n if (companyId === prevCompanyId) return;\r\n this.searchItems(state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(1, filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(!nextPage ? 1 : state.page + 1, state.filter, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n // #region Edit Dialog\r\n getSaveData = (eventPartnerId: string, partnerCompanyId: string, unitId: string, rowId: string): SaveDataObj => {\r\n const props = this.props;\r\n const result = new SaveDataObj();\r\n result.append(\"id\", eventPartnerId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"partnerCompanyId\", partnerCompanyId);\r\n result.append(\"unitId\", unitId);\r\n result.append(\"rowId\", rowId);\r\n return result;\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n this.setState(List.getEditDialogItemByIndexStateChange(this.state, index, () => this.searchItems(state.page + 1, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false, true)));\r\n };\r\n\r\n handleEditDialogOk = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n this.refreshList();\r\n };\r\n\r\n handleEditDialogCancel = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n };\r\n // #endregion Edit Dialog\r\n\r\n // #region Select Company\r\n handleSelectCompanyDialogOk = async (companies: ICompanyListItem[]) => {\r\n const state = this.state;\r\n if (!companies || companies.length < 1) return;\r\n const saveData = this.getSaveData(Base.emptyGuid, companies[0].id, state.defaultUnitId, \"\");\r\n const result = await AppUtils.callService(() => eventService.saveEventPartnerEdit(saveData.obj));\r\n if (!result) return;\r\n this.setState({\r\n showSelectCompanyDialog: false,\r\n });\r\n await this.refreshList(false);\r\n this.setState(List.getShowEditDialogStateChange(this.state, result.id));\r\n };\r\n\r\n onSelectCompanyDialogCancel = () => {\r\n this.setState({\r\n showSelectCompanyDialog: false\r\n });\r\n };\r\n // #endregion Select Company\r\n\r\n remove = async (id: string, code: string): Promise => {\r\n const props = this.props;\r\n if (!id) return;\r\n // Call server\r\n const result = await AppUtils.callService(() => eventService.removeEventPartner(props.companyId, id, code));\r\n if (!result) return null;\r\n this.refreshList();\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n if (selectedIds.length < 1) return;\r\n const partner = state.items.find(i => i.id === selectedIds[0]);\r\n if (!partner) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveEventPartnerParameter, partner.name), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n this.remove(partner.id, partner.code);\r\n }\r\n };\r\n \r\n handleAdd = () => {\r\n this.setState({\r\n showSelectCompanyDialog: true\r\n });\r\n };\r\n \r\n handleOpen = (id: string) => {\r\n const state = this.state;\r\n if (!id) return;\r\n const partner = state.items.find(i => i.id === id);\r\n if (!partner) return;\r\n this.setState(List.getShowEditDialogStateChange(this.state, id));\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n }\r\n rightItems={\r\n \r\n }\r\n />\r\n }\r\n content={\r\n <>\r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 6,\r\n content:\r\n \r\n \r\n this.handleOpen(item.id)}>{item.name}\r\n \r\n },\r\n { size: 6, content: item.unit }\r\n ],\r\n id: item.id,\r\n classes: EnumHelper.isEqual(item.activeState, CompanyActiveState.NotInUse) ? \"disabled\" : \"\"\r\n };\r\n })}\r\n noDataMessage={Translations.AddPartners}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n globalLoadingInUse={true}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpen}\r\n />\r\n {state.showSelectCompanyDialog &&\r\n i.partnerCompanyId).concat([props.companyId])}\r\n onOk={this.handleSelectCompanyDialogOk}\r\n onCancel={this.onSelectCompanyDialogCancel}\r\n onGetCompanyListItems={eventService.getSelectPartnerCompaniesListItems}\r\n />\r\n }\r\n {state.showEditDialog &&\r\n List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n onOk={this.handleEditDialogOk}\r\n onCancel={this.handleEditDialogCancel}\r\n onRemove={this.remove}\r\n onRefreshList={this.refreshList}\r\n />\r\n }\r\n \r\n }\r\n />\r\n );\r\n }\r\n}","// EventPartnersSettings - MODULE\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { infiniteListPageSize } from \"../../../models/common/webConsts\";\r\nimport { EventPartnerListItems } from \"../../../models/eventPartner/eventPartnerListItems\";\r\nimport * as eventService from \"../../../models/services/eventService\";\r\nimport { EventPartnersDialogCompanyList } from \"../EventPartnersDialogCompanyList/EventPartnersDialogCompanyList\";\r\n\r\n//EventPartnersSettings\r\nexport interface IEventPartnersSettingsProp {\r\n classes?: string;\r\n userIsSuperAdmin: boolean;\r\n companyId: string;\r\n onOk: () => void;\r\n}\r\n\r\nexport interface IEventPartnersSettingsState {\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n eventPartnerListItems: EventPartnerListItems;\r\n}\r\n\r\nexport class EventPartnersSettings extends React.Component {\r\n constructor(props: IEventPartnersSettingsProp) {\r\n super(props);\r\n this.state = {\r\n filter: \"\",\r\n sortColumn: \"name\",\r\n sortOrderIsAsc: true,\r\n eventPartnerListItems: null\r\n };\r\n }\r\n \r\n getEventPartnerListItems = async (page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, refreshList: boolean): Promise => {\r\n return AppUtils.callService(() => eventService.getEventPartnerListItems(this.props.companyId, !refreshList ? infiniteListPageSize : (page * infiniteListPageSize), !refreshList ? page : 1, filter, sortColumn, sortOrderIsAsc), false);\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.getEventPartnerListItems(1, state.filter, state.sortColumn, state.sortOrderIsAsc, false)\r\n .then(eventPartnerListItems => {\r\n if (!eventPartnerListItems) return;\r\n this.setState({ eventPartnerListItems });\r\n });\r\n }\r\n \r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.eventPartnerListItems) return null;\r\n return (\r\n \r\n );\r\n }\r\n}","// EventSettings - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Grid, MenuItem, Select } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { SaveDataObj } from \"source/framework/saveData\";\r\nimport {\r\n AttachmentImageSize,\r\n ConfirmationDialogResult,\r\n EventLocationUseType,\r\n EventObserverActionUseType,\r\n} from \"ui/Scripts/source/models/enums\";\r\nimport { IEventSetting } from \"ui/Scripts/source/models/eventSettings/eventSetting\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as eventService from \"../../../models/services/eventService\";\r\nimport { DialogSettingsCard } from \"../../framework/Container/DialogSettingsCard\";\r\nimport { DialogButtons } from \"../../framework/Dialog/DialogButtons\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\n\r\n//EventSettings\r\nexport interface IEventSettingsProp {\r\n classes?: string;\r\n companyId: string;\r\n onOk: (closeDialog: boolean) => void;\r\n onCancel: (closeDialog: boolean) => void;\r\n}\r\n\r\nexport interface IEventSettingsState {\r\n attachmentImageSize: AttachmentImageSize;\r\n observerActionUseType: EventObserverActionUseType;\r\n locationUseType: EventLocationUseType;\r\n item: IEventSetting;\r\n rowId: string;\r\n}\r\n\r\nexport class EventSettings extends React.Component<\r\n IEventSettingsProp,\r\n IEventSettingsState\r\n> {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IEventSettingsProp) {\r\n super(props);\r\n this.state = {\r\n attachmentImageSize: AttachmentImageSize.Large,\r\n observerActionUseType: EventObserverActionUseType.NotInUse,\r\n locationUseType: EventLocationUseType.NotInUse,\r\n item: null,\r\n rowId: \"\"\r\n };\r\n }\r\n\r\n getSaveDataFromState = (\r\n props: IEventSettingsProp,\r\n state: IEventSettingsState\r\n ): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.item?.id);\r\n result.append(\"companyId\", !props.companyId ? null : props.companyId);\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"attachmentImageSize\", state.attachmentImageSize);\r\n result.append(\"observerActionUseType\", state.observerActionUseType);\r\n result.append(\"locationUseType\", state.locationUseType);\r\n return result;\r\n };\r\n\r\n loadEventSettings = async () => {\r\n const props = this.props;\r\n const result = await AppUtils.callService(\r\n () => eventService.getEventSetting(props.companyId),\r\n false\r\n );\r\n if (!result) return;\r\n const state = {\r\n ...this.state,\r\n item: result,\r\n rowId: result.rowId,\r\n attachmentImageSize: result.attachmentImageSize,\r\n observerActionUseType: result.observerActionUseType,\r\n locationUseType: result.locationUseType,\r\n };\r\n this.orgStateHash = this.getSaveDataFromState(this.props, state).hash;\r\n this.setState(state);\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadEventSettings();\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const name: string = target.name;\r\n const value: string = target.value;\r\n if (name === \"attachmentImageSize\") {\r\n this.setState({ attachmentImageSize: target.value });\r\n } else if (name === \"observerActionUseType\") {\r\n this.setState({ observerActionUseType: value.toInteger() });\r\n } else if (name === \"locationUseType\") {\r\n this.setState({ locationUseType: value.toInteger() });\r\n }\r\n };\r\n\r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!(await AppUtils.validate(this.checkErrors, this.getWarningMessage, null))) { return false; }\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = await AppUtils.callService(() =>\r\n eventService.saveEventSetting(saveData.obj)\r\n );\r\n if (!result) return null;\r\n const newState = {\r\n ...this.state,\r\n rowId: result.rowId\r\n };\r\n this.orgStateHash = this.getSaveDataFromState(props, newState).hash;\r\n this.setState(newState);\r\n return true;\r\n };\r\n\r\n handleSave = async (closeDialog: boolean) => {\r\n if (!(await this.saveToDb())) return;\r\n this.props.onOk(closeDialog);\r\n };\r\n\r\n handleCancel = async (closeDialog: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return false;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave(closeDialog);\r\n } else {\r\n props.onCancel(closeDialog);\r\n }\r\n return true;\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.item) return null;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {Translations.NormalSize}\r\n \r\n \r\n {Translations.LargeSize}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {Translations.NotInUse}\r\n \r\n \r\n {Translations.InUse}\r\n \r\n \r\n {Translations.Required}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {Translations.NotInUse}\r\n \r\n \r\n {Translations.InUse}\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.handleCancel(true)}\r\n onSave={() => this.handleSave(false)}\r\n saveDisabled={this.getSaveDataFromState(props, this.state).hash === this.orgStateHash}\r\n />\r\n \r\n \r\n );\r\n }\r\n}\r\n","// EventUrgencyClassDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Checkbox, FormControlLabel, Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { IEventUrgencyClassEditItem } from \"ui/Scripts/source/models/eventUrgencyClass/eventUrgencyClassEditItem\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as eventService from \"../../../models/services/eventService\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport { ColorPicker } from \"../../framework/ColorPicker/ColorPicker\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogButtons } from \"../../framework/Dialog/DialogButtons\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { ModifyUserInfo } from \"../../framework/User/ModifyUserInfo\";\r\n\r\n//EventUrgencyClassDialog\r\nexport interface IEventUrgencyClassDialogProp {\r\n classes?: string;\r\n id: string;\r\n companyId: string;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onOk: () => void;\r\n onCancel: () => void;\r\n onRemove: (ids: string[]) => Promise;\r\n onRefreshList: () => Promise;\r\n}\r\n\r\nexport interface IEventUrgencyClassDialogState {\r\n code: string;\r\n comment: string;\r\n sortOrder: string;\r\n color: string;\r\n defaultUrgencyClass: boolean;\r\n activeState: number;\r\n item: IEventUrgencyClassEditItem;\r\n rowId: string;\r\n}\r\n\r\nexport class EventUrgencyClassDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IEventUrgencyClassDialogProp) {\r\n super(props);\r\n this.state = {\r\n item: null,\r\n code: \"\",\r\n comment: \"\",\r\n sortOrder: \"0\",\r\n color: \"\",\r\n defaultUrgencyClass: false,\r\n activeState: 0,\r\n rowId: \"\",\r\n };\r\n }\r\n\r\n loadWhistleBlowCategory = async () => {\r\n const props = this.props;\r\n const result = await AppUtils.callService(() => eventService.getEventUrgencyClassEdit(props.companyId, props.id), false);\r\n if (!result) return;\r\n const item = result.item;\r\n const state = {\r\n ...this.state,\r\n item,\r\n code: item.code,\r\n comment: item.comment,\r\n sortOrder: item.sortOrder.toString(10),\r\n color: item.color,\r\n defaultUrgencyClass: item.defaultUrgencyClass,\r\n activeState: item.activeState,\r\n rowId: item.rowId\r\n };\r\n this.setState(state);\r\n const saveData = this.getSaveDataFromState(this.props, state);\r\n this.orgStateHash = saveData.hash;\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadWhistleBlowCategory();\r\n }\r\n\r\n async componentDidUpdate(prevProps: IEventUrgencyClassDialogProp, prevState: IEventUrgencyClassDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if (prevProps.companyId === props.companyId && prevProps.id === props.id) return;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb()) return;\r\n props.onRefreshList();\r\n }\r\n this.loadWhistleBlowCategory();\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"code\") {\r\n this.setState({ code: value });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n } else if (name === \"sortOrder\") {\r\n this.setState({ sortOrder: value });\r\n }\r\n };\r\n\r\n handleBlur = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"sortOrder\") {\r\n this.setState({ sortOrder: value.toInteger().toString(10) });\r\n }\r\n };\r\n\r\n getSaveDataFromState = (props: IEventUrgencyClassDialogProp, state: IEventUrgencyClassDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.item.id);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"code\", state.code);\r\n result.append(\"comment\", state.comment);\r\n result.append(\"sortOrder\", state.sortOrder);\r\n result.append(\"color\", state.color);\r\n result.append(\"defaultUrgencyClass\", state.defaultUrgencyClass);\r\n result.append(\"activeState\", state.activeState);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.code) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.NameMustBeDefined));\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n return !!(await AppUtils.callService(() => eventService.saveEventUrgencyClassEdit(saveData.obj)));\r\n };\r\n\r\n handleSave = async () => {\r\n if (!await this.saveToDb()) return;\r\n this.props.onOk();\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.item.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveEventUrgencyClassParameter, state.item.code), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await props.onRemove([state.item.id]);\r\n if (!result) return;\r\n props.onOk();\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut(this.getSaveDataFromState(props, this.state).hash, this.orgStateHash, this.saveToDb, props.onRefreshList);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.item) return null;\r\n const isNew = state.item.isNew();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ color })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.setState({ defaultUrgencyClass: checked });\r\n }}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n 0}\r\n onChange={(_e, checked: boolean) => {\r\n this.setState({ activeState: checked ? 1 : 0 });\r\n }}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n {!isNew &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}/>\r\n );\r\n }\r\n}","// EventUrgencyClassList - MODULE\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { IEventUrgencyClassListItem } from \"ui/Scripts/source/models/eventUrgencyClass/eventUrgencyClassListItem\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { infiniteListPageSize } from \"../../../models/common/webConsts\";\r\nimport * as eventService from \"../../../models/services/eventService\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { DialogSettingsCard } from \"../../framework/Container/DialogSettingsCard\";\r\nimport { IListUsingComponentState, List } from \"../../framework/List/List\";\r\nimport { ListIconButtonsItem } from \"../../framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { ListLinkValue } from \"../../framework/List/ListLinkValue\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { ListStateIconSuccess } from \"../../framework/List/ListStateIconSuccess\";\r\nimport { EventUrgencyClassDialog } from \"../EventUrgencyClassDialog\";\r\nimport { EventEditUrgencyClassStateText } from \"ui/Scripts/source/components/event/EventEditUrgencyClassStateText/EventEditUrgencyClassStateText\";\r\nimport { IdColorTitle } from \"ui/Scripts/source/models/common/idColorTitle\";\r\n\r\n// EventUrgencyClassList\r\nexport interface IEventUrgencyClassListProp {\r\n companyId: string;\r\n}\r\n\r\ninterface IEventUrgencyClassListState extends IListUsingComponentState {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n pageSize: number;\r\n page: number;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n checkedIds: string[];\r\n}\r\n\r\nexport class EventUrgencyClassList extends React.Component {\r\n constructor(props: IEventUrgencyClassListProp) {\r\n super(props);\r\n this.state = {\r\n intialized: false,\r\n isLoading: false,\r\n page: 1,\r\n hasMore: true,\r\n filter: \"\",\r\n pageSize: infiniteListPageSize,\r\n sortColumn: \"sortOrder\",\r\n sortOrderIsAsc: true,\r\n items: [],\r\n selectedId: null,\r\n checkedIds: [],\r\n showEditDialog: false,\r\n editDialogId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false,\r\n detailsItem: null\r\n };\r\n }\r\n\r\n searchItems = async (pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean, moveNext: boolean = false, setEditDialogData: boolean = true) => {\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => eventService.getEventUrgencyClassListItems(this.props.companyId, !refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1, filter, sortColumn, sortOrderIsAsc), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const state = this.state;\r\n const items = List.getListItems(state.items, state.selectedId, state.checkedIds, result.items, resetItems, refreshList);\r\n let selectedId = items.selectedId;\r\n let index = items.items.findIndex(i => i.id === selectedId);\r\n let selectedItem = index > -1 ? items.items[index] : null;\r\n if (moveNext && selectedItem && index < items.items.length - 1) {\r\n index = index + 1;\r\n selectedItem = items.items[index];\r\n selectedId = items.items[index].id;\r\n }\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n selectedId,\r\n checkedIds: items.checkedIds,\r\n editDialogId: setEditDialogData ? (moveNext && selectedItem ? selectedItem.id : \"\") : state.editDialogId,\r\n editDialogHasPrevious: setEditDialogData ? index > 0 : state.editDialogHasPrevious,\r\n editDialogHasNext: setEditDialogData ? (index < items.items.length - 1 || result.hasMore) : state.editDialogHasNext,\r\n });\r\n };\r\n\r\n refreshList = async (setEducationDialogData: boolean = true) => {\r\n const state = this.state;\r\n await this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, true, false, setEducationDialogData);\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: IEventUrgencyClassListProp, prevState: IEventUrgencyClassListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n if (companyId === prevCompanyId) return;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n handleAdd = () => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, Base.emptyGuid));\r\n };\r\n\r\n handleOpenLine = (id: string) => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, id));\r\n };\r\n\r\n handleEditDialogOk = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n this.refreshList();\r\n };\r\n\r\n handleEditDialogCancel = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n };\r\n\r\n getRemoveSaveData = (props: IEventUrgencyClassListProp, ids: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"ids\", ids);\r\n return result;\r\n };\r\n\r\n remove = async (ids: string[]): Promise => {\r\n const props = this.props;\r\n if (ids.length < 1) return;\r\n const saveData = this.getRemoveSaveData(props, ids);\r\n // Call server\r\n const result = await AppUtils.callService(() => eventService.removeEventUrgencyClasses(saveData.obj));\r\n if (!result) return null;\r\n this.refreshList();\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n const selectedItems = state.items.filter(i => selectedIds.indexOf(i.id) > -1);\r\n if (selectedItems.length < 1) return;\r\n if (await AppUtils.showConfirmationDialog(selectedItems.length > 1\r\n ? Translations.DoYouReallyWantToRemoveSelectedEventUrgencyClasses\r\n : String.format(Translations.DoYouReallyWantToRemoveEventUrgencyClassParameter, selectedItems[0].code), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n this.remove(selectedIds);\r\n }\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n this.setState(List.getEditDialogItemByIndexStateChange(state, index, () => this.searchItems(state.pageSize, state.page + 1, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false, true)));\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n }\r\n rightItems={\r\n \r\n }\r\n />\r\n }\r\n content={\r\n <>\r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 4,\r\n content: this.handleOpenLine(item.id)}>\r\n },\r\n { size: 6, content: item.comment },\r\n { size: 2, content: item.defaultUrgencyClass ? : }\r\n ],\r\n id: item.id,\r\n classes: item.activeState < 1 ? \"disabled\" : \"\"\r\n };\r\n })}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpenLine}\r\n />\r\n {(state.showEditDialog && !!state.editDialogId) &&\r\n this.refreshList(false)}\r\n onPrevious={() => List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n />\r\n }\r\n \r\n }\r\n />\r\n );\r\n }\r\n}","// EventTypeEditDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Checkbox, FormControlLabel, Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IEventTypeEditItem } from \"../../../models/eventType/eventTypeEditItem\";\r\nimport * as eventService from \"../../../models/services/eventService\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogButtons } from \"../../framework/Dialog/DialogButtons\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { ModifyUserInfo } from \"../../framework/User/ModifyUserInfo\";\r\n\r\n//EventTypeEditDialog\r\nexport interface IEventTypeEditDialogProp {\r\n classes?: string;\r\n id: string;\r\n companyId: string;\r\n parentId: string;\r\n category: number;\r\n canBeRemoved: boolean;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onOk: () => void;\r\n onCancel: () => void;\r\n onRemove: (id: string, code: string) => Promise;\r\n onRefreshList: () => Promise;\r\n}\r\n\r\nexport interface IEventTypeEditDialogState {\r\n code: string;\r\n comment: string;\r\n activeState: number;\r\n eventTypeUsageType: number;\r\n item: IEventTypeEditItem;\r\n rowId: string;\r\n}\r\n\r\nexport class EventTypeEditDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IEventTypeEditDialogProp) {\r\n super(props);\r\n this.state = {\r\n item: null,\r\n code: \"\",\r\n comment: \"\",\r\n activeState: 0,\r\n eventTypeUsageType: 0,\r\n rowId: \"\",\r\n };\r\n }\r\n\r\n loadEventType = async () => {\r\n const props = this.props;\r\n const result = await AppUtils.callService(() => eventService.getEventTypeEdit(props.companyId, props.category, props.id), false);\r\n if (!result) return;\r\n const item = result.eventType;\r\n const state = {\r\n ...this.state,\r\n item,\r\n code: item.code,\r\n comment: item.comment,\r\n activeState: item.activeState,\r\n eventTypeUsageType: item.eventTypeUsageType,\r\n rowId: item.rowId\r\n };\r\n this.setState(state);\r\n const saveData = this.getSaveDataFromState(this.props, state);\r\n this.orgStateHash = saveData.hash;\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadEventType();\r\n }\r\n\r\n async componentDidUpdate(prevProps: IEventTypeEditDialogProp, prevState: IEventTypeEditDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if ((prevProps.companyId ?? \"\") === (props.companyId ?? \"\") && prevProps.id === props.id && prevProps.category === props.category) return;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb()) return;\r\n props.onRefreshList();\r\n }\r\n this.loadEventType();\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"code\") {\r\n this.setState({ code: value });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n }\r\n };\r\n\r\n getSaveDataFromState = (props: IEventTypeEditDialogProp, state: IEventTypeEditDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.item.id);\r\n result.append(\"companyId\", !props.companyId ? null : props.companyId);\r\n result.append(\"category\", props.category);\r\n result.append(\"parentId\", !props.parentId ? null : props.parentId);\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"code\", state.code);\r\n result.append(\"comment\", state.comment);\r\n result.append(\"activeState\", state.activeState);\r\n result.append(\"eventTypeUsageType\", state.eventTypeUsageType);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.code) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.NameMustBeDefined));\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n return !!(await AppUtils.callService(() => eventService.saveEventTypeEdit(saveData.obj)));\r\n };\r\n\r\n handleSave = async () => {\r\n if (!await this.saveToDb()) return;\r\n this.props.onOk();\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!props.canBeRemoved || state.item.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(props.category < 0.5\r\n ? Translations.DoYouReallyWantToRemoveEventTypeParameter\r\n : (props.category < 1.5\r\n ? Translations.DoYouReallyWantToRemoveEventTypeBParameter\r\n : Translations.DoYouReallyWantToRemoveEventTypeCParameter), state.item.code), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await props.onRemove(state.item.id, state.item.code);\r\n if (!result) return;\r\n props.onOk();\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut(this.getSaveDataFromState(props, this.state).hash, this.orgStateHash, this.saveToDb, props.onRefreshList);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.item) return null;\r\n const isNew = state.item.isNew();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0}\r\n onChange={(_e, checked: boolean) => {\r\n this.setState({ eventTypeUsageType: checked ? 1 : 0 });\r\n }}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n 0}\r\n onChange={(_e, checked: boolean) => {\r\n this.setState({ activeState: checked ? 1 : 0 });\r\n }}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n {!isNew &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}/>\r\n );\r\n }\r\n}","import AddCircleIcon from \"@mui/icons-material/AddCircle\";\r\nimport React from \"react\";\r\nimport { ListStateIcon } from \"../ListStateIcon/ListStateIcon\";\r\n\r\ninterface ListStateIconAddProps {\r\n color?: string;\r\n noMargin?: boolean;\r\n tooltip?: string;\r\n }\r\n \r\nexport const ListStateIconAdd = ({\r\n noMargin,\r\n tooltip,\r\n color,\r\n}: ListStateIconAddProps) => (\r\n \r\n);\r\n","// EventTypeTreeNode\r\n// ***********************************************************************************************************************\r\nimport ChevronRightIcon from \"@mui/icons-material/ChevronRight\";\r\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\r\nimport { Box, Grid, ListItemButton } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Translations } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/translations\";\r\nimport { IEventTypeNode } from \"../../../models/eventType/eventTypeNode\";\r\nimport { ListLinkValue } from \"../../framework/List/ListLinkValue\";\r\nimport { ListStateIconAdd } from \"../../framework/List/ListStateIconAdd\";\r\nimport { ListStateIconSuccess } from \"../../framework/List/ListStateIconSuccess\";\r\nimport { EllipsisTypography } from \"../../framework/Typography/EllipsisTypography\";\r\n\r\nexport interface IEventTypeTreeNodeProp {\r\n classes?: string;\r\n level: number;\r\n item: IEventTypeNode;\r\n selectedId?: string;\r\n onClick: (id: string) => void;\r\n onDoubleClick: (id: string) => void;\r\n onSetCollapsed: (id: string, value: boolean) => void;\r\n}\r\n\r\nexport class EventTypeTreeNode extends React.Component {\r\n handleNodeClick = (e) => {\r\n const props = this.props;\r\n e.stopPropagation();\r\n props.onClick(props.item.id);\r\n };\r\n \r\n handleNodeDoubleClick = (e) => {\r\n const props = this.props;\r\n e.stopPropagation();\r\n props.onDoubleClick(props.item.id);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const item = props.item;\r\n if (!item || item.parent && item.getAncesterIsCollapsed()) return null;\r\n const hasChildren = item.children.length > 0;\r\n const isActive = item.isActive();\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n {hasChildren\r\n ? (\r\n <>{item.collapsed\r\n ? (\r\n props.onSetCollapsed(item.id, !item.collapsed) : null} />\r\n )\r\n : (\r\n props.onSetCollapsed(item.id, !item.collapsed) : null} />\r\n )}\r\n \r\n )\r\n : (\r\n \r\n )}\r\n {item.code}\r\n \r\n \r\n \r\n {item.comment}\r\n \r\n \r\n {isActive &&\r\n \r\n }\r\n {isActive && item.isSelectableForNew() &&\r\n \r\n }\r\n \r\n \r\n \r\n {item.children.map((childItem) =>\r\n \r\n )}\r\n \r\n );\r\n }\r\n}","// EventTypeTree\r\n// ***********************************************************************************************************************\r\nimport PlaylistAddIcon from \"@mui/icons-material/PlaylistAdd\";\r\nimport { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ToolButton } from \"ui/Scripts/source/components/framework/Button/ToolButton\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { EventTypeNode, IEventTypeNode } from \"../../../models/eventType/eventTypeNode\";\r\nimport { EventTypeNodes } from \"../../../models/eventType/eventTypeNodes\";\r\nimport * as eventService from \"../../../models/services/eventService\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { DialogSettingsCard } from \"../../framework/Container/DialogSettingsCard\";\r\nimport { ListHeaderLine } from \"../../framework/List/ListLine\";\r\nimport { EventTypeEditDialog } from \"../EventTypeEditDialog\";\r\nimport { EventTypeTreeNode } from \"../EventTypeTreeNode\";\r\nimport { RemoveToolButton } from \"source/components/framework/Button/RemoveToolButton\";\r\nimport { AddToolButton } from \"source/components/framework/Button/AddToolButton\";\r\n\r\nexport interface IEventTypeTreeProp {\r\n classes?: string;\r\n companyId: string;\r\n category: number;\r\n selectedId?: string;\r\n eventTypeNodes: EventTypeNodes;\r\n getEventTypes: (category: number) => Promise;\r\n}\r\n\r\nexport interface IEventTypeTreeState {\r\n // Tree\r\n items: IEventTypeNode[];\r\n selectedId: string;\r\n selectedCanBeRemoved: boolean;\r\n\r\n // Dialog\r\n showEditDialog: boolean;\r\n editDialogId: string;\r\n editDialogParentId: string;\r\n editDialogHasPrevious: boolean;\r\n editDialogHasNext: boolean;\r\n}\r\n\r\nexport class EventTypeTree extends React.Component {\r\n getStateFromEventTypeNodes = (state: IEventTypeTreeState, eventTypeNodes: EventTypeNodes, moveNext: boolean = false, setEditDialogData: boolean = true) => {\r\n let selectedItem = EventTypeNode.getEventTypeNodeById(eventTypeNodes.items, state.selectedId);\r\n let selectedId = selectedItem ? selectedItem.id : \"\";\r\n const list = EventTypeNode.getAsList(state.items);\r\n let index = list.findIndex(i => i.id === selectedId);\r\n if (selectedItem && moveNext && index < list.length - 1) {\r\n index = index + 1;\r\n selectedItem = list[index];\r\n selectedId = selectedItem.id;\r\n }\r\n return {\r\n items: eventTypeNodes.items,\r\n selectedId,\r\n selectedCanBeRemoved: selectedItem ? selectedItem.children.length < 1 : false,\r\n editDialogId: setEditDialogData ? (moveNext && selectedItem ? selectedItem.id : \"\") : state.editDialogId,\r\n editDialogHasPrevious: setEditDialogData ? index > 0 : state.editDialogHasPrevious,\r\n editDialogHasNext: setEditDialogData ? index < list.length - 1 : state.editDialogHasNext,\r\n editDialogParentId: \"\"\r\n };\r\n };\r\n\r\n constructor(props: IEventTypeTreeProp) {\r\n super(props);\r\n const selectedId = props.selectedId\r\n ? props.selectedId\r\n : (props.eventTypeNodes.items.length > 0\r\n ? props.eventTypeNodes.items[0].id\r\n : \"\");\r\n const state = {\r\n items: [],\r\n selectedId,\r\n selectedCanBeRemoved: false,\r\n showEditDialog: false,\r\n editDialogId: \"\",\r\n editDialogParentId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false\r\n };\r\n const newState = this.getStateFromEventTypeNodes(state, props.eventTypeNodes);\r\n this.state = {\r\n ...state,\r\n ...newState\r\n };\r\n }\r\n\r\n searchItems = async (moveNext: boolean = false, setEditDialogData: boolean = true) => {\r\n const props = this.props;\r\n const result = await props.getEventTypes(props.category);\r\n if (!result) return;\r\n this.setState(this.getStateFromEventTypeNodes(this.state, result, moveNext, setEditDialogData));\r\n };\r\n\r\n refreshTree = async (setDialogData: boolean = true) => {\r\n await this.searchItems(false, setDialogData);\r\n };\r\n\r\n componentDidUpdate(prevProps: IEventTypeTreeProp, prevState: IEventTypeTreeState) {\r\n const props = this.props;\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n if (companyId === prevCompanyId && prevProps.category === props.category) return;\r\n this.searchItems();\r\n }\r\n\r\n handleNodeClick = (id: string) => {\r\n if (!id) return;\r\n const selectedItem = EventTypeNode.getEventTypeNodeById(this.state.items, id);\r\n if (!selectedItem) return;\r\n this.setState({\r\n selectedId: selectedItem ? selectedItem.id : \"\",\r\n selectedCanBeRemoved: selectedItem ? selectedItem.children.length < 1 : false,\r\n });\r\n };\r\n\r\n handleSetCollapsed = (id: string, value: boolean) => {\r\n const state = this.state;\r\n if (!id) return;\r\n const items = state.items.map(i => new EventTypeNode(i));\r\n const selectedItem = EventTypeNode.getEventTypeNodeById(items, id);\r\n if (!selectedItem) return;\r\n selectedItem.collapsed = value;\r\n this.setState({\r\n items,\r\n selectedId: selectedItem.id,\r\n selectedCanBeRemoved: selectedItem.children.length < 1,\r\n });\r\n };\r\n\r\n remove = async (id: string, code: string): Promise => {\r\n const props = this.props;\r\n if (!id) return;\r\n // Call server\r\n const result = await AppUtils.callService(() => eventService.removeEventType(props.companyId, props.category, id, code));\r\n if (!result) return null;\r\n this.refreshTree();\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.selectedId) return;\r\n const selectedItem = EventTypeNode.getEventTypeNodeById(state.items, state.selectedId);\r\n if (!selectedItem) return;\r\n const confirmationText = props.category < 0.5\r\n ? Translations.DoYouReallyWantToRemoveEventTypeParameter\r\n : (props.category < 1.5\r\n ? Translations.DoYouReallyWantToRemoveEventTypeBParameter\r\n : Translations.DoYouReallyWantToRemoveEventTypeCParameter);\r\n if (await AppUtils.showConfirmationDialog(String.format(confirmationText, selectedItem.code), false) === ConfirmationDialogResult.Yes) {\r\n await this.remove(selectedItem.id, selectedItem.code);\r\n }\r\n };\r\n\r\n handleShowEditDialog = (eventTypeId: string, eventTypeParentId: string, selectedCanBeRemoved: boolean) => {\r\n const state = this.state;\r\n const isNew = eventTypeId === Base.emptyGuid;\r\n const list = EventTypeNode.getAsList(state.items);\r\n const index = isNew ? 0 : list.findIndex(i => i.id === eventTypeId);\r\n if (index < 0) return;\r\n this.setState({\r\n showEditDialog: true,\r\n selectedId: eventTypeId,\r\n selectedCanBeRemoved: isNew ? state.selectedCanBeRemoved : selectedCanBeRemoved,\r\n editDialogId: eventTypeId,\r\n editDialogParentId: isNew ? eventTypeParentId : \"\",\r\n editDialogHasPrevious: index > 0,\r\n editDialogHasNext: isNew ? false : index < list.length\r\n });\r\n };\r\n\r\n handleEditDialogOk = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n this.refreshTree();\r\n };\r\n\r\n handleEditDialogCancel = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n };\r\n\r\n handleAdd = () => {\r\n this.handleShowEditDialog(Base.emptyGuid, \"\", null);\r\n };\r\n\r\n handleAddSub = () => {\r\n const state = this.state;\r\n if (!state.selectedId) return;\r\n const selectedItem = EventTypeNode.getEventTypeNodeById(state.items, state.selectedId);\r\n if (!selectedItem) return;\r\n this.handleShowEditDialog(Base.emptyGuid, selectedItem.id, null);\r\n };\r\n \r\n handleOpen = (id: string) => {\r\n const state = this.state;\r\n if (!id) return;\r\n const selectedItem = EventTypeNode.getEventTypeNodeById(state.items, id);\r\n if (!selectedItem) return;\r\n this.handleShowEditDialog(id, \"\", selectedItem.children.length < 1);\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number, list: IEventTypeNode[]) => {\r\n if (index < 0 || index >= list.length) return;\r\n this.setState({\r\n selectedId: list[index].id,\r\n editDialogId: list[index].id,\r\n editDialogHasPrevious: index > 0,\r\n editDialogHasNext: index < list.length - 1,\r\n selectedCanBeRemoved: list[index].children.length < 1\r\n });\r\n };\r\n\r\n handleMoveToPrevious = () => {\r\n const state = this.state;\r\n if (!state.selectedId) return;\r\n const selectedItem = EventTypeNode.getEventTypeNodeById(state.items, state.selectedId);\r\n if (!selectedItem) return;\r\n const list = EventTypeNode.getAsList(state.items);\r\n const index = list.findIndex(i => i.id === selectedItem.id);\r\n if (index < 0) return;\r\n this.setEditDialogItemByIndex(index - 1, list);\r\n };\r\n\r\n handleMoveToNext = () => {\r\n const state = this.state;\r\n if (!state.selectedId) return;\r\n const selectedItem = EventTypeNode.getEventTypeNodeById(state.items, state.selectedId);\r\n if (!selectedItem) return;\r\n const list = EventTypeNode.getAsList(state.items);\r\n const index = list.findIndex(i => i.id === selectedItem.id);\r\n if (index < 0) return;\r\n this.setEditDialogItemByIndex(index + 1, list);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const items = state.items;\r\n return (\r\n <>\r\n \r\n }\r\n rightItems={\r\n \r\n \r\n }\r\n onClick={this.handleAddSub}\r\n />\r\n \r\n \r\n }\r\n />\r\n }\r\n content={\r\n <>\r\n \r\n \r\n {items.map((item) =>\r\n \r\n )}\r\n \r\n \r\n }\r\n />\r\n {state.showEditDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","// EventTypesSettings - MODULE\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { EventTypeNodes } from \"../../../models/eventType/eventTypeNodes\";\r\nimport * as eventService from \"../../../models/services/eventService\";\r\nimport { EventTypeTree } from \"../EventTypeTree\";\r\n\r\n//EventTypesSettings\r\nexport interface IEventTypesSettingsProp {\r\n classes?: string;\r\n companyId: string;\r\n category: number;\r\n onClose: () => void;\r\n}\r\n\r\nexport interface IEventTypesSettingsState {\r\n eventTypeNodes: EventTypeNodes;\r\n}\r\n\r\nexport class EventTypesSettings extends React.Component {\r\n constructor(props: IEventTypesSettingsProp) {\r\n super(props);\r\n this.state = {\r\n eventTypeNodes: null\r\n };\r\n }\r\n \r\n getEventTypes = async (category: number): Promise => {\r\n return AppUtils.callService(() => eventService.getEventTypes(this.props.companyId, category), false);\r\n };\r\n\r\n componentDidMount(): void {\r\n this.getEventTypes(this.props.category)\r\n .then(eventTypeNodes => {\r\n if (!eventTypeNodes) return;\r\n this.setState({ eventTypeNodes });\r\n });\r\n }\r\n \r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.eventTypeNodes) return null;\r\n return (\r\n \r\n );\r\n }\r\n}","// EventSettingsDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Grid } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ISessionState } from \"source/models/session/sessionState\";\r\nimport { IUnitDefaultHandlersNode } from \"source/models/unit/unitDefaultHandlersNode\";\r\nimport { IUnitModuleNode } from \"source/models/unit/unitModuleNode\";\r\nimport { IUnitNodePermissions } from \"source/models/unit/unitNodePermissions\";\r\nimport { UserListItems } from \"source/models/user/userListItems\";\r\nimport { ApplicationPermissionType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as eventService from \"../../../models/services/eventService\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { IPageNavMenuItem, PageNavMenuItems } from \"../../framework/PageNav/PageNavMenuItems\";\r\nimport { UnitDefaultHandlersSettings } from \"../../unit/Unit/UnitDefaultHandlersSettings\";\r\nimport { UnitModuleSettings } from \"../../unit/Unit/UnitModuleSettings\";\r\nimport { UnitPermissionSettings } from \"../../unit/Unit/UnitPermissionSettings\";\r\nimport { EventPartnersSettings } from \"../EventPartnersSettings\";\r\nimport { EventSettings } from \"../EventSettings\";\r\nimport { EventUrgencyClassList } from \"../EventUrgencyClassList\";\r\nimport { EventTypesSettings } from \"../EventTypesSettings\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum EventsSettingsDialogMenuItem {\r\n Settings = \"1\",\r\n Units = \"2\",\r\n Permissions = \"3\",\r\n DefaultEventHandlersAndNotifiedPersons = \"4\",\r\n EventUrgencyClasses = \"5\",\r\n EventTypes = \"6\",\r\n EventTypeBs = \"7\",\r\n EventTypeCs = \"8\",\r\n EventPartners = \"9\",\r\n DefaultSettings = \"10\",\r\n DefaultEventUrgencyClasses = \"11\",\r\n DefaultEventTypes = \"12\",\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n//EventSettingsDialog\r\nexport interface IEventSettingsDialogProp {\r\n sessionState: ISessionState;\r\n classes?: string;\r\n companyId: string;\r\n settingsActions: IPageNavMenuItem[];\r\n validAdditionalPermissions?: number[];\r\n onClose: (refreshView: boolean) => void;\r\n}\r\n\r\nexport interface IEventSettingsDialogState {\r\n // Units\r\n unitModuleNode: IUnitModuleNode;\r\n // Permissions\r\n unitNodePermissions: IUnitNodePermissions;\r\n activeMenuItem: EventsSettingsDialogMenuItem;\r\n unitDefaultHandlersNode: IUnitDefaultHandlersNode;\r\n}\r\n\r\nexport class EventSettingsDialog extends React.Component {\r\n private unitsRef = React.createRef();\r\n private permissionsRef = React.createRef();\r\n private defaultHandlersRef = React.createRef();\r\n private settingsRef = React.createRef();\r\n private refreshViewOnClose = false;\r\n\r\n unitsPageAllowed = (props: IEventSettingsDialogProp) => !!props.settingsActions.find(i => i.id === EventsSettingsDialogMenuItem.Units);\r\n\r\n constructor(props: IEventSettingsDialogProp) {\r\n super(props);\r\n this.state = {\r\n unitModuleNode: null,\r\n unitNodePermissions: null,\r\n unitDefaultHandlersNode: null,\r\n activeMenuItem: this.unitsPageAllowed(props)\r\n ? EventsSettingsDialogMenuItem.Units\r\n : EventsSettingsDialogMenuItem.EventUrgencyClasses\r\n };\r\n }\r\n\r\n async componentDidMount(): Promise {\r\n if (this.unitsPageAllowed(this.props)) {\r\n await this.loadUnits();\r\n }\r\n }\r\n \r\n // #region Units\r\n onUnitModuleSettingsCancel = async (): Promise => {\r\n return await this.unitsRef.current.handleCancel(false);\r\n };\r\n\r\n loadUnits = async () => {\r\n const result = await AppUtils.callService(() => eventService.getUnits(this.props.companyId), false);\r\n if (!result) return;\r\n this.setState({\r\n unitModuleNode: result.unitModuleNode\r\n });\r\n };\r\n\r\n handleUnitModuleSettingsSave = async (obj: any) => {\r\n return await eventService.saveUnits(obj);\r\n };\r\n // #endregion Units\r\n\r\n // #region Permissions\r\n onUnitPermissionSettingsCancel = async (): Promise => {\r\n return await this.permissionsRef.current.handleCancel(false);\r\n };\r\n\r\n loadPermissions = async () => {\r\n const result = await AppUtils.callService(() => eventService.getUnitNodePermissions(this.props.companyId), false);\r\n if (!result) return;\r\n this.setState({\r\n unitNodePermissions: result\r\n });\r\n };\r\n\r\n handleUnitPermissionSettingsSave = async (obj: any) => {\r\n const result = await eventService.saveUnitNodePermissions(obj);\r\n this.loadPermissions();\r\n return result;\r\n };\r\n // #endregion Permissions\r\n\r\n // #region Default Handlers\r\n onUnitDefaultHandlersSettingsCancel = async (): Promise => {\r\n return await this.defaultHandlersRef.current.handleCancel(false);\r\n };\r\n \r\n loadDefaultHandlers = async () => {\r\n const result = await AppUtils.callService(() => eventService.getUnitNodeDefaultHandlers(this.props.companyId), false);\r\n if (!result) return;\r\n this.setState({\r\n unitDefaultHandlersNode: result.unitNode,\r\n });\r\n };\r\n \r\n handleUnitDefaultHandlersSettingsSave = async (obj: any) => {\r\n const result = await eventService.saveUnitNodePermissions(obj);\r\n this.loadDefaultHandlers();\r\n return result;\r\n };\r\n\r\n handleWhistleDefaultHandlersSelectListItems = (companyId: string, unitId: string, pageSize: number, page: number, filter: string,\r\n ignoreUserIds: string[], ignoreUserCodes: string[], activityState: number, ignoreRecordUserConnected: boolean,\r\n doNotIgnoreRecordUserConnectedUserCode: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return eventService.defaultHandlersGetSelectUserListItems(companyId, unitId, pageSize, page, filter,\r\n ignoreUserIds, ignoreUserCodes, activityState, ignoreRecordUserConnected, doNotIgnoreRecordUserConnectedUserCode,\r\n sortColumn, sortOrderIsAsc);\r\n };\r\n // #endregion Default Handlers\r\n\r\n // #region Event Settings\r\n onEventSettingsCancel = async (): Promise => {\r\n return await this.settingsRef.current.handleCancel(false);\r\n };\r\n // #endregion Event Settings\r\n\r\n handleToggleActiveMenuItem = async (menuItem: EventsSettingsDialogMenuItem) => {\r\n const state = this.state;\r\n if (state.activeMenuItem === menuItem) return;\r\n //Check current tab cancel\r\n if (state.activeMenuItem === EventsSettingsDialogMenuItem.Units) {\r\n if (!await this.onUnitModuleSettingsCancel()) return;\r\n } else if (state.activeMenuItem === EventsSettingsDialogMenuItem.Permissions) {\r\n if (!await this.onUnitPermissionSettingsCancel()) return;\r\n } else if (state.activeMenuItem === EventsSettingsDialogMenuItem.DefaultEventHandlersAndNotifiedPersons) {\r\n if (!await this.onUnitDefaultHandlersSettingsCancel()) return;\r\n } else if (state.activeMenuItem === EventsSettingsDialogMenuItem.Settings) {\r\n if (!await this.onEventSettingsCancel()) return;\r\n }\r\n //Load new tab data\r\n if (menuItem === EventsSettingsDialogMenuItem.Units) {\r\n await this.loadUnits();\r\n } else if (menuItem === EventsSettingsDialogMenuItem.Permissions) {\r\n await this.loadPermissions();\r\n } else if (menuItem === EventsSettingsDialogMenuItem.DefaultEventHandlersAndNotifiedPersons) {\r\n await this.loadDefaultHandlers();\r\n }\r\n //Set new tab active\r\n this.setState({\r\n activeMenuItem: menuItem\r\n });\r\n };\r\n\r\n handleSubViewOk = (_closeDialog: boolean) => {\r\n this.refreshViewOnClose = true;\r\n };\r\n\r\n handleCancel = async (closeDialog: boolean) => {\r\n if (!closeDialog) return;\r\n this.props.onClose(this.refreshViewOnClose);\r\n };\r\n \r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {state.activeMenuItem === EventsSettingsDialogMenuItem.Settings &&\r\n \r\n }\r\n {state.activeMenuItem === EventsSettingsDialogMenuItem.Units &&\r\n \r\n }\r\n {state.activeMenuItem === EventsSettingsDialogMenuItem.Permissions &&\r\n \r\n }\r\n {state.activeMenuItem === EventsSettingsDialogMenuItem.DefaultEventHandlersAndNotifiedPersons &&\r\n this.handleSubViewOk(false)}\r\n onCancel={this.handleCancel}\r\n onGetUserSelectListItems={this.handleWhistleDefaultHandlersSelectListItems}\r\n />\r\n }\r\n {state.activeMenuItem === EventsSettingsDialogMenuItem.EventUrgencyClasses &&\r\n \r\n }\r\n {state.activeMenuItem === EventsSettingsDialogMenuItem.EventTypes &&\r\n this.handleCancel(true)}\r\n />\r\n }\r\n {state.activeMenuItem === EventsSettingsDialogMenuItem.EventTypeBs &&\r\n this.handleCancel(true)}\r\n />\r\n }\r\n {state.activeMenuItem === EventsSettingsDialogMenuItem.EventTypeCs &&\r\n this.handleCancel(true)}\r\n />\r\n }\r\n {state.activeMenuItem === EventsSettingsDialogMenuItem.EventPartners &&\r\n this.handleSubViewOk(true)}\r\n />\r\n }\r\n {state.activeMenuItem === EventsSettingsDialogMenuItem.DefaultSettings &&\r\n this.handleSubViewOk(false)}\r\n onCancel={() => this.handleCancel(true)}\r\n />\r\n }\r\n {state.activeMenuItem === EventsSettingsDialogMenuItem.DefaultEventUrgencyClasses &&\r\n \r\n }\r\n {state.activeMenuItem === EventsSettingsDialogMenuItem.DefaultEventTypes &&\r\n this.handleCancel(true)}\r\n />\r\n }\r\n \r\n \r\n }\r\n buttons={\r\n state.activeMenuItem !== EventsSettingsDialogMenuItem.DefaultEventHandlersAndNotifiedPersons &&\r\n state.activeMenuItem !== EventsSettingsDialogMenuItem.Settings &&\r\n state.activeMenuItem !== EventsSettingsDialogMenuItem.DefaultSettings &&\r\n state.activeMenuItem !== EventsSettingsDialogMenuItem.Units &&\r\n state.activeMenuItem !== EventsSettingsDialogMenuItem.Permissions\r\n ? [{ title: Translations.Close, variant: \"outlined\", onClick: () => this.handleCancel(true) }]\r\n : null\r\n }\r\n onClose={() => this.handleCancel(true)}/>\r\n );\r\n }\r\n}","import { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { RouteComponentProps } from \"react-router-dom\";\r\nimport { AddButton } from \"source/components/framework/Button/AddButton\";\r\nimport { AppChartIcon } from \"source/components/framework/Icon/AppChartIcon\";\r\nimport { userParameterCodeShowDocumentPreview } from \"source/models/common/webConsts\";\r\nimport { ToolButton } from \"ui/Scripts/source/components/framework/toolButton\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IdTitle, IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { IdTitleNode, IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { ApplicationPermissionType, ContentPagePanelType, EventStateFilter, FrontPagePanelSize, ReportSharingType, ReportType } from \"ui/Scripts/source/models/enums\";\r\nimport { ITaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IdColorTitle, IIdColorTitle } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/idColorTitle\";\r\nimport { IdTitleClass, IIdTitleClass } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/idTitleClass\";\r\nimport { INumberTitle } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/numberTitle\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IChartItem } from \"../../../models/chart/chartItem\";\r\nimport { ISavedChartPanel, SavedChartPanel } from \"../../../models/chart/savedChartPanel\";\r\nimport { ICodeTitle } from \"../../../models/common/codeTitle\";\r\nimport { IListFilterItem, ListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { IPagePanel, PagePanel } from \"../../../models/common/pagePanel\";\r\nimport { ISavedListFilter } from \"../../../models/common/savedListFilter\";\r\nimport { ISavedPrint } from \"../../../models/common/savedPrint\";\r\nimport { ITypedOption } from \"../../../models/common/typedOption\";\r\nimport { IEventPage } from \"../../../models/event/eventPage\";\r\nimport { IEventPageData } from \"../../../models/event/eventPageData\";\r\nimport { IReportItem, ReportItem } from \"../../../models/report/reportItem\";\r\nimport { ReportItems } from \"../../../models/report/reportItems\";\r\nimport { ISavedReport } from \"../../../models/report/savedReport\";\r\nimport * as eventService from \"../../../models/services/eventService\";\r\nimport { recordLockManager } from \"../../../models/services/recordLockService\";\r\nimport * as userService from \"../../../models/services/userService\";\r\nimport { IAppSessionState } from \"../../../models/store/storeTypes\";\r\nimport { DashboardPanelList } from \"../../app/DashboardPanelList\";\r\nimport { HeaderMenuItem, NavigationMenu } from \"../../app/NavigationMenu\";\r\nimport { UserMenu } from \"../../app/UserMenu\";\r\nimport { ListFilterSaveDialog } from \"../../framework/Filters/ListFilterSaveDialog/ListFilterSaveDialog\";\r\nimport { PageContainer } from \"../../framework/Page/PageContainer\";\r\nimport { PageContent } from \"../../framework/Page/PageContent\";\r\nimport { PageDashboard } from \"../../framework/Page/PageDashboard\";\r\nimport { PageDrawer } from \"../../framework/Page/PageDrawer\";\r\nimport { PageListAndReportsContainer } from \"../../framework/Page/PageListAndReportsContainer\";\r\nimport { PageReportsContainer } from \"../../framework/Page/PageReportsContainer\";\r\nimport { PageTabs } from \"../../framework/Page/PageTabs\";\r\nimport { PageTopBar } from \"../../framework/Page/PageTopBar\";\r\nimport { IPageNavMenuItem } from \"../../framework/PageNav/PageNavMenuItems\";\r\nimport { FilterTabs } from \"../../framework/PageNavMenuItem/FilterTabs\";\r\nimport { ReportSettings } from \"../../framework/ReportSettings\";\r\nimport { PageNavMenuReportList } from \"../../report/PageNavMenuItemReportList/PageNavMenuItemReportList\";\r\nimport { ISaveReportFilters, SaveReportDialog } from \"../../report/PageNavMenuItemReportList/SaveReportDialog\";\r\nimport { EventFilterDrawer } from \"../EventFilterDrawer\";\r\nimport { EventList } from \"../EventList\";\r\nimport { EventPageDashboardChart, EventTypeNotSetId, IEventGeneralFilter, IEventPageFilterState } from \"../EventPageDashboardChart\";\r\nimport { EventReportFilterSettings } from \"../EventReportFilterSettings\";\r\nimport { EventReportList } from \"../EventReportList/EventReportList\";\r\nimport { EventSettingsDialog, EventsSettingsDialogMenuItem } from \"../EventSettingsDialog\";\r\nimport { abortManager } from \"source/models/services/tokenService\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum EventPageViewType {\r\n Events = \"0\",\r\n Reports = \"1\",\r\n Dashboard = \"2\",\r\n}\r\n\r\nconst enum EventPageMenuItem {\r\n None = \"\",\r\n CompanyFilter = \"1\",\r\n SavedFilters = \"2\",\r\n UserFilter = \"3\",\r\n Settings = \"4\",\r\n Reports = \"5\",\r\n ReportsFilter = \"6\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n// EventPage\r\nexport interface IEventPageOwnProps {\r\n}\r\n\r\nexport interface IEventPageStateProps {\r\n appState: IAppSessionState;\r\n dataId: number;\r\n eventPage: IEventPage;\r\n}\r\n\r\nexport interface IEventPageDispatchProps {\r\n onGetEventPage: () => void;\r\n onLogout: () => void;\r\n onSetCulture: (culture: string) => void;\r\n onRefreshSessionState: () => void;\r\n onSaveUserParameters: (parameters: ITypedOption[]) => void;\r\n}\r\n\r\nexport interface IEventPagePathProps {\r\n page: string;\r\n}\r\n\r\ntype EventPageProp = IEventPageOwnProps & IEventPageStateProps & IEventPageDispatchProps & RouteComponentProps;\r\n\r\ninterface IEventPageState extends IEventPageFilterState {\r\n initialized: boolean;\r\n listDataPreloaded: boolean;\r\n listAddRecord: boolean;\r\n viewTypes: IIdTitleClass[];\r\n units: IIdTitleNode[];\r\n states: IIdTitle[];\r\n urgencyClasses: IdColorTitle[];\r\n partners: IIdTitle[];\r\n creators: IIdTitle[];\r\n handlers: IIdTitle[];\r\n observers: IIdTitle[];\r\n eventTypes: IIdTitleNode[];\r\n eventTypeBs: IIdTitleNode[];\r\n eventTypeCs: IIdTitleNode[];\r\n dynamicTimeFilters: IIdTitle[];\r\n\r\n showNavPanel: boolean;\r\n activeMenuItem: EventPageMenuItem;\r\n activeViewType: EventPageViewType;\r\n activeCompanyId: string;\r\n\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n eventSettingsActions: IPageNavMenuItem[];\r\n // Filters\r\n eventFilterIsSet: boolean;\r\n showEventFilterDialog: boolean;\r\n eventFilterDialogFilter: IListFilterItem;\r\n filters: IListFilterItem[];\r\n savedFilters: IListFilterItem[];\r\n activeFilterId: string;\r\n activeSavedFilterId: string;\r\n showListFilterSaveDialog: boolean;\r\n listFilterSaveDialogFilter: IListFilterItem;\r\n listFilterSaveDialogGeneralFilter: any;\r\n listFilterSaveDialogReservedNames: string[];\r\n listFilterSaveDialogOnGetGeneralFilter: () => any;\r\n // Settings\r\n showSettingsDialog: boolean;\r\n settingsDialogCompanyId: string;\r\n // Permissions\r\n dataId: number;\r\n // Reports\r\n eventReportFilterIsSet: boolean;\r\n loadingReports: boolean;\r\n reports: IReportItem[];\r\n savedReports: IReportItem[];\r\n chartItems: IChartItem[];\r\n activeReportId: string;\r\n activeSavedReportId: string;\r\n recordReportFilterDialogReport: IReportItem;\r\n showReportSaveDialog: boolean;\r\n reportSaveDialogReport: IReportItem;\r\n reportSaveDialogGeneralFilter: any;\r\n reportSaveDialogReservedNames: string[];\r\n reportSaveDialogOnGetReportSaveFilters: () => ISaveReportFilters;\r\n // Prints\r\n userPrints: ISavedPrint[];\r\n printableFields: IIdTitleNode[];\r\n showEventPrintDialog: boolean;\r\n eventPrintDialogPrint: ISavedPrint;\r\n eventPrintDialogReservedNames: string[];\r\n // Dashboard\r\n showDashBoardNavPanel: boolean;\r\n dashBoardPanels: IPagePanel[];\r\n showDashBoardChartPanelDialog: boolean;\r\n dashBoardChartPanelDialogFilter: IEventPageFilterState;\r\n dashBoardChartPanelDialogVisible: boolean;\r\n dashBoardChartPanelDialogPanelSize: number;\r\n dashBoardChartPanelDialogChartItems: IChartItem[];\r\n dashBoardChartPanelDialogChartPanel: ISavedChartPanel;\r\n dashBoardChartPanelDialogReservedChartNames: string[];\r\n // Preview\r\n showDocumentPreview: boolean;\r\n}\r\n\r\nexport class EventPage extends React.Component {\r\n _isMounted: boolean;\r\n\r\n static getViewTypes = (): IIdTitleClass[] => {\r\n const result: IIdTitleClass[] = [];\r\n result.push(IdTitleClass.createIdTitleClass(EventPageViewType.Events, Translations.Events, \"list2\"));\r\n result.push(IdTitleClass.createIdTitleClass(EventPageViewType.Reports, Translations.Reports, \"report\"));\r\n result.push(IdTitleClass.createIdTitleClass(EventPageViewType.Dashboard, Translations.FrontPage, \"home\"));\r\n return result;\r\n };\r\n \r\n getIdTitleNodeFilters = (items: IIdTitleNode[]): IIdTitleNode[] => {\r\n const result: IIdTitleNode[] = [];\r\n result.push(IdTitleNode.createIdTitleNode(Base.emptyGuid, \"'\" + Translations.All + \"'\", []));\r\n return result.concat(items);\r\n };\r\n \r\n getEventTypeFilters = (items: IIdTitleNode[]): IIdTitleNode[] => {\r\n const result: IIdTitleNode[] = [];\r\n result.push(IdTitleNode.createIdTitleNode(Base.emptyGuid, \"'\" + Translations.All + \"'\", []));\r\n result.push(IdTitleNode.createIdTitleNode(EventTypeNotSetId, \"'\" + Translations.NotSet + \"'\", []));\r\n return result.concat(items);\r\n };\r\n \r\n getFiltersFromNumberTitle = (items: INumberTitle[]): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(EventStateFilter.All.toString(10), \"'\" + Translations.All + \"'\"));\r\n return result.concat(items.map(i => IdTitle.createIdTitle(i.number.toString(10), i.title)));\r\n };\r\n \r\n getFiltersFromIdColorTitle = (items: IIdColorTitle[]): IIdColorTitle[] => {\r\n const result: IIdColorTitle[] = [];\r\n result.push(IdColorTitle.createIdColorTitle(Base.emptyGuid, \"\", \"'\" + Translations.All + \"'\"));\r\n return result.concat(items.map(i => IdColorTitle.createIdColorTitle(i.id, i.color, i.title)));\r\n };\r\n\r\n getIdTitleFilters = (items: IIdTitle[]): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(Base.emptyGuid, \"'\" + Translations.All + \"'\"));\r\n return result.concat(items);\r\n };\r\n \r\n getFiltersFromCodeTitle = (items: ICodeTitle[], allId: string = \"\"): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(allId, \"'\" + Translations.All + \"'\"));\r\n return result.concat(items.map(i => IdTitle.createIdTitle(i.code, i.title)));\r\n };\r\n \r\n getDynamicTimeFilters = (): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(\"0\", \"'\" + Translations.SpecifedTimeFrame + \"'\"));\r\n result.push(IdTitle.createIdTitle(\"1\", Translations.Last30Days));\r\n result.push(IdTitle.createIdTitle(\"2\", Translations.Last120Days));\r\n result.push(IdTitle.createIdTitle(\"3\", Translations.Last180Days));\r\n result.push(IdTitle.createIdTitle(\"4\", Translations.LastYear));\r\n result.push(IdTitle.createIdTitle(\"7\", Translations.CurrentCalendarMonth));\r\n result.push(IdTitle.createIdTitle(\"8\", Translations.CurrentCalendarYear));\r\n result.push(IdTitle.createIdTitle(\"5\", Translations.PreviousCalendarMonth));\r\n result.push(IdTitle.createIdTitle(\"6\", Translations.PreviousCalendarYear));\r\n return result;\r\n };\r\n\r\n getHtlmlReportItems = (): IReportItem[] => {\r\n const result: IReportItem[] = [];\r\n return result;\r\n };\r\n \r\n getFilters = (): IListFilterItem[] => {\r\n const result: IListFilterItem[] = [];\r\n result.push(ListFilterItem.createListFilterItem(Translations.Events, Translations.Events,\r\n EventPageDashboardChart.getGeneralFilterFromState(null), \"state\", true));\r\n ListFilterItem.sortListFilterItems(result);\r\n return result;\r\n };\r\n\r\n getSavedFilters = (props: EventPageProp): IListFilterItem[] => {\r\n const result: IListFilterItem[] = [];\r\n if (!props || !props.eventPage) return result;\r\n for (const companyFilter of props.eventPage.companyFilters) {\r\n result.push(ListFilterItem.createListFilterItemFromSavedListFilter(companyFilter, true));\r\n }\r\n for (const userFilter of props.eventPage.userFilters) {\r\n result.push(ListFilterItem.createListFilterItemFromSavedListFilter(userFilter, false));\r\n }\r\n ListFilterItem.sortListFilterItems(result);\r\n return result;\r\n };\r\n\r\n getEventFilterIsSet = (state: IEventPageState): boolean => {\r\n return EventFilterDrawer.filterIsSet(state, state);\r\n };\r\n\r\n getEventReportFilterIsSet = (state: IEventPageState): boolean => {\r\n let taskType = null;\r\n let taskDataRow = null;\r\n if (state.activeReportId) {\r\n const report = state.reports.find(i => i.id === state.activeReportId);\r\n if (report && report.taskType && report.taskDataRow && report.taskDataRow.cols.length > 0) {\r\n taskType = report.taskType;\r\n taskDataRow = report.taskDataRow;\r\n }\r\n } else {\r\n const savedReport = state.savedReports.find(i => i.id === state.activeSavedReportId);\r\n if (savedReport && savedReport.taskType && savedReport.taskDataRow && savedReport.taskDataRow.cols.length > 0) {\r\n taskType = savedReport.taskType;\r\n taskDataRow = savedReport.taskDataRow;\r\n }\r\n }\r\n return EventReportFilterSettings.filterIsSet(state, state, taskType, taskDataRow);\r\n };\r\n\r\n getEventSettingsActions = (pageData: IEventPageData): IPageNavMenuItem[] => {\r\n const sessionState = this.props.appState.state;\r\n const result: IPageNavMenuItem[] = [];\r\n if (pageData?.canEditAllModuleProperties) {\r\n result.push({ id: EventsSettingsDialogMenuItem.Units, title: Translations.Units });\r\n result.push({ id: EventsSettingsDialogMenuItem.Permissions, title: Translations.Permissions });\r\n result.push({ id: EventsSettingsDialogMenuItem.Settings, title: Translations.Settings });\r\n result.push({ id: EventsSettingsDialogMenuItem.DefaultEventHandlersAndNotifiedPersons, title: Translations.DefaultEventHandlersAndNotifiedPersons });\r\n }\r\n if (pageData?.canEditModuleProperties) {\r\n result.push({ id: EventsSettingsDialogMenuItem.EventUrgencyClasses, title: Translations.EventUrgencyClasses });\r\n result.push({ id: EventsSettingsDialogMenuItem.EventTypes, title: Translations.EventTypes });\r\n result.push({ id: EventsSettingsDialogMenuItem.EventTypeBs, title: Translations.EventTypeBs });\r\n result.push({ id: EventsSettingsDialogMenuItem.EventTypeCs, title: Translations.EventTypeCs });\r\n }\r\n if (pageData?.canEditAllModuleProperties && (pageData?.hasExplicitEventPartners || sessionState.isSuperAdmin)) {\r\n result.push({ id: EventsSettingsDialogMenuItem.EventPartners, title: Translations.EventPartners });\r\n }\r\n if (sessionState.isSuperAdmin) {\r\n result.push({ id: EventsSettingsDialogMenuItem.DefaultSettings, title: Translations.DefaultSettings });\r\n result.push({ id: EventsSettingsDialogMenuItem.DefaultEventUrgencyClasses, title: Translations.DefaultEventUrgencyClasses });\r\n result.push({ id: EventsSettingsDialogMenuItem.DefaultEventTypes, title: Translations.DefaultEventTypes });\r\n }\r\n return result;\r\n };\r\n\r\n getDefaultEventPageViewType = (props: EventPageProp): EventPageViewType => {\r\n if (!props.match.params.page) return EventPageViewType.Dashboard;\r\n if (props.match.params.page.equalIgnoreCase(\"list\")) return EventPageViewType.Events;\r\n if (props.match.params.page.equalIgnoreCase(\"reports\")) return EventPageViewType.Reports;\r\n return EventPageViewType.Dashboard;\r\n };\r\n\r\n constructor(props: EventPageProp) {\r\n super(props);\r\n abortManager.abortAll(); //Abort all abortable calls regardless of module\r\n const sessionState = props.appState.state;\r\n const filters = this.getFilters();\r\n const filterProps = ListFilterItem.getFilterProps(filters[0], \"\", true, EventPageDashboardChart.getStateFilterPropsFromGeneralFilter);\r\n const dynamicTimeFilters = this.getDynamicTimeFilters();\r\n const state = {\r\n ...filterProps,\r\n initialized: !!props.eventPage,\r\n showNavPanel: sessionState.getShowPageNavigation(),\r\n activeMenuItem: props.eventPage ? (props.eventPage.companies.length > 1 ? EventPageMenuItem.CompanyFilter : EventPageMenuItem.SavedFilters) : EventPageMenuItem.None,\r\n activeViewType: this.getDefaultEventPageViewType(props),\r\n activeCompanyId: sessionState.companyId,\r\n listDataPreloaded: true,\r\n listAddRecord: false,\r\n viewTypes: EventPage.getViewTypes(),\r\n units: this.getIdTitleNodeFilters(props.eventPage ? props.eventPage.units : []),\r\n states: this.getFiltersFromNumberTitle(props.eventPage ? props.eventPage.states : []),\r\n urgencyClasses: this.getFiltersFromIdColorTitle(props.eventPage ? props.eventPage.urgencyClasses : []),\r\n eventTypes: this.getEventTypeFilters(props.eventPage ? props.eventPage.eventTypes : []),\r\n eventTypeBs: this.getEventTypeFilters(props.eventPage ? props.eventPage.eventTypeBs : []),\r\n eventTypeCs: this.getEventTypeFilters(props.eventPage ? props.eventPage.eventTypeCs : []),\r\n partners: this.getIdTitleFilters(props.eventPage ? props.eventPage.partners : []),\r\n creators: this.getFiltersFromCodeTitle(props.eventPage ? props.eventPage.creators : []),\r\n handlers: this.getFiltersFromCodeTitle(props.eventPage ? props.eventPage.handlers : []),\r\n observers: this.getFiltersFromCodeTitle(props.eventPage ? props.eventPage.observers : [], Base.emptyGuid),\r\n dynamicTimeFilters,\r\n selectedStartDate: 0,\r\n selectedEndDate: 0,\r\n selectedDynamicTimeFilterId: dynamicTimeFilters[0].id,\r\n eventFilterActions: [],\r\n eventSettingsActions: this.getEventSettingsActions(props.eventPage),\r\n // Filters\r\n eventFilterIsSet: false,\r\n activeFilterId: filters[0].id,\r\n activeSavedFilterId: \"\",\r\n filters,\r\n savedFilters: this.getSavedFilters(props),\r\n showEventFilterDialog: false,\r\n eventFilterDialogFilter: null,\r\n showListFilterSaveDialog: false,\r\n listFilterSaveDialogFilter: null,\r\n listFilterSaveDialogGeneralFilter: null,\r\n listFilterSaveDialogReservedNames: [],\r\n listFilterSaveDialogOnGetGeneralFilter: null,\r\n // Settings\r\n showSettingsDialog: false,\r\n settingsDialogCompanyId: \"\",\r\n // Permissions\r\n dataId: props.dataId,\r\n // Reports\r\n eventReportFilterIsSet: false,\r\n loadingReports: true,\r\n reports: this.getHtlmlReportItems(),\r\n savedReports: [],\r\n chartItems: [],\r\n activeReportId: \"\",\r\n activeSavedReportId: \"\",\r\n recordReportFilterDialogReport: null,\r\n showReportSaveDialog: false,\r\n reportSaveDialogReport: null,\r\n reportSaveDialogGeneralFilter: null,\r\n reportSaveDialogReservedNames: [],\r\n reportSaveDialogOnGetReportSaveFilters: null,\r\n // Prints\r\n userPrints: props.eventPage ? props.eventPage.userPrints : [],\r\n printableFields: props.eventPage ? props.eventPage.printableFields : [],\r\n showEventPrintDialog: false,\r\n eventPrintDialogPrint: null,\r\n eventPrintDialogReservedNames: [],\r\n // Dashboard\r\n showDashBoardNavPanel: false,\r\n dashBoardPanels: [],\r\n showDashBoardChartPanelDialog: false,\r\n dashBoardChartPanelDialogFilter: null,\r\n dashBoardChartPanelDialogVisible: false,\r\n dashBoardChartPanelDialogPanelSize: FrontPagePanelSize.OneXOne,\r\n dashBoardChartPanelDialogChartItems: [],\r\n dashBoardChartPanelDialogChartPanel: null,\r\n dashBoardChartPanelDialogReservedChartNames: [],\r\n // Preview\r\n showDocumentPreview: false,\r\n };\r\n this.state = {\r\n ...state,\r\n dashBoardPanels: this.getDashBoardPanels(state.chartItems),\r\n eventFilterIsSet: this.getEventFilterIsSet(state),\r\n eventReportFilterIsSet: this.getEventReportFilterIsSet(state)\r\n };\r\n }\r\n\r\n getDashBoardPanels = (chartItems: IChartItem[]): IPagePanel[] => {\r\n const props = this.props;\r\n const result = (props.eventPage ? props.eventPage.panels : []);\r\n const chartPanels = props.eventPage ? props.eventPage.chartPanels : [];\r\n const newChartPanels: ISavedChartPanel[] = [];\r\n for (const chartPanel of chartPanels) {\r\n const chartItem = chartItems.find(i => chartPanel.reportId === i.reportName);\r\n if (chartPanel.id === chartPanel.reportId) {\r\n chartPanel.reportTitle = chartItem\r\n ? chartItem.reportDescription\r\n : chartPanel.id;\r\n } else {\r\n chartPanel.reportTitle = chartPanel.id;\r\n }\r\n chartPanel.disabled = !chartItem;\r\n newChartPanels.push(chartPanel);\r\n }\r\n return PagePanel.sortPagePanels(result.concat(newChartPanels));\r\n };\r\n\r\n setGeneralFilterToDefaultReports = (state: { reports: IReportItem[] }) => {\r\n const dynamicTimeFilterId = 1; //30 days\r\n for (const report of state.reports) {\r\n report.generalFilter = { dynamicTimeFilterId };\r\n }\r\n };\r\n\r\n getEventReports = async (companyId: string) => {\r\n const state = this.state;\r\n const newState = await ReportItems.getReportsState(companyId, state.activeReportId, this.getHtlmlReportItems(), eventService.getEventPageReportItems,\r\n () => {\r\n if (!this._isMounted) return;\r\n this.setState({ loadingReports: true });\r\n },\r\n () => {\r\n if (!this._isMounted) return;\r\n this.setState({ loadingReports: false });\r\n });\r\n if (!this._isMounted || !newState) return;\r\n this.setGeneralFilterToDefaultReports(newState);\r\n this.setState({ ...newState, dashBoardPanels: this.getDashBoardPanels(newState.chartItems) });\r\n };\r\n\r\n componentDidMount(): void {\r\n const props = this.props;\r\n const sessionState = props.appState.state;\r\n recordLockManager.unlockAll(sessionState.companyId, sessionState.code);\r\n props.onGetEventPage();\r\n this.getEventReports(sessionState.companyId);\r\n this._isMounted = true;\r\n }\r\n\r\n componentDidUpdate(prevProps: EventPageProp, prevState: IEventPageState): void {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n //companyIds change?\r\n const prevCompanyIds = (prevProps.eventPage ? prevProps.eventPage.companies.map(i => i.id) : []).join(\",\");\r\n const companyIds = (props.eventPage ? props.eventPage.companies.map(i => i.id) : []).join(\",\");\r\n const prevCompanyId = prevProps.eventPage && prevProps.eventPage.companies.length > 0 ? prevProps.eventPage.companies[0].id : Base.emptyGuid;\r\n const companyId = props.eventPage && props.eventPage.companies.length > 0 ? props.eventPage.companies[0].id : Base.emptyGuid;\r\n //permissions change?\r\n const prevCanEditModuleProperties = prevProps.eventPage?.canEditModuleProperties ?? false;\r\n const canEditModuleProperties = props.eventPage?.canEditModuleProperties ?? false;\r\n const prevCanEditAllModuleProperties = prevProps.eventPage?.canEditAllModuleProperties ?? false;\r\n const canEditAllModuleProperties = props.eventPage?.canEditAllModuleProperties ?? false;\r\n //units change?\r\n const unitsData = props.eventPage ? props.eventPage.units : [];\r\n const equalUnits = Base.equalStrArrays(prevProps.eventPage ? prevProps.eventPage.units.map(i => i.id) : [], unitsData.map(i => i.id));\r\n const units = this.getIdTitleNodeFilters(unitsData);\r\n const prevStatesHash = prevProps.eventPage ? IdTitle.getHash(prevProps.eventPage.states.map(i => IdTitle.createIdTitle(i.number.toString(10), i.title))) : \"\";\r\n //states change?\r\n const statesData = props.eventPage ? props.eventPage.states : [];\r\n const statesHash = IdTitle.getHash(statesData.map(i => IdTitle.createIdTitle(i.number.toString(10), i.title)));\r\n const states = this.getFiltersFromNumberTitle(statesData);\r\n //urgencyClasses change?\r\n const urgencyClassData = props.eventPage ? props.eventPage.urgencyClasses : [];\r\n const equalUrgencyClasses = Base.equalStrArrays(prevProps.eventPage ? prevProps.eventPage.urgencyClasses.map(i => i.id) : [], urgencyClassData.map(i => i.id));\r\n const urgencyClasses = this.getFiltersFromIdColorTitle(urgencyClassData);\r\n //eventTypes change?\r\n const eventTypesData = props.eventPage ? props.eventPage.eventTypes : [];\r\n const equalEventTypes = Base.equalStrArrays(prevProps.eventPage ? prevProps.eventPage.eventTypes.map(i => i.id) : [], eventTypesData.map(i => i.id));\r\n const eventTypes = this.getEventTypeFilters(eventTypesData);\r\n //eventTypeBs change?\r\n const eventTypeBsData = props.eventPage ? props.eventPage.eventTypeBs : [];\r\n const equalEventTypeBs = Base.equalStrArrays(prevProps.eventPage ? prevProps.eventPage.eventTypeBs.map(i => i.id) : [], eventTypeBsData.map(i => i.id));\r\n const eventTypeBs = this.getEventTypeFilters(eventTypeBsData);\r\n //eventTypeCs change?\r\n const eventTypeCsData = props.eventPage ? props.eventPage.eventTypeCs : [];\r\n const equalEventTypeCs = Base.equalStrArrays(prevProps.eventPage ? prevProps.eventPage.eventTypeCs.map(i => i.id) : [], eventTypeCsData.map(i => i.id));\r\n const eventTypeCs = this.getEventTypeFilters(eventTypeCsData);\r\n const prevPartnersHash = prevProps.eventPage ? IdTitle.getHash(prevProps.eventPage.partners) : \"\";\r\n //partners change?\r\n const partnersData = props.eventPage ? props.eventPage.partners : [];\r\n const partnersHash = IdTitle.getHash(partnersData);\r\n const partners = this.getIdTitleFilters(partnersData);\r\n //creators change?\r\n const prevCreatorsHash = prevProps.eventPage ? IdTitle.getHash(prevProps.eventPage.creators.map(i => IdTitle.createIdTitle(i.code, i.title))) : \"\";\r\n const creatorsData = props.eventPage ? props.eventPage.creators : [];\r\n const creatorsHash = IdTitle.getHash(creatorsData.map(i => IdTitle.createIdTitle(i.code, i.title)));\r\n const creators = this.getFiltersFromCodeTitle(creatorsData);\r\n const prevHandlersHash = prevProps.eventPage ? IdTitle.getHash(prevProps.eventPage.handlers.map(i => IdTitle.createIdTitle(i.code, i.title))) : \"\";\r\n //handlers change?\r\n const handlersData = props.eventPage ? props.eventPage.handlers : [];\r\n const handlersHash = IdTitle.getHash(handlersData.map(i => IdTitle.createIdTitle(i.code, i.title)));\r\n const handlers = this.getFiltersFromCodeTitle(handlersData);\r\n const prevObserversHash = prevProps.eventPage ? IdTitle.getHash(prevProps.eventPage.observers.map(i => IdTitle.createIdTitle(i.code, i.title))) : \"\";\r\n //observers change?\r\n const observersData = props.eventPage ? props.eventPage.observers : [];\r\n const observersHash = IdTitle.getHash(observersData.map(i => IdTitle.createIdTitle(i.code, i.title)));\r\n const observers = this.getFiltersFromCodeTitle(observersData, Base.emptyGuid);\r\n //props change?\r\n if (prevProps.dataId === props.dataId && prevCompanyId === companyId && prevCanEditModuleProperties === canEditModuleProperties &&\r\n prevCanEditAllModuleProperties === canEditAllModuleProperties && prevCompanyIds === companyIds && equalUnits &&\r\n prevStatesHash === statesHash && equalUrgencyClasses && equalEventTypes && equalEventTypeBs &&\r\n equalEventTypeCs && prevPartnersHash === partnersHash && prevCreatorsHash === creatorsHash &&\r\n prevHandlersHash === handlersHash && prevObserversHash === observersHash) return;\r\n const activeMenuItem = state.initialized || !props.eventPage\r\n ? state.activeMenuItem\r\n : props.eventPage.companies.length > 1 ? EventPageMenuItem.CompanyFilter : EventPageMenuItem.SavedFilters;\r\n const savedFilters = this.getSavedFilters(props);\r\n const selectedUnitIds = equalUnits ? state.selectedUnitIds : [Base.emptyGuid];\r\n const selectedStateIds = prevStatesHash === statesHash ? state.selectedStateIds : [EventStateFilter.All.toString(10)];\r\n const selectedUrgencyClassIds = equalUrgencyClasses ? state.selectedUrgencyClassIds : [Base.emptyGuid];\r\n const selectedEventTypeIds = equalEventTypes ? state.selectedEventTypeIds : [Base.emptyGuid];\r\n const selectedEventTypeBIds = equalEventTypeBs ? state.selectedEventTypeBIds : [Base.emptyGuid];\r\n const selectedEventTypeCIds = equalEventTypeCs ? state.selectedEventTypeCIds : [Base.emptyGuid];\r\n const selectedPartnerCompanyIds = prevPartnersHash === partnersHash ? state.selectedPartnerCompanyIds : [Base.emptyGuid];\r\n const selectedCreateUserCodes = prevCreatorsHash === creatorsHash ? state.selectedCreateUserCodes : [\"\"];\r\n const selectedHandlerUserCodes = prevHandlersHash === handlersHash ? state.selectedHandlerUserCodes : [\"\"];\r\n const selectedObservers = prevObserversHash === observersHash ? state.selectedObservers : [Base.emptyGuid];\r\n const activeSavedFilterId = savedFilters.find(i => i.id === state.activeSavedFilterId)\r\n ? state.activeSavedFilterId\r\n : \"\";\r\n const stateChange = {\r\n dataId: props.dataId,\r\n initialized: !!props.eventPage,\r\n dashBoardPanels: this.getDashBoardPanels(state.chartItems),\r\n showNavPanel: state.initialized ? state.showNavPanel : sessionState.getShowPageNavigation(),\r\n activeViewType: companyId !== sessionState.companyId ? EventPageViewType.Events : state.activeViewType,\r\n activeCompanyId: companyId,\r\n activeMenuItem,\r\n units,\r\n states,\r\n urgencyClasses,\r\n eventTypes,\r\n eventTypeBs,\r\n eventTypeCs,\r\n partners,\r\n creators,\r\n handlers,\r\n observers,\r\n userPrints: props.eventPage ? props.eventPage.userPrints : [],\r\n printableFields: props.eventPage ? props.eventPage.printableFields : [],\r\n selectedUnitIds,\r\n selectedStateIds,\r\n selectedUrgencyClassIds,\r\n selectedEventTypeIds,\r\n selectedEventTypeBIds,\r\n selectedEventTypeCIds,\r\n selectedPartnerCompanyIds,\r\n selectedCreateUserCodes,\r\n selectedHandlerUserCodes,\r\n selectedObservers,\r\n savedFilters,\r\n activeSavedFilterId,\r\n eventSettingsActions: this.getEventSettingsActions(props.eventPage),\r\n showDocumentPreview: props.eventPage?.showDocumentPreview ?? state.showDocumentPreview\r\n };\r\n const newState = { ...state, ...stateChange };\r\n this.setState({\r\n ...stateChange,\r\n eventFilterIsSet: this.getEventFilterIsSet(newState),\r\n eventReportFilterIsSet: this.getEventReportFilterIsSet(newState)\r\n });\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this._isMounted = false;\r\n }\r\n\r\n handleToggleShowNavPanel = () => {\r\n this.setState({ showNavPanel: !this.state.showNavPanel });\r\n };\r\n\r\n handleToggleActiveMenuItem = (userPageMenuItem: EventPageMenuItem) => {\r\n this.setState({ activeMenuItem: this.state.activeMenuItem !== userPageMenuItem ? userPageMenuItem : EventPageMenuItem.None });\r\n };\r\n\r\n // #region Saved Filter\r\n getFilterPropsWithState = (listItemFilter: IListFilterItem): IEventPageFilterState & { sortColumn: string, sortOrderIsAsc: boolean } => {\r\n const state = this.state;\r\n let result = {\r\n selectedStartDate: state.selectedStartDate,\r\n selectedEndDate: state.selectedEndDate,\r\n selectedUnitIds: state.selectedUnitIds,\r\n selectedStateIds: state.selectedStateIds,\r\n selectedUrgencyClassIds: state.selectedUrgencyClassIds,\r\n selectedEventTypeIds: state.selectedEventTypeIds,\r\n selectedEventTypeBIds: state.selectedEventTypeBIds,\r\n selectedEventTypeCIds: state.selectedEventTypeCIds,\r\n selectedPartnerCompanyIds: state.selectedPartnerCompanyIds,\r\n selectedCreateUserCodes: state.selectedCreateUserCodes,\r\n selectedHandlerUserCodes: state.selectedHandlerUserCodes,\r\n selectedObservers: state.selectedObservers,\r\n selectedDynamicTimeFilterId: state.selectedDynamicTimeFilterId,\r\n sortColumn: state.sortColumn,\r\n sortOrderIsAsc: state.sortOrderIsAsc\r\n };\r\n if (listItemFilter) {\r\n result = ListFilterItem.getFilterProps(listItemFilter, result.sortColumn, result.sortOrderIsAsc, EventPageDashboardChart.getStateFilterPropsFromGeneralFilter);\r\n }\r\n return result;\r\n };\r\n\r\n handleChangeActiveCompanyId = async (companyId: string) => {\r\n if (this.state.activeCompanyId === companyId) return;\r\n await this.handleRefreshPageData(companyId);\r\n this.getEventReports(companyId);\r\n };\r\n\r\n getStateChangeAfterChangeActiveFilter = (activeFilterId: string): any => {\r\n const state = this.state;\r\n const filter = state.filters.find(i => i.id === activeFilterId);\r\n if (!filter) return;\r\n const filterProps = this.getFilterPropsWithState(filter);\r\n const activeSavedFilterId = \"\";\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId };\r\n return {\r\n ...filterProps,\r\n activeFilterId,\r\n activeSavedFilterId: \"\",\r\n eventFilterIsSet: this.getEventFilterIsSet(newState),\r\n eventReportFilterIsSet: this.getEventReportFilterIsSet(newState)\r\n };\r\n };\r\n\r\n handleChangeActiveFilter = (activeFilterId: string) => {\r\n this.setState(this.getStateChangeAfterChangeActiveFilter(activeFilterId));\r\n };\r\n\r\n getStateChangeAfterChangeActiveSavedFilter = (activeSavedFilterId: string): any => {\r\n const state = this.state;\r\n const savedFilter = state.savedFilters.find(i => i.id === activeSavedFilterId);\r\n if (!savedFilter) return;\r\n const filterProps = this.getFilterPropsWithState(savedFilter);\r\n const activeFilterId = \"\";\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId };\r\n return {\r\n ...filterProps,\r\n activeFilterId,\r\n activeSavedFilterId,\r\n eventFilterIsSet: this.getEventFilterIsSet(newState),\r\n eventReportFilterIsSet: this.getEventReportFilterIsSet(newState)\r\n };\r\n };\r\n\r\n handleChangeActiveSavedFilter = (activeSavedFilterId: string) => {\r\n this.setState(this.getStateChangeAfterChangeActiveSavedFilter(activeSavedFilterId));\r\n };\r\n\r\n handleRemoveSavedFilter = async (savedFilterId: string) => {\r\n const state = this.state;\r\n const savedFilter = state.savedFilters.find(i => i.id === savedFilterId);\r\n if (!savedFilter) return;\r\n const result = await ListFilterSaveDialog.removeListFilterFromDb(state.savedFilters, state.activeCompanyId, savedFilterId, savedFilter.isShared, ApplicationPermissionType.Event);\r\n if (!result) return;\r\n const savedFilters = state.savedFilters.filter(i => i.id !== savedFilterId);\r\n let activeFilterId = \"\";\r\n let activeSavedFilterId = \"\";\r\n let newfilter: IListFilterItem = null;\r\n if (savedFilters.length > 0) {\r\n newfilter = savedFilters[0];\r\n activeSavedFilterId = newfilter.id;\r\n } else if (state.filters.length > 0) {\r\n newfilter = state.filters[0];\r\n activeFilterId = newfilter.id;\r\n }\r\n const filterProps = this.getFilterPropsWithState(newfilter);\r\n const activeMenuItem = activeSavedFilterId ? EventPageMenuItem.SavedFilters : EventPageMenuItem.None;\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId, activeMenuItem, savedFilters };\r\n this.setState({\r\n ...filterProps,\r\n showEventFilterDialog: false,\r\n activeFilterId,\r\n activeSavedFilterId,\r\n activeMenuItem,\r\n savedFilters,\r\n eventFilterIsSet: this.getEventFilterIsSet(newState),\r\n eventReportFilterIsSet: this.getEventReportFilterIsSet(newState)\r\n });\r\n };\r\n\r\n handleFilterSortData = (sortColumn: string, sortOrderIsAsc: boolean) => {\r\n this.setState({\r\n sortColumn,\r\n sortOrderIsAsc,\r\n });\r\n };\r\n\r\n updateFiltersAfterSave = (orgFilterId: string, savedListFilter: ISavedListFilter, isShared: boolean) => {\r\n if (!savedListFilter) return;\r\n const state = this.state;\r\n const savedFilters = state.savedFilters.filter(i => i.id !== orgFilterId || i.isShared !== isShared);\r\n const filter = ListFilterItem.createListFilterItemFromSavedListFilter(savedListFilter, isShared);\r\n savedFilters.push(filter);\r\n ListFilterItem.sortListFilterItems(savedFilters);\r\n this.setState({\r\n showListFilterSaveDialog: false,\r\n savedFilters,\r\n activeFilterId: \"\",\r\n activeSavedFilterId: savedListFilter.id,\r\n activeMenuItem: EventPageMenuItem.SavedFilters,\r\n eventFilterDialogFilter: filter\r\n });\r\n };\r\n\r\n getActiveFilter = (): IListFilterItem => {\r\n const state = this.state;\r\n return state.activeFilterId\r\n ? state.filters.find(i => i.id === state.activeFilterId)\r\n : state.savedFilters.find(i => i.id === state.activeSavedFilterId);\r\n };\r\n\r\n handleSaveListFilter = async (saveAs: boolean, onGetGeneralFilter: () => any) => {\r\n const state = this.state;\r\n const filter = this.getActiveFilter();\r\n if (!filter) return;\r\n if (!saveAs) {\r\n const savedListFilter = await ListFilterSaveDialog.saveListFilterToDb(filter, EventPageDashboardChart.getGeneralFilterFromState(state), state.sortColumn, state.sortOrderIsAsc, state.activeCompanyId, ApplicationPermissionType.Event);\r\n this.updateFiltersAfterSave(filter.id, savedListFilter, filter.isShared);\r\n } else {\r\n this.setState({\r\n showListFilterSaveDialog: true,\r\n listFilterSaveDialogFilter: filter,\r\n listFilterSaveDialogReservedNames: state.savedFilters.map(i => i.id).concat(state.filters.map(i => i.title)),\r\n listFilterSaveDialogGeneralFilter: EventPageDashboardChart.getGeneralFilterFromState(state),\r\n listFilterSaveDialogOnGetGeneralFilter: onGetGeneralFilter\r\n });\r\n }\r\n };\r\n\r\n handleSaveListFilterDialogOk = (savedListFilter: ISavedListFilter, isShared: boolean) => {\r\n this.updateFiltersAfterSave(\"\", savedListFilter, isShared);\r\n };\r\n\r\n handleSaveListFilterDialogCancel = () => {\r\n this.setState({\r\n showListFilterSaveDialog: false\r\n });\r\n };\r\n // #endregion Saved Filter\r\n\r\n // #region Record Filter\r\n handleOpenEventFilterDialog = () => {\r\n const filter = this.getActiveFilter();\r\n if (!filter) return;\r\n this.setState({\r\n showEventFilterDialog: true,\r\n eventFilterDialogFilter: filter\r\n });\r\n };\r\n\r\n onEventFilterDialogOk = (closeDialog: boolean, filterState: IEventPageFilterState): IEventGeneralFilter => {\r\n const newState = {\r\n ...this.state,\r\n ...filterState\r\n };\r\n this.setState({\r\n showEventFilterDialog: !closeDialog,\r\n ...filterState,\r\n eventFilterIsSet: this.getEventFilterIsSet(newState),\r\n eventReportFilterIsSet: this.getEventReportFilterIsSet(newState)\r\n });\r\n return EventPageDashboardChart.getGeneralFilterFromState(newState);\r\n };\r\n \r\n onEventFilterDialogCancel = () => {\r\n this.setState({ showEventFilterDialog: false });\r\n };\r\n // #endregion Record Filter\r\n\r\n // #region Report Filter\r\n getStateChangeAfterChangeActiveReport = (activeReportId: string) => {\r\n const state = this.state;\r\n const reports = state.reports.slice(0);\r\n const report = reports.find(i => i.id === activeReportId);\r\n if (!report) return;\r\n report.resetTaskDataRowToOrg();\r\n const activeSavedReportId = \"\";\r\n const reportFilterProps = EventPageDashboardChart.getStateFilterPropsFromGeneralFilter(report.generalFilter); //Reset filter parameters\r\n const updatedState = {\r\n ...reportFilterProps,\r\n reports,\r\n activeReportId,\r\n activeSavedReportId,\r\n recordReportFilterDialogReport: report,\r\n };\r\n return {\r\n ...updatedState,\r\n eventFilterIsSet: this.getEventFilterIsSet({ ...state, ...updatedState }),\r\n eventReportFilterIsSet: this.getEventReportFilterIsSet({ ...state, ...updatedState })\r\n };\r\n };\r\n \r\n handleChangeActiveReport = (activeReportId: string) => {\r\n this.setState(this.getStateChangeAfterChangeActiveReport(activeReportId));\r\n };\r\n\r\n getStateChangeAfterChangeActiveSavedReport = (activeSavedReportId: string): any => {\r\n const state = this.state;\r\n const savedReports = state.savedReports.slice(0);\r\n const savedReport = savedReports.find(i => i.id === activeSavedReportId);\r\n if (!savedReport) return;\r\n savedReport.resetTaskDataRowToOrg();\r\n const activeReportId = \"\";\r\n const reportFilterProps = EventPageDashboardChart.getStateFilterPropsFromGeneralFilter(savedReport.generalFilter);\r\n const updatedState = {\r\n ...reportFilterProps,\r\n savedReports,\r\n activeReportId,\r\n activeSavedReportId,\r\n recordReportFilterDialogReport: savedReport,\r\n };\r\n return {\r\n ...updatedState,\r\n eventFilterIsSet: this.getEventFilterIsSet({ ...state, ...updatedState }),\r\n eventReportFilterIsSet: this.getEventReportFilterIsSet({ ...state, ...updatedState })\r\n };\r\n };\r\n\r\n handleChangeActiveSavedReport = (activeSavedReportId: string) => {\r\n this.setState(this.getStateChangeAfterChangeActiveSavedReport(activeSavedReportId));\r\n };\r\n\r\n handleRemoveSavedReport = async (reportId: string) => {\r\n const state = this.state;\r\n const savedReport = state.savedReports.find(i => i.id === reportId);\r\n if (!savedReport) return;\r\n const result = await SaveReportDialog.removeReportFromDb(state.savedReports, state.activeCompanyId, reportId, savedReport.reportSharingType, ApplicationPermissionType.Event);\r\n if (!result) return;\r\n const savedReports = state.savedReports.filter(i => i.id !== reportId);\r\n let activeReportId = \"\";\r\n let activeSavedReportId = \"\";\r\n let newReport: IReportItem = null;\r\n if (savedReports.length > 0) {\r\n newReport = savedReports[0];\r\n activeSavedReportId = newReport.id;\r\n } else if (state.reports.length > 0) {\r\n newReport = state.reports[0];\r\n activeReportId = newReport.id;\r\n }\r\n const reportFilterProps = EventPageDashboardChart.getStateFilterPropsFromGeneralFilter(newReport?.generalFilter);\r\n const activeMenuItem = activeSavedReportId ? EventPageMenuItem.Reports : EventPageMenuItem.ReportsFilter;\r\n const newState = { ...state, ...reportFilterProps, activeReportId, activeSavedReportId, activeMenuItem, savedReports };\r\n this.setState({\r\n ...reportFilterProps,\r\n activeReportId,\r\n activeSavedReportId,\r\n activeMenuItem,\r\n savedReports,\r\n eventFilterIsSet: this.getEventFilterIsSet(newState),\r\n eventReportFilterIsSet: this.getEventReportFilterIsSet(newState),\r\n recordReportFilterDialogReport: newReport,\r\n });\r\n };\r\n // #endregion Report\r\n\r\n // #region Saved Print\r\n handleUserPrintsModified = (userPrints: ISavedPrint[]) => {\r\n this.setState({\r\n userPrints\r\n });\r\n };\r\n // #endregion Saved Print\r\n\r\n setActiveViewType = (itemId: EventPageViewType, listAddRecord: boolean) => {\r\n const state = this.state;\r\n //To reset filter when filter/report is activated\r\n let newState = {};\r\n if (itemId === EventPageViewType.Reports) {\r\n if (state.activeReportId) {\r\n newState = this.getStateChangeAfterChangeActiveReport(state.activeReportId);\r\n } else if (state.activeSavedReportId) {\r\n newState = this.getStateChangeAfterChangeActiveSavedReport(state.activeSavedReportId);\r\n }\r\n } else if (itemId === EventPageViewType.Events) {\r\n if (state.activeFilterId) {\r\n newState = this.getStateChangeAfterChangeActiveFilter(state.activeFilterId);\r\n } else if (state.activeSavedFilterId) {\r\n newState = this.getStateChangeAfterChangeActiveSavedFilter(state.activeSavedFilterId);\r\n }\r\n }\r\n this.setState({\r\n ...newState,\r\n activeViewType: itemId,\r\n listDataPreloaded: false,\r\n listAddRecord,\r\n activeMenuItem: EventPageMenuItem.None\r\n });\r\n };\r\n\r\n handleSetActiveViewType = (itemId: EventPageViewType) => {\r\n this.setActiveViewType(itemId, false);\r\n };\r\n\r\n handleAddEvent = () => {\r\n this.setActiveViewType(EventPageViewType.Events, true);\r\n };\r\n\r\n // #region Settings\r\n handleOpenSettings = async (defaultSettings: boolean) => {\r\n this.setState({\r\n showSettingsDialog: true,\r\n settingsDialogCompanyId: defaultSettings ? \"\" : this.state.activeCompanyId\r\n });\r\n };\r\n\r\n handleSettingsDialogOk = async (refreshView: boolean) => {\r\n this.setState({\r\n showSettingsDialog: false,\r\n dataId: this.state.dataId + 1\r\n });\r\n if (!refreshView) return;\r\n await this.handleRefreshPageData(this.state.activeCompanyId);\r\n };\r\n // #endregion Settings\r\n\r\n handleShowDetailsPanel = (showDocumentPreview) => {\r\n this.setState({ showDocumentPreview });\r\n AppUtils.callService(() => userService.saveUserParameter(userParameterCodeShowDocumentPreview, showDocumentPreview ? \"TRUE\" : \"FALSE\"), false, true);\r\n };\r\n\r\n handleRefreshPageData = async (companyId: string) => {\r\n const state = this.state;\r\n const eventPageData = await AppUtils.callService(() => eventService.getEventPageData(companyId), false);\r\n //Units and unit filter ids\r\n const units = this.getIdTitleNodeFilters(eventPageData.units);\r\n let selectedUnitIds = state.selectedUnitIds.slice(0);\r\n if (selectedUnitIds.length > 0 && selectedUnitIds[0] !== Base.emptyGuid) {\r\n const selectedUnits = IdTitleNode.getByIds(units, selectedUnitIds);\r\n selectedUnitIds = selectedUnits.map(i => i.id);\r\n }\r\n //States and State filter ids\r\n const states = this.getFiltersFromNumberTitle(eventPageData.states);\r\n let selectedStateIds = state.selectedStateIds.slice(0);\r\n if (selectedStateIds.length > 0 && selectedStateIds[0] !== EventStateFilter.All.toString(10)) {\r\n const stateIds = states.map(i => i.id);\r\n selectedStateIds = selectedStateIds.filter(i => stateIds.indexOf(i) > -1);\r\n }\r\n //EventTypes and event type filter ids\r\n const eventTypes = this.getEventTypeFilters(eventPageData.eventTypes);\r\n let selectedEventTypeIds = state.selectedEventTypeIds.slice(0);\r\n if (selectedEventTypeIds.length > 0 && selectedEventTypeIds[0] !== Base.emptyGuid) {\r\n const selectedEventTypes = IdTitleNode.getByIds(eventTypes, selectedEventTypeIds);\r\n selectedEventTypeIds = selectedEventTypes.map(i => i.id);\r\n }\r\n //EventTypeBs and event type b filter ids\r\n const eventTypeBs = this.getEventTypeFilters(eventPageData.eventTypeBs);\r\n let selectedEventTypeBIds = state.selectedEventTypeBIds.slice(0);\r\n if (selectedEventTypeBIds.length > 0 && selectedEventTypeBIds[0] !== Base.emptyGuid) {\r\n const selectedEventTypeBs = IdTitleNode.getByIds(eventTypeBs, selectedEventTypeBIds);\r\n selectedEventTypeBIds = selectedEventTypeBs.map(i => i.id);\r\n }\r\n //EventTypeCs and event type c filter ids\r\n const eventTypeCs = this.getEventTypeFilters(eventPageData.eventTypeCs);\r\n let selectedEventTypeCIds = state.selectedEventTypeCIds.slice(0);\r\n if (selectedEventTypeCIds.length > 0 && selectedEventTypeCIds[0] !== Base.emptyGuid) {\r\n const selectedEventTypeCs = IdTitleNode.getByIds(eventTypeCs, selectedEventTypeCIds);\r\n selectedEventTypeCIds = selectedEventTypeCs.map(i => i.id);\r\n }\r\n //Partners and Partner filter ids\r\n const partners = this.getIdTitleFilters(eventPageData.partners);\r\n let selectedPartnerCompanyIds = state.selectedPartnerCompanyIds.slice(0);\r\n if (selectedPartnerCompanyIds.length > 0 && selectedPartnerCompanyIds[0] !== Base.emptyGuid) {\r\n const partnerIds = partners.map(i => i.id);\r\n selectedPartnerCompanyIds = selectedPartnerCompanyIds.filter(i => partnerIds.indexOf(i) > -1);\r\n }\r\n //Creators and Creator filter user codes\r\n const creators = this.getFiltersFromCodeTitle(eventPageData.creators);\r\n let selectedCreateUserCodes = state.selectedCreateUserCodes.slice(0);\r\n if (selectedCreateUserCodes.length > 0 && selectedCreateUserCodes[0] !== \"\") {\r\n const creatorUserCodes = creators.map(i => i.id);\r\n selectedCreateUserCodes = selectedCreateUserCodes.filter(i => creatorUserCodes.indexOf(i) > -1);\r\n }\r\n //Handlers and Handler filter user codes\r\n const handlers = this.getFiltersFromCodeTitle(eventPageData.handlers);\r\n let selectedHandlerUserCodes = state.selectedHandlerUserCodes.slice(0);\r\n if (selectedHandlerUserCodes.length > 0 && selectedHandlerUserCodes[0] !== \"\") {\r\n const handlerUserCodes = handlers.map(i => i.id);\r\n selectedHandlerUserCodes = selectedHandlerUserCodes.filter(i => handlerUserCodes.indexOf(i) > -1);\r\n }\r\n //Observers and Observer filter user codes\r\n const observers = this.getFiltersFromCodeTitle(eventPageData.observers, Base.emptyGuid);\r\n let selectedObservers = state.selectedObservers.slice(0);\r\n if (selectedObservers.length > 0 && selectedObservers[0] !== Base.emptyGuid) {\r\n const observersNames = observers.map(i => i.id);\r\n selectedObservers = selectedObservers.filter(i => observersNames.indexOf(i) > -1);\r\n }\r\n const stateChange = {\r\n activeCompanyId: companyId,\r\n units,\r\n states,\r\n eventTypes,\r\n eventTypeBs,\r\n eventTypeCs,\r\n partners,\r\n creators,\r\n handlers,\r\n observers,\r\n eventSettingsActions: this.getEventSettingsActions(eventPageData),\r\n userPrints: eventPageData.userPrints,\r\n printableFields: eventPageData.printableFields,\r\n selectedUnitIds,\r\n selectedStateIds,\r\n selectedEventTypeIds,\r\n selectedEventTypeBIds,\r\n selectedEventTypeCIds,\r\n selectedPartnerCompanyIds,\r\n selectedCreateUserCodes,\r\n selectedHandlerUserCodes,\r\n selectedObservers\r\n };\r\n const newState = { ...state, ...stateChange };\r\n this.setState({\r\n ...stateChange,\r\n eventFilterIsSet: this.getEventFilterIsSet(newState),\r\n eventReportFilterIsSet: this.getEventReportFilterIsSet(newState)\r\n });\r\n };\r\n\r\n // #region Report Filter\r\n getActiveReport = (): IReportItem => {\r\n const state = this.state;\r\n return state.activeReportId\r\n ? state.reports.find(i => i.id === state.activeReportId)\r\n : state.savedReports.find(i => i.id === state.activeSavedReportId);\r\n };\r\n\r\n handleOpenReportFilterDialog = () => {\r\n const report = this.getActiveReport();\r\n if (!report) return;\r\n this.setState({\r\n recordReportFilterDialogReport: report\r\n });\r\n };\r\n\r\n onRecordReportFilterDialogOk = (closeDialog: boolean, _: string, filterState: IEventPageFilterState, parameters: ITaskDataRow): ISaveReportFilters => {\r\n const state = this.state;\r\n const reports = state.reports.slice(0);\r\n const savedReports = state.savedReports.slice(0);\r\n const index = state.activeReportId\r\n ? reports.findIndex(i => i.id === state.activeReportId)\r\n : savedReports.findIndex(i => i.id === state.activeSavedReportId);\r\n if (index < 0) return;\r\n let reportFilter = null;\r\n if (state.activeReportId) {\r\n const report = new ReportItem(reports[index]);\r\n report.taskDataRow = parameters;\r\n reportFilter = SaveReportDialog.getReportFilter(report);\r\n reports[index] = report;\r\n } else {\r\n const savedReport = new ReportItem(savedReports[index]);\r\n savedReport.taskDataRow = parameters;\r\n savedReport.reportFilter = SaveReportDialog.getReportFilter(savedReport);\r\n reportFilter = savedReport.reportFilter;\r\n savedReports[index] = savedReport;\r\n }\r\n const stateChange = {\r\n ...filterState,\r\n reports,\r\n savedReports,\r\n };\r\n const newState = { ...state, ...stateChange };\r\n this.setState({\r\n ...stateChange,\r\n eventFilterIsSet: this.getEventFilterIsSet(newState),\r\n eventReportFilterIsSet: this.getEventReportFilterIsSet(newState)\r\n });\r\n return {\r\n generalFilter: EventPageDashboardChart.getGeneralFilterFromState(newState),\r\n reportFilter,\r\n showInFrontPage: false\r\n };\r\n };\r\n // #endregion Report Filter\r\n\r\n // #region Report Save\r\n handleSetSortData = (sortColumn: string, sortOrderIsAsc: boolean) => {\r\n const state = this.state;\r\n if (state.activeReportId) {\r\n const reports = state.reports.slice(0);\r\n const index = reports.findIndex(i => i.id === state.activeReportId);\r\n if (index < 0) return;\r\n const report = new ReportItem(reports[index]);\r\n report.sortColumn = sortColumn;\r\n report.sortOrderIsAsc = sortOrderIsAsc;\r\n reports[index] = report;\r\n const newState = { ...this.state, reports };\r\n this.setState({\r\n reports,\r\n eventFilterIsSet: this.getEventFilterIsSet(newState),\r\n eventReportFilterIsSet: this.getEventReportFilterIsSet(newState)\r\n });\r\n } else if (state.activeSavedReportId) {\r\n const savedReports = state.savedReports.slice(0);\r\n const index = savedReports.findIndex(i => i.id === state.activeSavedReportId);\r\n if (index < 0) return;\r\n const savedReport = new ReportItem(savedReports[index]);\r\n savedReport.sortColumn = sortColumn;\r\n savedReport.sortOrderIsAsc = sortOrderIsAsc;\r\n savedReports[index] = savedReport;\r\n const newState = { ...this.state, savedReports };\r\n this.setState({\r\n savedReports,\r\n eventFilterIsSet: this.getEventFilterIsSet(newState),\r\n eventReportFilterIsSet: this.getEventReportFilterIsSet(newState)\r\n });\r\n }\r\n };\r\n\r\n updateReportsAfterSave = (orgReportId: string, savedReport: ISavedReport, reportSharingType: ReportSharingType) => {\r\n if (!savedReport) return;\r\n const state = this.state;\r\n const savedReports = state.savedReports.filter(i => i.id !== orgReportId || i.reportSharingType !== reportSharingType);\r\n const report = state.reports.find(i => i.id === savedReport.reportId);\r\n if (!report) return;\r\n const newReport = ReportItem.createReportItemFromSavedReport(report, savedReport, reportSharingType);\r\n savedReports.push(newReport);\r\n ReportItem.sortReportItems(savedReports);\r\n this.setState({\r\n showReportSaveDialog: false,\r\n savedReports,\r\n activeReportId: \"\",\r\n activeSavedReportId: savedReport.id,\r\n activeMenuItem: EventPageMenuItem.ReportsFilter,\r\n recordReportFilterDialogReport: newReport\r\n });\r\n };\r\n\r\n handleSaveAsReportsModifiedReport = async (saveAs: boolean, onGetReportSaveFilters: () => ISaveReportFilters) => {\r\n const state = this.state;\r\n const report = this.getActiveReport();\r\n if (!report) return;\r\n if (!saveAs) {\r\n const savedReport = await SaveReportDialog.saveReportToDb(report, EventPageDashboardChart.getGeneralFilterFromState(state), state.activeCompanyId, ApplicationPermissionType.Event);\r\n this.updateReportsAfterSave(report.id, savedReport, report.reportSharingType);\r\n } else {\r\n this.setState({\r\n showReportSaveDialog: true,\r\n reportSaveDialogReport: report,\r\n reportSaveDialogReservedNames: state.savedReports.map(i => i.id).concat(state.reports.map(i => i.title)),\r\n reportSaveDialogGeneralFilter: EventPageDashboardChart.getGeneralFilterFromState(state),\r\n reportSaveDialogOnGetReportSaveFilters: onGetReportSaveFilters\r\n });\r\n }\r\n };\r\n\r\n handleReportSaveDialogOk = (savedReport: ISavedReport, reportSharingType: ReportSharingType) => {\r\n this.updateReportsAfterSave(\"\", savedReport, reportSharingType);\r\n };\r\n\r\n handleReportSaveDialogCancel = () => {\r\n this.setState({\r\n showReportSaveDialog: false\r\n });\r\n };\r\n // #endregion Report Save\r\n\r\n // #region Dashboard\r\n handleToggleShowDashboardNavPanel = () => {\r\n this.setState({ showDashBoardNavPanel: !this.state.showDashBoardNavPanel });\r\n };\r\n\r\n handleUpdateDashBoardPanels = async (panels: IPagePanel[]) => {\r\n this.setState({\r\n dashBoardPanels: panels\r\n });\r\n };\r\n\r\n getSavedChartPanels = (panels: IPagePanel[]): ISavedChartPanel[] => {\r\n return panels.filter(i => i.panelType === ContentPagePanelType.Chart).map(i => i as SavedChartPanel);\r\n };\r\n\r\n handleSaveDashBoardPanels = async (panels: IPagePanel[]) => {\r\n const pagePanels = panels.filter(i => i.panelType !== ContentPagePanelType.Chart);\r\n await eventService.saveEventPanels(pagePanels);\r\n const chartPanels = this.getSavedChartPanels(panels);\r\n await eventService.saveEventChartPanels(chartPanels);\r\n this.setState({\r\n dashBoardPanels: panels\r\n });\r\n };\r\n\r\n getDashboardActiveFilterMenuItem = (): EventPageMenuItem => {\r\n const props = this.props;\r\n return props.eventPage ? (props.eventPage.companies.length > 1 ? EventPageMenuItem.CompanyFilter : EventPageMenuItem.SavedFilters) : EventPageMenuItem.SavedFilters;\r\n };\r\n\r\n getDashboardActiveReportMenuItem = (): EventPageMenuItem => {\r\n const props = this.props;\r\n return props.eventPage ? (props.eventPage.companies.length > 1 ? EventPageMenuItem.CompanyFilter : EventPageMenuItem.Reports) : EventPageMenuItem.Reports;\r\n };\r\n\r\n handleDashboardSavedFilterClick = (filterId: string) => {\r\n this.handleChangeActiveSavedFilter(filterId);\r\n this.setState({\r\n activeViewType: EventPageViewType.Events,\r\n activeMenuItem: this.getDashboardActiveFilterMenuItem(),\r\n listDataPreloaded: false\r\n });\r\n };\r\n\r\n handleDashboardFilterClick = (filterId: string) => {\r\n this.handleChangeActiveFilter(filterId);\r\n this.setState({\r\n activeViewType: EventPageViewType.Events,\r\n activeMenuItem: this.getDashboardActiveFilterMenuItem(),\r\n listDataPreloaded: false\r\n });\r\n };\r\n\r\n handleDashboardSavedReportClick = (reportId: string) => {\r\n this.handleChangeActiveSavedReport(reportId);\r\n this.setState({\r\n activeViewType: EventPageViewType.Reports,\r\n activeMenuItem: this.getDashboardActiveReportMenuItem(),\r\n listDataPreloaded: false\r\n });\r\n };\r\n\r\n handleDashboardReportClick = (reportId: string) => {\r\n this.handleChangeActiveReport(reportId);\r\n this.setState({\r\n activeViewType: EventPageViewType.Reports,\r\n activeMenuItem: this.getDashboardActiveReportMenuItem(),\r\n listDataPreloaded: false\r\n });\r\n };\r\n\r\n handleShowChartPanelPropertiesDialog = (panelId: string) => {\r\n if (!panelId) return;\r\n const state = this.state;\r\n const chartPanels = this.getSavedChartPanels(state.dashBoardPanels);\r\n const chartPanel = chartPanels.find(i => i.id === panelId);\r\n if (!chartPanel) return;\r\n const chartItem = state.chartItems.find(i => i.reportName === chartPanel.reportId);\r\n if (!chartItem) return;\r\n this.setState({\r\n showDashBoardChartPanelDialog: true,\r\n recordReportFilterDialogReport: ReportItem.createReportItem(chartPanel.id, \"\", ReportType.Pdf, chartItem.taskType),\r\n dashBoardChartPanelDialogFilter: EventPageDashboardChart.getStateFilterPropsFromGeneralFilter(chartPanel.generalFilter),\r\n dashBoardChartPanelDialogVisible: chartPanel.visible,\r\n dashBoardChartPanelDialogPanelSize: chartPanel.size,\r\n dashBoardChartPanelDialogChartItems: state.chartItems,\r\n dashBoardChartPanelDialogChartPanel: chartPanel,\r\n dashBoardChartPanelDialogReservedChartNames: chartPanels.filter(i => i.id !== panelId).map(i => i.reportTitle)\r\n });\r\n };\r\n\r\n handleAddChartPanel = () => {\r\n const state = this.state;\r\n if (state.chartItems.length < 1) return;\r\n const chartPanels = this.getSavedChartPanels(state.dashBoardPanels);\r\n const chartItem = state.chartItems[0];\r\n const chartPanel = SavedChartPanel.CreateSavedChartPanel(chartItem, Base.maxVal(state.dashBoardPanels.map(i => i.position), -1) + 1, ApplicationPermissionType.Event);\r\n chartPanel.id = \"\";\r\n chartPanel.visible = true;\r\n chartPanel.reportTitle = Translations.NewPanel;\r\n chartPanel.generalFilter = { dynamicTimeFilterId: 1 }; //Default time filter is last 30 days\r\n this.setState({\r\n showDashBoardChartPanelDialog: true,\r\n recordReportFilterDialogReport: ReportItem.createReportItem(chartPanel.id, \"\", ReportType.Pdf, chartItem.taskType),\r\n dashBoardChartPanelDialogFilter: EventPageDashboardChart.getStateFilterPropsFromGeneralFilter(chartPanel.generalFilter),\r\n dashBoardChartPanelDialogVisible: chartPanel.visible,\r\n dashBoardChartPanelDialogPanelSize: chartPanel.size,\r\n dashBoardChartPanelDialogChartItems: state.chartItems,\r\n dashBoardChartPanelDialogChartPanel: chartPanel,\r\n dashBoardChartPanelDialogReservedChartNames: chartPanels.map(i => i.reportTitle)\r\n });\r\n };\r\n \r\n handleChartPanelSaved = (chartPanel: ISavedChartPanel) => {\r\n const state = this.state;\r\n if (!chartPanel || !state.dashBoardChartPanelDialogChartPanel) return;\r\n const pagePanels = state.dashBoardPanels.filter(i => i.panelType !== ContentPagePanelType.Chart);\r\n const chartPanels = this.getSavedChartPanels(state.dashBoardPanels).filter(i => i.id !== chartPanel.id && i.id !== state.dashBoardChartPanelDialogChartPanel.id);\r\n chartPanels.push(chartPanel);\r\n this.setState({\r\n showDashBoardChartPanelDialog: false,\r\n dashBoardPanels: PagePanel.sortPagePanels(pagePanels.concat(chartPanels))\r\n });\r\n };\r\n\r\n handleChartPanelRemoved = (chartPanelId: string) => {\r\n if (!chartPanelId) return;\r\n const state = this.state;\r\n const pagePanels = state.dashBoardPanels.filter(i => i.panelType !== ContentPagePanelType.Chart);\r\n const chartPanels = this.getSavedChartPanels(state.dashBoardPanels).filter(i => i.id !== chartPanelId);\r\n this.setState({\r\n showDashBoardChartPanelDialog: false,\r\n dashBoardPanels: PagePanel.sortPagePanels(pagePanels.concat(chartPanels))\r\n });\r\n };\r\n \r\n onChartPanelReportFilterDialogCancel = () => {\r\n this.setState({\r\n showDashBoardChartPanelDialog: false\r\n });\r\n };\r\n // #endregion Dashboard\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n const companies = props.eventPage ? props.eventPage.companies : [];\r\n const dashboardViewIsActive = state.activeViewType === EventPageViewType.Dashboard;\r\n const eventsViewIsActive = state.activeViewType === EventPageViewType.Events;\r\n const reportsViewIsActive = state.activeViewType === EventPageViewType.Reports;\r\n // const companiesMenuAvailable = companies.length > 1 && eventsViewIsActive;\r\n const settingsVisible = state.eventSettingsActions?.length > 0;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!dashboardViewIsActive &&\r\n \r\n {eventsViewIsActive &&\r\n i.id === state.activeSavedFilterId) : null}\r\n sessionState={sessionState}\r\n dataId={state.dataId.toString(10)}\r\n preloaded={state.listDataPreloaded}\r\n addRecord={state.listAddRecord}\r\n waitingPreloadedData={state.listDataPreloaded}\r\n list={props.eventPage?.list}\r\n listFilterIsSet={state.eventFilterIsSet}\r\n units={state.units}\r\n selectedStartDate={state.selectedStartDate}\r\n selectedEndDate={state.selectedEndDate}\r\n selectedUnitIds={state.selectedUnitIds}\r\n selectedStateIds={state.selectedStateIds}\r\n selectedUrgencyClassIds={state.selectedUrgencyClassIds}\r\n selectedEventTypeIds={state.selectedEventTypeIds}\r\n selectedEventTypeBIds={state.selectedEventTypeBIds}\r\n selectedEventTypeCIds={state.selectedEventTypeCIds}\r\n selectedPartnerCompanyIds={state.selectedPartnerCompanyIds}\r\n selectedCreateUserCodes={state.selectedCreateUserCodes}\r\n selectedHandlerUserCodes={state.selectedHandlerUserCodes}\r\n selectedObservers={state.selectedObservers}\r\n selectedDynamicTimeFilterId={state.selectedDynamicTimeFilterId}\r\n companyId={state.activeCompanyId}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n userPrints={state.userPrints}\r\n printableFields={state.printableFields}\r\n reportTabs={(\r\n \r\n )}\r\n showDocumentPreview={state.showDocumentPreview}\r\n urgencyClasses={state.urgencyClasses}\r\n onSetSortData={this.handleFilterSortData}\r\n onLoadPageData={() => this.handleRefreshPageData(state.activeCompanyId)}\r\n onUserPrintsModified={this.handleUserPrintsModified}\r\n onOpenFiltersDialog={this.handleOpenEventFilterDialog}\r\n onChangeShowDocumentPreview={this.handleShowDetailsPanel}\r\n />\r\n }\r\n {reportsViewIsActive &&\r\n \r\n \r\n }\r\n />\r\n {}}\r\n />\r\n }\r\n reports={\r\n \r\n }\r\n />\r\n \r\n }\r\n \r\n }\r\n {dashboardViewIsActive &&\r\n \r\n \r\n {state.showListFilterSaveDialog &&\r\n \r\n }\r\n {state.showDashBoardChartPanelDialog &&\r\n }\r\n title={state.dashBoardChartPanelDialogChartPanel.reportTitle}\r\n parentTitle={Translations.Panels}\r\n hideBackButton={!state.showDashBoardNavPanel}\r\n onClose={this.onChartPanelReportFilterDialogCancel}\r\n >\r\n \r\n \r\n \r\n \r\n }\r\n {state.showReportSaveDialog &&\r\n \r\n }\r\n {state.showSettingsDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","/* eslint-disable no-unused-vars */\r\nimport * as React from \"react\";\r\n/* eslint-enable no-unused-vars */\r\nimport { connect } from \"react-redux\";\r\nimport { IApplicationState } from \"../../models/store/storeTypes\";\r\nimport * as storeEffects from \"../../models/store/storeEffects\";\r\nimport { IEventPageOwnProps, IEventPageStateProps, IEventPageDispatchProps, EventPage } from \"../../components/event/EventPage\";\r\nimport { ITypedOption } from \"../../models/common/typedOption\";\r\n\r\nexport function mapStateToProps(applicationState: IApplicationState, ownProps: IEventPageOwnProps): IEventPageStateProps {\r\n if (!applicationState || !applicationState.front) {\r\n return {\r\n appState: null,\r\n dataId: -1,\r\n eventPage: null\r\n };\r\n }\r\n const events = applicationState.events;\r\n return {\r\n appState: applicationState.session,\r\n dataId: events.dataId,\r\n eventPage: events.eventPage\r\n };\r\n}\r\n\r\nexport function mapDispatchToProps(dispatch: storeEffects.EventsThunkDispatch): IEventPageDispatchProps {\r\n return {\r\n onGetEventPage: () => dispatch(storeEffects.getEventPage()),\r\n onLogout: () => dispatch(storeEffects.logout()),\r\n onSetCulture: (culture: string) => dispatch(storeEffects.setCulture(culture)),\r\n onSaveUserParameters: (parameters: ITypedOption[]) => dispatch(storeEffects.saveUserParameters(parameters)),\r\n onRefreshSessionState: () => dispatch(storeEffects.refreshSessionState()),\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(EventPage);","// GenericChart\r\n// ***********************************************************************************************************************\r\n/// \r\nimport { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ToolButton } from \"ui/Scripts/source/components/framework/toolButton\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IReportChartData } from \"../../../models/report/reportChartData\";\r\nimport { CardContainer } from \"../CardContainer\";\r\nimport { DashboardCardProgress } from \"../DashboardCard/DashboardCardProgress\";\r\nimport { DashboardCardTitle } from \"../DashboardCard/DashboardCardTitle\";\r\nimport { BarChart } from \"./BarChart\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\nexport interface IGenericChartProp {\r\n classes?: string;\r\n defaultTitle?: string;\r\n titlePrefix?: string;\r\n intialized: boolean;\r\n isLoading: boolean;\r\n chartData: IReportChartData;\r\n onPropertiesClick?: () => void;\r\n}\r\n\r\n/* eslint-disable react/prop-types */\r\nexport class GenericChart extends React.Component {\r\n private legendContainerId = Base.getGuid();\r\n\r\n render() {\r\n const props = this.props;\r\n return (\r\n <>\r\n \r\n {!props.intialized &&\r\n \r\n }\r\n {props.intialized && (\r\n \r\n \r\n {props.intialized && props.chartData && props.chartData.dataSets &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {props.onPropertiesClick &&\r\n \r\n }\r\n \r\n )}\r\n {props.children}\r\n \r\n );\r\n }\r\n}\r\n/* eslint-enable react/prop-types */","// EventChart - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Checkbox, FormControlLabel, Grid, MenuItem, Select } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { TreeCheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/TreeCheckboxDropdown\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { EventChartOptions, IEventChartOptions } from \"../../../models/event/eventChartOptions\";\r\nimport { IReportChartData } from \"../../../models/report/reportChartData\";\r\nimport * as eventService from \"../../../models/services/eventService\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport { FilterButtons } from \"../../framework/Filters/FilterButtons\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GenericChart } from \"../../framework/GenericChart/GenericChart\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { PageDrawer } from \"../../framework/Page/PageDrawer\";\r\nimport { AppSettingsIcon } from \"source/components/framework/Icon/AppSettingsIcon\";\r\n\r\n//EventChartPropertiesDialog\r\nexport interface IEventChartPropertiesDialogProp {\r\n classes?: string;\r\n panelSize: number;\r\n panelVisible: boolean;\r\n onSavePanelSize: (size: number, visible: boolean) => void;\r\n onClose: () => void;\r\n}\r\n\r\nexport interface IEventChartPropertiesDialogState {\r\n //Initial values\r\n initialized: boolean;\r\n eventTypes: IIdTitleNode[];\r\n groupingTypes: IIdTitle[];\r\n timeSpans: IIdTitle[];\r\n //Modified values\r\n panelSize: string;\r\n panelVisible: boolean;\r\n eventTypeIds: string[];\r\n groupingType: string;\r\n timeSpan: string;\r\n}\r\n\r\nexport class EventChartPropertiesDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IEventChartPropertiesDialogProp) {\r\n super(props);\r\n this.state = {\r\n initialized: false,\r\n panelSize: props.panelSize.toString(10),\r\n panelVisible: props.panelVisible,\r\n eventTypes: [],\r\n groupingTypes: [],\r\n timeSpans: [],\r\n eventTypeIds: [],\r\n groupingType: \"\",\r\n timeSpan: \"\"\r\n };\r\n }\r\n\r\n getDialogData = async () => {\r\n const result = await AppUtils.callService(() => eventService.getEventChartPropertiesDialogData(), false);\r\n if (!result) return;\r\n const chartOptions = result.chartOptions;\r\n const newState = {\r\n ...this.state,\r\n initialized: true,\r\n eventTypes: result.eventTypes,\r\n groupingTypes: result.groupingTypes,\r\n timeSpans: result.timeSpans,\r\n eventTypeIds: chartOptions.selectedEventTypeIds.slice(0),\r\n groupingType: chartOptions.selectedGroupingType,\r\n timeSpan: chartOptions.selectedTimeSpan\r\n };\r\n this.setState(newState);\r\n const saveData = this.getSaveDataFromState(this.props, newState);\r\n this.orgStateHash = saveData.hash;\r\n };\r\n\r\n componentDidMount(): void {\r\n this.getDialogData();\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"timeSpan\") {\r\n this.setState({ timeSpan: value });\r\n } else if (name === \"groupingType\") {\r\n this.setState({ groupingType: value });\r\n } else if (name === \"panelSize\") {\r\n this.setState({ panelSize: value });\r\n }\r\n };\r\n\r\n handleEventTypesChange = (eventTypeIds: string[]) => {\r\n this.setState({ eventTypeIds });\r\n };\r\n\r\n changePanelVisibility = (panelVisible: boolean) => {\r\n this.setState({ panelVisible });\r\n };\r\n\r\n getSaveDataFromState = (props: IEventChartPropertiesDialogProp, state: IEventChartPropertiesDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"eventTypeIds\", state.eventTypeIds);\r\n result.append(\"timeSpan\", state.timeSpan.toInteger());\r\n result.append(\"groupingType\", state.groupingType.toInteger());\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = await AppUtils.callService(() => eventService.saveEventChartOptions(saveData.obj), false);\r\n if (!result) return;\r\n //Set app state\r\n const chartOptions = new EventChartOptions();\r\n chartOptions.selectedEventTypeIds = state.eventTypeIds;\r\n chartOptions.selectedGroupingType = state.groupingType;\r\n chartOptions.selectedTimeSpan = state.timeSpan;\r\n store.customStore.dispatch(storeActions.frontSetEvents({ chartOptions }));\r\n //Close dialog\r\n props.onClose();\r\n //Save panel size\r\n props.onSavePanelSize(state.panelSize.toInteger(), state.panelVisible);\r\n };\r\n\r\n handleSave = () => {\r\n this.saveToDb();\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.saveToDb();\r\n } else {\r\n props.onClose();\r\n }\r\n };\r\n\r\n render() {\r\n const state = this.state;\r\n if (!state.initialized) return null;\r\n return (\r\n }\r\n title={Translations.Events}\r\n parentTitle={Translations.Panels}\r\n onClose={this.handleCancel}\r\n >\r\n \r\n \r\n \r\n \r\n this.changePanelVisibility(checked)}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\n// EventChart\r\nexport interface IEventChartProp {\r\n classes?: string;\r\n panelPosition: number;\r\n panelSize: number;\r\n panelVisible: boolean;\r\n companyId?: string;\r\n disableGlobalLoading?: boolean;\r\n chartData?: IReportChartData;\r\n chartOptions?: IEventChartOptions;\r\n preloaded?: boolean;\r\n showEditButton?: boolean;\r\n showSearchFilter?: boolean;\r\n showPropertiesButton?: boolean;\r\n onSavePanelSize: (size: number, visible: boolean) => void;\r\n}\r\n\r\ninterface IEventChartState {\r\n intialized: boolean;\r\n isLoading: boolean;\r\n waitingPreloadedData: boolean;\r\n panelSize: number;\r\n chartData: IReportChartData;\r\n showChartOptionsDialog: boolean;\r\n}\r\n\r\nexport class EventChart extends React.Component {\r\n _isMounted: boolean;\r\n\r\n constructor(props: IEventChartProp) {\r\n super(props);\r\n this.state = {\r\n intialized: !!props.chartData,\r\n isLoading: false,\r\n waitingPreloadedData: props.chartData ? false : (props.preloaded ?? false),\r\n panelSize: props.panelSize,\r\n chartData: props.chartData,\r\n showChartOptionsDialog: false\r\n };\r\n }\r\n\r\n getChartData = async (companyId: string) => {\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => eventService.getChartData(companyId), false, this.props.disableGlobalLoading, () => {\r\n if (!this._isMounted) return;\r\n this.setState({\r\n isLoading: false\r\n });\r\n });\r\n if (!result || !this._isMounted) return;\r\n this.setState({\r\n intialized: true,\r\n chartData: result\r\n });\r\n };\r\n\r\n componentDidMount(): void {\r\n const props = this.props;\r\n if (props.preloaded) return;\r\n this.getChartData(props.companyId);\r\n this._isMounted = true;\r\n }\r\n\r\n componentDidUpdate(prevProps: IEventChartProp, prevState: IEventChartState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.waitingPreloadedData) {\r\n if (props.chartData || !state.chartData) {\r\n this.setState({\r\n intialized: true,\r\n waitingPreloadedData: false,\r\n chartData: props.chartData,\r\n });\r\n }\r\n return;\r\n }\r\n const prevChartOptionsHash = prevProps.chartOptions ? JSON.stringify(prevProps.chartOptions) : \"\";\r\n const chartOptionsHash = props.chartOptions ? JSON.stringify(props.chartOptions) : \"\";\r\n const prevChartDataHash = prevProps.chartData ? JSON.stringify(prevProps.chartData) : \"\";\r\n const chartDataHash = props.chartData ? JSON.stringify(props.chartData) : \"\";\r\n if (prevProps.panelSize === props.panelSize && prevProps.panelPosition === props.panelPosition && prevChartDataHash === chartDataHash && prevChartOptionsHash === chartOptionsHash) return;\r\n if (prevChartOptionsHash !== chartOptionsHash) {\r\n this.getChartData(props.companyId);\r\n return;\r\n }\r\n this.setState({\r\n intialized: true,\r\n panelSize: props.panelSize\r\n });\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this._isMounted = false;\r\n }\r\n\r\n handlePropertiesClick = () => {\r\n this.setState({\r\n showChartOptionsDialog: true\r\n });\r\n };\r\n\r\n handleChartOptionsDialogClose = () => {\r\n this.setState({\r\n showChartOptionsDialog: false\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n {state.showChartOptionsDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","// eslint-disable-next-line no-unused-vars\r\nimport * as React from \"react\";\r\nimport styled from \"@emotion/styled\";\r\n\r\nexport const MessageContentContainer = styled.div`\r\n pre {\r\n padding: 9.5px;\r\n margin: 0 0 10px;\r\n line-height: 1.42857143;\r\n word-break: break-all;\r\n word-wrap: break-word;\r\n background-color: #f5f5f5;\r\n border: 1px solid #ccc;\r\n border-radius: 4px;\r\n }\r\n`;\r\n","import * as React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as attachmentService from \"../../../models/services/attachmentService\";\r\nimport { IMessageListItem } from \"source/models/message/messageListItem\";\r\nimport { AttachmentList } from \"source/components/attachments/AttachmentList/AttachmentList\";\r\nimport downloadjs from \"downloadjs\";\r\n\r\ninterface IMessageListAttachmentsProps {\r\n item: IMessageListItem;\r\n}\r\n\r\nexport const MessageListAttachments = ({ item }: IMessageListAttachmentsProps) => {\r\n const handleAttachmentDownload = async (id: string) => {\r\n if (!id) return;\r\n const attachment = item.attachments.find(i => i.id === id);\r\n if (!attachment) return;\r\n if (attachment.file) {\r\n downloadjs(attachment.file, attachment.name);\r\n return;\r\n }\r\n const fileName = await AppUtils.callService(() => attachmentService.getAttachment(id));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.AttachmentParameterDownloaded, fileName));\r\n };\r\n\r\n if (!item.attachments.length) return null;\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import ForwardIcon from \"@mui/icons-material/Forward\";\r\nimport { IconButtonProps } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppToolButton } from \"ui/Scripts/source/components/framework/Button/AppToolButton\";\r\n\r\ninterface IForwardToolButtonProps extends IconButtonProps {\r\n}\r\n\r\nexport const ForwardToolButton = (props: IForwardToolButtonProps) => (\r\n }\r\n />\r\n);\r\n","import LockPersonOutlined from \"@mui/icons-material/LockPersonOutlined\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ListStateIcon } from \"../ListStateIcon\";\r\n\r\ninterface IListStateIconLockedProps {\r\n locked: boolean\r\n}\r\n\r\nexport const ListStateIconLocked = (props: IListStateIconLockedProps) => {\r\n if (!props.locked) return null;\r\n return (\r\n \r\n );\r\n};\r\n","import { Box, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IMessageListItem } from \"source/models/message/messageListItem\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { ForwardToolButton } from \"source/components/framework/Button/ForwardToolButton\";\r\nimport { EditToolButton } from \"source/components/framework/Button/EditToolButton\";\r\nimport { ListStateIconLocked } from \"source/components/framework/List/ListStateIconLocked\";\r\n\r\ninterface IMessageListHeaderProps {\r\n item: IMessageListItem;\r\n canEditMessages: boolean;\r\n editMode: boolean;\r\n onForwardMessage: (messageId: string) => void;\r\n onOpenMessage: (messageId: string) => void;\r\n}\r\n\r\nexport const MessageListHeader = ({ item, canEditMessages, editMode, onForwardMessage, onOpenMessage }: IMessageListHeaderProps) => {\r\n return (\r\n \r\n \r\n \r\n \r\n {item.title}\r\n \r\n {Base.utcTimeToDateStr(item.date)}\r\n \r\n \r\n {canEditMessages &&\r\n onForwardMessage(item.id)} />\r\n }\r\n {editMode &&\r\n onOpenMessage(item.id)} />\r\n }\r\n \r\n \r\n {Translations.Publisher + \": \" + item.modifyUserCompanyName + \" / \" + item.modifyUser.name}\r\n {item.expired &&\r\n {Translations.MessageVisibilityPeriodNotActive}\r\n }\r\n {item.notVisibleYet &&\r\n {Translations.MessageVisibilityPeriodNotStarted}\r\n }\r\n \r\n \r\n );\r\n};\r\n","import { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { DialogButtons } from \"source/components/framework/Dialog/DialogButtons\";\r\nimport { IMessageListItem } from \"source/models/message/messageListItem\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as messageService from \"../../../models/services/messageService\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { MessageContentContainer } from \"../MessageList/MessageList.styles\";\r\nimport { MessageListAttachments } from \"../MessageListAttachments\";\r\nimport { MessageListHeader } from \"../MessageListHeader/MessageListHeader\";\r\n\r\nexport interface IMessageReadReceiptDialogProp {\r\n item: IMessageListItem;\r\n onClose: (id: string) => void;\r\n}\r\n\r\nexport class MessageReadReceiptDialog extends React.Component {\r\n handleClose = () => {\r\n const props = this.props;\r\n props.onClose(props.item.id);\r\n };\r\n\r\n handleSendReadReceipt = async () => {\r\n const props = this.props;\r\n //Call server\r\n const result = await AppUtils.callService(() => messageService.sendReadReceipt(props.item.id, props.item.companyId));\r\n if (!result) return;\r\n this.handleClose();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n }\r\n onClose={this.handleClose}\r\n />\r\n );\r\n }\r\n}","// MessageShortList - MODULE\r\n// ***********************************************************************************************************************\r\n/// \r\nimport { Accordion, AccordionDetails, AccordionSummary, Alert, Box, Stack, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { IMessageListItem } from \"source/models/message/messageListItem\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { ToolButton } from \"ui/Scripts/source/components/framework/toolButton\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { infiniteListPageSize } from \"../../../models/common/webConsts\";\r\nimport { IMessageShortListItem } from \"../../../models/message/messageShortListItem\";\r\nimport * as attachmentService from \"../../../models/services/attachmentService\";\r\nimport * as messageService from \"../../../models/services/messageService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { AttachmentListLine } from \"../../attachments/AttachmentList\";\r\nimport { CardContainer } from \"../../framework/CardContainer\";\r\nimport { DashboardCardProgress } from \"../../framework/DashboardCard/DashboardCardProgress\";\r\nimport { DashboardCardTitle } from \"../../framework/DashboardCard/DashboardCardTitle\";\r\nimport { EllipsisTypography } from \"../../framework/Typography/EllipsisTypography\";\r\nimport { MessageReadReceiptDialog } from \"../MessageReadReceiptDialog/MessageReadReceiptDialog\";\r\nimport { List } from \"source/components/framework/List/List\";\r\nimport { IFrontPageMessages } from \"source/models/front/frontPageMessages\";\r\n\r\n// MessageShortList\r\nexport interface IMessageShortListProp {\r\n sessionState: ISessionState;\r\n companyId?: string;\r\n disableGlobalLoading?: boolean;\r\n frontPageMessages: IFrontPageMessages;\r\n onPropertiesClick?: () => void;\r\n getTitleSuffix: (dateRange: number) => string;\r\n}\r\n\r\ninterface IMessageShortListState {\r\n isLoading: boolean;\r\n page: number;\r\n hasMore: boolean;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n items: IMessageShortListItem[];\r\n selectedId: string;\r\n readReceiptMessages: IMessageShortListItem[];\r\n shownReceiptMessageIds: string[];\r\n}\r\n\r\nexport class MessageShortList extends React.Component {\r\n _isMounted: boolean;\r\n\r\n constructor(props: IMessageShortListProp) {\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n page: 1,\r\n hasMore: true,\r\n filter: \"\",\r\n sortColumn: \"date\",\r\n sortOrderIsAsc: false,\r\n items: [],\r\n selectedId: null,\r\n readReceiptMessages: [],\r\n shownReceiptMessageIds: []\r\n };\r\n }\r\n\r\n searchItems = async (companyId: string, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => messageService.getMessageShortListItems(companyId, !refreshList ? infiniteListPageSize : (page * infiniteListPageSize), !refreshList ? page : 1, filter, sortColumn, sortOrderIsAsc, props.frontPageMessages.dateRange),\r\n false, props.disableGlobalLoading, () => {\r\n if (!this._isMounted) return;\r\n this.setState({ isLoading: false });\r\n });\r\n if (!result || !this._isMounted) return;\r\n const items = List.getListItems(state.items, state.selectedId, [], result.items, resetItems, refreshList);\r\n this.setState({\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n readReceiptMessages: !props.sessionState.isSuperAdmin && items.items ? items.items.filter(i => i.requiresReceipt && !i.isRead && this.state.shownReceiptMessageIds.indexOf(i.id) < 0).reverse() : [],\r\n selectedId: items.selectedId\r\n });\r\n };\r\n\r\n refreshList = () => {\r\n const state = this.state;\r\n this.searchItems(this.props.companyId, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, true);\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.searchItems(this.props.companyId, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false);\r\n this._isMounted = true;\r\n }\r\n\r\n componentDidUpdate(prevProps: IMessageShortListProp, prevState: IMessageShortListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if ((props.frontPageMessages?.dateRange ?? 0) === (prevProps.frontPageMessages?.dateRange ?? 0)) return;\r\n this.searchItems(this.props.companyId, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this._isMounted = false;\r\n }\r\n\r\n handleAttachmentClick = async (id: string) => {\r\n if (!id) return;\r\n const fileName = await AppUtils.callService(() => attachmentService.getAttachment(id));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.AttachmentParameterDownloaded, fileName));\r\n };\r\n\r\n handleMessageReadReceiptDialogClose = (id: string) => {\r\n if (!id) return;\r\n const state = this.state;\r\n const shownReceiptMessageIds = state.shownReceiptMessageIds.slice(0);\r\n shownReceiptMessageIds.push(id);\r\n this.setState({\r\n shownReceiptMessageIds,\r\n readReceiptMessages: state.readReceiptMessages.filter(i => i.id !== id)\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n <>\r\n \r\n \r\n \r\n {!state.isLoading && state.items.length < 1 &&\r\n {Translations.NoPublishedMessages}\r\n }\r\n {state.items.length > 0 &&\r\n \r\n {state.items.map((item) => (\r\n \r\n \r\n \r\n \r\n {Base.utcTimeToDateStr(item.date)}\r\n {item.title}\r\n \r\n \r\n \r\n \r\n {item.attachments.length > 0 &&\r\n \r\n {item.attachments.map((attachment) =>\r\n \r\n )}\r\n \r\n }\r\n \r\n \r\n ))}\r\n \r\n }\r\n \r\n \r\n {!!props.onPropertiesClick &&\r\n \r\n }\r\n {state.readReceiptMessages.length > 0 && state.readReceiptMessages.length > 0 &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","// FrontPanelPropertiesDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Checkbox, FormControlLabel, Grid, MenuItem, Select } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { FilterButtons } from \"../../framework/Filters/FilterButtons\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { PageDrawer } from \"../../framework/Page/PageDrawer\";\r\nimport { AppSettingsIcon } from \"source/components/framework/Icon/AppSettingsIcon\";\r\n\r\n//FrontPanelPropertiesDialog\r\nexport interface IFrontPanelPropertiesDialogProp {\r\n classes?: string;\r\n title: string;\r\n panelSize: number;\r\n panelType: number;\r\n visible: boolean;\r\n hidePanelSize?: boolean;\r\n onOk: (panelType: number, panelSize: number, visible: boolean) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IFrontPanelPropertiesDialogState {\r\n panelSize: string;\r\n visible: boolean;\r\n}\r\n\r\nexport class FrontPanelPropertiesDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IFrontPanelPropertiesDialogProp) {\r\n super(props);\r\n this.state = {\r\n panelSize: props.panelSize.toString(10),\r\n visible: props.visible\r\n };\r\n //console.log(props.visible);\r\n \r\n const saveData = this.getSaveDataFromState(props, this.state);\r\n this.orgStateHash = saveData.hash;\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"panelSize\") {\r\n this.setState({ panelSize: value });\r\n }\r\n };\r\n\r\n changeVisibility = (visible: boolean) => {\r\n this.setState({ visible });\r\n };\r\n\r\n getSaveDataFromState = (props: IFrontPanelPropertiesDialogProp, state: IFrontPanelPropertiesDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"panelSize\", state.panelSize);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage)) return;\r\n props.onOk(props.panelType, state.panelSize.toInteger(), state.visible);\r\n };\r\n\r\n handleSave = () => {\r\n this.saveToDb();\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.saveToDb();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n }\r\n title={props.title}\r\n parentTitle={Translations.Panels}\r\n onClose={this.handleCancel}\r\n >\r\n \r\n \r\n \r\n \r\n this.changeVisibility(checked)}\r\n />\r\n }\r\n />\r\n \r\n \r\n {!props.hidePanelSize &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}","// FrontToDoItems - MODULE\r\n// ***********************************************************************************************************************\r\n/// \r\nimport { Alert, Box, Chip, List, ListItem, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ToolButton } from \"ui/Scripts/source/components/framework/toolButton\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IFrontToDoItemGroup } from \"../../../models/front/frontToDoItemGroup\";\r\nimport * as frontService from \"../../../models/services/frontService\";\r\nimport * as tokenService from \"../../../models/services/tokenService\";\r\nimport { CardContainer } from \"../../framework/CardContainer\";\r\nimport { DashboardCardProgress } from \"../../framework/DashboardCard/DashboardCardProgress\";\r\nimport { DashboardCardTitle } from \"../../framework/DashboardCard/DashboardCardTitle\";\r\n\r\n// FrontToDoItems\r\nexport interface IFrontToDoItemsProp {\r\n culture: string;\r\n disableGlobalLoading?: boolean;\r\n onPropertiesClick?: () => void;\r\n}\r\n\r\ninterface IFrontToDoItemsState {\r\n isLoading: boolean;\r\n groups: IFrontToDoItemGroup[];\r\n}\r\n\r\nexport class FrontToDoItems extends React.Component<\r\n IFrontToDoItemsProp,\r\n IFrontToDoItemsState\r\n> {\r\n constructor(props: IFrontToDoItemsProp) {\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n groups: [],\r\n };\r\n }\r\n\r\n searchItems = async () => {\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(\r\n () => frontService.getFrontToDoItemGroups(),\r\n false,\r\n this.props.disableGlobalLoading,\r\n () => this.setState({ isLoading: false })\r\n );\r\n if (!result) return;\r\n this.setState({\r\n groups: result.groups,\r\n });\r\n };\r\n\r\n componentDidMount(): void {\r\n this.searchItems();\r\n }\r\n\r\n componentDidUpdate(\r\n prevProps: IFrontToDoItemsProp,\r\n prevState: IFrontToDoItemsState\r\n ) {\r\n const props = this.props;\r\n if (prevProps.culture === props.culture) return;\r\n this.searchItems();\r\n }\r\n\r\n handleClickLine = (e: any, group: IFrontToDoItemGroup) => {\r\n e.stopPropagation();\r\n if (!group) return;\r\n const url = group.getRecordTypeIntraUrl();\r\n if (!url) return;\r\n tokenService.navigateTo(url);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n {!state.isLoading && state.groups.length < 1 && (\r\n {Translations.NoToDos}\r\n )}\r\n \r\n \r\n \r\n {state.groups.length > 0 && state.groups.map((group) => (\r\n \r\n this.handleClickLine(e, group)}\r\n >\r\n {group.getRecordTypeTitle()}\r\n \r\n {group.items.map((item) => (\r\n this.handleClickLine(e, group)}\r\n >\r\n \r\n {item.title}\r\n \r\n {item.important\r\n ? (\r\n \r\n )\r\n : (\r\n {item.amount.toString(10)}\r\n )}\r\n \r\n ))}\r\n \r\n ))}\r\n \r\n \r\n {!!props.onPropertiesClick && (\r\n \r\n )}\r\n \r\n );\r\n }\r\n}\r\n","/// \r\nimport { Alert, Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { ToolButton } from \"ui/Scripts/source/components/framework/toolButton\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { DatabaseRecordType, FileType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IFrontPageRecords } from \"../../../models/front/frontPageRecords\";\r\nimport { IModifiedRecordListItem } from \"../../../models/front/modifiedRecordListItem\";\r\nimport * as documentService from \"../../../models/services/documentService\";\r\nimport * as frontService from \"../../../models/services/frontService\";\r\nimport * as tokenService from \"../../../models/services/tokenService\";\r\nimport { AttachmentIcon } from \"../../attachments/AttachmentIcon\";\r\nimport { DownloadToolButton } from \"../../framework/Button/DownloadToolButton\";\r\nimport { CardContainer } from \"../../framework/CardContainer\";\r\nimport { DashboardCardProgress } from \"../../framework/DashboardCard/DashboardCardProgress\";\r\nimport { DashboardCardTitle } from \"../../framework/DashboardCard/DashboardCardTitle\";\r\nimport { SectionIcon, SectionType } from \"../../framework/Icon/SectionIcon\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { EllipsisTypography } from \"../../framework/Typography/EllipsisTypography\";\r\nimport { ListToggleButtons } from \"source/components/framework/List/ListToggleButtons\";\r\n\r\nexport interface IModifiedRecordListProp {\r\n disableGlobalLoading?: boolean;\r\n hasCardMode?: boolean;\r\n userModified: boolean;\r\n records: IFrontPageRecords;\r\n getTitleSuffix: (dateRange: number) => string;\r\n onPropertiesClick?: () => void;\r\n}\r\n\r\ninterface IModifiedRecordListState {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n listModeIsLine: boolean;\r\n items: IModifiedRecordListItem[];\r\n selectedId: string;\r\n checkedIds: string[];\r\n\r\n // Edit\r\n editItem: any; //IToolEdit;\r\n showEditDialog: boolean;\r\n}\r\n\r\nexport class ModifiedRecordList extends React.Component {\r\n _isMounted: boolean;\r\n\r\n constructor(props: IModifiedRecordListProp) {\r\n super(props);\r\n this.state = {\r\n intialized: false,\r\n isLoading: false,\r\n listModeIsLine: true,\r\n items: [],\r\n selectedId: null,\r\n checkedIds: [],\r\n editItem: null,\r\n showEditDialog: false\r\n };\r\n }\r\n\r\n searchItems = async () => {\r\n const props = this.props;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => frontService.getModifiedRecordListItems(props.userModified), false, props.disableGlobalLoading, () => {\r\n if (!this._isMounted) return;\r\n this.setState({ isLoading: false });\r\n });\r\n if (!result || !this._isMounted) return;\r\n const items = List.getListItems(this.state.items, this.state.selectedId, this.state.checkedIds, result.items, true, false);\r\n this.setState({\r\n intialized: true,\r\n items: items.items,\r\n selectedId: items.selectedId,\r\n checkedIds: items.checkedIds,\r\n });\r\n };\r\n\r\n refreshList = () => {\r\n this.searchItems();\r\n };\r\n\r\n componentDidMount(): void {\r\n this.searchItems();\r\n this._isMounted = true;\r\n }\r\n\r\n componentDidUpdate(prevProps: IModifiedRecordListProp, prevState: IModifiedRecordListState) {\r\n const props = this.props;\r\n const prevRecordCount = prevProps.records ? (prevProps.userModified ? prevProps.records.userRecordCount : prevProps.records.companyRecordCount) : 10;\r\n const recordCount = props.records ? (props.userModified ? props.records.userRecordCount : props.records.companyRecordCount) : 10;\r\n const prevDateRange = prevProps.records ? (prevProps.userModified ? prevProps.records.userDateRange : prevProps.records.companyDateRange) : 0;\r\n const dateRange = props.records ? (props.userModified ? props.records.userDateRange : props.records.companyDateRange) : 0;\r\n if (prevRecordCount === recordCount && prevDateRange === dateRange) return;\r\n this.searchItems();\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this._isMounted = false;\r\n }\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n this.searchItems();\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n \r\n handleListModeToggle = (_event: React.MouseEvent, listModeIsLine: boolean) => {\r\n this.setState({\r\n listModeIsLine,\r\n });\r\n };\r\n\r\n handleOpenLine = (id: string) => {\r\n const item = this.state.items.find(i => i.id === id);\r\n if (!item) return;\r\n const url = item.getRecordTypeIntraUrl();\r\n if (!url) return;\r\n tokenService.navigateTo(url);\r\n };\r\n\r\n handleDownloadFile = async (companyId: string, id: string) => {\r\n if (!companyId || !id) return;\r\n const fileName = AppUtils.callService(() => documentService.downloadFile(companyId, id));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.FileParameterDownloaded, fileName));\r\n };\r\n\r\n getRecordTypeIcon(recordType: number, fileType?: FileType): React.ReactNode {\r\n switch (recordType) {\r\n case DatabaseRecordType.Message:\r\n return ;\r\n case DatabaseRecordType.Document:\r\n return ;\r\n case DatabaseRecordType.File:\r\n return ;\r\n case DatabaseRecordType.Event:\r\n return ;\r\n case DatabaseRecordType.Task:\r\n return ;\r\n case DatabaseRecordType.RecordUser:\r\n return ;\r\n case DatabaseRecordType.CompanyGroup:\r\n return ;\r\n case DatabaseRecordType.Company:\r\n return ;\r\n case DatabaseRecordType.UserGroup:\r\n return ;\r\n case DatabaseRecordType.User:\r\n return ;\r\n case DatabaseRecordType.InstantMessage:\r\n return ;\r\n default:\r\n return <>;\r\n }\r\n }\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n <>\r\n \r\n {props.hasCardMode &&\r\n \r\n }\r\n \r\n \r\n \r\n {!state.isLoading && state.items.length < 1 &&\r\n {Translations.NoModifications}\r\n }\r\n {state.items.length > 0 &&\r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 1,\r\n content: item.recordType !== DatabaseRecordType.File\r\n ? \r\n : \r\n },\r\n {\r\n size: 3,\r\n content: Base.timeToDateTimeStr(item.modifyDate),\r\n },\r\n {\r\n size: props.userModified ? 8 : 7,\r\n content:\r\n \r\n {item.title}\r\n {item.isFile() &&\r\n this.handleDownloadFile(item.companyId, item.id)} />\r\n }\r\n \r\n },\r\n {\r\n size: 1,\r\n content: (!props.userModified && )\r\n }\r\n ],\r\n id: item.id,\r\n };\r\n })\r\n : null}\r\n cards={null}\r\n sortColumn={\"\"}\r\n sortOrderIsAsc={true}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpenLine}\r\n />\r\n }\r\n {!!props.onPropertiesClick &&\r\n \r\n }\r\n \r\n \r\n );\r\n }\r\n}","// FrontBanner - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Checkbox, FormControlLabel, Grid, MenuItem, Select } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { DashboardCardProgress } from \"source/components/framework/DashboardCard/DashboardCardProgress\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Base } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/framework/base\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IFrontPageBanner } from \"../../../models/front/frontPageBanner\";\r\nimport { IFrontPageBannerImage } from \"../../../models/front/frontPageBannerImage\";\r\nimport * as frontService from \"../../../models/services/frontService\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport { FilterButtons } from \"../../framework/Filters/FilterButtons\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { PageDrawer } from \"../../framework/Page/PageDrawer\";\r\nimport { AppSettingsIcon } from \"source/components/framework/Icon/AppSettingsIcon\";\r\n\r\n//FrontBannerPropertiesDialog\r\nexport interface IFrontBannerPropertiesDialogProp {\r\n classes?: string;\r\n panelVisible: boolean;\r\n imageChangeInterval: number;\r\n onSavePanelSize: (panelVisible: boolean) => void;\r\n onClose: () => void;\r\n}\r\n\r\nexport interface IFrontBannerPropertiesDialogState {\r\n panelVisible: boolean;\r\n imageChangeInterval: string;\r\n}\r\n\r\nexport class FrontBannerPropertiesDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IFrontBannerPropertiesDialogProp) {\r\n super(props);\r\n this.state = {\r\n panelVisible: props.panelVisible,\r\n imageChangeInterval: props.imageChangeInterval.toString(10),\r\n };\r\n const saveData = this.getSaveDataFromState(props, this.state);\r\n this.orgStateHash = saveData.hash;\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"imageChangeInterval\") {\r\n this.setState({ imageChangeInterval: value });\r\n }\r\n };\r\n\r\n changePanelVisibility = (panelVisible: boolean) => {\r\n this.setState({ panelVisible });\r\n };\r\n\r\n getSaveDataFromState = (props: IFrontBannerPropertiesDialogProp, state: IFrontBannerPropertiesDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"imageChangeInterval\", state.imageChangeInterval.toInteger());\r\n //Only for change detection\r\n result.append(\"panelVisible\", state.panelVisible);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async () => {\r\n const obj = this;\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage)) return;\r\n const saveData = obj.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = await AppUtils.callService(() => frontService.saveBanner(saveData.obj), false);\r\n if (!result) return;\r\n store.customStore.dispatch(storeActions.frontSetBannerImageChangeInterval(state.imageChangeInterval.toInteger()));\r\n //Close dialog\r\n props.onClose();\r\n //Save panel size\r\n props.onSavePanelSize(state.panelVisible);\r\n };\r\n\r\n handleSave = () => {\r\n this.saveToDb();\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.saveToDb();\r\n } else {\r\n props.onClose();\r\n }\r\n };\r\n\r\n render() {\r\n const state = this.state;\r\n return (\r\n }\r\n title={Translations.Banner}\r\n parentTitle={Translations.Panels}\r\n onClose={this.handleCancel}\r\n >\r\n \r\n \r\n \r\n \r\n this.changePanelVisibility(checked)}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\n// FrontBanner\r\nexport interface IFrontBannerProp {\r\n banner: IFrontPageBanner;\r\n}\r\n\r\ninterface IFrontBannerState {\r\n images: IFrontPageBannerImage[];\r\n imageChangeInterval: number;\r\n imageIndex: number;\r\n}\r\n\r\nexport class FrontBanner extends React.Component {\r\n private refreshTimer = 0;\r\n\r\n clearRefreshTimer = () => {\r\n if (this.refreshTimer !== 0) {\r\n window.clearTimeout(this.refreshTimer);\r\n this.refreshTimer = 0;\r\n }\r\n };\r\n\r\n setRefreshTimer = (imageChangeInterval: number) => {\r\n const obj = this;\r\n this.clearRefreshTimer();\r\n if (!imageChangeInterval) return;\r\n this.refreshTimer = window.setTimeout(() => {\r\n const state = this.state;\r\n if (!this.props.banner.images || this.props.banner.images?.length < 1) {\r\n obj.clearRefreshTimer();\r\n return;\r\n }\r\n obj.setState({\r\n imageIndex: state.images.length > 0 ? ((state.imageIndex + 1) % state.images.length) : -1\r\n });\r\n obj.setRefreshTimer(imageChangeInterval);\r\n }, this.state.imageChangeInterval * 1000);\r\n };\r\n\r\n constructor(props: IFrontBannerProp) {\r\n super(props);\r\n const images = props.banner.images && props.banner.images ? props.banner.images.slice(0) : [];\r\n this.state = {\r\n images,\r\n imageChangeInterval: props.banner.images && props.banner.imageChangeInterval ? props.banner.imageChangeInterval : 0,\r\n imageIndex: images.length > 0 ? 0 : -1,\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps: IFrontBannerProp, prevState: IFrontBannerState) {\r\n const props = this.props;\r\n if (!props.banner.images) return;\r\n const prevHash = Base.joinSuffix(prevProps.banner.images && prevProps.banner.images ? prevProps.banner.images.map(i => i.id) : [], \"#\") + (prevProps.banner.images && prevProps.banner.imageChangeInterval ? prevProps.banner.imageChangeInterval : 0).toString(10);\r\n const curHash = Base.joinSuffix(props.banner.images && props.banner.images ? props.banner.images.map(i => i.id) : [], \"#\") + (props.banner.images && props.banner.imageChangeInterval ? props.banner.imageChangeInterval : 0).toString(10);\r\n if (prevHash === curHash) return;\r\n const imageChangeInterval = props.banner.images && props.banner.imageChangeInterval ? props.banner.imageChangeInterval : 0;\r\n this.setState({\r\n imageIndex: props.banner.images.length > 0 ? 0 : -1,\r\n images: props.banner.images.slice(0),\r\n imageChangeInterval\r\n });\r\n this.setRefreshTimer(imageChangeInterval);\r\n }\r\n\r\n componentDidMount(): void {\r\n this.setRefreshTimer(this.state.imageChangeInterval);\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this.clearRefreshTimer();\r\n }\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n {state.images.map((images, i) =>\r\n \r\n )}\r\n \r\n \r\n );\r\n }\r\n}","// FrontImages - MODULE\r\n// ***********************************************************************************************************************\r\n/// \r\nimport { Alert, Box, Checkbox, FormControlLabel, Grid, MenuItem, Select } from \"@mui/material\";\r\nimport downloadjs from \"downloadjs\";\r\nimport * as React from \"react\";\r\nimport { ToolButton } from \"ui/Scripts/source/components/framework/toolButton\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { FileAttachment, IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { ConfirmationDialogResult, FileType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { SaveAttachmentBase64 } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/saveAttachmentBase64\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { FrontPageImages, IFrontPageImages } from \"../../../models/front/frontPageImages\";\r\nimport * as attachmentService from \"../../../models/services/attachmentService\";\r\nimport * as frontService from \"../../../models/services/frontService\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport { AttachmentList } from \"../../attachments/AttachmentList\";\r\nimport { DashboardCardProgress } from \"../../framework/DashboardCard/DashboardCardProgress\";\r\nimport { FilterButtons } from \"../../framework/Filters/FilterButtons\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { PageDrawer } from \"../../framework/Page/PageDrawer\";\r\nimport { AppSettingsIcon } from \"source/components/framework/Icon/AppSettingsIcon\";\r\n\r\n//FrontImagePropertiesDialog\r\nexport interface IFrontImagePropertiesDialogProp {\r\n classes?: string;\r\n panelSize: number;\r\n panelVisible: boolean;\r\n images: IFileAttachment[];\r\n imageChangeInterval: number;\r\n defaultImage: string;\r\n onSavePanelSize: (panelSize: number, panelVisible: boolean) => void;\r\n onClose: () => void;\r\n}\r\n\r\nexport interface IFrontImagePropertiesDialogState {\r\n panelSize: string;\r\n panelVisible: boolean;\r\n images: IFileAttachment[];\r\n imageChangeInterval: string;\r\n removedImageIds: string[];\r\n}\r\n\r\nexport class FrontImagePropertiesDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IFrontImagePropertiesDialogProp) {\r\n super(props);\r\n this.state = {\r\n panelSize: props.panelSize.toString(10),\r\n panelVisible: props.panelVisible,\r\n images: props.images.slice(0),\r\n imageChangeInterval: props.imageChangeInterval.toString(10),\r\n removedImageIds: []\r\n };\r\n this.getSaveDataFromState(this.state)\r\n .then(saveData => {\r\n this.orgStateHash = saveData.hash;\r\n });\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"imageChangeInterval\") {\r\n this.setState({ imageChangeInterval: value });\r\n } else if (name === \"panelSize\") {\r\n this.setState({ panelSize: value });\r\n }\r\n };\r\n\r\n changePanelVisibility = (panelVisible: boolean) => {\r\n this.setState({ panelVisible });\r\n };\r\n\r\n handleRemove = (id: string) => {\r\n if (!id) return;\r\n const state = this.state;\r\n const images = state.images.filter(i => i.id !== id);\r\n const removedImageIds = state.removedImageIds.slice(0);\r\n removedImageIds.push(id);\r\n this.setState({ images, removedImageIds });\r\n };\r\n\r\n handleDownload = async (id: string) => {\r\n if (!id) return;\r\n const state = this.state;\r\n const image = state.images.find(i => i.id === id);\r\n if (!image) return;\r\n if (image.file) {\r\n downloadjs(image.file, image.name);\r\n return;\r\n }\r\n if (image.isNew()) return;\r\n const fileName = await AppUtils.callService(() => attachmentService.getAttachment(id));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.AttachmentParameterDownloaded, fileName));\r\n };\r\n\r\n handleAdd = async (fileList: FileList) => {\r\n const attachments = await FileAttachment.addFileListToFileAttachments(this.state.images, fileList, 0);\r\n const imageAttachments = attachments.filter(i => i.type === FileType.Image);\r\n this.setState({\r\n images: imageAttachments.sort((i, j) => Base.strCompare(i.name, j.name))\r\n });\r\n };\r\n\r\n getSaveDataFromState = async (state: IFrontImagePropertiesDialogState): Promise => {\r\n const result = new SaveDataObj();\r\n result.append(\"imageChangeInterval\", state.imageChangeInterval.toInteger());\r\n result.append(\"attachments\", await SaveAttachmentBase64.fromFileAttachments(state.images.filter(i => !!i.file), \"photo\"));\r\n result.append(\"removedImageIds\", state.removedImageIds);\r\n //Only for change detection\r\n result.append(\"panelSize\", state.panelSize.toInteger());\r\n result.append(\"panelVisible\", state.panelVisible);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async () => {\r\n const obj = this;\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage)) return;\r\n const saveData = await obj.getSaveDataFromState(state);\r\n //Call server\r\n const result = await AppUtils.callService(() => frontService.saveImages(saveData.obj), false);\r\n if (!result) return;\r\n //Set app state\r\n const frontPageImages = new FrontPageImages();\r\n frontPageImages.imageChangeInterval = state.imageChangeInterval.toInteger();\r\n frontPageImages.images = state.images;\r\n frontPageImages.defaultImage = props.defaultImage;\r\n store.customStore.dispatch(storeActions.frontSetImages(frontPageImages));\r\n //Close dialog\r\n props.onClose();\r\n //Save panel size\r\n props.onSavePanelSize(state.panelSize.toInteger(), state.panelVisible);\r\n };\r\n\r\n handleSave = () => {\r\n this.saveToDb();\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel((await this.getSaveDataFromState(state)).hash, this.orgStateHash);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.saveToDb();\r\n } else {\r\n props.onClose();\r\n }\r\n };\r\n\r\n render() {\r\n const state = this.state;\r\n return (\r\n }\r\n title={Translations.Images}\r\n parentTitle={Translations.Panels}\r\n onClose={this.handleCancel}\r\n >\r\n \r\n \r\n \r\n \r\n this.changePanelVisibility(checked)}\r\n />\r\n }\r\n />\r\n \r\n \r\n {Translations.PicturesAreVisibleForAllCompanyUsers}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\n// FrontImages\r\nexport interface IFrontImagesProp {\r\n panelSize: number;\r\n panelVisible: boolean;\r\n images: IFrontPageImages;\r\n showPropertiesButton?: boolean;\r\n onSavePanelSize: (panelSize: number, panelVisible: boolean) => void;\r\n}\r\n\r\ninterface IFrontImagesState {\r\n isSaving: boolean;\r\n images: IFileAttachment[];\r\n imageChangeInterval: number;\r\n imageIndex: number;\r\n showImagePropertiesDialog: boolean;\r\n}\r\n\r\nexport class FrontImages extends React.Component {\r\n private refreshTimer = 0;\r\n\r\n clearRefreshTimer = () => {\r\n if (this.refreshTimer !== 0) {\r\n window.clearTimeout(this.refreshTimer);\r\n this.refreshTimer = 0;\r\n }\r\n };\r\n\r\n setRefreshTimer = (imageChangeInterval: number) => {\r\n const obj = this;\r\n this.clearRefreshTimer();\r\n if (!imageChangeInterval) return;\r\n this.refreshTimer = window.setTimeout(() => {\r\n const state = this.state;\r\n if (!this.props.images || this.props.images?.images?.length < 1) {\r\n obj.clearRefreshTimer();\r\n return;\r\n }\r\n obj.setState({\r\n imageIndex: state.images.length > 0 ? ((state.imageIndex + 1) % state.images.length) : -1\r\n });\r\n obj.setRefreshTimer(imageChangeInterval);\r\n }, this.state.imageChangeInterval * 1000);\r\n };\r\n\r\n constructor(props: IFrontImagesProp) {\r\n super(props);\r\n const images = props.images && props.images.images ? props.images.images.slice(0) : [];\r\n this.state = {\r\n isSaving: false,\r\n images,\r\n imageChangeInterval: props.images && props.images.imageChangeInterval ? props.images.imageChangeInterval : 0,\r\n imageIndex: images.length > 0 ? 0 : -1,\r\n showImagePropertiesDialog: false\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps: IFrontImagesProp, prevState: IFrontImagesState) {\r\n const props = this.props;\r\n if (!props.images) return;\r\n const prevHash = Base.joinSuffix(prevProps.images && prevProps.images.images ? prevProps.images.images.map(i => i.id) : [], \"#\") + (prevProps.images && prevProps.images.imageChangeInterval ? prevProps.images.imageChangeInterval : 0).toString(10);\r\n const curHash = Base.joinSuffix(props.images && props.images.images ? props.images.images.map(i => i.id) : [], \"#\") + (props.images && props.images.imageChangeInterval ? props.images.imageChangeInterval : 0).toString(10);\r\n if (prevHash === curHash) return;\r\n const imageChangeInterval = props.images && props.images.imageChangeInterval ? props.images.imageChangeInterval : 0;\r\n this.setState({\r\n imageIndex: props.images.images.length > 0 ? 0 : -1,\r\n images: props.images.images.slice(0),\r\n imageChangeInterval\r\n });\r\n this.setRefreshTimer(imageChangeInterval);\r\n }\r\n\r\n componentDidMount(): void {\r\n this.setRefreshTimer(this.state.imageChangeInterval);\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this.clearRefreshTimer();\r\n }\r\n\r\n handleShowProperties = () => {\r\n this.setState({ showImagePropertiesDialog: true });\r\n };\r\n\r\n handleFrontImagePropertiesDialogClose = () => {\r\n this.setState({\r\n showImagePropertiesDialog: false,\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n {state.images.map((images, i) =>\r\n \r\n )}\r\n {state.imageIndex < 0 && !!props.images && props.images.images.length < 1 &&\r\n \r\n }\r\n \r\n {!!props.showPropertiesButton &&\r\n \r\n }\r\n {state.showImagePropertiesDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","/// \r\nimport { Box, Checkbox, FormControlLabel, Grid, MenuItem, Select } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../../framework/appUtils\";\r\nimport * as store from \"../../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../../framework/saveData\";\r\nimport { IFrontPageRecords } from \"../../../../models/front/frontPageRecords\";\r\nimport * as frontService from \"../../../../models/services/frontService\";\r\nimport * as storeActions from \"../../../../models/store/storeActions\";\r\nimport { FilterButtons } from \"../../../framework/Filters/FilterButtons\";\r\nimport { FormField } from \"../../../framework/FormField\";\r\nimport { GridRow } from \"../../../framework/Grid/GridRow\";\r\nimport { PageDrawer } from \"../../../framework/Page/PageDrawer\";\r\nimport { AppSettingsIcon } from \"source/components/framework/Icon/AppSettingsIcon\";\r\n\r\nexport interface IModifiedRecordPropertiesDialogProp {\r\n classes?: string;\r\n title?: string;\r\n panelSize: number;\r\n panelVisible: boolean;\r\n records: IFrontPageRecords;\r\n userModified: boolean;\r\n onSavePanelSize: (panelSize: number, panelVisible: boolean) => void;\r\n onClose: () => void;\r\n}\r\n\r\nexport interface IModifiedRecordPropertiesDialogState {\r\n panelSize: string;\r\n panelVisible: boolean;\r\n recordCount: string;\r\n dateRange: string;\r\n}\r\n\r\nexport class ModifiedRecordPropertiesDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IModifiedRecordPropertiesDialogProp) {\r\n super(props);\r\n this.state = {\r\n panelSize: props.panelSize.toString(10),\r\n panelVisible: props.panelVisible,\r\n recordCount: props.records\r\n ? (props.userModified\r\n ? props.records.userRecordCount\r\n : props.records.companyRecordCount).toString(10)\r\n : \"10\",\r\n dateRange: props.records\r\n ? (props.userModified\r\n ? props.records.userDateRange\r\n : props.records.companyDateRange).toString(10)\r\n : \"0\"\r\n };\r\n const saveData = this.getSaveDataFromState(props, this.state);\r\n this.orgStateHash = saveData.hash;\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"recordCount\") {\r\n this.setState({ recordCount: value });\r\n } else if (name === \"panelSize\") {\r\n this.setState({ panelSize: value });\r\n } else if (name === \"dateRange\") {\r\n this.setState({ dateRange: value });\r\n }\r\n };\r\n\r\n changePanelVisibility = (panelVisible: boolean) => {\r\n this.setState({ panelVisible });\r\n };\r\n\r\n getSaveDataFromState = (props: IModifiedRecordPropertiesDialogProp, state: IModifiedRecordPropertiesDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"userModified\", props.userModified);\r\n result.append(\"recordCount\", state.recordCount.toInteger());\r\n result.append(\"dateRange\", state.dateRange.toInteger());\r\n //Only for change detection - data is saved with separate operation\r\n result.append(\"panelSize\", state.panelSize.toInteger());\r\n result.append(\"panelVisible\", state.panelVisible);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async () => {\r\n const obj = this;\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage)) return;\r\n const saveData = obj.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = await AppUtils.callService(() => frontService.saveModifiedRecords(saveData.obj), false);\r\n if (!result) return;\r\n //Set app state\r\n if (props.userModified) {\r\n store.customStore.dispatch(storeActions.frontSetRecordsUser(state.recordCount.toInteger(), state.dateRange.toInteger()));\r\n } else {\r\n store.customStore.dispatch(storeActions.frontSetRecordsCompany(state.recordCount.toInteger(), state.dateRange.toInteger()));\r\n }\r\n //Close dialog\r\n props.onClose();\r\n //Save panel size\r\n props.onSavePanelSize(state.panelSize.toInteger(), state.panelVisible);\r\n };\r\n\r\n handleSave = () => {\r\n this.saveToDb();\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.saveToDb();\r\n } else {\r\n props.onClose();\r\n }\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n }\r\n title={props.title}\r\n parentTitle={Translations.Panels}\r\n onClose={this.handleCancel}\r\n >\r\n \r\n \r\n \r\n \r\n this.changePanelVisibility(checked)}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}","import { Box, Checkbox, FormControlLabel, Grid, MenuItem, Select } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport * as frontService from \"../../../models/services/frontService\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { FilterButtons } from \"../../framework/Filters/FilterButtons\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { PageDrawer } from \"../../framework/Page/PageDrawer\";\r\nimport { AppSettingsIcon } from \"source/components/framework/Icon/AppSettingsIcon\";\r\nimport { IFrontPageMessages } from \"source/models/front/frontPageMessages\";\r\n\r\nexport interface IFrontPanelMessagePropertiesDialogProp {\r\n classes?: string;\r\n title: string;\r\n panelSize: number;\r\n panelVisible: boolean;\r\n messages: IFrontPageMessages;\r\n hidePanelSize?: boolean;\r\n onSavePanelSize: (panelSize: number, panelVisible: boolean) => void;\r\n onClose: () => void;\r\n}\r\n\r\nexport interface IFrontPanelMessagePropertiesDialogState {\r\n panelSize: string;\r\n panelVisible: boolean;\r\n dateRange: string;\r\n}\r\n\r\nexport class FrontPanelMessagePropertiesDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IFrontPanelMessagePropertiesDialogProp) {\r\n super(props);\r\n this.state = {\r\n panelSize: props.panelSize.toString(10),\r\n dateRange: props.messages.dateRange.toString(10),\r\n panelVisible: props.panelVisible\r\n };\r\n //console.log(props.visible);\r\n \r\n const saveData = this.getSaveDataFromState(props, this.state);\r\n this.orgStateHash = saveData.hash;\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"panelSize\") {\r\n this.setState({ panelSize: value });\r\n } else if (name === \"dateRange\") {\r\n this.setState({ dateRange: value });\r\n }\r\n };\r\n\r\n changeVisibility = (panelVisible: boolean) => {\r\n this.setState({ panelVisible });\r\n };\r\n\r\n getSaveDataFromState = (props: IFrontPanelMessagePropertiesDialogProp, state: IFrontPanelMessagePropertiesDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"dateRange\", state.dateRange.toInteger());\r\n //Only for change detection - data is saved with separate operation\r\n result.append(\"panelSize\", state.panelSize.toInteger());\r\n result.append(\"panelVisible\", state.panelVisible);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage)) return;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = await AppUtils.callService(() => frontService.saveMessages(saveData.obj), false);\r\n if (!result) return;\r\n //Set app state\r\n store.customStore.dispatch(storeActions.frontSetMessages(state.dateRange.toInteger()));\r\n //Close dialog\r\n props.onClose();\r\n //Save panel size\r\n props.onSavePanelSize(state.panelSize.toInteger(), state.panelVisible);\r\n };\r\n\r\n handleSave = () => {\r\n this.saveToDb();\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.saveToDb();\r\n } else {\r\n props.onClose();\r\n }\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n }\r\n title={props.title}\r\n parentTitle={Translations.Panels}\r\n onClose={this.handleCancel}\r\n >\r\n \r\n \r\n \r\n \r\n this.changeVisibility(checked)}\r\n />\r\n }\r\n />\r\n \r\n \r\n {!props.hidePanelSize &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}","import InsertChartOutlinedRoundedIcon from \"@mui/icons-material/InsertChartOutlinedRounded\";\r\nimport { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { DropResult, ResponderProvided } from \"react-beautiful-dnd\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { EnumHelper, FrontPagePanelType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IPagePanel, PagePanel } from \"../../../models/common/pagePanel\";\r\nimport { IFrontPage } from \"../../../models/front/frontPage\";\r\nimport * as frontService from \"../../../models/services/frontService\";\r\nimport { recordLockManager } from \"../../../models/services/recordLockService\";\r\nimport { IAppSessionState, IFrontEventState } from \"../../../models/store/storeTypes\";\r\nimport { DashboardPanelList } from \"../../app/DashboardPanelList\";\r\nimport { HeaderMenuItem, NavigationMenu } from \"../../app/NavigationMenu\";\r\nimport { EventChart, EventChartPropertiesDialog } from \"../../event/EventChart\";\r\nimport { DashboardContainer } from \"../../framework/Dashboard/DashboardContainer\";\r\nimport { PageContainer } from \"../../framework/Page/PageContainer\";\r\nimport { PageContent } from \"../../framework/Page/PageContent\";\r\nimport { PageTitle } from \"../../framework/Page/PageTitle\";\r\nimport { PageTopBar } from \"../../framework/Page/PageTopBar\";\r\nimport { PanelContainer } from \"../../framework/Panel/PanelContainer\";\r\nimport { MessageShortList } from \"../../message/MessageShortList/MessageShortList\";\r\nimport { FrontPanelPropertiesDialog } from \"../FrontPanelPropertiesDialog\";\r\nimport { FrontToDoItems } from \"../FrontToDoItems\";\r\nimport { ModifiedRecordList } from \"../ModifiedRecordList\";\r\nimport { FrontBanner, FrontBannerPropertiesDialog } from \"../FrontBanner\";\r\nimport { FrontImagePropertiesDialog, FrontImages } from \"../FrontImages\";\r\nimport { UserMenu } from \"source/components/app/UserMenu\";\r\nimport { abortManager } from \"source/models/services/tokenService\";\r\nimport { ModifiedRecordPropertiesDialog } from \"../ModifiedRecordList/ModifiedRecordPropertiesDialog\";\r\nimport { FrontPanelMessagePropertiesDialog } from \"../FrontPanelMessagePropertiesDialog\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nconst enum FrontPageMenuItem {\r\n None = \"\",\r\n Panels = \"1\",\r\n}\r\n\r\nconst enum FrontPagePropertiesDialogType {\r\n None = \"\",\r\n General = \"1\",\r\n Image = \"2\",\r\n Banner = \"3\",\r\n EventChart = \"4\",\r\n ModifiedRecordsUser = \"5\",\r\n ModifiedRecordsOther = \"6\",\r\n Messages = \"7\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n// Front\r\nexport interface IFrontOwnProps {\r\n}\r\n\r\nexport interface IFrontStateProps {\r\n appState: IAppSessionState;\r\n dataId: number;\r\n frontPage: IFrontPage;\r\n event: IFrontEventState;\r\n}\r\n\r\nexport interface IFrontDispatchProps {\r\n loadFront: () => void;\r\n onLogout: () => void;\r\n onSetCulture: (culture: string)=> void;\r\n onRefreshSessionState: () => void;\r\n}\r\n\r\ntype FrontProp = IFrontOwnProps & IFrontStateProps & IFrontDispatchProps;\r\n\r\ninterface IFrontState {\r\n activeMenuItem: FrontPageMenuItem;\r\n showNavPanel: boolean;\r\n panels: IPagePanel[];\r\n frontPanelPropertiesDialogTitle: string;\r\n frontPanelPropertiesDialogPanelType: number;\r\n frontPanelPropertiesDialogPanelSize: number;\r\n frontPanelPropertiesDialogPanelVisible: boolean;\r\n frontPagePropertiesDialogType: FrontPagePropertiesDialogType;\r\n}\r\n\r\nexport class Front extends React.Component {\r\n constructor(props: FrontProp) {\r\n super(props);\r\n abortManager.abortAll(); //Abort all abortable calls regardless of module\r\n this.state = {\r\n activeMenuItem: FrontPageMenuItem.Panels,\r\n showNavPanel: false,\r\n panels: props.frontPage ? props.frontPage.panels.slice(0) : [],\r\n frontPanelPropertiesDialogTitle: \"\",\r\n frontPanelPropertiesDialogPanelType: 0,\r\n frontPanelPropertiesDialogPanelSize: 1,\r\n frontPanelPropertiesDialogPanelVisible: false,\r\n frontPagePropertiesDialogType: FrontPagePropertiesDialogType.None\r\n };\r\n }\r\n\r\n componentDidMount(): void {\r\n const sessionState = this.props.appState.state;\r\n recordLockManager.unlockAll(sessionState?.companyId, sessionState?.code);\r\n this.props.loadFront();\r\n }\r\n\r\n componentDidUpdate(prevProps: FrontProp, prevState: IFrontState): void {\r\n const props = this.props;\r\n const prevPanels = prevProps.frontPage ? prevProps.frontPage.panels.slice(0) : [];\r\n const panels = props.frontPage ? props.frontPage.panels.slice(0) : [];\r\n if (Base.equalStrArrays(prevPanels.map(i => JSON.stringify(i)), panels.map(i => JSON.stringify(i)))) return;\r\n this.setState({ panels });\r\n }\r\n\r\n handleToggleShowNavPanel = () => {\r\n this.setState({ showNavPanel: !this.state.showNavPanel });\r\n };\r\n\r\n handleToggleActiveMenuItem = (logPageMenuItem: FrontPageMenuItem) => {\r\n this.setState({ activeMenuItem: this.state.activeMenuItem !== logPageMenuItem ? logPageMenuItem : FrontPageMenuItem.None });\r\n };\r\n\r\n static grid = 8;\r\n\r\n getPanelOptionItemStyle = (isDragging: boolean, draggableStyle: any) => {\r\n return {\r\n // some basic styles to make the items look a bit nicer\r\n userSelect: \"none\",\r\n // change background colour if dragging\r\n //background: isDragging ? \"lightgreen\" : \"grey\",\r\n // styles we need to apply on draggables\r\n ...draggableStyle\r\n };\r\n };\r\n\r\n getPanelOptionItemsStyle = (isDraggingOver: boolean) => {\r\n return {\r\n // background: isDraggingOver ? \"lightblue\" : \"lightgrey\",\r\n // padding: Front.grid,\r\n // width: 250\r\n };\r\n };\r\n\r\n saveFrontPanels = async (panels: IPagePanel[]) => {\r\n await frontService.saveFrontPanels(panels);\r\n this.setState({\r\n panels,\r\n frontPagePropertiesDialogType: FrontPagePropertiesDialogType.None\r\n });\r\n };\r\n\r\n handleSavePanelSize = (panelType: number, panelSize: number, visible: boolean) => {\r\n const panels = this.state.panels.slice(0);\r\n const panel = panels.find(i => Base.equalInt(i.panelType, panelType));\r\n if (!panel) return;\r\n panel.size = panelSize;\r\n panel.visible = visible;\r\n this.saveFrontPanels(panels);\r\n };\r\n\r\n handlePanelCheckBoxDragEnd = (result: DropResult, provided: ResponderProvided) => {\r\n // dropped outside the list\r\n if (!result.destination) {\r\n return;\r\n }\r\n const panels = PagePanel.swapPagePanels(this.state.panels, result.source.index, result.destination.index);\r\n for (let i = 0; i < panels.length; i++) {\r\n panels[i].position = i;\r\n }\r\n this.setState({ panels });\r\n this.saveFrontPanels(panels);\r\n };\r\n\r\n changePanelVisibility = (panelType: number, visible: boolean) => {\r\n const state = this.state;\r\n const panels = state.panels.slice(0);\r\n const panel = panels.find(i => Base.equalInt(i.panelType, panelType));\r\n if (!panel) return;\r\n panel.visible = visible;\r\n this.saveFrontPanels(panels);\r\n };\r\n\r\n handlePropertiesClick = (panelType: number, panelSize: number, visible: boolean, title: string) => {\r\n let frontPagePropertiesDialogType = FrontPagePropertiesDialogType.General;\r\n if (EnumHelper.isEqual(panelType, FrontPagePanelType.Image) && this.props.appState.state.isCompanyAdmin) {\r\n frontPagePropertiesDialogType = FrontPagePropertiesDialogType.Image;\r\n } else if (EnumHelper.isEqual(panelType, FrontPagePanelType.Banner) && this.props.appState.state.isSuperAdmin) {\r\n frontPagePropertiesDialogType = FrontPagePropertiesDialogType.Banner;\r\n } else if (EnumHelper.isEqual(panelType, FrontPagePanelType.Event)) {\r\n frontPagePropertiesDialogType = FrontPagePropertiesDialogType.EventChart;\r\n } else if (EnumHelper.isEqual(panelType, FrontPagePanelType.UserModifiedRecords)) {\r\n frontPagePropertiesDialogType = FrontPagePropertiesDialogType.ModifiedRecordsUser;\r\n } else if (EnumHelper.isEqual(panelType, FrontPagePanelType.Message)) {\r\n frontPagePropertiesDialogType = FrontPagePropertiesDialogType.Messages;\r\n } else if (EnumHelper.isEqual(panelType, FrontPagePanelType.OtherModifiedRecords)) {\r\n frontPagePropertiesDialogType = FrontPagePropertiesDialogType.ModifiedRecordsOther;\r\n }\r\n this.setState({\r\n frontPagePropertiesDialogType,\r\n frontPanelPropertiesDialogPanelType: panelType,\r\n frontPanelPropertiesDialogPanelSize: panelSize,\r\n frontPanelPropertiesDialogPanelVisible: visible,\r\n frontPanelPropertiesDialogTitle: title\r\n });\r\n };\r\n\r\n handleFrontPanelPropertiesDialogCancel = () => {\r\n this.setState({\r\n frontPagePropertiesDialogType: FrontPagePropertiesDialogType.None\r\n });\r\n };\r\n\r\n getTitleSuffix = (dateRange: number): string => {\r\n return String.format(\r\n \" (\" + Translations.ForLastParameterDays + \")\",\r\n dateRange === 0\r\n ? 30\r\n : (dateRange === 1\r\n ? 60\r\n : (dateRange === 2\r\n ? 90\r\n : 120))\r\n );\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {state.frontPagePropertiesDialogType === FrontPagePropertiesDialogType.General &&\r\n \r\n }\r\n {state.frontPagePropertiesDialogType === FrontPagePropertiesDialogType.Image &&\r\n this.handleSavePanelSize(state.frontPanelPropertiesDialogPanelType, panelSize, panelVisible)}\r\n onClose={this.handleFrontPanelPropertiesDialogCancel}\r\n />\r\n }\r\n {state.frontPagePropertiesDialogType === FrontPagePropertiesDialogType.EventChart &&\r\n this.handleSavePanelSize(state.frontPanelPropertiesDialogPanelType, panelSize, panelVisible)}\r\n onClose={this.handleFrontPanelPropertiesDialogCancel}\r\n />\r\n }\r\n {(state.frontPagePropertiesDialogType === FrontPagePropertiesDialogType.ModifiedRecordsUser || state.frontPagePropertiesDialogType === FrontPagePropertiesDialogType.ModifiedRecordsOther) &&\r\n this.handleSavePanelSize(state.frontPanelPropertiesDialogPanelType, panelSize, panelVisible)}\r\n onClose={this.handleFrontPanelPropertiesDialogCancel}\r\n />\r\n }\r\n {state.frontPagePropertiesDialogType === FrontPagePropertiesDialogType.Banner &&\r\n this.handleSavePanelSize(state.frontPanelPropertiesDialogPanelType, 1, panelVisible)}\r\n onClose={this.handleFrontPanelPropertiesDialogCancel}\r\n />\r\n }\r\n {state.frontPagePropertiesDialogType === FrontPagePropertiesDialogType.Messages &&\r\n this.handleSavePanelSize(state.frontPanelPropertiesDialogPanelType, panelSize, panelVisible)}\r\n onClose={this.handleFrontPanelPropertiesDialogCancel}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","/* eslint-disable no-unused-vars */\r\nimport * as React from \"react\";\r\n/* eslint-enable no-unused-vars */\r\nimport { connect } from \"react-redux\";\r\nimport { IApplicationState } from \"../../models/store/storeTypes\";\r\nimport * as storeEffects from \"../../models/store/storeEffects\";\r\nimport { IFrontOwnProps, IFrontStateProps, IFrontDispatchProps, Front } from \"../../components/front/Front/Front\";\r\n\r\nexport function mapStateToProps(applicationState: IApplicationState, ownProps: IFrontOwnProps): IFrontStateProps {\r\n if (!applicationState || !applicationState.front) {\r\n return {\r\n appState: null,\r\n dataId: -1,\r\n frontPage: null,\r\n event: null\r\n };\r\n }\r\n const front = applicationState.front;\r\n return {\r\n appState: applicationState.session,\r\n dataId: front.dataId,\r\n frontPage: front.frontPage,\r\n event: front.event\r\n };\r\n}\r\n\r\nexport function mapDispatchToProps(dispatch: storeEffects.FrontThunkDispatch): IFrontDispatchProps {\r\n return {\r\n loadFront: () => dispatch(storeEffects.getFront()),\r\n onLogout: () => dispatch(storeEffects.logout()),\r\n onSetCulture: (culture: string) => dispatch(storeEffects.setCulture(culture)),\r\n onRefreshSessionState: () => dispatch(storeEffects.refreshSessionState()),\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Front);","import { EditItem, IEditItem } from \"../common/editItem\";\r\nimport { IModifyUser, ModifyUser } from \"../user/modifyUser\";\r\n\r\nexport interface IInstantMessageChannelEditItem extends IEditItem {\r\n companyId: string;\r\n code: string;\r\n picture: string;\r\n comment: string;\r\n messageExpirationTime: number;\r\n internalChannel: boolean;\r\n activeState: number;\r\n archivingType: number;\r\n archivingRemoveDate: number;\r\n modifyUser: IModifyUser;\r\n}\r\n\r\nexport class InstantMessageChannelEditItem extends EditItem implements IInstantMessageChannelEditItem {\r\n companyId: string;\r\n code: string;\r\n picture: string;\r\n comment: string;\r\n messageExpirationTime: number;\r\n internalChannel: boolean;\r\n activeState: number;\r\n archivingType: number;\r\n archivingRemoveDate: number;\r\n modifyUser: ModifyUser;\r\n\r\n constructor();\r\n constructor(obj: IInstantMessageChannelEditItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.companyId = obj && obj.companyId || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.picture = obj && obj.picture || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.messageExpirationTime = obj && obj.messageExpirationTime || 0;\r\n this.internalChannel = obj && obj.internalChannel || false;\r\n this.activeState = obj && obj.activeState || 0;\r\n this.archivingType = obj && obj.archivingType || 0;\r\n this.archivingRemoveDate = obj && obj.archivingRemoveDate || 0;\r\n this.modifyUser = new ModifyUser(obj ? obj.modifyUser : null);\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { CompanyMenuItem, ICompanyMenuItem } from \"../company/companyMenuItem\";\r\nimport { IInstantMessageChannelEditItem, InstantMessageChannelEditItem } from \"./instantMessageChannelEditItem\";\r\n\r\nexport interface IInstantMessageChannelNew {\r\n instantMessageChannel: IInstantMessageChannelEditItem;\r\n companies: ICompanyMenuItem[];\r\n existingTwoPersonChannelPartnerUserCodes: string[];\r\n}\r\n\r\nexport class InstantMessageChannelNew implements IInstantMessageChannelNew {\r\n instantMessageChannel: InstantMessageChannelEditItem;\r\n companies: CompanyMenuItem[];\r\n existingTwoPersonChannelPartnerUserCodes: string[];\r\n\r\n constructor();\r\n constructor(obj: IInstantMessageChannelNew);\r\n constructor(obj?: any) {\r\n this.instantMessageChannel = new InstantMessageChannelEditItem(obj ? obj.instantMessageChannel : null);\r\n this.companies = Base.getTypedArray(obj ? obj.companies : null, CompanyMenuItem);\r\n this.existingTwoPersonChannelPartnerUserCodes = obj && obj.existingTwoPersonChannelPartnerUserCodes || [];\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { EditItem, IEditItem } from \"../common/editItem\";\r\nimport { EnumHelper, InstantMessageChannelUserActiveState, InstantMessageChannelUserType } from \"../enums\";\r\n\r\nexport interface IInstantMessageChannelEditUserItem extends IEditItem {\r\n companyId: string;\r\n userType: InstantMessageChannelUserType;\r\n userCode: string;\r\n firstName: string;\r\n lastName: string;\r\n picture: string;\r\n activeState: InstantMessageChannelUserActiveState;\r\n\r\n getName(): string;\r\n getIsInvited(): boolean;\r\n getIsActive(): boolean;\r\n getIsRejected();\r\n}\r\n\r\nexport class InstantMessageChannelEditUserItem extends EditItem implements IInstantMessageChannelEditUserItem {\r\n companyId: string;\r\n userType: InstantMessageChannelUserType;\r\n userCode: string;\r\n firstName: string;\r\n lastName: string;\r\n picture: string;\r\n activeState: InstantMessageChannelUserActiveState;\r\n\r\n constructor();\r\n constructor(obj: IInstantMessageChannelEditUserItem);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.companyId = obj && obj.companyId || \"\";\r\n this.userType = obj && obj.userType || InstantMessageChannelUserType.User;\r\n this.userCode = obj && obj.userCode || \"\";\r\n this.firstName = obj && obj.firstName || \"\";\r\n this.lastName = obj && obj.lastName || \"\";\r\n this.picture = obj && obj.picture || \"\";\r\n this.activeState = obj && obj.activeState || InstantMessageChannelUserActiveState.Rejected;\r\n }\r\n\r\n getName(): string {\r\n return ((this.lastName ?? \"\") + \" \" + (this.firstName ?? \"\")).trim();\r\n }\r\n\r\n getHash(): string {\r\n return super.getHash() + \"#\" + (this.companyId ?? \"\") + \"#\" + this.userType.toString(10) + \"#\" + this.activeState.toString(10);\r\n }\r\n\r\n getIsInvited(): boolean {\r\n return EnumHelper.isEqual(this.activeState, InstantMessageChannelUserActiveState.Invited);\r\n }\r\n \r\n getIsActive(): boolean {\r\n return EnumHelper.isEqual(this.activeState, InstantMessageChannelUserActiveState.Active);\r\n }\r\n \r\n getIsRejected(): boolean {\r\n return EnumHelper.isEqual(this.activeState, InstantMessageChannelUserActiveState.Rejected);\r\n }\r\n \r\n static sortInstantMessageChannelEditUserItems(items: IInstantMessageChannelEditUserItem[], column: string, asc: boolean): IInstantMessageChannelEditUserItem[] {\r\n if (!items && items.length < 2) return items;\r\n if (column === \"userType\") {\r\n return items.sort((a: IInstantMessageChannelEditUserItem, b: IInstantMessageChannelEditUserItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.userType, b.userType)); });\r\n } else if (column === \"userCode\") {\r\n return items.sort((a: IInstantMessageChannelEditUserItem, b: IInstantMessageChannelEditUserItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.userCode, b.userCode)); });\r\n } else if (column === \"activeState\") {\r\n return items.sort((a: IInstantMessageChannelEditUserItem, b: IInstantMessageChannelEditUserItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.activeState, b.activeState)); });\r\n } else {\r\n return items.sort((a: IInstantMessageChannelEditUserItem, b: IInstantMessageChannelEditUserItem) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.getName(), b.getName())); });\r\n }\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { CompanyMenuItem, ICompanyMenuItem } from \"../company/companyMenuItem\";\r\nimport { IInstantMessageChannelEditItem, InstantMessageChannelEditItem } from \"./instantMessageChannelEditItem\";\r\nimport { IInstantMessageChannelEditUserItem, InstantMessageChannelEditUserItem } from \"./instantMessageChannelUserEditItem\";\r\n\r\nexport interface IInstantMessageChannelEdit {\r\n userIsInstantMessageChannelAdmin: boolean;\r\n instantMessageChannel: IInstantMessageChannelEditItem;\r\n companies: ICompanyMenuItem[];\r\n users: IInstantMessageChannelEditUserItem[];\r\n archivingRemoveDate: number;\r\n}\r\n\r\nexport class InstantMessageChannelEdit implements IInstantMessageChannelEdit {\r\n userIsInstantMessageChannelAdmin: boolean;\r\n instantMessageChannel: InstantMessageChannelEditItem;\r\n companies: CompanyMenuItem[];\r\n users: InstantMessageChannelEditUserItem[];\r\n archivingRemoveDate: number;\r\n\r\n constructor();\r\n constructor(obj: IInstantMessageChannelEdit);\r\n constructor(obj?: any) {\r\n this.userIsInstantMessageChannelAdmin = obj && obj.userIsInstantMessageChannelAdmin || false;\r\n this.instantMessageChannel = new InstantMessageChannelEditItem(obj ? obj.instantMessageChannel : null);\r\n this.companies = Base.getTypedArray(obj ? obj.companies : null, CompanyMenuItem);\r\n this.users = Base.getTypedArray(obj ? obj.users : null, InstantMessageChannelEditUserItem);\r\n this.archivingRemoveDate = obj && obj.archivingRemoveDate || 0;\r\n }\r\n}","import { InstantMessageChannelUserActiveState } from \"../enums\";\r\n\r\nexport interface IInstantMessageChannelAddedUser {\r\n id: string;\r\n userId: string;\r\n activeState: InstantMessageChannelUserActiveState;\r\n}\r\n\r\nexport class InstantMessageChannelAddedUser implements IInstantMessageChannelAddedUser {\r\n id: string;\r\n userId: string;\r\n activeState: InstantMessageChannelUserActiveState;\r\n\r\n constructor();\r\n constructor(obj: IInstantMessageChannelAddedUser);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.userId = obj && obj.userId || \"\";\r\n this.activeState = obj && obj.activeState || InstantMessageChannelUserActiveState.Rejected;\r\n }\r\n\r\n static createInstantMessageChannelAddedUser(id: string, userId: string, activeState: InstantMessageChannelUserActiveState): InstantMessageChannelAddedUser {\r\n const result = new InstantMessageChannelAddedUser();\r\n result.id = id;\r\n result.userId = userId;\r\n result.activeState = activeState;\r\n return result;\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { ApiSuccess, IApiSuccess } from \"../common/apiSuccess\";\r\nimport { IInstantMessageChannelAddedUser, InstantMessageChannelAddedUser } from \"./instantMessageChannelAddedUser\";\r\n\r\nexport interface IInstantMessageChannelAddUsersSuccess extends IApiSuccess {\r\n addedUsers: IInstantMessageChannelAddedUser[];\r\n}\r\n\r\nexport class InstantMessageChannelAddUsersSuccess extends ApiSuccess implements IInstantMessageChannelAddUsersSuccess {\r\n addedUsers: InstantMessageChannelAddedUser[];\r\n\r\n constructor();\r\n constructor(obj: IInstantMessageChannelAddUsersSuccess);\r\n constructor(obj?: any) {\r\n super(obj);\r\n this.addedUsers = Base.getTypedArray(obj ? obj.addedUsers : null, InstantMessageChannelAddedUser);\r\n }\r\n}","import { Base } from \"../../framework/base\";\r\nimport { IInstantMessageChannelItem, InstantMessageChannelItem } from \"./instantMessageChannelItem\";\r\n\r\nexport interface IInstantMessageChannelItems {\r\n channels: IInstantMessageChannelItem[];\r\n}\r\n\r\nexport class InstantMessageChannelItems implements IInstantMessageChannelItems {\r\n channels: InstantMessageChannelItem[];\r\n\r\n constructor();\r\n constructor(obj: IInstantMessageChannelItems);\r\n constructor(obj?: any) {\r\n this.channels = Base.getTypedArray(obj ? obj.channels : null, InstantMessageChannelItem);\r\n }\r\n}","import { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { InstantMessageChannelNew } from \"ui/Scripts/source/models/instantMessage/instantMessageChannelNew\";\r\nimport { InstantMessageChannelEdit } from \"ui/Scripts/source/models/instantMessage/instantMessageChannelEdit\";\r\nimport { InstantMessageChannelAddUsersSuccess } from \"ui/Scripts/source/models/instantMessage/instantMessageChannelAddUsersSuccess\";\r\nimport { InstantMessageChannelItems } from \"ui/Scripts/source/models/instantMessage/instantMessageChannelItems\";\r\nimport { getApiCall, postApiCall } from \"./tokenService\";\r\nimport { UserListItems } from \"../user/userListItems\";\r\n\r\nexport const getInstantMessageChannelNew = (companyId: string): Promise => {\r\n return getApiCall(\"api/instantmessagechannel/new?id=\" + companyId, InstantMessageChannelNew);\r\n};\r\n\r\nexport const getInstantMessageChannelEdit = (companyId: string, instantMessageChannelId: string): Promise => {\r\n return getApiCall(\"api/instantmessagechannel/edit?id=\" + instantMessageChannelId + \"&companyId=\" + companyId, InstantMessageChannelEdit);\r\n};\r\n\r\nexport const saveInstantMessageChannelEdit = (obj: any): Promise => {\r\n return postApiCall(\"api/instantmessagechannel/editsave\", SaveSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const removeInstantMessageChannel = (id: string, companyId: string): Promise => {\r\n return postApiCall(\"api/instantmessagechannel/remove?id=\" + id + \"&companyId=\" + companyId, ApiSuccess);\r\n};\r\n\r\nexport const exitInstantMessageChannel = (id: string, companyId: string): Promise => {\r\n return postApiCall(\"api/instantmessagechannel/exit?id=\" + id + \"&companyId=\" + companyId, ApiSuccess);\r\n};\r\n\r\nexport const instantMessageChannelEditRemoveUsers = (obj: any): Promise => {\r\n return postApiCall(\"api/instantmessagechannel/editremoveusers\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const instantMessageChannelEditAddUsers = (obj: any): Promise => {\r\n return postApiCall(\"api/instantmessagechannel/editaddusers\", InstantMessageChannelAddUsersSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const instantMessageChannelEditSetUserType = (obj: any): Promise => {\r\n return postApiCall(\"api/instantmessagechannel/editsetusertype\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const getInstantMessageChannelItems = (companyId: string): Promise => {\r\n return postApiCall(\"api/instantmessagechannel/list\", InstantMessageChannelItems, JSON.stringify({\r\n companyId\r\n }));\r\n};\r\n\r\nexport const instantMessageChannelUserInvitationHandle = (id: string, channelId: string, approve: boolean): Promise => {\r\n return postApiCall(\"api/instantmessagechannel/invitation?id=\" + id + \"&channelId=\" + channelId + \"&approve=\" + approve.toString(), ApiSuccess);\r\n};\r\n\r\n// #region UserSelect\r\nexport const instantMessageChannelGetSelectUserListItems = (channelCompanyId: string, channelId: string, companyId: string, pageSize: number, page: number, filter: string,\r\n ignoreUserIds: string[], ignoreUserCodes: string[], activityState: number, ignoreRecordUserConnected: boolean, doNotIgnoreRecordUserConnectedUserCode: string,\r\n sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/instantmessagechannel/selectuserslist\", UserListItems, JSON.stringify({\r\n channelCompanyId,\r\n channelId,\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\",\r\n ignoreUserIds,\r\n ignoreUserCodes,\r\n ignoreRecordUserConnected,\r\n doNotIgnoreRecordUserConnectedUserCode,\r\n activityState\r\n }));\r\n};\r\n// #endregion UserSelect","import { IInstantMessageChannelEditUserItem } from \"./instantMessageChannelUserEditItem\";\r\n\r\nexport class InstantMessageChannelHelper {\r\n static getFixedName = (users: IInstantMessageChannelEditUserItem[], userCode: string): string => {\r\n const otherUsers = users.filter(i => i.userCode !== userCode);\r\n if (otherUsers.length === 1) {\r\n return otherUsers[0].getName();\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n static getPicture = (users: IInstantMessageChannelEditUserItem[], picture: string, userCode: string): string => {\r\n if (picture) {\r\n return picture;\r\n }\r\n const otherUsers = users.filter(i => i.userCode !== userCode);\r\n if (otherUsers.length > 1) {\r\n return \"\";\r\n } else if (otherUsers.length > 0) {\r\n return otherUsers[0].picture;\r\n } else {\r\n return \"\";\r\n }\r\n };\r\n\r\n static getPictureClass = (users: IInstantMessageChannelEditUserItem[], picture: string, userCode: string): string => {\r\n if (InstantMessageChannelHelper.getPicture(users, picture, userCode)) {\r\n return \"\";\r\n } else {\r\n const otherUsers = users.filter(i => i.userCode !== userCode);\r\n return otherUsers.length > 1 ? \"icon instantMessageGroup\" : \"\";\r\n }\r\n };\r\n\r\n static getAvatarId = (users: IInstantMessageChannelEditUserItem[], picture: string, userCode: string): string => {\r\n if (InstantMessageChannelHelper.getPicture(users, picture, userCode)) {\r\n return \"\";\r\n } else {\r\n const otherUsers = users.filter(i => i.userCode !== userCode);\r\n if (otherUsers.length > 1) {\r\n return \"\";\r\n } else if (otherUsers.length > 0) {\r\n return otherUsers[0].userCode;\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n };\r\n}","// InstantMessageChannelEditDialogUserList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Checkbox, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { ConfirmationDialogResult, InstantMessageChannelUserActiveState } from \"ui/Scripts/source/models/enums\";\r\nimport { InstantMessageChannelAddUsersSuccess } from \"ui/Scripts/source/models/instantMessage/instantMessageChannelAddUsersSuccess\";\r\nimport { IInstantMessageChannelAddedUser, InstantMessageChannelAddedUser } from \"ui/Scripts/source/models/instantMessage/instantMessageChannelAddedUser\";\r\nimport { IInstantMessageChannelEditUserItem, InstantMessageChannelEditUserItem } from \"ui/Scripts/source/models/instantMessage/instantMessageChannelUserEditItem\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as instantMessageChannelService from \"../../../models/services/instantMessageChannelService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { IUserListItem } from \"../../../models/user/userListItem\";\r\nimport { UserListItems } from \"../../../models/user/userListItems\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListIconButtonsItem } from \"../../framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { IListValueLineData } from \"../../framework/List/ListLine\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { SelectUserDialogWithCompanySelect } from \"../../user/SelectUserDialog/SelectUserDialog\";\r\n\r\n// InstantMessageChannelEditDialogUserList\r\nexport interface IInstantMessageChannelEditDialogUserListProp {\r\n newChannelWizard?: boolean;\r\n sessionState: ISessionState;\r\n isReadOnly: boolean;\r\n instantMessageChannelId: string;\r\n instantMessageChannelCompanyId: string;\r\n companies: ICompanyMenuItem[];\r\n users: IInstantMessageChannelEditUserItem[];\r\n \r\n onRemoved: (ids: string[]) => void;\r\n onAdded: (companyId :string, users: IUserListItem[], addedUsers: IInstantMessageChannelAddedUser[]) => void;\r\n onUserTypeUpdated: (id: string, userType: number) => void;\r\n}\r\n\r\ninterface IInstantMessageChannelEditDialogUserListState {\r\n // List\r\n isLoading: boolean;\r\n users: IInstantMessageChannelEditUserItem[];\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n selectedId: string;\r\n checkedIds: string[];\r\n\r\n // Dialog\r\n showSelectUserDialog: boolean;\r\n}\r\n\r\nexport class InstantMessageChannelEditDialogUserList extends React.Component {\r\n getFilteredUsers = (filter: string, column: string, asc: boolean): IInstantMessageChannelEditUserItem[] => {\r\n const props = this.props;\r\n let users = props.users ? props.users.slice(0) : [];\r\n if (filter) {\r\n const lowFilter = filter.toLowerCase();\r\n users = users.filter(i => i.userCode.toLowerCase().indexOf(lowFilter) > -1 || i.firstName.toLowerCase().indexOf(lowFilter) > -1 || i.lastName.toLowerCase().indexOf(lowFilter) > -1);\r\n }\r\n InstantMessageChannelEditUserItem.sortInstantMessageChannelEditUserItems(users, column, asc);\r\n return users;\r\n };\r\n\r\n constructor(props: IInstantMessageChannelEditDialogUserListProp) {\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n users: this.getFilteredUsers(\"\", \"code\", true),\r\n filter: \"\",\r\n sortColumn: \"code\",\r\n sortOrderIsAsc: true,\r\n selectedId: null,\r\n checkedIds: [],\r\n showSelectUserDialog: false,\r\n };\r\n }\r\n\r\n filteredList = (filter: string, column: string, asc: boolean) => {\r\n this.setState({\r\n filter,\r\n sortColumn: column,\r\n sortOrderIsAsc: asc,\r\n users: this.getFilteredUsers(filter, column, asc),\r\n });\r\n };\r\n\r\n componentDidUpdate(prevProps: IInstantMessageChannelEditDialogUserListProp, prevState: IInstantMessageChannelEditDialogUserListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (Base.equalStrArrays(prevProps.users ? prevProps.users.map(i => i.getHash()) : [], props.users ? props.users.map(i => i.getHash()) : [])) return;\r\n this.filteredList(state.filter, state.sortColumn, state.sortOrderIsAsc);\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.filteredList(filter, state.sortColumn, state.sortOrderIsAsc);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.filteredList(state.filter, sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n // #region Set Active User Type\r\n getSetUserTypeSaveData = (props: IInstantMessageChannelEditDialogUserListProp, userId: string, userType: number): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.instantMessageChannelId);\r\n result.append(\"userId\", userId);\r\n result.append(\"userType\", userType);\r\n return result;\r\n };\r\n\r\n handleSetUserType = async (userId: string, userType: number) => {\r\n const props = this.props;\r\n const users = props.users.map(i => new InstantMessageChannelEditUserItem(i));\r\n const user = users.find(i => i.id === userId);\r\n if (!user) return;\r\n user.userType = userType;\r\n if (!users.find(i => i.userType > 0.5)) {\r\n AppUtils.showErrorMessage(Translations.InstantMessageChannelMustHaveAtLeastOneAdministrator);\r\n return;\r\n }\r\n if (userType < 0.5 && userId === props.sessionState.id) {\r\n if (await AppUtils.showConfirmationDialog(Translations.InstantMessageChannelRemoveFromYourselfFromAdministratorsConfirmation) !== ConfirmationDialogResult.Yes) {\r\n return;\r\n }\r\n }\r\n const saveData = this.getSetUserTypeSaveData(props, userId, userType);\r\n // Call server\r\n if (!props.newChannelWizard) {\r\n const result = await AppUtils.callService(() => instantMessageChannelService.instantMessageChannelEditSetUserType(saveData.obj));\r\n if (!result) return;\r\n }\r\n props.onUserTypeUpdated(userId, userType);\r\n };\r\n // #endregion Set Active User Type\r\n\r\n // #region Remove Users\r\n getRemoveSaveData = (instantMessageChannelId: string, userIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", instantMessageChannelId);\r\n result.append(\"userIds\", userIds);\r\n return result;\r\n };\r\n \r\n removeUsersFromInstantMessageChannel = (instantMessageChannelId: string, userIds: string[], showSuccessMessage: boolean = true, disableLoadIndicator: boolean = false): Promise => {\r\n const saveData = this.getRemoveSaveData(instantMessageChannelId, userIds);\r\n return AppUtils.callService(() => instantMessageChannelService.instantMessageChannelEditRemoveUsers(saveData.obj), showSuccessMessage, disableLoadIndicator);\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n if (selectedIds.length < 1) return;\r\n // Call server\r\n if (!props.newChannelWizard) {\r\n const users = props.users.filter(i => selectedIds.indexOf(i.id) < 0);\r\n if (!users.find(i => i.userType > 0.5)) {\r\n AppUtils.showErrorMessage(Translations.InstantMessageChannelMustHaveAtLeastOneAdministrator);\r\n return;\r\n }\r\n // Call server\r\n const result = await this.removeUsersFromInstantMessageChannel(props.instantMessageChannelId, selectedIds);\r\n if (!result) return;\r\n }\r\n this.setState({\r\n selectedId: selectedIds.indexOf(state.selectedId) < 0 ? state.selectedId : \"\",\r\n checkedIds: state.checkedIds.filter(i => selectedIds.indexOf(i) < 0)\r\n });\r\n props.onRemoved(selectedIds);\r\n };\r\n // #endregion Remove Users\r\n \r\n // #region Add Users\r\n handleAdd = () => {\r\n this.setState({\r\n showSelectUserDialog: true\r\n });\r\n };\r\n\r\n getAddSaveData = (instantMessageChannelId: string, userIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", instantMessageChannelId);\r\n result.append(\"userIds\", userIds);\r\n return result;\r\n };\r\n\r\n addUsersToInstantMessageChannel = (instantMessageChannelId: string, userIds: string[], showSuccessMessage: boolean = true, disableLoadIndicator: boolean = false): Promise => {\r\n const saveData = this.getAddSaveData(instantMessageChannelId, userIds);\r\n return AppUtils.callService(() => instantMessageChannelService.instantMessageChannelEditAddUsers(saveData.obj), showSuccessMessage, disableLoadIndicator);\r\n };\r\n\r\n handleSelectUserDialogOk = async (users: IUserListItem[], companyId :string) => {\r\n const props = this.props;\r\n if (!users || users.length < 1) return;\r\n this.setState({\r\n showSelectUserDialog: false\r\n });\r\n // Call server\r\n let result: InstantMessageChannelAddUsersSuccess;\r\n if (!props.newChannelWizard) {\r\n result = await this.addUsersToInstantMessageChannel(props.instantMessageChannelId, users.map(i => i.id));\r\n if (!result) return;\r\n } else {\r\n result = new InstantMessageChannelAddUsersSuccess();\r\n result.addedUsers = users.map(i => InstantMessageChannelAddedUser.createInstantMessageChannelAddedUser(Base.getGuid(), i.id, InstantMessageChannelUserActiveState.Invited));\r\n }\r\n props.onAdded(companyId, users, result.addedUsers);\r\n };\r\n\r\n handleSelectUserDialogCancel = () => {\r\n this.setState({\r\n showSelectUserDialog: false\r\n });\r\n };\r\n\r\n handleGetUserSelectListItems = (companyId: string, pageSize: number, page: number, filter: string,\r\n ignoreUserIds: string[], ignoreUserCodes: string[], activityState: number, ignoreRecordUserConnected: boolean,\r\n doNotIgnoreRecordUserConnectedUserCode: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n const props = this.props;\r\n return instantMessageChannelService.instantMessageChannelGetSelectUserListItems(props.instantMessageChannelCompanyId, props.instantMessageChannelId, companyId, pageSize, page, filter,\r\n ignoreUserIds, ignoreUserCodes, activityState, ignoreRecordUserConnected, doNotIgnoreRecordUserConnectedUserCode, sortColumn, sortOrderIsAsc);\r\n };\r\n // #endregion Add Users\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const externalChannel = props.companies && props.companies.length > 1;\r\n let ignoreUserCodes = props.users.map(i => i.userCode);\r\n if (props.newChannelWizard) {\r\n ignoreUserCodes = ignoreUserCodes.concat([props.sessionState.code]);\r\n }\r\n return (\r\n <>\r\n \r\n }\r\n rightItems={\r\n <>\r\n \r\n \r\n }\r\n />\r\n {\r\n const lines: IListValueLineData[] = [];\r\n for (const company of props.companies) {\r\n const companyUsers = externalChannel\r\n ? state.users.filter(i => i.companyId === company.id)\r\n : state.users;\r\n if (companyUsers.length < 1) continue;\r\n //Company row\r\n if (externalChannel) {\r\n lines.push({\r\n columns: [\r\n {\r\n size: 12,\r\n content:\r\n \r\n \r\n {company.name}\r\n \r\n }\r\n ],\r\n id: company.id,\r\n classes: \"company\",\r\n unselectable: true,\r\n });\r\n }\r\n //User rows\r\n for (const user of companyUsers) {\r\n lines.push({\r\n columns: [\r\n {\r\n size: props.newChannelWizard ? 12 : 9,\r\n content:\r\n \r\n {user.getIsInvited() &&\r\n \r\n }\r\n {user.getIsRejected() &&\r\n \r\n }\r\n \r\n {user.getName()}\r\n \r\n },\r\n props.newChannelWizard\r\n ? null\r\n : {\r\n size: 3,\r\n content:\r\n
\r\n {(props.isReadOnly || externalChannel && user.companyId !== props.instantMessageChannelCompanyId\r\n ? (user.userType > 0 ? : null)\r\n : 0}\r\n disabled={!user.getIsActive()}\r\n onChange={(_e, checked: boolean) => {\r\n this.handleSetUserType(user.id, checked ? 1 : 0);\r\n }}\r\n />\r\n )}\r\n
\r\n }\r\n ],\r\n id: user.id,\r\n classes: \"user\" + (externalChannel ? \" hasCompanyLine\" : \"\") + (user.getIsActive() ? \"\" : \" inActive\")\r\n });\r\n }\r\n }\r\n return lines;\r\n })()}\r\n noDataMessage={Translations.AddAtleastOneInstantMessageChannelUsersToInstantMessageChannel}\r\n noDataMessageThreshold={props.users.length < (props.newChannelWizard ? 1 : 2) ? 1000 : 0}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n />\r\n {state.showSelectUserDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","// InstantMessageChannelEditDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport GroupIcon from \"@mui/icons-material/Group\";\r\nimport { Box, Checkbox, FormControlLabel, Grid, MenuItem, Radio, Select, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { FileAttachment, IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { INumberTitle, NumberTitle } from \"ui/Scripts/source/models/common/numberTitle\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { removeConfirmationWord } from \"ui/Scripts/source/models/consts\";\r\nimport { ConfirmationDialogResult, EnumHelper, InstantMessageChannelArchivingType, InstantMessageChannelMessageExpirationTime, InstantMessageChannelUserType } from \"ui/Scripts/source/models/enums\";\r\nimport { IInstantMessageChannelAddedUser } from \"ui/Scripts/source/models/instantMessage/instantMessageChannelAddedUser\";\r\nimport { IInstantMessageChannelEditItem } from \"ui/Scripts/source/models/instantMessage/instantMessageChannelEditItem\";\r\nimport { InstantMessageChannelHelper } from \"ui/Scripts/source/models/instantMessage/instantMessageChannelHelper\";\r\nimport { IInstantMessageChannelEditUserItem, InstantMessageChannelEditUserItem } from \"ui/Scripts/source/models/instantMessage/instantMessageChannelUserEditItem\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { SaveAttachmentBase64 } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/saveAttachmentBase64\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as instantMessageChannelService from \"../../../models/services/instantMessageChannelService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport { IUserListItem } from \"../../../models/user/userListItem\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogButtons } from \"../../framework/Dialog/DialogButtons\";\r\nimport { DialogTabs } from \"../../framework/Dialog/DialogTabs\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { InstantMessageChannelEditDialogUserList } from \"../InstantMessageChannelEditDialogUserList\";\r\nimport { DialogItemsNav } from \"source/components/framework/Dialog/DialogItemsNav\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum InstantMessageChannelDialogMenuItem {\r\n General = \"1\",\r\n Users = \"2\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n//InstantMessageChannelEditDialog\r\nexport interface IInstantMessageChannelSaveState {\r\n companyId: string;\r\n id: string;\r\n code: string;\r\n file: IFileAttachment,\r\n resetPicture: boolean;\r\n internalChannel: boolean;\r\n activeState: number;\r\n archivingType: number;\r\n archivingRemoveDate: string;\r\n comment: string;\r\n messageExpirationTime: number;\r\n rowId: string;\r\n}\r\n\r\nexport interface IInstantMessageChannelEditDialogProp {\r\n sessionState: ISessionState;\r\n defaultMenuItem: InstantMessageChannelDialogMenuItem;\r\n companyId: string;\r\n instantMessageChannelId: string;\r\n classes?: string;\r\n onOk: () => void;\r\n onCancel: (instantMessageChannelDataWasModified: boolean) => void;\r\n onNewSaved: (instantMessageChannelId: string) => void;\r\n refreshChannelList: (companyId: string, instantMessageChannelId: string) => void;\r\n}\r\n\r\nexport interface IInstantMessageChannelEditDialogState extends IInstantMessageChannelSaveState {\r\n activeMenuItem: InstantMessageChannelDialogMenuItem;\r\n isLoading: boolean;\r\n instantMessageChannelDataWasModified: boolean;\r\n instantMessageChannel: IInstantMessageChannelEditItem;\r\n picture: string;\r\n companies: ICompanyMenuItem[];\r\n users: IInstantMessageChannelEditUserItem[];\r\n userIsInstantMessageChannelAdmin: boolean;\r\n messageExpirationTimes: INumberTitle[];\r\n defaultArchivingRemoveDate: string;\r\n}\r\n\r\nexport class InstantMessageChannelEditDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IInstantMessageChannelEditDialogProp) {\r\n super(props);\r\n this.state = {\r\n activeMenuItem: Base.isNullOrUndefined(props.defaultMenuItem) ? InstantMessageChannelDialogMenuItem.General : props.defaultMenuItem,\r\n isLoading: false,\r\n instantMessageChannelDataWasModified: false,\r\n instantMessageChannel: null,\r\n companyId: \"\",\r\n id: \"\",\r\n code: \"\",\r\n file: null,\r\n picture: \"\",\r\n resetPicture: false,\r\n internalChannel: false,\r\n activeState: 0,\r\n archivingType: 0,\r\n archivingRemoveDate: \"\",\r\n comment: \"\",\r\n messageExpirationTime: 0,\r\n rowId: \"\",\r\n companies: [],\r\n users: [],\r\n userIsInstantMessageChannelAdmin: false,\r\n defaultArchivingRemoveDate: \"\",\r\n messageExpirationTimes: [\r\n NumberTitle.createNumberTitle(InstantMessageChannelMessageExpirationTime.Quarter, \"3 \" + Translations.Months),\r\n NumberTitle.createNumberTitle(InstantMessageChannelMessageExpirationTime.HalfYear, \"6 \" + Translations.Months),\r\n NumberTitle.createNumberTitle(InstantMessageChannelMessageExpirationTime.Year, \"12 \" + Translations.Months),\r\n NumberTitle.createNumberTitle(InstantMessageChannelMessageExpirationTime.None, Translations.Unlimited)\r\n ]\r\n };\r\n }\r\n\r\n loadInstantMessageChannel = async () => {\r\n const props = this.props;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => instantMessageChannelService.getInstantMessageChannelEdit(props.companyId, props.instantMessageChannelId), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const instantMessageChannel = result.instantMessageChannel;\r\n const state = {\r\n ...this.state,\r\n instantMessageChannel,\r\n companyId: instantMessageChannel.companyId,\r\n id: instantMessageChannel.id,\r\n code: instantMessageChannel.code,\r\n file: null,\r\n resetPicture: false,\r\n picture: instantMessageChannel.picture,\r\n internalChannel: instantMessageChannel.internalChannel,\r\n activeState: instantMessageChannel.activeState,\r\n archivingType: instantMessageChannel.archivingType,\r\n archivingRemoveDate: Base.timeToDateStr(instantMessageChannel.archivingRemoveDate ? instantMessageChannel.archivingRemoveDate : result.archivingRemoveDate),\r\n defaultArchivingRemoveDate: Base.timeToDateStr(result.archivingRemoveDate),\r\n comment: instantMessageChannel.comment,\r\n messageExpirationTime: instantMessageChannel.messageExpirationTime,\r\n rowId: instantMessageChannel.rowId,\r\n companies: result.companies,\r\n users: result.users,\r\n userIsInstantMessageChannelAdmin: result.userIsInstantMessageChannelAdmin\r\n };\r\n this.setState(state);\r\n const saveData = await InstantMessageChannelEditDialog.getSaveDataFromState(state);\r\n this.orgStateHash = saveData.hash;\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadInstantMessageChannel();\r\n }\r\n\r\n async componentDidUpdate(prevProps: IInstantMessageChannelEditDialogProp, prevState: IInstantMessageChannelEditDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevDefaultMenuItem = Base.isNullOrUndefined(prevProps.defaultMenuItem) ? InstantMessageChannelDialogMenuItem.General : prevProps.defaultMenuItem;\r\n const defaultMenuItem = Base.isNullOrUndefined(props.defaultMenuItem) ? InstantMessageChannelDialogMenuItem.General : props.defaultMenuItem;\r\n if (prevProps.companyId === props.companyId && prevProps.instantMessageChannelId === props.instantMessageChannelId) return;\r\n const cancelResult = await AppUtils.cancel((await InstantMessageChannelEditDialog.getSaveDataFromState(state)).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb()) return;\r\n props.refreshChannelList(props.companyId, props.instantMessageChannelId);\r\n }\r\n await this.loadInstantMessageChannel();\r\n if (prevDefaultMenuItem !== defaultMenuItem) {\r\n this.setState({\r\n activeMenuItem: defaultMenuItem\r\n });\r\n }\r\n }\r\n\r\n handleToggleActiveMenuItem = (instantMessageChannelDialogMenuItem: InstantMessageChannelDialogMenuItem) => {\r\n this.setState({\r\n activeMenuItem: instantMessageChannelDialogMenuItem\r\n });\r\n };\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"xts\") {\r\n this.setState({ code: value });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n } else if (name === \"messageExpirationTime\") {\r\n this.setState({ messageExpirationTime: value.toInteger() });\r\n }\r\n };\r\n\r\n handleSetPicture = async (file: File) => {\r\n if (!file) return;\r\n const attachment = await FileAttachment.fileToFileAttachment(file, 0);\r\n if (!attachment) return;\r\n if (!AppUtils.validateFileAttachment(attachment)) return;\r\n this.setState({ file: attachment, resetPicture: false, picture: attachment.thumbnail });\r\n };\r\n\r\n handleRemovePicture = () => {\r\n this.setState({ file: null, resetPicture: true, picture: \"\" });\r\n };\r\n\r\n handleSetArchivingType = (archivingType: number) => {\r\n const state = this.state;\r\n const archivingRemoveDate = !EnumHelper.isEqual(InstantMessageChannelArchivingType.RemoveChannel, state.archivingType) &&\r\n EnumHelper.isEqual(InstantMessageChannelArchivingType.RemoveChannel, archivingType)\r\n ? state.defaultArchivingRemoveDate\r\n : state.archivingRemoveDate;\r\n this.setState({\r\n archivingType,\r\n archivingRemoveDate\r\n });\r\n };\r\n\r\n // #region Users\r\n handleUsersRemoved = (ids: string[]) => {\r\n if (!ids || ids.length < 1) return;\r\n this.setState({\r\n users: this.state.users.filter(i => ids.indexOf(i.id) < 0),\r\n instantMessageChannelDataWasModified: true\r\n });\r\n };\r\n \r\n handleUsersAdded = (companyId :string, newUsers: IUserListItem[], addedUsers: IInstantMessageChannelAddedUser[]) => {\r\n if (!newUsers || newUsers.length < 1) return;\r\n const state = this.state;\r\n const users = state.users.slice(0);\r\n for (const newUser of newUsers) {\r\n const addedUser = addedUsers.find(i => i.userId === newUser.id);\r\n if (!addedUser) continue;\r\n const user = new InstantMessageChannelEditUserItem();\r\n user.id = addedUser.id;\r\n user.companyId = companyId;\r\n user.userType = InstantMessageChannelUserType.User;\r\n user.userCode = newUser.code;\r\n user.firstName = newUser.firstName;\r\n user.lastName = newUser.lastName;\r\n user.picture = newUser.picture;\r\n user.activeState = addedUser.activeState;\r\n users.push(user);\r\n }\r\n this.setState({\r\n users,\r\n instantMessageChannelDataWasModified: true\r\n });\r\n };\r\n\r\n handleUserTypeUpdated = async (id: string, userType: number) => {\r\n const state = this.state;\r\n const user = state.users.find(i => i.id === id);\r\n if (!user) return;\r\n const newUser = new InstantMessageChannelEditUserItem(user);\r\n const users = state.users.filter(i => i.id !== id);\r\n newUser.userType = userType;\r\n users.push(newUser);\r\n this.setState({\r\n users,\r\n instantMessageChannelDataWasModified: true\r\n });\r\n };\r\n // #endregion Users\r\n\r\n static getSaveDataFromState = async (state: IInstantMessageChannelSaveState, overrideCode: string = null, userIds: string[] = null): Promise => {\r\n const result = new SaveDataObj();\r\n result.append(\"companyId\", state.companyId);\r\n result.append(\"id\", state.id);\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"code\", overrideCode ?? state.code);\r\n result.append(\"comment\", state.comment);\r\n result.append(\"internalChannel\", state.internalChannel);\r\n result.append(\"activeState\", state.activeState);\r\n result.append(\"archivingType\", state.archivingType);\r\n result.append(\"archivingRemoveDate\", EnumHelper.isEqual(InstantMessageChannelArchivingType.RemoveChannel, state.archivingType) ? state.archivingRemoveDate.toDate().getTime() : null);\r\n result.append(\"messageExpirationTime\", state.messageExpirationTime);\r\n result.append(\"resetPicture\", state.resetPicture);\r\n if (state.file) {\r\n result.append(\"attachments\", await SaveAttachmentBase64.fromFileAttachments([state.file]));\r\n }\r\n if (userIds) { //Used only for saving in new wizard\r\n result.append(\"userIds\", userIds);\r\n }\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n const isNew = state.instantMessageChannel.isNew();\r\n if (!isNew && !state.code) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.NameMustBeDefined));\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n static saveInstantMessageChannel = async (state: IInstantMessageChannelSaveState, overrideCode: string, userIds: string[] = null): Promise => {\r\n const saveData = await InstantMessageChannelEditDialog.getSaveDataFromState(state, overrideCode, userIds);\r\n return AppUtils.callService(() => instantMessageChannelService.saveInstantMessageChannelEdit(saveData.obj));\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const state = this.state;\r\n const isNew = state.instantMessageChannel.isNew();\r\n const overrideCode = isNew && !state.code ? Translations.NewInstantMessageChannel : null;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n //Call server\r\n const result = await InstantMessageChannelEditDialog.saveInstantMessageChannel(state, overrideCode);\r\n if (!result) return null;\r\n this.orgStateHash = (await InstantMessageChannelEditDialog.getSaveDataFromState(state, overrideCode)).hash;\r\n if (overrideCode) {\r\n this.setState({ code: overrideCode });\r\n }\r\n return result;\r\n };\r\n\r\n handleSave = async () => {\r\n const props = this.props;\r\n const result = await this.saveToDb();\r\n if (!result) return;\r\n const isNew = this.state.instantMessageChannel.isNew();\r\n if (!isNew) {\r\n props.onOk();\r\n } else {\r\n props.onNewSaved(result.id);\r\n }\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.instantMessageChannel.isNew()) return;\r\n const fixedName = InstantMessageChannelHelper.getFixedName(state.users, props.sessionState.code);\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveInstantMessageChannelParameter, fixedName ?? state.instantMessageChannel.code), false, removeConfirmationWord) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await AppUtils.callService(() => instantMessageChannelService.removeInstantMessageChannel(state.instantMessageChannel.id, props.companyId));\r\n if (!result) return;\r\n props.onCancel(true);\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel((await InstantMessageChannelEditDialog.getSaveDataFromState(state)).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel(state.instantMessageChannelDataWasModified);\r\n }\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.instantMessageChannel) return null;\r\n const hasPartners = state.companies.length > 1;\r\n const hasExternalUsers = !!state.users.find(i => i.companyId !== state.companyId);\r\n const isNew = state.instantMessageChannel.isNew();\r\n const fixedName = InstantMessageChannelHelper.getFixedName(state.users, props.sessionState.code);\r\n const isReadOnly = !state.userIsInstantMessageChannelAdmin;\r\n const avatarImageClass = InstantMessageChannelHelper.getPictureClass(state.users, state.picture, props.sessionState.code);\r\n return (\r\n \r\n }\r\n body={\r\n <>\r\n {state.activeMenuItem === InstantMessageChannelDialogMenuItem.General &&\r\n <>\r\n \r\n \r\n \r\n : undefined}\r\n size={60}\r\n marginRight=\"1.5rem\"\r\n editable={!isReadOnly}\r\n tooltip={Translations.CkickToChangeThePicture}\r\n removeTooltip={Translations.RemovePicture}\r\n onChange={this.handleSetPicture}\r\n onClear={state.resetPicture ? null : this.handleRemovePicture}\r\n onError={(message) => { store.customStore.dispatch(storeActions.showErrorMessage(message)); }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!isNew &&\r\n \r\n {hasPartners &&\r\n \r\n \r\n {\r\n this.setState({ internalChannel: checked });\r\n }}\r\n />\r\n }\r\n />\r\n \r\n \r\n }\r\n \r\n \r\n {\r\n this.setState({\r\n activeState: checked ? 0 : 1,\r\n archivingType: checked ? InstantMessageChannelArchivingType.KeepMessages : InstantMessageChannelArchivingType.None\r\n });\r\n }}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n {state.activeState < 0.5 &&\r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.handleSetArchivingType(checked ? InstantMessageChannelArchivingType.KeepMessages : InstantMessageChannelArchivingType.RemoveChannel);\r\n }}\r\n />\r\n }\r\n />\r\n \r\n \r\n {\r\n this.handleSetArchivingType(checked ? InstantMessageChannelArchivingType.RemoveChannel : InstantMessageChannelArchivingType.KeepMessages);\r\n }}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n {state.activeMenuItem === InstantMessageChannelDialogMenuItem.Users &&\r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}/>\r\n );\r\n }\r\n}","//SelectUserList\r\n//***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { Dropdown } from \"ui/Scripts/source/components/framework/dropdown\";\r\nimport { ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IUserListItem } from \"../../../models/user/userListItem\";\r\nimport { UserListItems } from \"../../../models/user/userListItems\";\r\nimport { FormSectionTitle } from \"../../framework/Form/FormSectionTitle\";\r\nimport { ISelectUserDialogState, SelectUserDialogList } from \"../SelectUserDialog/SelectUserDialog\";\r\nimport { CompanyItem } from \"source/components/company/Company/CompanyItem\";\r\nimport { Grid } from \"@mui/material\";\r\n\r\n//SelectUserList\r\nexport interface ISelectUserListProps {\r\n classes?: string;\r\n companies: ICompanyMenuItem[];\r\n ignoreUserIds?: string[];\r\n ignoreUserCodes?: string[];\r\n ignoreRecordUserConnected?: boolean;\r\n doNotIgnoreRecordUserConnectedUserCode?: string;\r\n showUserGroupsCompanyId: string;\r\n multiSelect?: boolean;\r\n selectedIds?: string[];\r\n title?: string;\r\n onSelect: (users: IUserListItem[], companyId :string) => void;\r\n onGetUserSelectListItems?: (companyId: string, pageSize: number, page: number, filter: string,\r\n ignoreUserIds: string[], ignoreUserCodes: string[], activityState: number, ignoreRecordUserConnected: boolean,\r\n doNotIgnoreRecordUserConnectedUserCode: string, sortColumn: string, sortOrderIsAsc: boolean) => Promise\r\n}\r\n\r\nexport interface ISelectUserListState extends ISelectUserDialogState {\r\n company: ICompanyMenuItem;\r\n}\r\n\r\nexport class SelectUserList extends React.Component {\r\n constructor(props: ISelectUserListProps) {\r\n super(props);\r\n this.state = {\r\n intialized: false,\r\n company: props.companies.length ? props.companies[0] : null,\r\n selectedId: !props.multiSelect && props.selectedIds && props.selectedIds.length > 0 ? props.selectedIds[0] : null,\r\n checkedIds: props.multiSelect && props.selectedIds ? props.selectedIds : [],\r\n selectedItems: []\r\n };\r\n }\r\n\r\n handleSetInitialized = (intialized: boolean) => {\r\n this.setState({\r\n intialized\r\n });\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[], selectedItems: IUserListItem[]) => {\r\n const state = this.state;\r\n this.setState({\r\n selectedId,\r\n checkedIds,\r\n selectedItems\r\n });\r\n if (!state.company) return;\r\n this.props.onSelect(selectedItems, state.company.id);\r\n };\r\n\r\n handleCompanyChange = (companyId: string) => {\r\n const props = this.props;\r\n const company = props.companies.find(i => i.id === companyId);\r\n if (!company) return;\r\n this.setState({\r\n company\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.company) return null;\r\n return (\r\n <>\r\n {props.companies.length > 1 &&\r\n
\r\n {Translations.SelectCompany}\r\n }\r\n selectMode={true}\r\n tooltip={Translations.SelectCompany}\r\n actions={props.companies.map((company) => {\r\n return {\r\n title: ,\r\n textTitle: company.name,\r\n selected: company.id === state.company.id,\r\n onClick: () => this.handleCompanyChange(company.id)\r\n };\r\n })}\r\n />\r\n
\r\n }\r\n {!!props.title &&\r\n {props.title}\r\n }\r\n \r\n \r\n );\r\n }\r\n}","// InstantMessageChannelEditNewDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, FormControlLabel, Grid, MenuItem, Radio, Select, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { FileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { INumberTitle, NumberTitle } from \"ui/Scripts/source/models/common/numberTitle\";\r\nimport { InstantMessageChannelMessageExpirationTime, InstantMessageChannelUserActiveState, InstantMessageChannelUserType } from \"ui/Scripts/source/models/enums\";\r\nimport { IInstantMessageChannelAddedUser, InstantMessageChannelAddedUser } from \"ui/Scripts/source/models/instantMessage/instantMessageChannelAddedUser\";\r\nimport { InstantMessageChannelHelper } from \"ui/Scripts/source/models/instantMessage/instantMessageChannelHelper\";\r\nimport { IInstantMessageChannelNew } from \"ui/Scripts/source/models/instantMessage/instantMessageChannelNew\";\r\nimport { IInstantMessageChannelEditUserItem, InstantMessageChannelEditUserItem } from \"ui/Scripts/source/models/instantMessage/instantMessageChannelUserEditItem\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as instantMessageChannelService from \"../../../models/services/instantMessageChannelService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { IUserListItem } from \"../../../models/user/userListItem\";\r\nimport { UserListItems } from \"../../../models/user/userListItems\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { FormSectionTitle } from \"../../framework/Form/FormSectionTitle\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { SelectUserList } from \"../../user/SelectUserList/SelectUserList\";\r\nimport { IInstantMessageChannelSaveState, InstantMessageChannelEditDialog } from \"../InstantMessageChannelEditDialog\";\r\nimport { InstantMessageChannelEditDialogUserList } from \"../InstantMessageChannelEditDialogUserList\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nconst enum NewInstantMessageChannelType {\r\n OneToOne = \"1\",\r\n Internal = \"2\",\r\n External = \"3\"\r\n}\r\n\r\nconst enum NewInstantMessageChannelDialogPage {\r\n Selection = \"1\",\r\n General = \"2\",\r\n Users = \"3\",\r\n User = \"4\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n//InstantMessageChannelEditNewDialog\r\nexport interface IInstantMessageChannelEditNewDialogProp {\r\n classes?: string;\r\n sessionState: ISessionState;\r\n companyId: string;\r\n onOk: (instantMessageChannelId: string) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IInstantMessageChannelEditNewDialogState extends IInstantMessageChannelSaveState {\r\n page: NewInstantMessageChannelDialogPage;\r\n channelNew: IInstantMessageChannelNew;\r\n // Selection\r\n channelType: NewInstantMessageChannelType;\r\n // General\r\n messageExpirationTimes: INumberTitle[];\r\n picture: string;\r\n // Users\r\n channelUsers: IInstantMessageChannelEditUserItem[];\r\n users: IUserListItem[]\r\n}\r\n\r\nexport class InstantMessageChannelEditNewDialog extends React.Component {\r\n getStateFromProps = (props: IInstantMessageChannelEditNewDialogProp): IInstantMessageChannelEditNewDialogState => {\r\n return {\r\n page: NewInstantMessageChannelDialogPage.Selection,\r\n channelNew: null,\r\n // Selection\r\n channelType: NewInstantMessageChannelType.OneToOne,\r\n // General\r\n messageExpirationTimes: [\r\n NumberTitle.createNumberTitle(InstantMessageChannelMessageExpirationTime.Quarter, \"3 \" + Translations.Months),\r\n NumberTitle.createNumberTitle(InstantMessageChannelMessageExpirationTime.HalfYear, \"6 \" + Translations.Months),\r\n NumberTitle.createNumberTitle(InstantMessageChannelMessageExpirationTime.Year, \"12 \" + Translations.Months),\r\n NumberTitle.createNumberTitle(InstantMessageChannelMessageExpirationTime.None, Translations.Unlimited)\r\n ],\r\n companyId: props.companyId,\r\n id: \"\",\r\n code: \"\",\r\n file: null,\r\n picture: \"\",\r\n resetPicture: false,\r\n comment: \"\",\r\n messageExpirationTime: 0,\r\n internalChannel: true,\r\n activeState: 1,\r\n archivingType: 0,\r\n archivingRemoveDate: \"\",\r\n rowId: \"\",\r\n // Users\r\n channelUsers: [],\r\n users: [],\r\n };\r\n };\r\n\r\n constructor(props: IInstantMessageChannelEditNewDialogProp) {\r\n super(props);\r\n this.state = this.getStateFromProps(props);\r\n //this.orgStateHash = this.getHashFromState(this.state);\r\n }\r\n\r\n async componentDidMount(): Promise {\r\n const props = this.props;\r\n const channelNew = await AppUtils.callService(() => instantMessageChannelService.getInstantMessageChannelNew(props.companyId), false, false);\r\n if (!channelNew) return;\r\n this.setState({\r\n channelNew,\r\n messageExpirationTime: channelNew.instantMessageChannel.messageExpirationTime,\r\n internalChannel: channelNew.instantMessageChannel.internalChannel,\r\n activeState: channelNew.instantMessageChannel.activeState\r\n });\r\n }\r\n\r\n // #region Selection\r\n handleChangeChannelType = (checked: boolean, channelType: NewInstantMessageChannelType) => {\r\n if (!checked) return;\r\n this.setState({\r\n channelType,\r\n internalChannel: channelType !== NewInstantMessageChannelType.External,\r\n });\r\n };\r\n // #endregion Selection\r\n\r\n // #region General\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"xts\") {\r\n this.setState({ code: value });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n } else if (name === \"messageExpirationTime\") {\r\n this.setState({ messageExpirationTime: value.toInteger() });\r\n }\r\n };\r\n\r\n handleSetPicture = async (file: File) => {\r\n if (!file) return;\r\n const attachment = await FileAttachment.fileToFileAttachment(file, 0);\r\n if (!attachment) return;\r\n if (!AppUtils.validateFileAttachment(attachment)) return;\r\n this.setState({ file: attachment, resetPicture: false, picture: attachment.thumbnail });\r\n };\r\n\r\n handleRemovePicture = () => {\r\n this.setState({ file: null, resetPicture: true, picture: \"\" });\r\n };\r\n\r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (state.channelType !== NewInstantMessageChannelType.OneToOne && !state.code) {\r\n AppUtils.showErrorMessage(Translations.NameMustBeDefined);\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n // #endregion General\r\n\r\n // #region Users\r\n handleUsersRemoved = (ids: string[]) => {\r\n if (!ids || ids.length < 1) return;\r\n this.setState({\r\n channelUsers: this.state.channelUsers.filter(i => ids.indexOf(i.id) < 0)\r\n });\r\n };\r\n \r\n modifyUsers = (companyId :string, newUsers: IUserListItem[], addedUsers: IInstantMessageChannelAddedUser[], removeUsers: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n const channelUsers = removeUsers ? [] : state.channelUsers.slice(0);\r\n const users = removeUsers ? [] : state.users.slice(0);\r\n let internalChannel = removeUsers ? true : state.internalChannel;\r\n if (newUsers && newUsers.length > 0) {\r\n for (const newUser of newUsers) {\r\n const addedUser = addedUsers.find(i => i.userId === newUser.id);\r\n if (!addedUser) continue;\r\n const newChannelUser = new InstantMessageChannelEditUserItem();\r\n newChannelUser.id = addedUser.id;\r\n newChannelUser.companyId = companyId;\r\n newChannelUser.userType = InstantMessageChannelUserType.User;\r\n newChannelUser.userCode = newUser.code;\r\n newChannelUser.firstName = newUser.firstName;\r\n newChannelUser.lastName = newUser.lastName;\r\n newChannelUser.picture = newUser.picture;\r\n newChannelUser.activeState = addedUser.activeState;\r\n channelUsers.push(newChannelUser);\r\n users.push(newUser);\r\n if (internalChannel && newChannelUser.companyId !== props.companyId) {\r\n internalChannel = false;\r\n }\r\n }\r\n }\r\n this.setState({\r\n channelUsers,\r\n users,\r\n internalChannel\r\n });\r\n };\r\n\r\n handleUsersAdded = (companyId :string, newUsers: IUserListItem[], addedUsers: IInstantMessageChannelAddedUser[]) => {\r\n this.modifyUsers(companyId, newUsers, addedUsers, false);\r\n };\r\n\r\n handleUserSelect = async (users: IUserListItem[], companyId :string) => {\r\n if (!users || users.length < 1) return;\r\n this.modifyUsers(companyId, users, users.map(i => InstantMessageChannelAddedUser.createInstantMessageChannelAddedUser(Base.getGuid(), i.id, InstantMessageChannelUserActiveState.Invited)), true);\r\n };\r\n \r\n handleGetUserSelectListItems = (companyId: string, pageSize: number, page: number, filter: string,\r\n ignoreUserIds: string[], ignoreUserCodes: string[], activityState: number, ignoreRecordUserConnected: boolean,\r\n doNotIgnoreRecordUserConnectedUserCode: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return instantMessageChannelService.instantMessageChannelGetSelectUserListItems(this.props.companyId, Base.emptyGuid, companyId, pageSize, page, filter,\r\n ignoreUserIds, ignoreUserCodes, activityState, ignoreRecordUserConnected, doNotIgnoreRecordUserConnectedUserCode, sortColumn, sortOrderIsAsc);\r\n };\r\n // #endregion Users\r\n \r\n handleMoveToPreviousPage = () => {\r\n const state = this.state;\r\n const page = state.page === NewInstantMessageChannelDialogPage.Users\r\n ? NewInstantMessageChannelDialogPage.General\r\n : NewInstantMessageChannelDialogPage.Selection;\r\n const removeUsers = page === NewInstantMessageChannelDialogPage.Selection;\r\n const channelUsers = removeUsers ? [] : state.channelUsers.slice(0);\r\n const users = removeUsers ? [] : state.users.slice(0);\r\n this.setState({\r\n page,\r\n channelUsers,\r\n users\r\n });\r\n };\r\n\r\n handleMoveToNextPage = async () => {\r\n const state = this.state;\r\n if (state.page === NewInstantMessageChannelDialogPage.General) {\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return;\r\n }\r\n const page = state.page === NewInstantMessageChannelDialogPage.Selection\r\n ? (state.channelType === NewInstantMessageChannelType.OneToOne\r\n ? NewInstantMessageChannelDialogPage.User\r\n : NewInstantMessageChannelDialogPage.General)\r\n : NewInstantMessageChannelDialogPage.Users;\r\n const internalChannel = state.page === NewInstantMessageChannelDialogPage.Selection\r\n ? state.channelType !== NewInstantMessageChannelType.External\r\n : state.internalChannel;\r\n this.setState({\r\n page,\r\n internalChannel\r\n });\r\n };\r\n\r\n handleSave = async () => {\r\n const state = this.state;\r\n const props = this.props;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return;\r\n const result = await InstantMessageChannelEditDialog.saveInstantMessageChannel({ ...state, companyId: props.companyId }, !state.code ? Translations.NewInstantMessageChannel : null, state.users.map(i => i.id));\r\n if (!result) return;\r\n props.onOk(this.state.id);\r\n };\r\n\r\n handleCancel = async () => {\r\n this.props.onCancel();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.channelNew) return null;\r\n const hasPartners = state.channelNew.companies.length > 1;\r\n const nextButtonMode = state.page !== NewInstantMessageChannelDialogPage.User && state.page !== NewInstantMessageChannelDialogPage.Users;\r\n return (\r\n \r\n {state.page === NewInstantMessageChannelDialogPage.Selection &&\r\n <>\r\n \r\n \r\n \r\n \r\n {Translations.SelectInstantMessageChannelType}\r\n \r\n \r\n \r\n \r\n this.handleChangeChannelType(checked, NewInstantMessageChannelType.OneToOne)}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n this.handleChangeChannelType(checked, NewInstantMessageChannelType.Internal)}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {state.page === NewInstantMessageChannelDialogPage.General &&\r\n <>\r\n \r\n \r\n \r\n AppUtils.showErrorMessage(message)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {state.page === NewInstantMessageChannelDialogPage.Users &&\r\n \r\n }\r\n {state.page === NewInstantMessageChannelDialogPage.User &&\r\n i.id)}\r\n showUserGroupsCompanyId={props.companyId}\r\n onSelect={this.handleUserSelect}\r\n onGetUserSelectListItems={this.handleGetUserSelectListItems}\r\n />\r\n }\r\n \r\n }\r\n buttons={[\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: this.handleCancel },\r\n { title: Translations.Previous, variant: \"outlined\", onClick: state.page === NewInstantMessageChannelDialogPage.Selection ? null : this.handleMoveToPreviousPage },\r\n {\r\n title: nextButtonMode ? Translations.Next : Translations.Save,\r\n variant: \"confirmation\",\r\n onClick: nextButtonMode ? this.handleMoveToNextPage : this.handleSave\r\n },\r\n ]}\r\n onClose={this.handleCancel}/>\r\n );\r\n }\r\n}","// InstantMessageList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Chip, lighten } from \"@mui/material\";\r\nimport downloadjs from \"downloadjs\";\r\nimport * as React from \"react\";\r\nimport { ConfirmationDialogResult, UserType } from \"ui/Scripts/source/models/enums\";\r\nimport { IInstantMessageListItem } from \"ui/Scripts/source/models/instantMessage/instantMessageListItem\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as attachmentService from \"../../../models/services/attachmentService\";\r\nimport * as instantMessageService from \"../../../models/services/instantMessageService\";\r\nimport MessageListLine from \"../../framework/Message/MessageLine/MessageLine\";\r\n\r\n// InstantMessageListLine\r\nexport interface IInstantMessageListLineProp {\r\n observer: IntersectionObserver;\r\n channelId: string;\r\n channelIsReadOnly: boolean;\r\n userCode: string;\r\n userIsChannelAdmin: boolean;\r\n selectedId: string;\r\n item: IInstantMessageListItem;\r\n onSetSelected: (id: string) => void;\r\n onReplyToInstantMessage: (item: IInstantMessageListItem) => void;\r\n}\r\n\r\nexport class InstantMessageListLine extends React.Component {\r\n private lineDiv = React.createRef();\r\n\r\n componentDidMount(): void {\r\n const props = this.props;\r\n if (!props.observer || !this.lineDiv.current || !props.item || props.item.isTitle || props.item.modifyUser.code === props.userCode || props.item.modifyUser.isRemoved()) return;\r\n props.observer.observe(this.lineDiv.current);\r\n }\r\n\r\n componentWillUnmount(): void {\r\n const props = this.props;\r\n if (!props.observer || !this.lineDiv.current) return;\r\n props.observer.unobserve(this.lineDiv.current);\r\n }\r\n\r\n handleMessageClick = () => {\r\n const props = this.props;\r\n props.onSetSelected(props.item.id);\r\n };\r\n\r\n handleAttachmentClick = async (id: string) => {\r\n if (!id) return;\r\n const props = this.props;\r\n const attachment = props.item.attachments.find(i => i.id === id);\r\n if (!attachment) return;\r\n if (attachment.file) {\r\n downloadjs(attachment.file, attachment.name);\r\n return;\r\n }\r\n if (attachment.isNew()) return;\r\n const fileName = await AppUtils.callService(() => attachmentService.getAttachment(id));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.AttachmentParameterDownloaded, fileName));\r\n };\r\n\r\n handleReplyClick = async () => {\r\n const props = this.props;\r\n props.onReplyToInstantMessage(props.item);\r\n };\r\n\r\n handleDeleteClick = async () => {\r\n const props = this.props;\r\n if (await AppUtils.showConfirmationDialog(Translations.DoYouReallyWantToRemoveThisInstantMessage) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n AppUtils.callService(() => instantMessageService.removeInstantMessage(props.item.id));\r\n }\r\n };\r\n\r\n handleRestoreClick = async () => {\r\n const props = this.props;\r\n if (await AppUtils.showConfirmationDialog(Translations.DoYouReallyWantToRestoreThisInstantMessage) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n AppUtils.callService(() => instantMessageService.restoreInstantMessage(props.item.id));\r\n }\r\n };\r\n \r\n render() {\r\n const props = this.props;\r\n const item = props.item;\r\n if (item.isTitle) {\r\n return (\r\n \r\n ({ bgcolor: lighten(theme.palette.info.light, 0.9), color: theme.palette.getContrastText(lighten(theme.palette.info.light, 0.9)) })} />\r\n \r\n );\r\n }\r\n const isDeleted = item.isDeleted();\r\n const modifyUserIsDeleted = item.modifyUser.isRemoved();\r\n const isMyMessage = props.userCode === item.modifyUser.code;\r\n const replyUserIsDeleted = item.replyToInstantMessage ? item.replyToInstantMessage.modifyUser.userType === UserType.Removed : false;\r\n return (\r\n \r\n );\r\n }\r\n}","// InstantMessageList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ToolButtonDropdown } from \"ui/Scripts/source/components/framework/Button/ToolButtonDropdown\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { FileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { ConfirmationDialogResult, FileType, InstantMessageReadState } from \"ui/Scripts/source/models/enums\";\r\nimport { IInstantMessageChannelItem } from \"ui/Scripts/source/models/instantMessage/instantMessageChannelItem\";\r\nimport { IInstantMessageListItem, InstantMessageListItem } from \"ui/Scripts/source/models/instantMessage/instantMessageListItem\";\r\nimport { SignalRConnectionManager } from \"ui/Scripts/source/models/signalR/signalRConnectionManager\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { SaveAttachmentBase64 } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/saveAttachmentBase64\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as instantMessageService from \"../../../models/services/instantMessageService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { StoreUtils } from \"../../../models/store/storeUtils\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { PageListActionContainer } from \"../../framework/List/PageListActionContainer\";\r\nimport { MessageListContainer } from \"../../framework/Message/MessageListContainer\";\r\nimport { NewMessage } from \"../../framework/Message/NewMessage\";\r\nimport { InstantMessageListLine } from \"../InstantMessageListLine\";\r\nimport { List } from \"source/components/framework/List/List\";\r\nimport { AppMoreIcon } from \"source/components/framework/Icon/AppMoreIcon\";\r\n\r\n// ChannelInstantMessageNew\r\nexport interface IChannelInstantMessageNewProp {\r\n sessionState: ISessionState;\r\n maxInstantMessageAttachmentSize: number;\r\n companyId: string;\r\n channelId: string;\r\n channelIsReadOnly: boolean;\r\n userCode: string;\r\n replyItem: IInstantMessageListItem;\r\n onInstantMessageSaved: (item: IInstantMessageListItem) => void;\r\n onDropAttachments: (e: any) => Promise;\r\n onDragOverAttachments: (e: any) => void;\r\n onDragEnterAttachments: (e: any) => void;\r\n onDragLeaveAttachments: (e: any) => void;\r\n onInputRowCountChanged: (rowCount: number) => void;\r\n onReplyContainerSizeChanged: (height: number) => void;\r\n onRemoveReply: () => void;\r\n getFileAttachment: (blob: any, category: number) => Promise;\r\n}\r\n\r\ninterface IChannelInstantMessageNewState {\r\n content: string;\r\n attachments: FileAttachment[];\r\n sending: boolean;\r\n}\r\n\r\nexport class ChannelInstantMessageNew extends React.Component {\r\n private inputElement: HTMLTextAreaElement;\r\n private inputHiddenElement: HTMLTextAreaElement;\r\n private rowCount = 1;\r\n private replyContainerDivSizeHash: string;\r\n private replyContainerDiv: HTMLDivElement;\r\n private replyContainerResizeObserver: ResizeObserver;\r\n\r\n constructor(props: IChannelInstantMessageNewProp) {\r\n super(props);\r\n this.state = {\r\n content: \"\",\r\n attachments: [],\r\n sending: false\r\n };\r\n }\r\n\r\n updateReployContainerHeight = () => {\r\n // const replyContainerRect = this.replyContainerDiv.getBoundingClientRect();\r\n // this.props.onReplyContainerSizeChanged(replyContainerRect.height);\r\n };\r\n\r\n updateReplyContainerSize = Base.debounce((obj: ChannelInstantMessageNew) => {\r\n // if (!this.replyContainerDiv) return;\r\n // const replyContainerRect = this.replyContainerDiv.getBoundingClientRect();\r\n // const replyContainerDivSizeHash = replyContainerRect.width.toString(10) + \"#\" + replyContainerRect.height.toString(10);\r\n // if (replyContainerDivSizeHash === obj.replyContainerDivSizeHash) return;\r\n // obj.props.onReplyContainerSizeChanged(replyContainerRect.height);\r\n }, 25);\r\n\r\n updateReployContainerResizeHandler = () => {\r\n this.updateReplyContainerSize(this);\r\n };\r\n\r\n componentDidMount(): void {\r\n this.updateReployContainerHeight();\r\n this.replyContainerResizeObserver = null;\r\n if (this.replyContainerDiv) {\r\n this.replyContainerResizeObserver = new ResizeObserver(this.updateReployContainerResizeHandler);\r\n this.replyContainerResizeObserver.observe(this.replyContainerDiv);\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps: IChannelInstantMessageNewProp, prevState: IChannelInstantMessageNewState) {\r\n const props = this.props;\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n const prevChannelId = prevProps.channelId;\r\n const channelId = props.channelId;\r\n if (companyId === prevCompanyId && prevChannelId === channelId) return;\r\n this.setState({\r\n content: \"\",\r\n attachments: [],\r\n });\r\n this.props.onRemoveReply();\r\n }\r\n\r\n getSendingDisabled = (): boolean => {\r\n const state = this.state;\r\n return state.sending || !state.content && state.attachments.length < 1;\r\n };\r\n\r\n getSaveDataFromState = async (props: IChannelInstantMessageNewProp, state: IChannelInstantMessageNewState): Promise => {\r\n const result = new SaveDataObj();\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"channelId\", props.channelId);\r\n result.append(\"replyItemId\", props.replyItem ? props.replyItem.id : null);\r\n result.append(\"content\", state.content);\r\n result.append(\"attachments\", await SaveAttachmentBase64.fromFileAttachments(state.attachments.filter(i => !!i.file)));\r\n return result;\r\n };\r\n\r\n updateSavedMessageToList = (id: string) => {\r\n const props = this.props;\r\n const state = this.state;\r\n const newMessage = new InstantMessageListItem();\r\n newMessage.id = id;\r\n newMessage.channelId = props.channelId;\r\n newMessage.content = state.content;\r\n newMessage.modifyUser = StoreUtils.getNowModifyUser();\r\n newMessage.attachments = state.attachments.slice(0);\r\n if (props.replyItem) {\r\n newMessage.replyToInstantMessage = new InstantMessageListItem(props.replyItem);\r\n }\r\n props.onInstantMessageSaved(newMessage);\r\n };\r\n\r\n updateInputRowCount = (rowCount: number) => {\r\n const defaultClientHeight = 38;\r\n const defaultHeight = defaultClientHeight + 2;\r\n if (this.rowCount !== rowCount) {\r\n if (rowCount > 1) {\r\n this.inputElement.style.height = (defaultHeight + ((rowCount - 1) * 24)).toString(10) + \"px\";\r\n } else {\r\n this.inputElement.style.removeProperty(\"height\");\r\n }\r\n this.props.onInputRowCountChanged(rowCount);\r\n this.rowCount = rowCount;\r\n }\r\n };\r\n\r\n saveInstantMessage = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (this.getSendingDisabled()) return;\r\n this.setState({ sending: true });\r\n try {\r\n const saveData = await this.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = await AppUtils.callService(() => instantMessageService.saveInstantMessage(saveData.obj), false, true);\r\n if (!result) return null;\r\n this.updateSavedMessageToList(result.id);\r\n this.setState({\r\n content: \"\",\r\n attachments: [],\r\n });\r\n this.updateInputRowCount(1);\r\n } finally {\r\n this.setState({ sending: false });\r\n }\r\n };\r\n\r\n handleChange = (event) => {\r\n this.setState({ content: event.target.value });\r\n };\r\n\r\n handleKeyPress = (e) => {\r\n if (e.key === \"Enter\") {\r\n e.preventDefault();\r\n this.saveInstantMessage();\r\n return false;\r\n }\r\n };\r\n\r\n // #region Attachments\r\n handleAddAttachment = async (fileList: FileList) => {\r\n const state = this.state;\r\n const attachments = await FileAttachment.addFileListToFileAttachments(state.attachments, fileList, 0);\r\n if (attachments.length < 1) return;\r\n for (const attachment of attachments) {\r\n if (!AppUtils.validateFileAttachment(attachment, Translations.MaximumSizeOfInstantMessageAttachmentIsParameterMB, this.props.maxInstantMessageAttachmentSize)) return;\r\n }\r\n if (!AppUtils.validateFileAttachments(attachments)) return;\r\n this.setState({\r\n attachments\r\n });\r\n };\r\n\r\n handleAddAttachments = (newAttachments: FileAttachment[]) => {\r\n if (!newAttachments || newAttachments.length < 1) return;\r\n const attachments = this.state.attachments.slice(0);\r\n for (const newAttachment of newAttachments) {\r\n if (!newAttachment) return;\r\n attachments.push(newAttachment);\r\n }\r\n if (attachments.length < 1 || !AppUtils.validateFileAttachments(attachments)) return;\r\n this.setState({\r\n attachments\r\n });\r\n };\r\n\r\n handleSetAttachmentDropZone = (value: boolean) => {\r\n if (!this.inputElement) return;\r\n if (value) {\r\n this.inputElement.classList.add(\"draggingOver\");\r\n } else {\r\n this.inputElement.classList.remove(\"draggingOver\");\r\n }\r\n };\r\n\r\n handleRemoveAttachment = async (id: string) => {\r\n const state = this.state;\r\n if (!id) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveAttachmentParameter, state.attachments.find(x => x.id === id)?.name), false) === ConfirmationDialogResult.No) return;\r\n const attachments = state.attachments.filter(i => i.id !== id);\r\n this.setState({\r\n attachments\r\n });\r\n };\r\n // #endregion Attachments\r\n \r\n handleTextAreaInput = (e: any) => {\r\n this.inputHiddenElement.value = this.inputElement.value;\r\n this.inputHiddenElement.style.width = (this.inputElement.clientWidth + 2) + \"px\";\r\n window.setTimeout(() => {\r\n const rowCount = Math.min(Math.ceil(this.inputHiddenElement.scrollHeight / this.inputHiddenElement.clientHeight), 3);\r\n this.updateInputRowCount(rowCount);\r\n }, 0);\r\n };\r\n\r\n render() {\r\n const state = this.state;\r\n const props = this.props;\r\n const imageAttachments = state.attachments.filter(i => i.type === FileType.Image);\r\n const fileAttachments = state.attachments.filter(i => i.type !== FileType.Image);\r\n // const replyUserIsDeleted = props.replyItem ? props.replyItem.modifyUser.userType === UserType.Removed : false;\r\n return (\r\n \r\n this.handleChange(e)}\r\n onSend={this.saveInstantMessage}\r\n onAddAttachment={this.handleAddAttachment}\r\n onRemoveAttachment={this.handleRemoveAttachment}\r\n onRemoveReply={props.onRemoveReply}\r\n />\r\n \r\n );\r\n }\r\n}\r\n\r\n// ChannelInstantMessages\r\nconst instantMessageListPageSize = 20;\r\n\r\nexport interface IChannelInstantMessagesProp {\r\n sessionState: ISessionState;\r\n maxInstantMessageAttachmentSize: number;\r\n companyId: string;\r\n channelId: string;\r\n channelIsReadOnly: boolean;\r\n userCode: string;\r\n userIsChannelAdmin: boolean;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n filterActive: boolean;\r\n onInstantMessageUpdated: (item: IInstantMessageListItem) => void;\r\n onInstantMessageChannelRemoved: (id: string) => void;\r\n onInstantMessageChannelUpdated: (item: IInstantMessageChannelItem) => void;\r\n onInstantMessageChannelSetHasUnreadMessagesOnList: (value: boolean) => void;\r\n}\r\n\r\ninterface IChannelInstantMessagesState {\r\n hasMore: boolean;\r\n isLoading: boolean;\r\n pageSize: number;\r\n page: number;\r\n selectedId: string;\r\n checkedIds: string[];\r\n items: IInstantMessageListItem[];\r\n replyItem: IInstantMessageListItem;\r\n}\r\n\r\nexport class ChannelInstantMessages extends React.Component {\r\n private containerDiv = React.createRef();\r\n private signalRConnectionManager: SignalRConnectionManager;\r\n private readReceiptProcessingIds: string[] = [];\r\n private readReceiptProcessedIds: string[] = [];\r\n private observer: IntersectionObserver;\r\n private channelInstantMessageNewRef = React.createRef();\r\n private newMessageRowCount = 1;\r\n private replyContainerHeight = 0;\r\n\r\n intersectionCallback = (entries: IntersectionObserverEntry[], observer: IntersectionObserver) => {\r\n for (const entry of entries) {\r\n if (!entry.isIntersecting || entry.intersectionRatio < 0.75) continue;\r\n const line = entry.target as HTMLDivElement;\r\n if (!line) continue;\r\n const id = line.getAttribute(\"data-id\");\r\n if (!id) return;\r\n const item = this.state.items.find(i => i.id === id);\r\n if (!item || item.isUserRead()) continue;\r\n const processing = this.readReceiptProcessingIds.indexOf(id) > -1;\r\n if (processing) continue;\r\n const processed = this.readReceiptProcessedIds.indexOf(id) > -1;\r\n if (processed) continue;\r\n this.readReceiptProcessingIds.push(id);\r\n instantMessageService.sendInstantMessageReadReceipts([id])\r\n .then(result => {\r\n if (result) {\r\n this.readReceiptProcessedIds.push(id);\r\n }\r\n })\r\n .finally(() => {\r\n this.readReceiptProcessingIds = this.readReceiptProcessingIds.filter(i => i !== id);\r\n });\r\n }\r\n };\r\n\r\n createObserver = () => {\r\n this.observer = new IntersectionObserver(this.intersectionCallback, {\r\n root: this.containerDiv.current,\r\n rootMargin: \"0px\",\r\n threshold: 0.9\r\n });\r\n };\r\n\r\n removeObserver = () => {\r\n if (!this.observer) return;\r\n this.observer.disconnect();\r\n };\r\n\r\n constructor(props: IChannelInstantMessagesProp) {\r\n super(props);\r\n this.state = {\r\n hasMore: true,\r\n isLoading: false,\r\n pageSize: instantMessageListPageSize,\r\n page: 1,\r\n selectedId: null,\r\n checkedIds: [],\r\n items: [],\r\n replyItem: null\r\n };\r\n }\r\n\r\n getIsFilteredList = (): boolean => {\r\n return !!this.props.filter;\r\n };\r\n\r\n scrollToBottom = () => {\r\n this.containerDiv.current?.scrollTo({\r\n top: this.containerDiv.current?.scrollHeight,\r\n left: 0,\r\n behavior: \"auto\"\r\n });\r\n };\r\n\r\n scrollToId = (id: string) => {\r\n if (!id) return;\r\n const elements = this.containerDiv.current?.getElementsByClassName(\"id\" + id);\r\n if (elements.length > 0 && !Base.isNullOrUndefined(elements[0])) {\r\n const y = Math.max((elements[0] as HTMLDivElement).offsetTop - 100, 0);\r\n this.containerDiv.current?.scrollTo({\r\n top: y,\r\n left: 0,\r\n behavior: \"auto\"\r\n });\r\n }\r\n };\r\n\r\n addTitlesToList = (items: IInstantMessageListItem[]): IInstantMessageListItem[] => {\r\n const result: IInstantMessageListItem[] = [];\r\n const listItems = items.filter(i => !i.isTitle);\r\n if (listItems.length < 1) return result;\r\n const yesterdayDayStr = Base.timeToDateStr(new Date().addDays(-1).getTime());\r\n const todayDayStr = Base.timeToDateStr(new Date().getTime());\r\n let currentDayStr = todayDayStr;\r\n for (let i = listItems.length - 1; i >= 0; i --) {\r\n const item = listItems[i];\r\n const itemDayStr = Base.timeToDateStr(item.modifyUser.date);\r\n if (currentDayStr !== itemDayStr) {\r\n result.unshift(InstantMessageListItem.createTitleItem(itemDayStr === todayDayStr\r\n ? Translations.Today\r\n : (itemDayStr === yesterdayDayStr\r\n ? Translations.Yesterday\r\n : Base.timeToWeekdayStr(item.modifyUser.date) + \" \" + itemDayStr)));\r\n currentDayStr = itemDayStr;\r\n }\r\n result.unshift(item);\r\n }\r\n return result;\r\n };\r\n\r\n searchItems = async (pageSize: number, page: number, resetItems: boolean, refreshList: boolean, scrollToBottom = true) => {\r\n const props = this.props;\r\n if (!props.companyId || !props.channelId) return;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => instantMessageService.getInstantMessageListItems(props.companyId, props.channelId, !refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1,\r\n props.filter, props.sortColumn, props.sortOrderIsAsc), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const items = List.getListItems(this.state.items, this.state.selectedId, this.state.checkedIds, result.items, resetItems, refreshList);\r\n this.updateHasUnreadMessagesOnList(items.items);\r\n this.setState({\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n items: this.addTitlesToList(items.items),\r\n selectedId: items.selectedId,\r\n checkedIds: items.checkedIds,\r\n }, () => {\r\n if (scrollToBottom) {\r\n this.scrollToBottom();\r\n } else {\r\n this.scrollToId(result.items.length > 0 ? result.items[0].id : \"\");\r\n }\r\n });\r\n };\r\n\r\n handleSearchMessages = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, !nextPage, false, false);\r\n };\r\n\r\n handleScrollSub = Base.debounce((obj: ChannelInstantMessages) => {\r\n const state = obj.state;\r\n const props = obj.props;\r\n if (state.isLoading || !state.hasMore) return;\r\n if (obj.containerDiv.current?.scrollTop < 5) {\r\n obj.handleSearchMessages(props.sortColumn, props.sortOrderIsAsc, true);\r\n }\r\n }, 100);\r\n \r\n handleScroll = (event) => {\r\n this.handleScrollSub(this);\r\n };\r\n\r\n updateHasUnreadMessagesOnList = (items: IInstantMessageListItem[]) => {\r\n const props = this.props;\r\n props.onInstantMessageChannelSetHasUnreadMessagesOnList(items.findIndex(i => !i.isTitle && !i.isDeleted() && i.modifyUser.code !== props.userCode && !i.modifyUser.isRemoved() && !i.isUserRead()) > -1);\r\n };\r\n\r\n updateInstantMessageItemToList = (item: IInstantMessageListItem) => {\r\n const props = this.props;\r\n props.onInstantMessageUpdated(item);\r\n if (item.channelId !== props.channelId || !!props.filter) return;\r\n const oldItem = this.state.items.find(i => i.id === item.id);\r\n const isNew = !oldItem || oldItem.isNew();\r\n const items = this.state.items.filter(i => i.id !== item.id);\r\n const readReceiptSendItems = items.filter(i => this.readReceiptProcessedIds.indexOf(i.id) > -1);\r\n for (const readReceiptSendItem of readReceiptSendItems) {\r\n readReceiptSendItem.readState = InstantMessageReadState.UserRead;\r\n }\r\n items.push(item);\r\n InstantMessageListItem.sortInstantMessageListItems(items, props.sortColumn, props.sortOrderIsAsc);\r\n this.updateHasUnreadMessagesOnList(items);\r\n this.setState({\r\n items: this.addTitlesToList(items),\r\n replyItem: null\r\n }, () => {\r\n if (!isNew) return;\r\n window.setTimeout(() => {\r\n this.scrollToBottom();\r\n }, 50);\r\n });\r\n };\r\n\r\n handleInstantMessageChannelUpdated = (item: IInstantMessageChannelItem) => {\r\n const props = this.props;\r\n props.onInstantMessageChannelUpdated(item);\r\n this.updateHasUnreadMessagesOnList(this.state.items);\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.containerDiv.current?.addEventListener(\"scroll\", this.handleScroll);\r\n //Observer\r\n this.createObserver();\r\n //Search\r\n this.searchItems(state.pageSize, state.page, false, false);\r\n //SignalR\r\n this.signalRConnectionManager = new SignalRConnectionManager();\r\n this.signalRConnectionManager.openConnection(appConfig.rootUrl, {\r\n onUpdateInstantMessageListLine: this.updateInstantMessageItemToList,\r\n onRemoveInstantMessageChannel: this.props.onInstantMessageChannelRemoved,\r\n onUpdateInstantMessageChannel: this.handleInstantMessageChannelUpdated\r\n });\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this.containerDiv.current?.removeEventListener(\"scroll\", this.handleScroll);\r\n //SignalR\r\n this.signalRConnectionManager.closeConnection();\r\n //Observer\r\n this.removeObserver();\r\n }\r\n\r\n componentDidUpdate(prevProps: IChannelInstantMessagesProp, prevState: IChannelInstantMessagesState) {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n const prevChannelId = prevProps.channelId;\r\n const channelId = props.channelId;\r\n const prevFilter = prevProps.filter ? prevProps.filter : \"\";\r\n const filter = props.filter ? props.filter : \"\";\r\n const prevSortColumn = prevProps.sortColumn ? prevProps.sortColumn : \"\";\r\n const sortColumn = props.sortColumn ? props.sortColumn : \"\";\r\n const prevSortOrderIsAsc = prevProps.sortOrderIsAsc ? prevProps.sortOrderIsAsc : false;\r\n const sortOrderIsAsc = props.sortOrderIsAsc ? props.sortOrderIsAsc : false;\r\n if (companyId === prevCompanyId && prevChannelId === channelId && prevFilter === filter && prevSortColumn === sortColumn && prevSortOrderIsAsc === sortOrderIsAsc) return;\r\n this.searchItems(state.pageSize, 1, true, false);\r\n }\r\n\r\n handleSetSelected = (id: string) => {\r\n if (!id) return;\r\n this.setState({\r\n selectedId: id\r\n });\r\n };\r\n\r\n handleReplyToInstantMessage = (item: IInstantMessageListItem) => {\r\n this.setState({\r\n replyItem: item\r\n });\r\n };\r\n\r\n // #region drag and drop\r\n getFileAttachment = async (blob: any, category: number): Promise => {\r\n const attachment = await (blob instanceof File\r\n ? FileAttachment.fileToFileAttachment(blob, category)\r\n : FileAttachment.blobToFileAttachment(blob, category));\r\n if (!attachment) return null;\r\n if (!AppUtils.validateFileAttachment(attachment, Translations.MaximumSizeOfInstantMessageAttachmentIsParameterMB, this.props.maxInstantMessageAttachmentSize)) return null;\r\n return attachment;\r\n };\r\n\r\n handleDropAttachments = async (e: any) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.channelInstantMessageNewRef.current.handleSetAttachmentDropZone(false);\r\n const attachments: FileAttachment[] = [];\r\n const files: any[] = [];\r\n if (e.dataTransfer.items) {\r\n [...e.dataTransfer.items].forEach((item, i) => {\r\n if (item.kind === \"file\") {\r\n files.push(item.getAsFile());\r\n }\r\n });\r\n } else {\r\n [...e.dataTransfer.files].forEach((file, i) => {\r\n files.push(file);\r\n });\r\n }\r\n if (files.length < 1) return;\r\n for (const file of files) {\r\n const attachment = await this.getFileAttachment(file, 0);\r\n if (!attachment) return;\r\n attachments.push(attachment);\r\n }\r\n if (attachments.length < 1 || !AppUtils.validateFileAttachments(attachments)) return;\r\n if (!this.channelInstantMessageNewRef || !this.channelInstantMessageNewRef.current) return;\r\n this.channelInstantMessageNewRef.current.handleAddAttachments(attachments);\r\n };\r\n \r\n handleDragEnterAttachments = (e: any) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n window.setTimeout(() => {\r\n this.channelInstantMessageNewRef.current.handleSetAttachmentDropZone(true);\r\n }, 100);\r\n };\r\n \r\n handleDragLeaveAttachments = (e: any) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.channelInstantMessageNewRef.current.handleSetAttachmentDropZone(false);\r\n };\r\n\r\n handleDragOverAttachments = (e: any) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n };\r\n // #endregion drag and drop\r\n\r\n handleInputRowCountChanged = (rowCount: number) => {\r\n const amount = 305 + (24 * (rowCount - 1)) + this.replyContainerHeight;\r\n if (rowCount <= 1 && this.replyContainerHeight < 1) {\r\n this.newMessageRowCount = 1;\r\n this.containerDiv.current?.style.removeProperty(\"height\");\r\n } else {\r\n this.newMessageRowCount = rowCount;\r\n this.containerDiv.current?.style.setProperty(\"height\", \"calc(100vh - \" + amount.toString(10) + \"px)\");\r\n }\r\n };\r\n \r\n handleReplyContainerSizeChanged = (height: number) => {\r\n //console.log(\"replyContainerHeight, newMessageRowCount\", height, this.newMessageRowCount)\r\n this.replyContainerHeight = height;\r\n this.handleInputRowCountChanged(this.newMessageRowCount);\r\n };\r\n\r\n handleRemoveReply = () => {\r\n this.setState({\r\n replyItem: null\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n
\r\n \r\n {state.items.map((item) =>\r\n \r\n ).reverse()}\r\n \r\n
\r\n {!props.channelIsReadOnly && !props.filterActive &&\r\n \r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\n// ChannelInstantMessageList\r\nexport interface IChannelInstantMessageListProp {\r\n sessionState: ISessionState;\r\n companyId?: string;\r\n userCode: string;\r\n channel: IInstantMessageChannelItem;\r\n dataId?: string;\r\n maxInstantMessageAttachmentSize: number;\r\n onEditChannel: (channelId: string) => void;\r\n onExitChannel: (channelId: string) => void;\r\n onInstantMessageUpdated: (item: IInstantMessageListItem) => void;\r\n onInstantMessageChannelRemoved: (id: string) => void;\r\n onInstantMessageChannelUpdated: (item: IInstantMessageChannelItem) => void;\r\n onInstantMessageChannelSetHasUnreadMessagesOnList: (value: boolean) => void;\r\n}\r\n\r\ninterface IChannelInstantMessageListState {\r\n channelId: string;\r\n channelIsReadOnly: boolean;\r\n userIsChannelAdmin: boolean;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n filter: string;\r\n filterActive: boolean;\r\n}\r\n\r\nexport class ChannelInstantMessageList extends React.Component {\r\n getChannelId = (props: IChannelInstantMessageListProp): string => {\r\n return props.channel ? props.channel.id : \"\";\r\n };\r\n\r\n getChannelIsReadOnly = (props: IChannelInstantMessageListProp): boolean => {\r\n return props.channel ? !props.channel.active : true;\r\n };\r\n \r\n getUserIsChannelAdmin = (props: IChannelInstantMessageListProp): boolean => {\r\n return props.channel ? props.channel.userIsAdmin : false;\r\n };\r\n\r\n constructor(props: IChannelInstantMessageListProp) {\r\n super(props);\r\n this.state = {\r\n channelId: this.getChannelId(props),\r\n channelIsReadOnly: this.getChannelIsReadOnly(props),\r\n userIsChannelAdmin: this.getUserIsChannelAdmin(props),\r\n sortColumn: \"modifyDate\",\r\n sortOrderIsAsc: false,\r\n filter: \"\",\r\n filterActive: false\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps: IChannelInstantMessageListProp, prevState: IChannelInstantMessageListState) {\r\n const props = this.props;\r\n const prevDataId = prevProps.dataId ? prevProps.dataId : \"\";\r\n const dataId = props.dataId ? props.dataId : \"\";\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n const prevChannelId = this.getChannelId(prevProps);\r\n const channelId = this.getChannelId(props);\r\n const prevChannelIsReadOnly = this.getChannelIsReadOnly(prevProps);\r\n const channelIsReadOnly = this.getChannelIsReadOnly(props);\r\n if (dataId === prevDataId && companyId === prevCompanyId && prevChannelId === channelId && prevChannelIsReadOnly === channelIsReadOnly) return;\r\n this.setState({\r\n channelId,\r\n channelIsReadOnly,\r\n userIsChannelAdmin: this.getUserIsChannelAdmin(props),\r\n sortColumn: \"modifyDate\",\r\n sortOrderIsAsc: false,\r\n filter: \"\",\r\n filterActive: false\r\n });\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n this.setState({\r\n filter,\r\n filterActive: !!filter\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!props.channel) {\r\n return null;\r\n }\r\n return (\r\n <>\r\n \r\n }\r\n rightItems={\r\n props.onEditChannel(state.channelId) },\r\n { title: Translations.ExitInstantMessageChannel, onClick: () => props.onExitChannel(state.channelId), disabled: props.channel.userIsOnlyAdmin }\r\n ]}\r\n icon={}\r\n tooltip={Translations.AdditionalFunctions}\r\n menuRight={true}\r\n />\r\n }\r\n />\r\n \r\n \r\n );\r\n }\r\n}","// InstantMessagePartnersDialogCompanyList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { CompanyActiveState, EnumHelper } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Base } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/framework/base\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { CompanyListItem, ICompanyListItem } from \"../../../models/company/companyListItem\";\r\nimport * as instantMessageService from \"../../../models/services/instantMessageService\";\r\nimport { SelectCompanyDialog } from \"../../company/SelectCompanyDialog/SelectCompanyDialog\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { DialogSettingsCard } from \"../../framework/Container/DialogSettingsCard\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListIconButtonsItem } from \"../../framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { EllipsisTypography } from \"../../framework/Typography/EllipsisTypography\";\r\n\r\n// InstantMessagePartnersDialogCompanyList\r\nexport interface InstantMessagePartnersDialogCompanyListProp {\r\n isReadOnly?: boolean;\r\n companyId: string;\r\n companies: ICompanyListItem[];\r\n onRemoved: (ids: string[]) => void;\r\n onAdded: (users: ICompanyListItem[]) => void;\r\n}\r\n\r\ninterface IInstantMessagePartnersDialogCompanyListState {\r\n // List\r\n isLoading: boolean;\r\n companies: ICompanyListItem[];\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n selectedId: string;\r\n checkedIds: string[];\r\n\r\n // Dialog\r\n showSelectCompanyDialog: boolean;\r\n}\r\n\r\nexport class InstantMessagePartnersDialogCompanyList extends React.Component {\r\n constructor(props: InstantMessagePartnersDialogCompanyListProp) {\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n companies: props.companies ? props.companies.slice(0) : [],\r\n filter: \"\",\r\n sortColumn: \"code\",\r\n sortOrderIsAsc: true,\r\n selectedId: null,\r\n checkedIds: [],\r\n showSelectCompanyDialog: false,\r\n };\r\n }\r\n\r\n filteredList = (filter: string, column: string, asc: boolean) => {\r\n const props = this.props;\r\n let companies = props.companies ? props.companies.slice(0) : [];\r\n if (filter) {\r\n const lowFilter = filter.toLowerCase();\r\n companies = companies.filter(i => i.code.toLowerCase().indexOf(lowFilter) > -1 || i.name.toLowerCase().indexOf(lowFilter) > -1);\r\n }\r\n CompanyListItem.sortCompanyListItems(companies, column, asc);\r\n this.setState({\r\n filter,\r\n sortColumn: column,\r\n sortOrderIsAsc: asc,\r\n companies,\r\n });\r\n };\r\n\r\n componentDidUpdate(prevProps: InstantMessagePartnersDialogCompanyListProp, prevState: IInstantMessagePartnersDialogCompanyListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (Base.equalStrArrays(prevProps.companies ? prevProps.companies.map(i => i.id) : [], props.companies ? props.companies.map(i => i.id) : [])) return;\r\n this.filteredList(state.filter, state.sortColumn, state.sortOrderIsAsc);\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.filteredList(filter, state.sortColumn, state.sortOrderIsAsc);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.filteredList(state.filter, sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n getRemoveSaveData = (props: InstantMessagePartnersDialogCompanyListProp, companyIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.companyId);\r\n result.append(\"companyIds\", companyIds);\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n if (selectedIds.length < 1) return;\r\n const saveData = this.getRemoveSaveData(props, selectedIds);\r\n // Call server\r\n const result = await AppUtils.callService(() => instantMessageService.removeInstantMessagePartners(saveData.obj));\r\n if (!result) return;\r\n props.onRemoved(selectedIds);\r\n };\r\n \r\n handleAdd = () => {\r\n this.setState({\r\n showSelectCompanyDialog: true\r\n });\r\n };\r\n\r\n getAddSaveData = (props: InstantMessagePartnersDialogCompanyListProp, companyIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.companyId);\r\n result.append(\"companyIds\", companyIds);\r\n return result;\r\n };\r\n\r\n onSelectCompanyDialogOk = async (companies: ICompanyListItem[]) => {\r\n const props = this.props;\r\n if (!companies || companies.length < 1) return;\r\n this.setState({\r\n showSelectCompanyDialog: false\r\n });\r\n const saveData = this.getAddSaveData(this.props, companies.map(i => i.id));\r\n // Call server\r\n const result = await AppUtils.callService(() => instantMessageService.addInstantMessagePartners(saveData.obj));\r\n if (!result) return;\r\n props.onAdded(companies);\r\n };\r\n\r\n onSelectCompanyDialogCancel = () => {\r\n this.setState({\r\n showSelectCompanyDialog: false\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n }\r\n rightItems={\r\n <>\r\n \r\n \r\n }\r\n />\r\n }\r\n content={<>\r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 4,\r\n column: \"code\",\r\n content:\r\n \r\n \r\n {item.code}\r\n \r\n },\r\n { size: 5, column: \"name\", content: item.name },\r\n { size: 3, column: \"activeState\", content: item.activeStateStr },\r\n ],\r\n id: item.id,\r\n classes: EnumHelper.isEqual(item.activeState, CompanyActiveState.NotInUse) ? \"disabled\" : \"\"\r\n };\r\n })}\r\n noDataMessage={Translations.AddPartners}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n />\r\n {state.showSelectCompanyDialog &&\r\n i.id).concat([props.companyId])}\r\n onOk={this.onSelectCompanyDialogOk}\r\n onCancel={this.onSelectCompanyDialogCancel}\r\n onGetCompanyListItems={instantMessageService.getInstantMessageCompanyListItems}\r\n />\r\n }\r\n \r\n }\r\n />\r\n );\r\n }\r\n}","// InstantMessagePartnersSettings - MODULE\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { ICompanyListItem } from \"../../../models/company/companyListItem\";\r\nimport * as instantMessageService from \"../../../models/services/instantMessageService\";\r\nimport { InstantMessagePartnersDialogCompanyList } from \"../InstantMessagePartnersDialogCompanyList\";\r\n\r\n//InstantMessagePartnersSettings\r\nexport interface IInstantMessagePartnersSettingsProp {\r\n companyId: string;\r\n onCancel: (instantMessagePartnersWasModified: boolean) => void;\r\n}\r\n\r\nexport interface IInstantMessagePartnersSettingsState {\r\n isLoading: boolean;\r\n companies: ICompanyListItem[];\r\n instantMessagePartnersWasModified: boolean;\r\n}\r\n\r\nexport class InstantMessagePartnersSettings extends React.Component {\r\n constructor(props: IInstantMessagePartnersSettingsProp) {\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n companies: [],\r\n instantMessagePartnersWasModified: false\r\n };\r\n }\r\n\r\n loadInstantMessageChannel = async () => {\r\n const props = this.props;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => instantMessageService.getInstantMessagePartners(props.companyId), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const state = {\r\n ...this.state,\r\n companies: result.items\r\n };\r\n this.setState(state);\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadInstantMessageChannel();\r\n }\r\n\r\n // #region Partner Companies\r\n handleCompaniesRemoved = (ids: string[]) => {\r\n if (!ids || ids.length < 1) return;\r\n this.setState({\r\n companies: this.state.companies.filter(i => ids.indexOf(i.id) < 0),\r\n instantMessagePartnersWasModified: true\r\n });\r\n };\r\n \r\n handleCompaniesAdded = (newCompanies: ICompanyListItem[]) => {\r\n const state = this.state;\r\n this.setState({\r\n companies: state.companies.filter(i => newCompanies.findIndex(j => j.id === i.id) < 0).concat(newCompanies),\r\n instantMessagePartnersWasModified: true\r\n });\r\n };\r\n // #endregion Partner Companies\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n props.onCancel(state.instantMessagePartnersWasModified);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n );\r\n }\r\n}","import { Grid } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { ISessionState } from \"source/models/session/sessionState\";\r\nimport { IUnitNodePermissions } from \"source/models/unit/unitNodePermissions\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport * as instantMessageService from \"../../../models/services/instantMessageService\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { IPageNavMenuItem, PageNavMenuItems } from \"../../framework/PageNav/PageNavMenuItems\";\r\nimport { UnitPermissionSettings } from \"../../unit/Unit/UnitPermissionSettings\";\r\nimport { InstantMessagePartnersSettings } from \"../InstantMessagePartnersSettings\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum InstantMessageSettingsDialogMenuItem {\r\n Permissions = \"1\",\r\n InstantMessagePartners = \"2\",\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\nexport interface IInstantMessageSettingsDialogProp {\r\n sessionState: ISessionState;\r\n companyId: string;\r\n settingsActions: IPageNavMenuItem[];\r\n validAdditionalPermissions?: number[];\r\n onClose: (refreshView: boolean) => void;\r\n}\r\n\r\nexport interface IInstantMessageSettingsDialogState {\r\n unitNodePermissions: IUnitNodePermissions;\r\n hasPartners: boolean;\r\n activeMenuItem: InstantMessageSettingsDialogMenuItem;\r\n}\r\n\r\nexport class InstantMessageSettingsDialog extends React.Component {\r\n private permissionsRef = React.createRef();\r\n private refreshViewOnClose = false;\r\n\r\n constructor(props: IInstantMessageSettingsDialogProp) {\r\n super(props);\r\n this.state = {\r\n unitNodePermissions: null,\r\n hasPartners: false,\r\n activeMenuItem: InstantMessageSettingsDialogMenuItem.Permissions,\r\n };\r\n }\r\n\r\n async componentDidMount(): Promise {\r\n await this.loadPermissions();\r\n }\r\n\r\n // #region Permissions\r\n onUnitPermissionSettingsCancel = async (): Promise => {\r\n return await this.permissionsRef.current.handleCancel(false);\r\n };\r\n\r\n loadPermissions = async () => {\r\n const result = await AppUtils.callService(() => instantMessageService.getInstantMessagePermissions(this.props.companyId), false);\r\n if (!result) return;\r\n this.setState({\r\n unitNodePermissions: result.unitNodePermissions,\r\n hasPartners: result.hasPartners\r\n });\r\n };\r\n\r\n handleUnitPermissionSettingsSave = async (obj: any) => {\r\n const result = await instantMessageService.saveUnitNodePermissions(obj);\r\n this.loadPermissions();\r\n return result;\r\n };\r\n // #endregion Permissions\r\n\r\n handleToggleActiveMenuItem = async (menuItem: InstantMessageSettingsDialogMenuItem) => {\r\n const state = this.state;\r\n if (state.activeMenuItem === menuItem) return;\r\n //Check current tab cancel\r\n if (state.activeMenuItem === InstantMessageSettingsDialogMenuItem.Permissions) {\r\n if (!await this.onUnitPermissionSettingsCancel()) return;\r\n }\r\n //Load new tab data\r\n if (menuItem === InstantMessageSettingsDialogMenuItem.Permissions) {\r\n await this.loadPermissions();\r\n }\r\n //Set new tab active\r\n this.setState({\r\n activeMenuItem: menuItem\r\n });\r\n };\r\n\r\n handleSubViewOk = (_closeDialog: boolean) => {\r\n this.refreshViewOnClose = true;\r\n };\r\n\r\n handleCancel = async (closeDialog: boolean) => {\r\n if (!closeDialog) return;\r\n this.props.onClose(this.refreshViewOnClose);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {state.activeMenuItem === InstantMessageSettingsDialogMenuItem.Permissions && state.unitNodePermissions &&\r\n \r\n }\r\n {state.activeMenuItem === InstantMessageSettingsDialogMenuItem.InstantMessagePartners &&\r\n \r\n }\r\n \r\n \r\n }\r\n buttons={\r\n state.activeMenuItem !== InstantMessageSettingsDialogMenuItem.Permissions\r\n ? [{ title: Translations.Close, variant: \"outlined\", onClick: () => this.handleCancel(true) }]\r\n : null\r\n }\r\n onClose={() => this.handleCancel(true)}/>\r\n );\r\n }\r\n}\r\n","// PageNavMenuItemInstantMessageChannel\r\n// ***********************************************************************************************************************\r\nimport GroupIcon from \"@mui/icons-material/Group\";\r\nimport { Box, List, ListItemButton, Paper, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IInstantMessageChannelItem } from \"ui/Scripts/source/models/instantMessage/instantMessageChannelItem\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AddButton } from \"../../framework/Button/AddButton\";\r\nimport { ConfirmationButton } from \"../../framework/Button/ConfirmationButton\";\r\nimport { NewMessageIcon } from \"../../framework/Icon/NewMessageIcon\";\r\nimport { PageTitle } from \"../../framework/Page/PageTitle\";\r\nimport { EllipsisTypography } from \"../../framework/Typography/EllipsisTypography\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\nexport interface IInstantMessageChannelMenuItemProp {\r\n classes?: boolean;\r\n isActiveChannel: boolean;\r\n channel: IInstantMessageChannelItem;\r\n activeChannelHasUnreadMessagesInList: boolean;\r\n userCode: string;\r\n onHandleInvitation: (instantMessageChannelUserId: string, instantMessageChannelId: string, approve: boolean) => void;\r\n}\r\n\r\nexport class InstantMessageChannelMenuItem extends React.Component {\r\n getLatestMessageTimeStr = (date: number): string => {\r\n const dayStr = Base.timeToDateStr(date);\r\n const yesterdayDayStr = Base.timeToDateStr(new Date().addDays(-1).getTime());\r\n const todayDayStr = Base.timeToDateStr(new Date().getTime());\r\n return dayStr === todayDayStr\r\n ? Base.timeToTimeStr(date)\r\n : (dayStr === yesterdayDayStr\r\n ? Translations.Yesterday\r\n : dayStr);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const channel = props.channel;\r\n if (!channel) return null;\r\n const latestMessageContent = channel.latestMessage?.getText(props.userCode) ?? \"\";\r\n const latestMessageText = channel.latestMessage ? channel.latestMessage.modifyUser.name + (latestMessageContent ? \": \" + latestMessageContent : \"\") : \"\";\r\n const latestMessageTime = channel.latestMessage ? this.getLatestMessageTimeStr(channel.latestMessage.modifyUser.date) : \"\";\r\n const hasNewMessage = (channel.hasUnreadMessages || props.isActiveChannel && props.activeChannelHasUnreadMessagesInList);\r\n return (\r\n \r\n \r\n \r\n \r\n : undefined}\r\n image={channel.getPicture()}\r\n tooltip={channel.code}\r\n marginRight=\".5rem\"\r\n />\r\n {channel.code}\r\n \r\n {!!channel.latestMessage &&\r\n \r\n {latestMessageTime}\r\n \r\n }\r\n \r\n {!!channel.latestMessage &&\r\n \r\n \r\n {hasNewMessage &&\r\n \r\n }\r\n \r\n }\r\n {!!channel.invitation &&\r\n ({\r\n bgcolor: props.isActiveChannel ? theme.palette.background.paper : theme.palette.background.default,\r\n borderRadius: \".25rem\",\r\n padding: \".5rem\",\r\n marginTop: \".5rem\",\r\n })}>\r\n <>\r\n \r\n {String.format(Translations.UserParameterHasInvitedYouToJoinInstantMessageChannelParameter, channel.invitation.sender.name)}\r\n \r\n \r\n props.onHandleInvitation(channel.invitation.id, channel.id, false)} size=\"small\" sx={{ marginRight: \".5rem\" }}>\r\n {Translations.Reject}\r\n \r\n props.onHandleInvitation(channel.invitation.id, channel.id, true)} size=\"small\">\r\n {Translations.Approve}\r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport interface IPageNavMenuItemInstantMessageChannelProp {\r\n classes?: string;\r\n channels: IInstantMessageChannelItem[];\r\n hidden?: boolean;\r\n isActive: boolean;\r\n activeChannelHasUnreadMessagesInList: boolean;\r\n firstLine?: boolean;\r\n activeChannelId: string;\r\n userCode: string;\r\n onAddChannel: () => void;\r\n onToggleMenuItem: () => void;\r\n onChangeActiveChannel: (channelId: string) => void;\r\n onEditChannel: (channelId: string) => void;\r\n onHandleInvitation: (instantMessageChannelUserId: string, instantMessageChannelId: string, approve: boolean) => void;\r\n}\r\n\r\nexport class PageNavMenuItemInstantMessageChannel extends React.Component {\r\n render() {\r\n const props = this.props;\r\n const channels = props.channels;\r\n if (!channels) return null;\r\n return (\r\n <>\r\n \r\n {!props.hidden &&\r\n \r\n {Translations.AddInstantMessageChannel}\r\n \r\n }\r\n \r\n \r\n {!props.hidden &&\r\n <>\r\n \r\n {Translations.Channels}\r\n \r\n \r\n {channels.map((channel) =>\r\n
  • props.onChangeActiveChannel(channel.id)} onDoubleClick={() => props.onEditChannel(channel.id)}>\r\n \r\n
  • \r\n )}\r\n
    \r\n \r\n }\r\n \r\n \r\n );\r\n }\r\n}","import { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { RouteComponentProps } from \"react-router\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { IInstantMessageChannelItem, InstantMessageChannelItem } from \"ui/Scripts/source/models/instantMessage/instantMessageChannelItem\";\r\nimport { IInstantMessageListItem } from \"ui/Scripts/source/models/instantMessage/instantMessageListItem\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { ITypedOption } from \"../../../models/common/typedOption\";\r\nimport { IInstantMessagePage } from \"../../../models/instantMessage/instantMessagePage\";\r\nimport * as instantMessageChannelService from \"../../../models/services/instantMessageChannelService\";\r\nimport { recordLockManager } from \"../../../models/services/recordLockService\";\r\nimport { IAppSessionState } from \"../../../models/store/storeTypes\";\r\nimport { HeaderMenuItem, NavigationMenu } from \"../../app/NavigationMenu\";\r\nimport { UserMenu } from \"../../app/UserMenu\";\r\nimport { SettingsButton } from \"../../framework/Button/SettingsButton\";\r\nimport { ListContainer } from \"../../framework/List/ListContainer\";\r\nimport { PageContainer } from \"../../framework/Page/PageContainer\";\r\nimport { PageContent } from \"../../framework/Page/PageContent\";\r\nimport { PageTitle } from \"../../framework/Page/PageTitle\";\r\nimport { PageTopBar } from \"../../framework/Page/PageTopBar\";\r\nimport { IPageNavMenuItem } from \"../../framework/PageNav/PageNavMenuItems\";\r\nimport { InstantMessageChannelDialogMenuItem, InstantMessageChannelEditDialog } from \"../InstantMessageChannelEditDialog\";\r\nimport { InstantMessageChannelEditNewDialog } from \"../InstantMessageChannelEditNewDialog\";\r\nimport { ChannelInstantMessageList } from \"../InstantMessageList/InstantMessageList\";\r\nimport { InstantMessageSettingsDialog, InstantMessageSettingsDialogMenuItem } from \"../InstantMessageSettingsDialog\";\r\nimport { PageNavMenuItemInstantMessageChannel } from \"../PageNavMenuItemInstantMessageChannel\";\r\nimport { abortManager } from \"source/models/services/tokenService\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nconst enum InstantMessagePageMenuItem {\r\n None = \"\",\r\n CompanyFilter = \"1\",\r\n Settings = \"2\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n// LogPage\r\nexport interface IInstantMessagePageOwnProps {\r\n}\r\n\r\nexport interface IInstantMessagePageStateProps {\r\n appState: IAppSessionState;\r\n dataId: number;\r\n instantMessagePage: IInstantMessagePage;\r\n}\r\n\r\nexport interface IInstantMessagePageDispatchProps {\r\n onGetInstantMessagePage: () => void;\r\n onLogout: () => void;\r\n onSetCulture: (culture: string) => void;\r\n onSaveUserParameters: (parameters: ITypedOption[]) => void;\r\n onRefreshSessionState: () => void;\r\n}\r\n\r\nexport interface IInstantMessagePagePathProps {\r\n channelId: string;\r\n}\r\n\r\ntype InstantMessagePageProp = IInstantMessagePageOwnProps & IInstantMessagePageStateProps & IInstantMessagePageDispatchProps & RouteComponentProps;\r\n\r\ninterface IInstantMessagePageState {\r\n initialized: boolean;\r\n showNavPanel: boolean;\r\n activeMenuItem: InstantMessagePageMenuItem;\r\n activeCompanyId: string;\r\n channels: IInstantMessageChannelItem[];\r\n activeChannelId: string;\r\n activeChannelHasUnreadMessagesInList: boolean;\r\n settingsActions: IPageNavMenuItem[];\r\n // Channel new\r\n showInstantMessageChannelNewDialog: boolean;\r\n // Channel edit\r\n showInstantMessageChannelEditDialog: boolean;\r\n instantMessageChannelEditDialogChannelId: string;\r\n instantMessageChannelEditDialogDefaultMenuItem: InstantMessageChannelDialogMenuItem;\r\n // Properties\r\n dataId: number;\r\n showSettingsDialog: boolean;\r\n hasPartners: boolean;\r\n}\r\n\r\nexport class InstantMessagePage extends React.Component {\r\n getSettingsActions = (): IPageNavMenuItem[] => {\r\n const props = this.props;\r\n const sessionState = props.appState.state;\r\n const result: IPageNavMenuItem[] = [];\r\n if (sessionState.isCompanyAdmin || sessionState.canManageInstantMessagePermissions) {\r\n result.push({ id: InstantMessageSettingsDialogMenuItem.Permissions, title: Translations.Permissions }); //, onClick: this.handleOpenPermissions\r\n }\r\n if (sessionState.isSuperAdmin) {\r\n result.push({ id: InstantMessageSettingsDialogMenuItem.InstantMessagePartners, title: Translations.InstantMessagePartners }); //, onClick: this.handleOpenInstantMessagePartners\r\n }\r\n //if (this.props.sessionState.isCompanyAdmin) {\r\n // result.push({ title: Translations.CompanyInstantMessageChannels, onClick: this.handleOpenCompanyInstantMessageChannels });\r\n //}\r\n return result;\r\n };\r\n\r\n getDefaultChannelId = (props: InstantMessagePageProp): string => {\r\n const channels = props.instantMessagePage ? props.instantMessagePage.channels : [];\r\n const activeChannel = channels.length > 0 && props.match.params.channelId ? channels.find(i => i.id === props.match.params.channelId) : null;\r\n return activeChannel ? activeChannel.id : (channels.length > 0 ? channels[0].id : \"\");\r\n };\r\n\r\n constructor(props: InstantMessagePageProp) {\r\n super(props);\r\n abortManager.abortAll(); //Abort all abortable calls regardless of module\r\n const channels = props.instantMessagePage ? props.instantMessagePage.channels : [];\r\n this.state = {\r\n initialized: !!props.instantMessagePage,\r\n showNavPanel: false,\r\n activeMenuItem: props.instantMessagePage ? (props.instantMessagePage.companies.length > 1 ? InstantMessagePageMenuItem.CompanyFilter : InstantMessagePageMenuItem.Settings) : InstantMessagePageMenuItem.None,\r\n activeCompanyId: props.appState.state.companyId,\r\n channels,\r\n activeChannelId: this.getDefaultChannelId(props),\r\n activeChannelHasUnreadMessagesInList: false,\r\n settingsActions: this.getSettingsActions(),\r\n // Channel new\r\n showInstantMessageChannelNewDialog: false,\r\n // Channel edit\r\n showInstantMessageChannelEditDialog: false,\r\n instantMessageChannelEditDialogChannelId: \"\",\r\n instantMessageChannelEditDialogDefaultMenuItem: InstantMessageChannelDialogMenuItem.General,\r\n // Properties\r\n dataId: props.dataId,\r\n showSettingsDialog: false,\r\n hasPartners: false,\r\n };\r\n }\r\n\r\n componentDidMount(): void {\r\n const sessionState = this.props.appState.state;\r\n recordLockManager.unlockAll(sessionState?.companyId, sessionState?.code);\r\n this.props.onGetInstantMessagePage();\r\n AppUtils.setNewInstantMessages([]);\r\n }\r\n\r\n componentDidUpdate(prevProps: InstantMessagePageProp, prevState: IInstantMessagePageState): void {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevCompanyIds = (prevProps.instantMessagePage ? prevProps.instantMessagePage.companies.map(i => i.id) : []).join(\",\");\r\n const companyIds = (props.instantMessagePage ? props.instantMessagePage.companies.map(i => i.id) : []).join(\",\");\r\n const prevCompanyId = prevProps.instantMessagePage && prevProps.instantMessagePage.companies.length > 0 ? prevProps.instantMessagePage.companies[0].id : Base.emptyGuid;\r\n const companyId = props.instantMessagePage && props.instantMessagePage.companies.length > 0 ? props.instantMessagePage.companies[0].id : Base.emptyGuid;\r\n const prevParamChanneldId = prevProps.match.params.channelId ?? \"\";\r\n const paramChanneldId = props.match.params.channelId ?? \"\";\r\n if (prevProps.dataId === props.dataId && prevCompanyId === companyId && prevCompanyIds === companyIds && prevParamChanneldId === paramChanneldId) return;\r\n const activeMenuItem = state.initialized || !props.instantMessagePage\r\n ? state.activeMenuItem\r\n : props.instantMessagePage.companies.length > 1 ? InstantMessagePageMenuItem.CompanyFilter : InstantMessagePageMenuItem.Settings;\r\n const channels = props.instantMessagePage ? props.instantMessagePage.channels : [];\r\n InstantMessageChannelItem.sortInstantMessageListItems(channels);\r\n this.setState({\r\n dataId: props.dataId,\r\n initialized: !!props.instantMessagePage,\r\n showNavPanel: state.initialized ? state.showNavPanel : false,\r\n activeCompanyId: companyId,\r\n channels,\r\n activeChannelId: this.getDefaultChannelId(props),\r\n activeChannelHasUnreadMessagesInList: false,\r\n activeMenuItem,\r\n settingsActions: this.getSettingsActions(),\r\n });\r\n }\r\n\r\n handleToggleShowNavPanel = () => {\r\n this.setState({ showNavPanel: !this.state.showNavPanel });\r\n };\r\n\r\n handleToggleActiveMenuItem = (instantMessagePageMenuItem: InstantMessagePageMenuItem) => {\r\n this.setState({ activeMenuItem: this.state.activeMenuItem !== instantMessagePageMenuItem ? instantMessagePageMenuItem : InstantMessagePageMenuItem.None });\r\n };\r\n\r\n handleChangeActiveCompanyId = async (companyId: string) => {\r\n if (this.state.activeCompanyId === companyId) return;\r\n this.refreshChannelList(companyId, this.state.activeChannelId);\r\n };\r\n\r\n handleSelectChannel = async (id: string) => {\r\n const state = this.state;\r\n if (state.activeChannelId === id) return;\r\n const oldActiveChannel = state.channels.find(i => i.id === state.activeChannelId);\r\n if (oldActiveChannel) {\r\n oldActiveChannel.hasUnreadMessages = false;\r\n }\r\n this.setState({\r\n activeChannelId: id,\r\n activeChannelHasUnreadMessagesInList: false\r\n });\r\n };\r\n\r\n handleEditChannel = (id: string) => {\r\n if (!id) return;\r\n const channel = this.state.channels.find(i => i.id === id);\r\n if (!channel) return;\r\n this.setState({\r\n showInstantMessageChannelEditDialog: true,\r\n instantMessageChannelEditDialogChannelId: id,\r\n instantMessageChannelEditDialogDefaultMenuItem: InstantMessageChannelDialogMenuItem.General\r\n });\r\n };\r\n\r\n handleExitChannel = async (id: string) => {\r\n if (!id) return;\r\n const state = this.state;\r\n if (await AppUtils.showConfirmationDialog(Translations.DoYouReallyWantToExitInstantMessageChannel) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await AppUtils.callService(() => instantMessageChannelService.exitInstantMessageChannel(id, state.activeCompanyId));\r\n if (!result) return;\r\n this.refreshChannelList(state.activeCompanyId, \"\");\r\n }\r\n };\r\n\r\n refreshChannelList = async (companyId: string, instantMessageChannelId: string) => {\r\n const props = this.props;\r\n const sessionState = props.appState.state;\r\n const items = companyId === sessionState.companyId\r\n ? await instantMessageChannelService.getInstantMessageChannelItems(companyId)\r\n : null;\r\n const channels = items ? items.channels : [];\r\n InstantMessageChannelItem.sortInstantMessageListItems(channels);\r\n if (!instantMessageChannelId) {\r\n instantMessageChannelId = channels.length > 0 ? channels[0].id : \"\";\r\n }\r\n this.setState({\r\n activeCompanyId: companyId,\r\n activeChannelId: instantMessageChannelId,\r\n channels,\r\n settingsActions: this.getSettingsActions()\r\n });\r\n };\r\n\r\n handleInstantMessageChannelDialogOk = () => {\r\n const state = this.state;\r\n this.setState({\r\n showInstantMessageChannelEditDialog: false\r\n });\r\n this.refreshChannelList(state.activeCompanyId, state.activeChannelId);\r\n };\r\n\r\n handleInstantMessageChannelDialogCancel = (instantMessageChannelDataWasModified: boolean) => {\r\n const state = this.state;\r\n this.setState({\r\n showInstantMessageChannelEditDialog: false\r\n });\r\n if (!instantMessageChannelDataWasModified) return;\r\n this.refreshChannelList(state.activeCompanyId, state.activeChannelId);\r\n };\r\n\r\n handlenstantMessageChannelDialogNewSaved = (newInstantMessageChannelId: string) => {\r\n this.setState({\r\n showInstantMessageChannelEditDialog: true,\r\n instantMessageChannelEditDialogChannelId: newInstantMessageChannelId,\r\n instantMessageChannelEditDialogDefaultMenuItem: InstantMessageChannelDialogMenuItem.Users\r\n });\r\n this.refreshChannelList(this.state.activeCompanyId, newInstantMessageChannelId);\r\n };\r\n\r\n handleAddChannel = () => {\r\n this.setState({\r\n showInstantMessageChannelNewDialog: true\r\n });\r\n };\r\n\r\n handleInstantMessageChannelNewDialogOk = (newInstantMessageChannelId: string) => {\r\n const state = this.state;\r\n this.setState({\r\n showInstantMessageChannelNewDialog: false\r\n });\r\n this.refreshChannelList(state.activeCompanyId, newInstantMessageChannelId);\r\n };\r\n\r\n handleInstantMessageChannelNewDialogCancel = () => {\r\n this.setState({\r\n showInstantMessageChannelNewDialog: false\r\n });\r\n };\r\n\r\n handleInvitation = async (instantMessageChannelUserId: string, instantMessageChanneld: string, approve: boolean) => {\r\n const state = this.state;\r\n const result = await AppUtils.callService(() => instantMessageChannelService.instantMessageChannelUserInvitationHandle(instantMessageChannelUserId, instantMessageChanneld, approve), false);\r\n if (!result) return;\r\n this.refreshChannelList(state.activeCompanyId, state.activeChannelId);\r\n };\r\n\r\n // #region Settings\r\n handleOpenSettings = async () => {\r\n this.setState({\r\n showSettingsDialog: true,\r\n });\r\n };\r\n\r\n handleSettingsDialogOk = async (refreshView: boolean) => {\r\n this.setState({\r\n showSettingsDialog: false,\r\n dataId: this.state.dataId + 1\r\n });\r\n };\r\n // #endregion Settings\r\n\r\n // #region SignalR\r\n handleInstantMessageUpdated = (item: IInstantMessageListItem) => {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n if (!item) return;\r\n const channels = state.channels.slice(0);\r\n const channel = channels.find(i => i.id === item.channelId);\r\n if (!channel) return;\r\n const currentLatestDate = channel.latestMessage?.modifyUser?.date;\r\n if (!Base.isNullOrUndefined(currentLatestDate) && currentLatestDate > item.modifyUser.date) return;\r\n channel.latestMessage = item;\r\n const modifyUserCode = item?.modifyUser?.code ?? sessionState.code;\r\n let activeChannelHasUnreadMessagesInList = state.activeChannelHasUnreadMessagesInList;\r\n if (modifyUserCode !== sessionState.code && !item.isUserRead()) {\r\n if (item.channelId !== state.activeChannelId) {\r\n channel.hasUnreadMessages = true;\r\n } else {\r\n activeChannelHasUnreadMessagesInList = true;\r\n }\r\n }\r\n InstantMessageChannelItem.sortInstantMessageListItems(channels);\r\n this.setState({\r\n channels,\r\n activeChannelHasUnreadMessagesInList\r\n });\r\n };\r\n\r\n handleInstantMessageChannelRemoved = (id: string) => {\r\n const state = this.state;\r\n if (!id) return;\r\n const channels = state.channels.filter(i => i.id !== id);\r\n this.setState({\r\n channels\r\n });\r\n };\r\n\r\n handleInstantMessageChannelUpdated = (item: IInstantMessageChannelItem) => {\r\n const state = this.state;\r\n if (!item) return;\r\n const channels = state.channels.filter(i => i.id !== item.id);\r\n channels.push(item);\r\n InstantMessageChannelItem.sortInstantMessageListItems(channels);\r\n this.setState({\r\n channels\r\n });\r\n };\r\n\r\n handleInstantMessageChannelSetHasUnreadMessagesOnList = (value: boolean) => {\r\n this.setState({\r\n activeChannelHasUnreadMessagesInList: value\r\n });\r\n };\r\n // #endregion SignalR\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n const companies = props.instantMessagePage ? props.instantMessagePage.companies : [];\r\n const showContent = state.activeCompanyId === sessionState.companyId;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n i.id === state.activeChannelId) ? state.channels.find(i => i.id === state.activeChannelId).code : \"\"}>\r\n {state.settingsActions.length > 0 &&\r\n \r\n {Translations.Settings}\r\n \r\n }\r\n \r\n \r\n {showContent &&\r\n i.id === state.activeChannelId)}\r\n onEditChannel={this.handleEditChannel}\r\n onExitChannel={this.handleExitChannel}\r\n onInstantMessageUpdated={this.handleInstantMessageUpdated}\r\n onInstantMessageChannelRemoved={this.handleInstantMessageChannelRemoved}\r\n onInstantMessageChannelUpdated={this.handleInstantMessageChannelUpdated}\r\n onInstantMessageChannelSetHasUnreadMessagesOnList={this.handleInstantMessageChannelSetHasUnreadMessagesOnList}\r\n />\r\n }\r\n \r\n \r\n \r\n \r\n {state.showInstantMessageChannelNewDialog &&\r\n \r\n }\r\n {state.showInstantMessageChannelEditDialog &&\r\n \r\n }\r\n {state.showSettingsDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","/* eslint-disable no-unused-vars */\r\nimport * as React from \"react\";\r\n/* eslint-enable no-unused-vars */\r\nimport { connect } from \"react-redux\";\r\nimport { IApplicationState } from \"../../models/store/storeTypes\";\r\nimport * as storeEffects from \"../../models/store/storeEffects\";\r\nimport { IInstantMessagePageOwnProps, IInstantMessagePageStateProps, IInstantMessagePageDispatchProps, InstantMessagePage } from \"../../components/instantMessage/InstantMessagePage\";\r\nimport { ITypedOption } from \"../../models/common/typedOption\";\r\n\r\nexport function mapStateToProps(applicationState: IApplicationState, ownProps: IInstantMessagePageOwnProps): IInstantMessagePageStateProps {\r\n if (!applicationState || !applicationState.front) {\r\n return {\r\n appState: null,\r\n dataId: -1,\r\n instantMessagePage: null\r\n };\r\n }\r\n const instantMessage = applicationState.instantMessage;\r\n return {\r\n appState: applicationState.session,\r\n dataId: instantMessage.dataId,\r\n instantMessagePage: instantMessage.instantMessagePage\r\n };\r\n}\r\n\r\nexport function mapDispatchToProps(dispatch: storeEffects.InstantMessageThunkDispatch): IInstantMessagePageDispatchProps {\r\n return {\r\n onGetInstantMessagePage: () => dispatch(storeEffects.getInstantMessagePage()),\r\n onLogout: () => dispatch(storeEffects.logout()),\r\n onSetCulture: (culture: string) => dispatch(storeEffects.setCulture(culture)),\r\n onSaveUserParameters: (parameters: ITypedOption[]) => dispatch(storeEffects.saveUserParameters(parameters)),\r\n onRefreshSessionState: () => dispatch(storeEffects.refreshSessionState()),\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(InstantMessagePage);","// LogFilterDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Grid, MenuItem, Select } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { CheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/CheckboxDropdown\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { DatePicker } from \"../../framework/DateTime/DatePicker\";\r\nimport { DrawerContent } from \"../../framework/Drawer/DrawerContent\";\r\nimport { FilterButtons } from \"../../framework/Filters/FilterButtons\";\r\nimport { FilterSearchField } from \"../../framework/Filters/FilterSearchField\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\n\r\n//LogFilterDialog\r\nexport interface ILogFilterDialogProp {\r\n classes?: string;\r\n filter: IListFilterItem;\r\n eventTypes: IIdTitle[];\r\n timeFilters: IIdTitle[];\r\n selectedLogEventTypes: string[];\r\n selectedTimeFilterId: string;\r\n startDateStr: string;\r\n endDateStr: string;\r\n canRemoveSharedFilters: boolean;\r\n onSaveFilter: (saveAs: boolean, onGetGeneralFilter: () => any) => void;\r\n onRemoveFilter: (filterId: string) => void;\r\n onOk: (closeDialog: boolean, selectedTimeFilterId: string, selectedLogEventTypes: string[], startDateStr: string, endDateStr: string) => any;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface ILogFilterDialogState {\r\n selectedLogEventTypes: string[];\r\n selectedTimeFilterId: string;\r\n startDateStr: string;\r\n endDateStr: string;\r\n}\r\n\r\nexport class LogFilterDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n getStateFromProps = (props: ILogFilterDialogProp): ILogFilterDialogState => {\r\n return {\r\n selectedTimeFilterId: props.selectedTimeFilterId,\r\n selectedLogEventTypes: props.selectedLogEventTypes.slice(0),\r\n startDateStr: props.startDateStr,\r\n endDateStr: props.endDateStr\r\n };\r\n };\r\n\r\n constructor(props: ILogFilterDialogProp) {\r\n super(props);\r\n this.state = this.getStateFromProps(props);\r\n this.orgStateHash = this.getSaveDataFromState(props, this.state).hash;\r\n }\r\n\r\n componentDidUpdate(prevProps: ILogFilterDialogProp, prevState: ILogFilterDialogState): void {\r\n const props = this.props;\r\n if (!prevProps || prevProps.filter.getHash() === props.filter.getHash()) return;\r\n const state = this.getStateFromProps(props);\r\n this.setState(state);\r\n this.orgStateHash = this.getSaveDataFromState(props, state).hash;\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"selectedTimeFilterId\") {\r\n this.setState({ selectedTimeFilterId: value });\r\n }\r\n };\r\n\r\n handleChangeEventTypes = (selectedLogEventTypes: string[]) => {\r\n this.setState({\r\n selectedLogEventTypes\r\n });\r\n };\r\n\r\n dateChange = (startDate: Date, endDate: Date) => {\r\n if (!startDate && !endDate && endDate < startDate) {\r\n endDate = startDate;\r\n }\r\n const startDateStr = startDate ? Base.utcTimeToDateStr(startDate.getTime()) : \"\";\r\n const endDateStr = endDate ? Base.utcTimeToDateStr(endDate.getTime()) : \"\";\r\n this.setState({\r\n startDateStr,\r\n endDateStr\r\n });\r\n };\r\n\r\n handleStartDateChange = (value: string) => {\r\n this.setState({ startDateStr: value });\r\n };\r\n\r\n handleStartDateBlur = (value: string) => {\r\n const state = this.state;\r\n this.dateChange(value ? value.toUtcDate() : null, state.endDateStr ? state.endDateStr.toUtcDate() : null);\r\n };\r\n\r\n handleEndDateChange = (value: string) => {\r\n this.setState({ endDateStr: value });\r\n };\r\n\r\n handleEndDateBlur = (value: string) => {\r\n const state = this.state;\r\n this.dateChange(state.startDateStr ? state.startDateStr.toUtcDate() : null, value ? value.toUtcDate() : null);\r\n };\r\n\r\n getSaveDataFromState = (props: ILogFilterDialogProp, state: ILogFilterDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"selectedTimeFilterId\", state.selectedTimeFilterId ? state.selectedTimeFilterId : null);\r\n result.append(\"selectedLogEventTypes\", state.selectedLogEventTypes);\r\n result.append(\"startDateStr\", state.startDateStr ? state.startDateStr : null);\r\n result.append(\"endDateStr\", state.endDateStr ? state.endDateStr : null);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n \r\n static filterIsSet = (timeFilters: IIdTitle[], eventTypes: IIdTitle[],\r\n selectedTimeFilterId: string, selectedLogEventTypes: string[]): boolean => {\r\n return !(selectedTimeFilterId === timeFilters[0].id &&\r\n Base.equalStrArrays(selectedLogEventTypes, [eventTypes[0].id]));\r\n };\r\n\r\n handleSaveFilter = async (saveAs: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n if (!saveAs) {\r\n props.onOk(false, state.selectedTimeFilterId, state.selectedLogEventTypes, state.startDateStr, state.endDateStr);\r\n await this.props.onSaveFilter(false, null);\r\n } else {\r\n await this.props.onSaveFilter(true, () => {\r\n return props.onOk(false, state.selectedTimeFilterId, state.selectedLogEventTypes, state.startDateStr, state.endDateStr);\r\n });\r\n }\r\n };\r\n\r\n handleClear = () => {\r\n const props = this.props;\r\n const nowDate = Base.getNowUtcDate();\r\n this.setState({\r\n selectedTimeFilterId: props.timeFilters[0].id,\r\n selectedLogEventTypes: [props.eventTypes[0].id],\r\n startDateStr: Base.utcTimeToDateStr(nowDate.addDays(-60).getTime()),\r\n endDateStr: Base.utcTimeToDateStr(nowDate.getTime())\r\n });\r\n };\r\n\r\n handleSearch = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n props.onOk(true, state.selectedTimeFilterId, state.selectedLogEventTypes, state.startDateStr, state.endDateStr);\r\n };\r\n\r\n handleCancel = async (checkChanges: boolean) => {\r\n AppUtils.cancelEditDialog(checkChanges, this.getSaveDataFromState(this.props, this.state).hash, this.orgStateHash, this.handleSearch, this.props.onCancel, Translations.YouHaveUnapprovedChangesDoYouWantApproveChanges);\r\n };\r\n \r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {state.selectedTimeFilterId === \"5\" &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n }\r\n />\r\n );\r\n }\r\n}","import { Typography, TypographyProps } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\nexport const LongTextField = (props: TypographyProps) => {\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n","/* global JSX */\r\n// LogList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Grid, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { infiniteListPageSize } from \"../../../models/common/webConsts\";\r\nimport { ILogListItem } from \"../../../models/log/logListItem\";\r\nimport { ILogListItems } from \"../../../models/log/logListItems\";\r\nimport * as logService from \"../../../models/services/logService\";\r\nimport { SettingsButton } from \"../../framework/Button/SettingsButton\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { IListUsingComponentState, List } from \"../../framework/List/List\";\r\nimport { ListActionButtons } from \"../../framework/List/ListActionButtons\";\r\nimport { ListCardField } from \"../../framework/List/ListCardField\";\r\nimport { ListContainer } from \"../../framework/List/ListContainer\";\r\nimport { ListDetailsButton } from \"../../framework/List/ListDetailsButton\";\r\nimport { ListLinkValue } from \"../../framework/List/ListLinkValue\";\r\nimport { ListSearchContainer } from \"../../framework/List/ListSearchContainer\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { ListToggleButtons } from \"../../framework/List/ListToggleButtons\";\r\nimport { PageListActionContainer } from \"../../framework/List/PageListActionContainer\";\r\nimport { LongTextField } from \"../../framework/LongTextField\";\r\nimport { PageTitle } from \"../../framework/Page/PageTitle\";\r\nimport { IPageNavMenuItem } from \"source/components/framework/PageNav/PageNavMenuItems\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\n//LogDialog\r\nexport interface ILogDialogProp {\r\n classes?: string;\r\n item: ILogListItem\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onCancel: () => void;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n}\r\n\r\nexport class LogDialog extends React.Component {\r\n render() {\r\n const props = this.props;\r\n return (\r\n \r\n \r\n \r\n \r\n {Base.timeToDateTimeStr(props.item.modifyDate, true)}\r\n \r\n \r\n \r\n \r\n {props.item.typeStr}\r\n \r\n \r\n \r\n \r\n {props.item.companyCode}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.item.callerIp}\r\n \r\n \r\n \r\n \r\n {props.item.userCode}\r\n \r\n \r\n \r\n \r\n {props.item.version}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.item.operation}\r\n \r\n \r\n \r\n \r\n {props.item.action}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.item.browserInfo}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.item.parameters}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.item.message}\r\n \r\n \r\n \r\n \r\n }\r\n actions={\r\n \r\n props.onPrevious()}\r\n onNext={async () => props.onNext()}\r\n />\r\n \r\n {Translations.Close}\r\n \r\n \r\n }\r\n onClose={props.onCancel}/>\r\n );\r\n }\r\n}\r\n\r\n// LogList\r\nexport interface ILogListProp {\r\n companyId?: string;\r\n disableGlobalLoading?: boolean;\r\n preloaded?: boolean;\r\n waitingPreloadedData?: boolean;\r\n savedFilter: IListFilterItem;\r\n list?: ILogListItems;\r\n listFilterIsSet: boolean;\r\n types?: string[];\r\n timeSpan?: string;\r\n dataId?: string;\r\n startDateStr?: string;\r\n endDateStr?: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n titleSuffix?: JSX.Element;\r\n reportTabs: React.ReactNode;\r\n settingsActions: IPageNavMenuItem[];\r\n onSetSortData: (sortColumn: string, sortOrderIsAsc: boolean) => void;\r\n onOpenFiltersDialog: () => void;\r\n onToggleSettingsDialog: () => void;\r\n}\r\n\r\ninterface ILogListState extends IListUsingComponentState {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n waitingPreloadedData: boolean;\r\n pageSize: number;\r\n page: number;\r\n filter: string;\r\n types: number[];\r\n timeSpan: number;\r\n startDate: number;\r\n endDate: number;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n listModeIsLine: boolean;\r\n checkedIds: string[];\r\n}\r\n\r\nexport class LogList extends React.Component {\r\n constructor(props: ILogListProp) {\r\n super(props);\r\n this.state = {\r\n intialized: props.list && !!props.preloaded,\r\n isLoading: false,\r\n waitingPreloadedData: !Base.isNullOrUndefined(props.waitingPreloadedData) ? props.waitingPreloadedData : (props.list ? false : props.preloaded),\r\n page: props.list ? props.list.page : 1,\r\n hasMore: props.list ? props.list.hasMore : true,\r\n filter: \"\",\r\n types: props.types ? props.types.filter(i => i !== \"0\").map(i => parseInt(i, 10)) : [],\r\n timeSpan: props.timeSpan ? parseInt(props.timeSpan, 10) : 0,\r\n startDate: props.startDateStr ? props.startDateStr.toUtcDate().getTime() : 0,\r\n endDate: props.endDateStr ? props.endDateStr.toUtcDate().getTime() : 0,\r\n pageSize: props.list ? props.list.pageSize : infiniteListPageSize,\r\n sortColumn: props.sortColumn,\r\n sortOrderIsAsc: props.sortOrderIsAsc,\r\n listModeIsLine: true,\r\n items: props.list ? props.list.items : [],\r\n selectedId: null,\r\n checkedIds: [],\r\n detailsItem: null,\r\n showEditDialog: false,\r\n editDialogId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false\r\n };\r\n }\r\n\r\n searchItems = async (companyId: string, pageSize: number, page: number, filter: string, types: number[], timeSpan: number, startDate: number, endDate: number, sortColumn: string, sortOrderIsAsc: boolean,\r\n resetItems: boolean, refreshList: boolean, moveNext: boolean = false) => {\r\n const props = this.props;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => logService.getLogListItems(companyId, !refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1, filter, types, timeSpan, startDate, endDate, sortColumn, sortOrderIsAsc),\r\n false, props.disableGlobalLoading, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const items = List.getListItems(this.state.items, this.state.selectedId, this.state.checkedIds, result.items, resetItems, refreshList);\r\n let selectedId = items.selectedId;\r\n let index = items.items.findIndex(i => i.id === selectedId);\r\n let detailsItem = index > -1 ? items.items[index] : null;\r\n if (moveNext && detailsItem && index < items.items.length - 1) {\r\n index = index + 1;\r\n detailsItem = items.items[index];\r\n selectedId = items.items[index].id;\r\n }\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n types,\r\n timeSpan,\r\n startDate,\r\n endDate,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n selectedId,\r\n checkedIds: items.checkedIds,\r\n detailsItem,\r\n editDialogHasPrevious: index > 0,\r\n editDialogHasNext: index < items.items.length - 1 || result.hasMore,\r\n });\r\n this.props.onSetSortData(sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n refreshList = () => {\r\n const state = this.state;\r\n this.searchItems(this.props.companyId, state.pageSize, state.page, state.filter, state.types, state.timeSpan, state.startDate, state.endDate, state.sortColumn, state.sortOrderIsAsc, false, true);\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n if (this.props.preloaded) return;\r\n this.searchItems(this.props.companyId, state.pageSize, state.page, state.filter, state.types, state.timeSpan, state.startDate, state.endDate, state.sortColumn, state.sortOrderIsAsc, false, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: ILogListProp, prevState: ILogListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.waitingPreloadedData) {\r\n if (!props.list || (props.dataId ?? \"\") === (prevProps.dataId ?? \"\")) return;\r\n this.setState({\r\n intialized: true,\r\n waitingPreloadedData: false,\r\n page: props.list.page,\r\n hasMore: props.list.hasMore,\r\n items: props.list.items,\r\n pageSize: props.list.pageSize,\r\n sortColumn: props.list.sortColumn,\r\n sortOrderIsAsc: props.list.sortOrderIsAsc\r\n });\r\n } else {\r\n const prevDataId = prevProps.dataId ? prevProps.dataId : \"\";\r\n const dataId = props.dataId ? props.dataId : \"\";\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n const prevTypes = prevProps.types ? prevProps.types.filter(i => i !== \"0\").map(i => parseInt(i, 10)) : [];\r\n const types = props.types ? props.types.filter(i => i !== \"0\").map(i => parseInt(i, 10)) : [];\r\n const prevTimeSpan = prevProps.timeSpan ? parseInt(prevProps.timeSpan, 10) : 0;\r\n const timeSpan = props.timeSpan ? parseInt(props.timeSpan, 10) : 0;\r\n const prevStartDate = prevProps.startDateStr ? prevProps.startDateStr.toUtcDate().getTime() : 0;\r\n const startDate = props.startDateStr ? props.startDateStr.toUtcDate().getTime() : 0;\r\n const prevEndDate = prevProps.endDateStr ? prevProps.endDateStr.toUtcDate().getTime() : 0;\r\n const endDate = props.endDateStr ? props.endDateStr.toUtcDate().getTime() : 0;\r\n const prevSortColumn = prevProps.sortColumn;\r\n const sortColumn = props.sortColumn;\r\n const prevSortOrderIsAsc = prevProps.sortOrderIsAsc;\r\n const sortOrderIsAsc = props.sortOrderIsAsc;\r\n if (dataId === prevDataId && companyId === prevCompanyId &&\r\n Base.equalStrArrays(prevTypes.map(i => i.toString(10)), types.map(i => i.toString(10))) &&\r\n prevTimeSpan === timeSpan && prevStartDate === startDate && prevEndDate === endDate &&\r\n prevSortColumn === sortColumn && prevSortOrderIsAsc === sortOrderIsAsc) return;\r\n this.searchItems(companyId, state.pageSize, state.page, state.filter, types, timeSpan, startDate, endDate, sortColumn, sortOrderIsAsc, true, false);\r\n }\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(this.props.companyId, state.pageSize, 1, filter, state.types, state.timeSpan, state.startDate, state.endDate, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(this.props.companyId, state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, state.types, state.timeSpan, state.startDate, state.endDate, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds,\r\n detailsItem: this.state.items.find(i => i.id === selectedId)\r\n });\r\n };\r\n\r\n handleListModeToggle = (_event: React.MouseEvent, listModeIsLine: boolean) => {\r\n this.setState({\r\n listModeIsLine,\r\n });\r\n };\r\n\r\n handleOpenLine = (id: string) => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, id));\r\n };\r\n\r\n handleLogDialogCancel = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n this.setState(List.getEditDialogItemByIndexStateChange(this.state, index, () => this.searchItems(this.props.companyId, state.pageSize, state.page + 1, state.filter, state.types, state.timeSpan, state.startDate, state.endDate, state.sortColumn, state.sortOrderIsAsc, false, false, true)));\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n {props.settingsActions.length > 0 &&\r\n \r\n {Translations.Settings}\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n {\r\n return {\r\n columns: [\r\n { size: 2, column: \"modifyDate\", content: this.handleOpenLine(item.id)}>{Base.timeToDateTimeStr(item.modifyDate, true)} },\r\n { size: 2, column: \"type\", content: item.typeStr },\r\n { size: 2, column: \"companyCode\", content: item.companyCode },\r\n { size: 2, column: \"userCode\", content: item.userCode },\r\n { size: 4, column: \"operation\", content: item.operation }],\r\n id: item.id\r\n };\r\n })\r\n : null\r\n }\r\n cards={!state.listModeIsLine\r\n ? state.items.map((item) => {\r\n return {\r\n sm: 4,\r\n rows: [\r\n {\r\n cols: [\r\n {\r\n size: 6,\r\n title: Translations.Time,\r\n value: this.handleOpenLine(item.id)}>{Base.timeToDateTimeStr(item.modifyDate, true)}\r\n },\r\n { size: 6, title: Translations.AType, value: item.typeStr }\r\n ]\r\n },\r\n {\r\n classes: \"row\",\r\n cols: [\r\n { size: 6, title: Translations.Company, value: item.companyCode },\r\n { size: 6, title: Translations.User, value: item.userCode }\r\n ]\r\n },\r\n {\r\n classes: \"row\",\r\n cols: [\r\n { title: Translations.Operation, value: item.operation }\r\n ]\r\n }],\r\n id: item.id\r\n };\r\n })\r\n : null\r\n }\r\n lineDetails={state.detailsItem\r\n ? \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.handleOpenLine(state.selectedId)}\r\n />\r\n \r\n : null}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpenLine}\r\n />\r\n \r\n {state.showEditDialog &&\r\n List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","import { getApiCall, postApiCall } from \"./tokenService\";\r\nimport { LogListItems } from \"../log/logListItems\";\r\nimport { LogPage } from \"../log/logPage\";\r\nimport { LogProperties } from \"../log/logProperties\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\n\r\n// #region LogPage\r\nexport const getLogPage = (): Promise => {\r\n return getApiCall(\"api/log\", LogPage);\r\n};\r\n\r\nexport const getLogListItems = (companyId: string, pageSize: number, page: number, filter: string, types: number[], timeSpan: number, startDate: number, endDate: number, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return postApiCall(\"api/log/list\", LogListItems, JSON.stringify({\r\n companyId,\r\n pageSize,\r\n page,\r\n sortColumn,\r\n sortOrder: sortOrderIsAsc ? \"asc\" : \"desc\",\r\n filter: filter || \"\",\r\n types,\r\n timeSpan,\r\n startDate: startDate || null,\r\n endDate: endDate || null\r\n }));\r\n};\r\n// #endregion LogPage\r\n\r\n// #region Module properties\r\nexport const getLogProperties = (companyId: string): Promise => {\r\n return getApiCall(\"api/log/properties?id=\" + companyId, LogProperties);\r\n};\r\n\r\nexport const saveLogProperties = (obj: any): Promise => {\r\n return postApiCall(\"api/log/saveproperties\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const clearLog = (): Promise => {\r\n return postApiCall(\"api/log/clear\", ApiSuccess);\r\n};\r\n// #endregion Module properties","/* eslint-disable no-unused-vars */\r\n// LogPropertiesDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { ILogProperties } from \"../../../models/log/logProperties\";\r\nimport * as logService from \"../../../models/services/logService\";\r\nimport { IUnitNode } from \"../../../models/unit/unitNode\";\r\nimport { IUnitPermissionUserGroup } from \"../../../models/userGroup/unitPermissionUserGroup\";\r\nimport { ConfirmationButton } from \"../../framework/Button/ConfirmationButton\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { IPageNavMenuItem } from \"../../framework/PageNav/PageNavMenuItems\";\r\nimport { UnitApplicationPermissions } from \"../../framework/Unit/UnitApplicationPermissions\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\nexport const enum LogSettingsDialogMenuItem {\r\n LogProperties = \"1\",\r\n Permissions = \"2\",\r\n}\r\n\r\n//LogPropertiesDialog\r\nexport interface ILogPropertiesDialogProp {\r\n classes?: string;\r\n companyId: string;\r\n properties: ILogProperties;\r\n settingsActions: IPageNavMenuItem[];\r\n onOk: () => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface ILogPropertiesDialogState {\r\n activeMenuItem: LogSettingsDialogMenuItem;\r\n isCompanySpecific: boolean;\r\n logSizeInDaysStr: string;\r\n userGroups: IUnitPermissionUserGroup[];\r\n unitNode: IUnitNode;\r\n saveUnitNode: IUnitNode;\r\n}\r\n\r\nexport class LogPropertiesDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: ILogPropertiesDialogProp) {\r\n super(props);\r\n const properties = props.properties;\r\n const userGroups = properties.userGroups.slice(0);\r\n this.state = {\r\n activeMenuItem: LogSettingsDialogMenuItem.LogProperties,\r\n isCompanySpecific: props.companyId !== Base.emptyGuid,\r\n logSizeInDaysStr: properties.logSizeInDays.toString(10),\r\n userGroups,\r\n unitNode: properties.unitNode,\r\n saveUnitNode: properties.unitNode\r\n };\r\n const saveData = this.getSaveDataFromState(props, this.state);\r\n this.orgStateHash = saveData.hash;\r\n //console.log(\"this.state\", this.state)\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"logSizeInDays\") {\r\n this.setState({ logSizeInDaysStr: value });\r\n }\r\n };\r\n\r\n handleBlur = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"logSizeInDays\") {\r\n this.setState({ logSizeInDaysStr: value.toInteger().toString(10) });\r\n }\r\n };\r\n\r\n handleChangeSaveUnitNode = (saveUnitNode: IUnitNode) => {\r\n this.setState({\r\n saveUnitNode\r\n });\r\n };\r\n\r\n getSaveDataFromState = (props: ILogPropertiesDialogProp, state: ILogPropertiesDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"permissions\", state.saveUnitNode.getJsonUnitNodeSaves([], null, null));\r\n result.append(\"logSizeInDays\", state.logSizeInDaysStr.toInteger());\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async () => {\r\n const obj = this;\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage)) return;\r\n const saveData = obj.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = await AppUtils.callService(() => logService.saveLogProperties(saveData.obj));\r\n if (!result) return;\r\n props.onOk();\r\n };\r\n\r\n handleSave = () => {\r\n this.saveToDb();\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.saveToDb();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n handleClean = async () => {\r\n if (this.state.isCompanySpecific) return;\r\n if (await AppUtils.showConfirmationDialog(Translations.DoYouReallyWantToClearLog) === ConfirmationDialogResult.Yes) {\r\n await AppUtils.callService(() => logService.clearLog());\r\n }\r\n };\r\n\r\n handleToggleActiveMenuItem = async (menuItem: string) => {\r\n alert(menuItem);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n\r\n return (\r\n \r\n \r\n \r\n {!state.isCompanySpecific &&\r\n \r\n \r\n \r\n }\r\n {state.isCompanySpecific &&\r\n \r\n \r\n \r\n }\r\n \r\n {!state.isCompanySpecific\r\n ? (\r\n {Translations.DoCleanLog}\r\n )\r\n : null}\r\n \r\n \r\n {Translations.Cancel}\r\n \r\n \r\n {Translations.Save}\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}/>\r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { ToolButton } from \"ui/Scripts/source/components/framework/toolButton\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IIdTitle, IdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { ApplicationPermissionType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IListFilterItem, ListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { ISavedListFilter } from \"../../../models/common/savedListFilter\";\r\nimport { ITypedOption } from \"../../../models/common/typedOption\";\r\nimport { ILogPage } from \"../../../models/log/logPage\";\r\nimport { ILogProperties } from \"../../../models/log/logProperties\";\r\nimport * as logService from \"../../../models/services/logService\";\r\nimport { recordLockManager } from \"../../../models/services/recordLockService\";\r\nimport { IAppSessionState } from \"../../../models/store/storeTypes\";\r\nimport { HeaderMenuItem, NavigationMenu } from \"../../app/NavigationMenu\";\r\nimport { UserMenu } from \"../../app/UserMenu\";\r\nimport { ListFilterSaveDialog } from \"../../framework/Filters/ListFilterSaveDialog\";\r\nimport { PageContainer } from \"../../framework/Page/PageContainer\";\r\nimport { PageContent } from \"../../framework/Page/PageContent\";\r\nimport { PageFilterConditionDrawer } from \"../../framework/Page/PageFilterConditionDrawer\";\r\nimport { PageTopBar } from \"../../framework/Page/PageTopBar\";\r\nimport { IPageNavMenuItem } from \"../../framework/PageNav/PageNavMenuItems\";\r\nimport { FilterTabs } from \"../../framework/PageNavMenuItem/FilterTabs\";\r\nimport { LogFilterDialog } from \"../LogFilterDialog\";\r\nimport { LogList } from \"../LogList\";\r\nimport { LogPropertiesDialog, LogSettingsDialogMenuItem } from \"../LogPropertiesDialog\";\r\nimport { abortManager } from \"source/models/services/tokenService\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nconst enum LogPageTimeFilterId {\r\n None = \"0\",\r\n Today = \"1\",\r\n Yesterday = \"2\",\r\n ThisWeek = \"3\",\r\n LastWeek = \"4\",\r\n Interval = \"5\"\r\n}\r\n\r\nconst enum LogPageEventTypeFilterId {\r\n None = \"0\",\r\n Information = \"4\",\r\n Warning = \"2\",\r\n Error = \"1\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n// LogPage\r\nexport interface ILogPageOwnProps {\r\n}\r\n\r\nexport interface ILogPageStateProps {\r\n appState: IAppSessionState;\r\n dataId: number;\r\n logPage: ILogPage;\r\n}\r\n\r\nexport interface ILogPageDispatchProps {\r\n onGetLogPage: () => void;\r\n onLogout: () => void;\r\n onSetCulture: (culture: string) => void;\r\n onSaveUserParameters: (parameters: ITypedOption[]) => void;\r\n onRefreshSessionState: () => void;\r\n}\r\n\r\ntype LogPageProp = ILogPageOwnProps & ILogPageStateProps & ILogPageDispatchProps;\r\n\r\ninterface ILogPageState {\r\n initialized: boolean;\r\n activeCompanyId: string;\r\n selectedLogEventTypes: string[];\r\n selectedTimeFilterId: LogPageTimeFilterId;\r\n timeFilters: IIdTitle[];\r\n eventTypes: IIdTitle[];\r\n startDateStr: string;\r\n endDateStr: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n settingsActions: IPageNavMenuItem[];\r\n // Filters\r\n logFilterIsSet: boolean;\r\n showLogFilterDialog: boolean;\r\n logFilterDialogFilter: IListFilterItem;\r\n filters: IListFilterItem[];\r\n savedFilters: IListFilterItem[];\r\n activeFilterId: string;\r\n activeSavedFilterId: string;\r\n showListFilterSaveDialog: boolean;\r\n listFilterSaveDialogFilter: IListFilterItem;\r\n listFilterSaveDialogGeneralFilter: any;\r\n listFilterSaveDialogReservedNames: string[];\r\n listFilterSaveDialogOnGetGeneralFilter: () => any;\r\n // Properties\r\n dataId: number;\r\n showLogPropertiesDialog: boolean;\r\n logProperties: ILogProperties;\r\n}\r\n\r\nexport class LogPage extends React.Component {\r\n getTimeFilters = (): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(LogPageTimeFilterId.None, Translations.WholeHistory));\r\n result.push(IdTitle.createIdTitle(LogPageTimeFilterId.Today, Translations.Today));\r\n result.push(IdTitle.createIdTitle(LogPageTimeFilterId.Yesterday, Translations.Yesterday));\r\n result.push(IdTitle.createIdTitle(LogPageTimeFilterId.ThisWeek, Translations.Last7Days));\r\n result.push(IdTitle.createIdTitle(LogPageTimeFilterId.LastWeek, Translations.Last30Days));\r\n result.push(IdTitle.createIdTitle(LogPageTimeFilterId.Interval, Translations.Interval));\r\n return result;\r\n };\r\n \r\n getEventTypes = (): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(LogPageEventTypeFilterId.None, \"'\" + Translations.All + \"'\"));\r\n result.push(IdTitle.createIdTitle(LogPageEventTypeFilterId.Information, Translations.Info));\r\n result.push(IdTitle.createIdTitle(LogPageEventTypeFilterId.Warning, Translations.Warning));\r\n result.push(IdTitle.createIdTitle(LogPageEventTypeFilterId.Error, Translations.Error));\r\n return result;\r\n };\r\n \r\n getFilters = (): IListFilterItem[] => {\r\n const result: IListFilterItem[] = [];\r\n const nowDate = Base.getNowUtcDate();\r\n result.push(ListFilterItem.createListFilterItem(Translations.Log, Translations.Log,\r\n {\r\n logEventTypes: [LogPageEventTypeFilterId.None],\r\n timeFilterId: LogPageTimeFilterId.None.toInteger(),\r\n startDateStr: Base.utcTimeToDateStr(nowDate.addDays(-60).getTime()),\r\n endDateStr: Base.utcTimeToDateStr(nowDate.getTime())\r\n }, \"modifyDate\", false));\r\n ListFilterItem.sortListFilterItems(result);\r\n return result;\r\n };\r\n\r\n getSavedFilters = (props: LogPageProp): IListFilterItem[] => {\r\n const result: IListFilterItem[] = [];\r\n if (!props || !props.logPage) return result;\r\n for (const companyFilter of props.logPage.companyFilters) {\r\n result.push(ListFilterItem.createListFilterItemFromSavedListFilter(companyFilter, true));\r\n }\r\n for (const userFilter of props.logPage.userFilters) {\r\n result.push(ListFilterItem.createListFilterItemFromSavedListFilter(userFilter, false));\r\n }\r\n ListFilterItem.sortListFilterItems(result);\r\n return result;\r\n };\r\n\r\n getLogFilterIsSet = (state: ILogPageState): boolean => {\r\n return LogFilterDialog.filterIsSet(state.timeFilters, state.eventTypes,\r\n state.selectedTimeFilterId, state.selectedLogEventTypes);\r\n };\r\n\r\n getSettingsActions = (activeCompanyId: string): IPageNavMenuItem[] => {\r\n const props = this.props;\r\n const sessionState = props.appState.state;\r\n const result: IPageNavMenuItem[] = [];\r\n if (activeCompanyId === Base.emptyGuid) {\r\n result.push({ id: LogSettingsDialogMenuItem.LogProperties, title: Translations.LogModuleProperties });\r\n } else if (sessionState.isCompanyAdmin) {\r\n result.push({ id: LogSettingsDialogMenuItem.Permissions, title: Translations.Permissions });\r\n }\r\n return result;\r\n };\r\n \r\n constructor(props: LogPageProp) {\r\n super(props);\r\n abortManager.abortAll(); //Abort all abortable calls regardless of module\r\n const filters = this.getFilters();\r\n const filterProps = ListFilterItem.getFilterProps(filters[0], \"\", true, this.getStateFilterPropsFromGeneralFilter);\r\n const state = {\r\n ...filterProps,\r\n initialized: !!props.logPage,\r\n activeCompanyId: props.appState.state.isSuperAdmin\r\n ? Base.emptyGuid\r\n : props.appState.state.companyId,\r\n timeFilters: this.getTimeFilters(),\r\n eventTypes: this.getEventTypes(),\r\n settingsActions: props.logPage && props.logPage.companies.length > 0\r\n ? this.getSettingsActions(props.logPage.companies[0].id)\r\n : [],\r\n // Filters\r\n logFilterIsSet: false,\r\n activeFilterId: filters[0].id,\r\n activeSavedFilterId: \"\",\r\n filters,\r\n savedFilters: this.getSavedFilters(props),\r\n showLogFilterDialog: false,\r\n logFilterDialogFilter: null,\r\n showListFilterSaveDialog: false,\r\n listFilterSaveDialogFilter: null,\r\n listFilterSaveDialogGeneralFilter: null,\r\n listFilterSaveDialogReservedNames: [],\r\n listFilterSaveDialogOnGetGeneralFilter: null,\r\n // Properties\r\n dataId: props.dataId,\r\n showLogPropertiesDialog: false,\r\n logProperties: null\r\n };\r\n this.state = {\r\n ...state,\r\n logFilterIsSet: this.getLogFilterIsSet(state)\r\n };\r\n }\r\n\r\n componentDidMount(): void {\r\n const sessionState = this.props.appState.state;\r\n recordLockManager.unlockAll(sessionState?.companyId, sessionState?.code);\r\n this.props.onGetLogPage();\r\n }\r\n\r\n componentDidUpdate(prevProps: LogPageProp, prevState: ILogPageState): void {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevCompanyIds = (prevProps.logPage ? prevProps.logPage.companies.map(i => i.id) : []).join(\",\");\r\n const companyIds = (props.logPage ? props.logPage.companies.map(i => i.id) : []).join(\",\");\r\n const prevCompanyId = prevProps.logPage && prevProps.logPage.companies.length > 0 ? prevProps.logPage.companies[0].id : Base.emptyGuid;\r\n const companyId = props.logPage && props.logPage.companies.length > 0 ? props.logPage.companies[0].id : Base.emptyGuid;\r\n if (prevProps.dataId === props.dataId && prevCompanyId === companyId && prevCompanyIds === companyIds) return;\r\n const savedFilters = this.getSavedFilters(props);\r\n const activeSavedFilterId = savedFilters.find(i => i.id === state.activeSavedFilterId)\r\n ? state.activeSavedFilterId\r\n : \"\";\r\n const stateChange = {\r\n dataId: props.dataId,\r\n initialized: !!props.logPage,\r\n activeCompanyId: companyId,\r\n savedFilters,\r\n activeSavedFilterId\r\n };\r\n const newState = { ...state, ...stateChange };\r\n this.setState({\r\n ...stateChange,\r\n logFilterIsSet: this.getLogFilterIsSet(newState),\r\n settingsActions: this.getSettingsActions(newState.activeCompanyId)\r\n });\r\n }\r\n\r\n handleChangeActiveCompanyId = (companyId: string) => {\r\n if (this.state.activeCompanyId === companyId) return;\r\n this.setState({ activeCompanyId: companyId });\r\n };\r\n\r\n // #region Saved Filter\r\n getGeneralFilterFromState = (state: ILogPageState): any => {\r\n return {\r\n logEventTypes: state.selectedLogEventTypes ? state.selectedLogEventTypes.filter(i => i !== LogPageEventTypeFilterId.None) : [],\r\n timeFilterId: state.selectedTimeFilterId ? parseInt(state.selectedTimeFilterId, 10) : 0,\r\n startDateStr: state.startDateStr ?? \"\",\r\n endDateStr: state.endDateStr ?? \"\"\r\n };\r\n };\r\n \r\n getStateFilterPropsFromGeneralFilter = (generalFilter: any): any => {\r\n return {\r\n selectedLogEventTypes: generalFilter && generalFilter.logEventTypes && generalFilter.logEventTypes.length > 0 ? generalFilter.logEventTypes : [LogPageEventTypeFilterId.None],\r\n selectedTimeFilterId: generalFilter && !Base.isNullOrUndefined(generalFilter.timeFilterId) ? generalFilter.timeFilterId.toString(10) : LogPageTimeFilterId.None,\r\n startDateStr: generalFilter && generalFilter.startDateStr ? generalFilter.startDateStr : \"\",\r\n endDateStr: generalFilter && generalFilter.endDateStr ? generalFilter.endDateStr : \"\",\r\n };\r\n };\r\n \r\n getFilterPropsWithState = (listItemFilter: IListFilterItem) => {\r\n const state = this.state;\r\n let result = {\r\n selectedLogEventTypes: state.selectedLogEventTypes,\r\n selectedTimeFilterId: state.selectedTimeFilterId,\r\n startDateStr: state.startDateStr,\r\n endDateStr: state.endDateStr,\r\n sortColumn: state.sortColumn,\r\n sortOrderIsAsc: state.sortOrderIsAsc\r\n };\r\n if (listItemFilter) {\r\n result = ListFilterItem.getFilterProps(listItemFilter, result.sortColumn, result.sortOrderIsAsc, this.getStateFilterPropsFromGeneralFilter);\r\n }\r\n return result;\r\n };\r\n\r\n handleChangeActiveFilter = (activeFilterId: string) => {\r\n const state = this.state;\r\n const filter = state.filters.find(i => i.id === activeFilterId);\r\n if (!filter) return;\r\n const filterProps = this.getFilterPropsWithState(filter);\r\n const activeSavedFilterId = \"\";\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId };\r\n this.setState({\r\n ...filterProps,\r\n activeFilterId,\r\n activeSavedFilterId: \"\",\r\n logFilterIsSet: this.getLogFilterIsSet(newState)\r\n });\r\n };\r\n\r\n handleChangeActiveSavedFilter = (activeSavedFilterId: string) => {\r\n const state = this.state;\r\n const savedFilter = state.savedFilters.find(i => i.id === activeSavedFilterId);\r\n if (!savedFilter) return;\r\n const filterProps = this.getFilterPropsWithState(savedFilter);\r\n const activeFilterId = \"\";\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId };\r\n this.setState({\r\n ...filterProps,\r\n activeFilterId,\r\n activeSavedFilterId,\r\n logFilterIsSet: this.getLogFilterIsSet(newState)\r\n });\r\n };\r\n\r\n handleRemoveSavedFilter = async (savedFilterId: string) => {\r\n const state = this.state;\r\n const savedFilter = state.savedFilters.find(i => i.id === savedFilterId);\r\n if (!savedFilter) return;\r\n const result = await ListFilterSaveDialog.removeListFilterFromDb(state.savedFilters, state.activeCompanyId, savedFilterId, savedFilter.isShared, ApplicationPermissionType.Log);\r\n if (!result) return;\r\n const savedFilters = state.savedFilters.filter(i => i.id !== savedFilterId);\r\n let activeFilterId = \"\";\r\n let activeSavedFilterId = \"\";\r\n let newfilter: IListFilterItem = null;\r\n if (savedFilters.length > 0) {\r\n newfilter = savedFilters[0];\r\n activeSavedFilterId = newfilter.id;\r\n } else if (state.filters.length > 0) {\r\n newfilter = state.filters[0];\r\n activeFilterId = newfilter.id;\r\n }\r\n const filterProps = this.getFilterPropsWithState(newfilter);\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId, savedFilters };\r\n this.setState({\r\n ...filterProps,\r\n showLogFilterDialog: false,\r\n activeFilterId,\r\n activeSavedFilterId,\r\n savedFilters,\r\n logFilterIsSet: this.getLogFilterIsSet(newState)\r\n });\r\n };\r\n\r\n handleFilterSortData = (sortColumn: string, sortOrderIsAsc: boolean) => {\r\n this.setState({\r\n sortColumn,\r\n sortOrderIsAsc,\r\n });\r\n };\r\n\r\n updateFiltersAfterSave = (orgFilterId: string, savedListFilter: ISavedListFilter, isShared: boolean) => {\r\n if (!savedListFilter) return;\r\n const state = this.state;\r\n const savedFilters = state.savedFilters.filter(i => i.id !== orgFilterId || i.isShared !== isShared);\r\n const filter = ListFilterItem.createListFilterItemFromSavedListFilter(savedListFilter, isShared);\r\n savedFilters.push(filter);\r\n ListFilterItem.sortListFilterItems(savedFilters);\r\n this.setState({\r\n showListFilterSaveDialog: false,\r\n savedFilters,\r\n activeFilterId: \"\",\r\n activeSavedFilterId: savedListFilter.id,\r\n logFilterDialogFilter: filter\r\n });\r\n };\r\n\r\n getActiveFilter = (): IListFilterItem => {\r\n const state = this.state;\r\n return state.activeFilterId\r\n ? state.filters.find(i => i.id === state.activeFilterId)\r\n : state.savedFilters.find(i => i.id === state.activeSavedFilterId);\r\n };\r\n\r\n handleSaveListFilter = async (saveAs: boolean, onGetGeneralFilter: () => any) => {\r\n const state = this.state;\r\n const filter = this.getActiveFilter();\r\n if (!filter) return;\r\n if (!saveAs) {\r\n const savedListFilter = await ListFilterSaveDialog.saveListFilterToDb(filter, this.getGeneralFilterFromState(state), state.sortColumn, state.sortOrderIsAsc, state.activeCompanyId, ApplicationPermissionType.Log);\r\n this.updateFiltersAfterSave(filter.id, savedListFilter, filter.isShared);\r\n } else {\r\n this.setState({\r\n showListFilterSaveDialog: true,\r\n listFilterSaveDialogFilter: filter,\r\n listFilterSaveDialogReservedNames: state.savedFilters.map(i => i.id).concat(state.filters.map(i => i.title)),\r\n listFilterSaveDialogGeneralFilter: this.getGeneralFilterFromState(state),\r\n listFilterSaveDialogOnGetGeneralFilter: onGetGeneralFilter\r\n });\r\n }\r\n };\r\n\r\n handleSaveListFilterDialogOk = (savedListFilter: ISavedListFilter, isShared: boolean) => {\r\n this.updateFiltersAfterSave(\"\", savedListFilter, isShared);\r\n };\r\n\r\n handleSaveListFilterDialogCancel = () => {\r\n this.setState({\r\n showListFilterSaveDialog: false\r\n });\r\n };\r\n // #endregion Saved Filter\r\n\r\n // #region Log Filter\r\n handleOpenLogFilterDialog = () => {\r\n const filter = this.getActiveFilter();\r\n if (!filter) return;\r\n this.setState({\r\n showLogFilterDialog: true,\r\n logFilterDialogFilter: filter\r\n });\r\n };\r\n\r\n handleLogFilterDialogOk = (closeDialog: boolean, selectedTimeFilterId: LogPageTimeFilterId, selectedLogEventTypes: string[], startDateStr: string, endDateStr: string): any => {\r\n const newState = { ...this.state, selectedTimeFilterId, selectedLogEventTypes, startDateStr, endDateStr };\r\n this.setState({\r\n showLogFilterDialog: !closeDialog,\r\n selectedLogEventTypes,\r\n selectedTimeFilterId,\r\n startDateStr,\r\n endDateStr,\r\n logFilterIsSet: this.getLogFilterIsSet(newState)\r\n });\r\n return this.getGeneralFilterFromState(newState);\r\n };\r\n \r\n handleLogFilterDialogCancel = () => {\r\n this.setState({ showLogFilterDialog: false });\r\n };\r\n // #endregion Log Filter\r\n\r\n handleOpenLogProperties = async () => {\r\n const result = await AppUtils.callService(() => logService.getLogProperties(this.state.activeCompanyId), false);\r\n if (!result) return;\r\n this.setState({\r\n showLogPropertiesDialog: true,\r\n logProperties: result\r\n });\r\n };\r\n\r\n handleLogPropertiesDialogOk = () => {\r\n this.setState({\r\n dataId: Base.getRandomIntInteger(1000000),\r\n showLogPropertiesDialog: false\r\n });\r\n };\r\n\r\n handleLogPropertiesDialogCancel = () => {\r\n this.setState({\r\n showLogPropertiesDialog: false\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n i.id === state.activeSavedFilterId) : null}\r\n dataId={state.dataId.toString(10)}\r\n preloaded={true}\r\n waitingPreloadedData={true}\r\n list={props.logPage ? props.logPage.list : null}\r\n listFilterIsSet={state.logFilterIsSet}\r\n types={state.selectedLogEventTypes}\r\n companyId={state.activeCompanyId}\r\n timeSpan={state.selectedTimeFilterId}\r\n startDateStr={state.startDateStr}\r\n endDateStr={state.endDateStr}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n settingsActions={state.settingsActions}\r\n titleSuffix={\r\n \r\n }\r\n reportTabs={\r\n \r\n }\r\n onOpenFiltersDialog={this.handleOpenLogFilterDialog}\r\n onToggleSettingsDialog={this.handleOpenLogProperties}\r\n onSetSortData={this.handleFilterSortData}\r\n />\r\n \r\n \r\n \r\n \r\n {state.showListFilterSaveDialog &&\r\n \r\n }\r\n {state.showLogPropertiesDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","/* eslint-disable no-unused-vars */\r\nimport * as React from \"react\";\r\n/* eslint-enable no-unused-vars */\r\nimport { connect } from \"react-redux\";\r\nimport { IApplicationState } from \"../../models/store/storeTypes\";\r\nimport * as storeEffects from \"../../models/store/storeEffects\";\r\nimport { ILogPageOwnProps, ILogPageStateProps, ILogPageDispatchProps, LogPage } from \"../../components/log/LogPage\";\r\nimport { ITypedOption } from \"../../models/common/typedOption\";\r\n\r\nexport function mapStateToProps(applicationState: IApplicationState, ownProps: ILogPageOwnProps): ILogPageStateProps {\r\n if (!applicationState || !applicationState.front) {\r\n return {\r\n appState: null,\r\n dataId: -1,\r\n logPage: null\r\n };\r\n }\r\n const log = applicationState.log;\r\n return {\r\n appState: applicationState.session,\r\n dataId: log.dataId,\r\n logPage: log.logPage\r\n };\r\n}\r\n\r\nexport function mapDispatchToProps(dispatch: storeEffects.LogThunkDispatch): ILogPageDispatchProps {\r\n return {\r\n onGetLogPage: () => dispatch(storeEffects.getLogPage()),\r\n onLogout: () => dispatch(storeEffects.logout()),\r\n onSetCulture: (culture: string) => dispatch(storeEffects.setCulture(culture)),\r\n onSaveUserParameters: (parameters: ITypedOption[]) => dispatch(storeEffects.saveUserParameters(parameters)),\r\n onRefreshSessionState: () => dispatch(storeEffects.refreshSessionState()),\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(LogPage);","// MessageFilterDrawer - MODULE\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { IListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Grid } from \"@mui/material\";\r\nimport { FilterSearchField } from \"source/components/framework/Filters/FilterSearchField\";\r\nimport { SaveDataObj } from \"source/framework/saveData\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { FormField } from \"source/components/framework/FormField\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { CheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/CheckboxDropdown\";\r\nimport { TreeCheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/TreeCheckboxDropdown\";\r\nimport { FilterButtons } from \"source/components/framework/Filters/FilterButtons\";\r\nimport { DrawerContent } from \"source/components/framework/Drawer/DrawerContent\";\r\nimport { PageFilterConditionDrawer } from \"source/components/framework/Page/PageFilterConditionDrawer\";\r\nimport { DatePicker } from \"source/components/framework/DateTime\";\r\nimport { IdTitleDropdown } from \"ui/Scripts/source/components/framework/Dropdown/IdTitleDropdown\";\r\nimport { IMessagePageFilterLists, IMessagePageFilterState, IMessagePageFilterStateWithoutDates } from \"../MessagePageFilter\";\r\n\r\n//MessageFilterDrawer\r\nexport interface IMessageFilterDrawerProp extends IMessagePageFilterLists, IMessagePageFilterState {\r\n open: boolean;\r\n filter: IListFilterItem;\r\n canRemoveSharedFilters: boolean;\r\n onSaveFilter: (saveAs: boolean, onGetGeneralFilter: () => any) => void;\r\n onRemoveFilter: (filterId: string) => void;\r\n onOk: (closeDialog: boolean, filterState: IMessagePageFilterState) => any;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IMessageFilterDrawerState extends IMessagePageFilterStateWithoutDates {\r\n startDateStr: string;\r\n endDateStr: string;\r\n startEndDateDisabled: boolean;\r\n}\r\n\r\nexport class MessageFilterDrawer extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n getStateFromProps = (props: IMessageFilterDrawerProp): IMessageFilterDrawerState => {\r\n return {\r\n ...props,\r\n startDateStr: props.selectedStartDate ? Base.timeToDateStr(props.selectedStartDate) : \"\",\r\n endDateStr: props.selectedEndDate ? Base.timeToDateStr(props.selectedEndDate) : \"\",\r\n startEndDateDisabled: props.selectedDynamicTimeFilterId !== props.dynamicTimeFilters[0].id\r\n };\r\n };\r\n\r\n constructor(props: IMessageFilterDrawerProp) {\r\n super(props);\r\n this.state = this.getStateFromProps(props);\r\n this.orgStateHash = this.getSaveDataFromState(props, this.state).hash;\r\n }\r\n\r\n componentDidUpdate(prevProps: IMessageFilterDrawerProp, prevState: IMessageFilterDrawerState): void {\r\n const props = this.props;\r\n const filterChanged = prevProps.filter?.getHash() !== props.filter?.getHash();\r\n const opened = !prevProps.open && props.open;\r\n if (!filterChanged && !opened) return;\r\n const state = this.getStateFromProps(props);\r\n this.setState(state);\r\n this.orgStateHash = this.getSaveDataFromState(props, state).hash;\r\n }\r\n\r\n handleChangeDynamicTimeFilterId = (id: string) => {\r\n if (id.toInteger() > 0) {\r\n this.setState({ selectedDynamicTimeFilterId: id, startDateStr: \"\", endDateStr: \"\", startEndDateDisabled: true });\r\n } else {\r\n this.setState({ selectedDynamicTimeFilterId: id, startEndDateDisabled: false });\r\n }\r\n };\r\n\r\n handleStartDateChange = (startDateStr: string) => {\r\n this.setState({ startDateStr });\r\n };\r\n\r\n handleEndDateChange = (endDateStr: string) => {\r\n this.setState({ endDateStr });\r\n };\r\n\r\n handleChangeUnitIds = (selectedUnitIds: string[]) => {\r\n this.setState({\r\n selectedUnitIds\r\n });\r\n };\r\n\r\n handleChangeCompanyIds = (selectedCompanyIds: string[]) => {\r\n this.setState({\r\n selectedCompanyIds\r\n });\r\n };\r\n\r\n handleChangeModifyUserCodes = (selectedModifyUserCodes: string[]) => {\r\n this.setState({\r\n selectedModifyUserCodes\r\n });\r\n };\r\n\r\n getSaveDataFromState = (_props: IMessageFilterDrawerProp, state: IMessageFilterDrawerState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"startDate\", state.startDateStr);\r\n result.append(\"endDate\", state.endDateStr);\r\n result.append(\"selectedUnitIds\", state.selectedUnitIds);\r\n result.append(\"selectedCompanyIds\", state.selectedCompanyIds);\r\n result.append(\"selectedModifyUserCodes\", state.selectedModifyUserCodes);\r\n result.append(\"selectedDynamicTimeFilterId\", state.selectedDynamicTimeFilterId ? state.selectedDynamicTimeFilterId : null);\r\n return result;\r\n };\r\n\r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n static filterIsSet = (filterLists: IMessagePageFilterLists, filterState: IMessagePageFilterState): boolean => {\r\n return !!filterState.selectedStartDate || !!filterState.selectedEndDate ||\r\n !(Base.equalStrArrays(filterState.selectedUnitIds, [filterLists.units[0].id]) &&\r\n Base.equalStrArrays(filterState.selectedCompanyIds, [filterLists.companies[0].id]) &&\r\n Base.equalStrArrays(filterState.selectedModifyUserCodes, [filterLists.modifyUsers[0].id]) &&\r\n filterState.selectedDynamicTimeFilterId === filterLists.dynamicTimeFilters[0].id);\r\n };\r\n\r\n getSaveFilterState = (): IMessagePageFilterState => {\r\n const state = this.state;\r\n const selectedStartDate = state.startDateStr ? state.startDateStr.toUtcDate().getTime() : null;\r\n const selectedEndDate = state.endDateStr ? state.endDateStr.toUtcDate().getTime() : null;\r\n return { ...state, selectedStartDate, selectedEndDate };\r\n };\r\n\r\n handleSaveFilter = async (saveAs: boolean) => {\r\n const props = this.props;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n const filterState = this.getSaveFilterState();\r\n if (!saveAs) {\r\n props.onOk(false, filterState);\r\n await this.props.onSaveFilter(false, null);\r\n } else {\r\n await this.props.onSaveFilter(true, () => {\r\n return props.onOk(false, filterState);\r\n });\r\n }\r\n };\r\n\r\n static getClearedParametersState = (props: IMessagePageFilterLists) => {\r\n return {\r\n startDateStr: \"\",\r\n endDateStr: \"\",\r\n selectedUnitIds: [props.units[0].id],\r\n selectedCompanyIds: [props.companies[0].id],\r\n selectedModifyUserCodes: [props.modifyUsers[0].id],\r\n selectedDynamicTimeFilterId: props.dynamicTimeFilters[0].id\r\n };\r\n };\r\n\r\n handleClear = () => {\r\n const props = this.props;\r\n this.setState(\r\n MessageFilterDrawer.getClearedParametersState(props)\r\n );\r\n };\r\n\r\n handleSave = async () => {\r\n const props = this.props;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n props.onOk(true, this.getSaveFilterState());\r\n };\r\n\r\n handleCancel = async (checkChanges: boolean) => {\r\n AppUtils.cancelEditDialog(checkChanges, this.getSaveDataFromState(this.props, this.state).hash, this.orgStateHash, this.handleSave, this.props.onCancel, Translations.YouHaveUnapprovedChangesDoYouWantApproveChanges);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n this.handleCancel(false)}\r\n >\r\n \r\n {!!props.onSaveFilter && !!props.onRemoveFilter &&\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n actions={\r\n \r\n }\r\n />\r\n \r\n );\r\n }\r\n}\r\n","/* global JSX */\r\nimport { Alert, Box, Chip, Stack } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ToolTitle } from \"../../framework/Tool/ToolTitle\";\r\nimport { IIdTitleNode, IdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { SelectUnitDialog } from \"source/components/framework/Unit/SelectUnitDialog\";\r\nimport { RemoveToolButton } from \"source/components/framework/Button/RemoveToolButton\";\r\nimport { AddToolButton } from \"source/components/framework/Button/AddToolButton\";\r\n\r\n//UnitBlockItem\r\ninterface IUnitBlockItemProps {\r\n unit: IIdTitleNode;\r\n selectedIds: string[];\r\n onClick: (id: string) => void;\r\n}\r\n\r\nexport const UnitBlockItem = (props: IUnitBlockItemProps) => {\r\n const unit = props.unit;\r\n const selected = props.selectedIds.indexOf(unit.id) > -1;\r\n return (\r\n }\r\n variant={selected ? \"filled\" : \"outlined\"}\r\n onClick={(e: { stopPropagation: () => void; }) => { e.stopPropagation(); props.onClick(unit.id); }}\r\n />\r\n );\r\n};\r\n\r\n//UnitBlocks\r\nexport interface IUnitBlocksProp {\r\n isReadOnly?: boolean;\r\n title: string | JSX.Element;\r\n noUnitsMessage?: string;\r\n parentIsNew?: boolean;\r\n parentIsNewMessage?: string;\r\n unitTree: IIdTitleNode[];\r\n margin?: string | number;\r\n units: IIdTitleNode[];\r\n onAddUnit: (unit: IIdTitleNode) => void;\r\n onRemoveUnits: (unitIds: string[]) => void;\r\n}\r\n\r\ninterface IUnitBlocksState {\r\n unitTree: IIdTitleNode[];\r\n selectedIds: string[];\r\n showSelectUnitDialog: boolean;\r\n}\r\n\r\nexport class UnitBlocks extends React.Component {\r\n constructor(props: IUnitBlocksProp) {\r\n super(props);\r\n const unitTree = Base.getTypedArray(props.unitTree, IdTitleNode);\r\n const selectedUnits = IdTitleNode.getByIds(unitTree, props.units.map(i => i.id));\r\n for (const unit of selectedUnits) {\r\n unit.active = false;\r\n }\r\n this.state = {\r\n unitTree,\r\n selectedIds: [],\r\n showSelectUnitDialog: false\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps: IUnitBlocksProp, prevState: IUnitBlocksState) {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevHash = JSON.stringify(prevProps.units);\r\n const hash = JSON.stringify(props.units);\r\n if (prevHash === hash) return;\r\n const unitTree = Base.getTypedArray(props.unitTree, IdTitleNode);\r\n const selectedUnits = IdTitleNode.getByIds(unitTree, props.units.map(i => i.id));\r\n for (const unit of selectedUnits) {\r\n unit.active = false;\r\n }\r\n const unitIds = props.units.map(i => i.id);\r\n this.setState({\r\n unitTree,\r\n selectedIds: state.selectedIds.filter(i => unitIds.indexOf(i) > -1)\r\n });\r\n }\r\n\r\n handleBlockClick = (id: string) => {\r\n this.setState({\r\n selectedIds: [id]\r\n });\r\n };\r\n\r\n // #region Add Unit\r\n handleAdd = () => {\r\n this.setState({\r\n showSelectUnitDialog: true\r\n });\r\n };\r\n\r\n handleSelectUnitDialogOk = async (unit: IIdTitleNode) => {\r\n const props = this.props;\r\n if (!unit) return;\r\n props.onAddUnit(new IdTitleNode(unit));\r\n this.setState({\r\n showSelectUnitDialog: false\r\n });\r\n };\r\n\r\n handleSelectUnitDialogCancel = () => {\r\n this.setState({\r\n showSelectUnitDialog: false\r\n });\r\n };\r\n // #endregion Add Unit\r\n\r\n // #region Remove Unit\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.selectedIds.length < 1) return;\r\n props.onRemoveUnits(state.selectedIds);\r\n };\r\n // #endregion Remove Unit\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const units = props.units;\r\n const titleIsString = Base.isString(props.title);\r\n return (\r\n
    \r\n \r\n {titleIsString &&\r\n \r\n }\r\n {!titleIsString &&\r\n props.title\r\n }\r\n \r\n {!props.isReadOnly &&\r\n \r\n }\r\n {!props.isReadOnly &&\r\n \r\n }\r\n \r\n \r\n \r\n {!props.isReadOnly && !!props.parentIsNew && !!props.parentIsNewMessage &&\r\n {props.parentIsNewMessage}\r\n }\r\n {!props.isReadOnly && units.length < 1 && !!props.noUnitsMessage &&\r\n {props.noUnitsMessage}\r\n }\r\n {units.map((unit) =>\r\n \r\n )}\r\n \r\n {state.showSelectUnitDialog &&\r\n \r\n }\r\n
    \r\n );\r\n }\r\n}","//SelectCompanyGroupForPermissionsDialog\r\n//***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Base } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/framework/base\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { infiniteListPageSize } from \"../../../models/common/webConsts\";\r\nimport * as companyGroupService from \"../../../models/services/companyGroupService\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogListContainer } from \"../../framework/Dialog/DialogListContainer\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { Box, FormControlLabel, Grid, Radio } from \"@mui/material\";\r\nimport { CompanyGroupType } from \"ui/Scripts/source/models/enums\";\r\nimport { CompanyGroupForPermissionListItem, ICompanyGroupForPermissionListItem } from \"source/models/companyGroup/companyGroupForPermissionListItem\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\n\r\n//SelectCompanyGroupForPermissionsDialog\r\nexport interface ISelectCompanyGroupForPermissionsDialogProps {\r\n companyId: string;\r\n title: string;\r\n ignoreCompanyGroupCodes?: string[];\r\n multiSelect?: boolean;\r\n canUseAllCompanyGroup?: boolean;\r\n hasNormalCompanyGroups: boolean;\r\n hasFixedCompanyGroups: boolean;\r\n messageTargetMode?: boolean;\r\n onOk: (userGroups: ICompanyGroupForPermissionListItem[]) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface ISelectCompanyGroupForPermissionsDialogState {\r\n intialized: boolean;\r\n isLoading: boolean;\r\n groupType: CompanyGroupType;\r\n page: number;\r\n hasMore: boolean;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n items: ICompanyGroupForPermissionListItem[];\r\n selectedId: string;\r\n checkedIds: string[];\r\n}\r\n\r\nexport class SelectCompanyGroupForPermissionsDialog extends React.Component {\r\n constructor(props: ISelectCompanyGroupForPermissionsDialogProps) {\r\n super(props);\r\n this.state = {\r\n intialized: false,\r\n isLoading: false,\r\n groupType: props.hasNormalCompanyGroups && props.hasNormalCompanyGroups\r\n ? CompanyGroupType.Normal\r\n : CompanyGroupType.Fixed,\r\n page: 1,\r\n hasMore: true,\r\n filter: \"\",\r\n sortColumn: \"name\",\r\n sortOrderIsAsc: true,\r\n items: [],\r\n selectedId: null,\r\n checkedIds: [],\r\n };\r\n }\r\n\r\n searchItems = async (groupType: CompanyGroupType, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => companyGroupService.getCompanyGroupForPermissionListItems(props.companyId, !refreshList ? infiniteListPageSize : (page * infiniteListPageSize),\r\n !refreshList ? page : 1, filter, sortColumn, sortOrderIsAsc, groupType, props.ignoreCompanyGroupCodes, props.messageTargetMode), false, true, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const items = List.getListItems(state.items, state.selectedId, state.checkedIds, result.items, resetItems, refreshList);\r\n if (groupType !== CompanyGroupType.Fixed && props.canUseAllCompanyGroup && items.items.findIndex(i => i.code === \"\") < 0 && props.ignoreCompanyGroupCodes.findIndex(i => i === \"\") < 0) {\r\n //console.log(props.canUseAllCompanyGroup, items.items, props.ignoreCompanyGroupCodes, props.ignoreCompanyGroupCodes.findIndex(i => i === \"\"));\r\n items.items.unshift(CompanyGroupForPermissionListItem.createCompanyGroupForPermissionListItem(Base.emptyGuid, \"\", \"'\" + Translations.AllCompanies + \"'\"));\r\n }\r\n this.setState({\r\n intialized: true,\r\n groupType,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n selectedId: items.selectedId,\r\n checkedIds: items.checkedIds,\r\n });\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.searchItems(state.groupType, 1, state.filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: ISelectCompanyGroupForPermissionsDialogProps, prevState: ISelectCompanyGroupForPermissionsDialogState) {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n if (companyId === prevCompanyId && Base.equalStrArrays(prevProps.ignoreCompanyGroupCodes, props.ignoreCompanyGroupCodes)) return;\r\n this.searchItems(state.groupType, 1, state.filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(state.groupType, 1, filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n changeGroupType = (groupType: CompanyGroupType) => {\r\n const state = this.state;\r\n if (state.groupType === groupType) return;\r\n this.searchItems(groupType, 1, state.filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.groupType, !nextPage ? 1 : state.page + 1, state.filter, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n handleCancel = () => {\r\n this.props.onCancel();\r\n };\r\n\r\n handleOk = () => {\r\n const state = this.state;\r\n const ids = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n if (ids.length < 1) return;\r\n const items = state.items.filter(i => ids.indexOf(i.id) > -1);\r\n if (items.length < 1) return;\r\n this.props.onOk(items);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n {props.hasNormalCompanyGroups && props.hasNormalCompanyGroups &&\r\n \r\n \r\n {\r\n this.changeGroupType(checked ? CompanyGroupType.Normal : CompanyGroupType.Fixed);\r\n }}\r\n />\r\n }\r\n />\r\n \r\n \r\n 0.5}\r\n onChange={(_e, checked: boolean) => {\r\n this.changeGroupType(checked ? CompanyGroupType.Fixed : CompanyGroupType.Normal);\r\n }}\r\n />\r\n }\r\n />\r\n \r\n \r\n }\r\n \r\n }\r\n />\r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 6,\r\n column: \"name\",\r\n content: state.groupType === CompanyGroupType.Fixed\r\n ? \r\n \r\n {item.name}\r\n \r\n : item.name\r\n },\r\n { size: 6, column: \"comment\", content: item.comment }\r\n ],\r\n id: item.id\r\n };\r\n })}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n />\r\n \r\n }\r\n buttons={[\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: this.handleCancel },\r\n { title: Translations.OK, variant: \"confirmation\", onClick: this.handleOk },\r\n ]}\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","/* global JSX */\r\nimport { Alert, Box, Chip, Stack } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ToolTitle } from \"../../../framework/Tool/ToolTitle\";\r\nimport { IMessageEditItemTargetCompanyGroup, MessageEditItemTargetCompanyGroup } from \"source/models/message/messageEditItemTargetCompanyGroup\";\r\nimport { SelectCompanyGroupForPermissionsDialog } from \"source/components/companyGroup/SelectCompanyGroupForPermissionsDialog\";\r\nimport { ICompanyGroupForPermissionListItem } from \"source/models/companyGroup/companyGroupForPermissionListItem\";\r\nimport { RemoveToolButton } from \"source/components/framework/Button/RemoveToolButton\";\r\nimport { AddToolButton } from \"source/components/framework/Button/AddToolButton\";\r\n\r\n//CompanyGroupBlockItem\r\ninterface ICompanyGroupBlockItemProps {\r\n group: IMessageEditItemTargetCompanyGroup;\r\n selectedIds: string[];\r\n onClick: (id: string) => void;\r\n}\r\n\r\nexport const CompanyGroupBlockItem = (props: ICompanyGroupBlockItemProps) => {\r\n const group = props.group;\r\n const selected = props.selectedIds.indexOf(group.id) > -1;\r\n return (\r\n }\r\n variant={selected ? \"filled\" : \"outlined\"}\r\n onClick={(e: { stopPropagation: () => void; }) => { e.stopPropagation(); props.onClick(group.id); }}\r\n />\r\n );\r\n};\r\n\r\n//MessageEditDialogCompanyGroupBlocks\r\nexport interface IIMessageEditDialogCompanyGroupBlocksStateProp {\r\n companyId: string;\r\n hasNormalCompanyGroups: boolean;\r\n hasFixedCompanyGroups: boolean;\r\n canUseAllCompanyGroup: boolean;\r\n isReadOnly?: boolean;\r\n title: string | JSX.Element;\r\n noUnitsMessage?: string;\r\n parentIsNew?: boolean;\r\n parentIsNewMessage?: string;\r\n margin?: string | number;\r\n messageTargetCompanyGroups: IMessageEditItemTargetCompanyGroup[];\r\n onAddMessageTargetCompanyGroups: (messageTargetCompanyGroups: IMessageEditItemTargetCompanyGroup[]) => void;\r\n onRemoveMessageTargetCompanyGroups: (messageTargetCompanyGroupIds: string[]) => void;\r\n}\r\n\r\ninterface IMessageEditDialogCompanyGroupBlocksState {\r\n selectedIds: string[];\r\n showSelectCompanyGroupDialog: boolean;\r\n}\r\n\r\nexport class MessageEditDialogCompanyGroupBlocks extends React.Component {\r\n constructor(props: IIMessageEditDialogCompanyGroupBlocksStateProp) {\r\n super(props);\r\n this.state = {\r\n selectedIds: [],\r\n showSelectCompanyGroupDialog: false\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps: IIMessageEditDialogCompanyGroupBlocksStateProp, prevState: IMessageEditDialogCompanyGroupBlocksState) {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevHash = JSON.stringify(prevProps.messageTargetCompanyGroups);\r\n const hash = JSON.stringify(props.messageTargetCompanyGroups);\r\n if (prevHash === hash) return;\r\n const targetIds = props.messageTargetCompanyGroups.map(i => i.id);\r\n this.setState({\r\n selectedIds: state.selectedIds.filter(i => targetIds.indexOf(i) > -1)\r\n });\r\n }\r\n\r\n handleBlockClick = (id: string) => {\r\n this.setState({\r\n selectedIds: [id]\r\n });\r\n };\r\n\r\n // #region Add Group\r\n handleAdd = () => {\r\n this.setState({\r\n showSelectCompanyGroupDialog: true\r\n });\r\n };\r\n\r\n handleSelectCompanyGroupForPermissionsDialogOk = async (addCompanyGroups: ICompanyGroupForPermissionListItem[]) => {\r\n const props = this.props;\r\n if (addCompanyGroups === null || !addCompanyGroups.length) return;\r\n props.onAddMessageTargetCompanyGroups(addCompanyGroups.map(i => {\r\n const newGroup = new MessageEditItemTargetCompanyGroup();\r\n newGroup.id = Base.getGuid();\r\n newGroup.code = i.code;\r\n newGroup.title = i.name;\r\n newGroup.logo = i.logo;\r\n return newGroup;\r\n }));\r\n this.setState({\r\n showSelectCompanyGroupDialog: false\r\n });\r\n };\r\n\r\n handleSelectCompanyGroupForPermissionsDialogCancel = () => {\r\n this.setState({\r\n showSelectCompanyGroupDialog: false\r\n });\r\n };\r\n // #endregion Add Group\r\n\r\n // #region Remove Group\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.selectedIds.length < 1) return;\r\n props.onRemoveMessageTargetCompanyGroups(state.selectedIds);\r\n };\r\n // #endregion Remove Group\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const messageTargetCompanyGroups = props.messageTargetCompanyGroups;\r\n const titleIsString = Base.isString(props.title);\r\n return (\r\n
    \r\n \r\n {titleIsString &&\r\n \r\n }\r\n {!titleIsString &&\r\n props.title\r\n }\r\n \r\n {!props.isReadOnly &&\r\n \r\n }\r\n {!props.isReadOnly &&\r\n \r\n }\r\n \r\n \r\n \r\n {!props.isReadOnly && !!props.parentIsNew && !!props.parentIsNewMessage &&\r\n {props.parentIsNewMessage}\r\n }\r\n {!props.isReadOnly && messageTargetCompanyGroups.length < 1 && !!props.noUnitsMessage &&\r\n {props.noUnitsMessage}\r\n }\r\n {messageTargetCompanyGroups.map((messageTargetCompanyGroup) =>\r\n \r\n )}\r\n \r\n {state.showSelectCompanyGroupDialog &&\r\n i.code)}\r\n multiSelect={true}\r\n messageTargetMode={true}\r\n canUseAllCompanyGroup={props.canUseAllCompanyGroup}\r\n hasNormalCompanyGroups={props.hasNormalCompanyGroups}\r\n hasFixedCompanyGroups={props.hasFixedCompanyGroups}\r\n onOk={this.handleSelectCompanyGroupForPermissionsDialogOk}\r\n onCancel={this.handleSelectCompanyGroupForPermissionsDialogCancel}\r\n />\r\n }\r\n
    \r\n );\r\n }\r\n}","import React, { useEffect, useRef, useState } from \"react\";\r\nimport { Box, Grid, TextField } from \"@mui/material\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { FormField } from \"source/components/framework/FormField\";\r\nimport { ISessionState } from \"../../../../models/session/sessionState\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Dropdown } from \"ui/Scripts/source/components/framework/Dropdown/Dropdown\";\r\nimport { IIdTitleNode, IdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { IModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { TreeCheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/TreeCheckboxDropdown\";\r\nimport { ModifyUserInfo } from \"source/components/framework/User/ModifyUserInfo/ModifyUserInfo\";\r\nimport { IMessageTypeListItem } from \"source/models/messageType/messageTypeListItem\";\r\nimport { DatePicker } from \"source/components/framework/DateTime/DatePicker\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { FormCheckBox } from \"source/components/framework/FormCheckBox\";\r\nimport { IMessageEditItemTargetUnit, MessageEditItemTargetUnit } from \"source/models/message/messageEditItemTargetUnit\";\r\nimport { IMessageEditItemTargetCompanyGroup, MessageEditItemTargetCompanyGroup } from \"source/models/message/messageEditItemTargetCompanyGroup\";\r\nimport { UnitBlocks } from \"source/components/unit/UnitBlocks\";\r\nimport { MessageEditDialogCompanyGroupBlocks } from \"../MessageEditDialogCompanyGroupBlocks/MessageEditDialogCompanyGroupBlocks\";\r\nimport { FormFieldLockedToUser } from \"source/components/framework/FormFieldLockedToUser\";\r\nimport { AppCkEditor } from \"source/components/framework/AppCkEditor\";\r\n\r\nconst MessageTypeDropDownLine = ({ item }: { item: IMessageTypeListItem }) => {\r\n if (!item) return null;\r\n return (\r\n \r\n \r\n \r\n {item.name}\r\n \r\n \r\n );\r\n};\r\n\r\ninterface IMessageEditDialogGeneralInformationProps {\r\n sessionState: ISessionState;\r\n hasNormalCompanyGroups: boolean;\r\n hasFixedCompanyGroups: boolean;\r\n canUseAllCompanyGroup: boolean;\r\n isNew: boolean;\r\n companyId: string;\r\n messageId: string;\r\n title: string;\r\n content: string;\r\n messageTypeId: string;\r\n dateStr: string;\r\n startDateStr: string;\r\n endDateStr: string;\r\n unitId: string;\r\n requiresReceipt: boolean;\r\n systemAdminMessage: boolean;\r\n messageTargetUnits: IMessageEditItemTargetUnit[];\r\n messageTargetCompanyGroups: IMessageEditItemTargetCompanyGroup[];\r\n messageTypes: IMessageTypeListItem[];\r\n senderUnits: IIdTitleNode[];\r\n targetUnits: IIdTitleNode[];\r\n lockedUser: IModifyUser;\r\n modifyUser: IModifyUser;\r\n isLockedToOtherUser: boolean;\r\n onChangeTitle: (title: string) => void;\r\n onChangeDateStr: (dateStr: string) => void;\r\n onChangeStartDateStr: (startDateStr: string) => void;\r\n onChangeEndDateStr: (endDateStr: string) => void;\r\n onChangeMessageType: (messageTypeId: string) => void;\r\n onChangeUnit: (unitId: string) => void;\r\n onChangeRequiresReceipt: (requiresReceipt: boolean) => void;\r\n onChangeSystemAdminMessage: (systemAdminMessage: boolean) => void;\r\n onChangeContent: (content: string, dirty: boolean) => void;\r\n onChangeMessageTargetUnits: (messageTargetUnits: IMessageEditItemTargetUnit[]) => void;\r\n onChangeMessageTargetCompanyGroups: (messageTargetCompanyGroups: IMessageEditItemTargetCompanyGroup[]) => void;\r\n // onChangeHandlers: (handlers: IModifyUser[]) => void;\r\n onUnlockAndLockToMe: () => void;\r\n}\r\n\r\nexport const MessageEditDialogGeneralInformation = (props: IMessageEditDialogGeneralInformationProps) => {\r\n const [messageType, setMessageType] = useState(null);\r\n const [editor, setEditor] = useState(null);\r\n const [ckEditorDataId, setCkEditorDataId] = useState(0);\r\n //const ckEditorContainerDiv = useRef(null);\r\n const initializingCkEditorContent = useRef(false);\r\n\r\n useEffect(() => {\r\n setCkEditorContent(props.content);\r\n }, [props.messageId]);\r\n\r\n useEffect(() => {\r\n setMessageType(props.messageTypes.find(i => i.id === props.messageTypeId) ?? props.messageTypes[0]);\r\n }, [props.messageTypeId]);\r\n\r\n useEffect(() => {\r\n return function cleanup() {\r\n destroyCkEditor();\r\n };\r\n }, []);\r\n\r\n const onChangeDate = (value: moment.Moment | string, callBack: (dateStr: string) => void) => {\r\n let dateStr = \"\";\r\n if (typeof value === \"string\") {\r\n if (!Base.isNullOrEmpty(value)) {\r\n dateStr = Base.timeToDateStr(value.toDate().getTime());\r\n }\r\n } else {\r\n dateStr = Base.timeToDateStr(value);\r\n }\r\n callBack(dateStr);\r\n };\r\n\r\n // #region CkEditor\r\n const setCkEditorContent = (value: string) => {\r\n if (!editor) return;\r\n initializingCkEditorContent.current = true;\r\n editor.setData(value, {\r\n callback: () => {\r\n editor.resetDirty();\r\n initializingCkEditorContent.current = false;\r\n }\r\n });\r\n setCkEditorDataId(ckEditorDataId + 1);\r\n };\r\n\r\n const destroyCkEditor = () => {\r\n if (!editor) return;\r\n editor.destroy();\r\n setEditor(null);\r\n };\r\n\r\n const handleCkEditorInstanceReady = (ev) => {\r\n setEditor(ev.editor);\r\n setCkEditorDataId(ckEditorDataId + 1);\r\n };\r\n\r\n const handleCkEditorChange = (ev) => {\r\n if (initializingCkEditorContent.current) return;\r\n const value: string = ev.editor.getData();\r\n props.onChangeContent(value, ev.editor.checkDirty());\r\n };\r\n // #endregion CkEditor\r\n\r\n // #region TargetUnits\r\n const handleAddUnit = (unit: IIdTitleNode) => {\r\n if (!unit) return;\r\n if (props.messageTargetUnits.find(i => i.unitId === unit.id)) return;\r\n const messageTargetUnit = new MessageEditItemTargetUnit();\r\n messageTargetUnit.id = Base.getGuid();\r\n messageTargetUnit.unitId = unit.id;\r\n messageTargetUnit.title = unit.title;\r\n props.onChangeMessageTargetUnits(MessageEditItemTargetUnit.sort(props.messageTargetUnits.concat(messageTargetUnit)));\r\n };\r\n\r\n const handleRemoveUnits = (unitIds: string[]) => {\r\n if (!unitIds || unitIds.length < 1) return;\r\n props.onChangeMessageTargetUnits(props.messageTargetUnits.filter(i => unitIds.indexOf(i.unitId) < 0));\r\n };\r\n // #endregion TargetUnits\r\n\r\n // #region messageTargetCompanyGroups\r\n const handleAddMessageTargetCompanyGroups = (messageTargetCompanyGroups: IMessageEditItemTargetCompanyGroup[]) => {\r\n const missingGroups = messageTargetCompanyGroups.filter(i => !props.messageTargetCompanyGroups.find(j => i.code === j.code));\r\n if (!missingGroups.length) return;\r\n props.onChangeMessageTargetCompanyGroups(MessageEditItemTargetCompanyGroup.sort(props.messageTargetCompanyGroups.concat(missingGroups)));\r\n };\r\n\r\n const handleRemoveMessageTargetCompanyGroups = (messageTargetCompanyGroupIds: string[]) => {\r\n if (!messageTargetCompanyGroupIds || messageTargetCompanyGroupIds.length < 1) return;\r\n props.onChangeMessageTargetCompanyGroups(props.messageTargetCompanyGroups.filter(i => messageTargetCompanyGroupIds.indexOf(i.id) < 0));\r\n };\r\n // #endregion messageTargetCompanyGroups \r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n props.onChangeTitle(event.target.value)} size=\"small\" fullWidth />\r\n \r\n \r\n \r\n \r\n }\r\n selectMode={true}\r\n disabled={props.isLockedToOtherUser}\r\n actions={props.messageTypes.map(item => {\r\n return {\r\n title: ,\r\n selected: props.messageTypeId === item.id,\r\n onClick: () => props.onChangeMessageType(item.id)\r\n };\r\n })}\r\n />\r\n \r\n \r\n \r\n \r\n props.onChangeUnit(unitIds[0])}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n onChangeDate(value, props.onChangeDateStr)}\r\n />\r\n \r\n \r\n \r\n \r\n onChangeDate(value, props.onChangeStartDateStr)}\r\n />\r\n \r\n \r\n \r\n \r\n onChangeDate(value, props.onChangeEndDateStr)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n  } fullWidth>\r\n \r\n \r\n \r\n {props.sessionState.isSuperAdmin &&\r\n \r\n  } fullWidth>\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!props.isNew &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.isLockedToOtherUser &&\r\n \r\n \r\n \r\n }\r\n \r\n }\r\n \r\n \r\n IdTitleNode.createIdTitleNode(i.unitId, i.title, []))}\r\n onAddUnit={handleAddUnit}\r\n onRemoveUnits={handleRemoveUnits}\r\n />\r\n {(props.hasNormalCompanyGroups || props.hasFixedCompanyGroups) &&\r\n \r\n }\r\n \r\n \r\n \r\n );\r\n};\r\n","import React from \"react\";\r\nimport * as attachmentService from \"../../../../models/services/attachmentService\";\r\nimport * as messageService from \"../../../../models/services/messageService\";\r\nimport { ISessionState } from \"../../../../models/session/sessionState\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { FileAttachment, IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { AttachmentList } from \"source/components/attachments/AttachmentList/AttachmentList\";\r\nimport downloadjs from \"downloadjs\";\r\nimport { SaveDataObj } from \"source/framework/saveData\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { SaveAttachmentBase64 } from \"ui/Scripts/source/models/common/saveAttachmentBase64\";\r\nimport { EditItem } from \"ui/Scripts/source/models/common/editItem\";\r\n\r\ninterface IMessageEditDialogAttachmentsProps {\r\n sessionState: ISessionState;\r\n isLockedToOtherUser: boolean;\r\n isNew: boolean;\r\n companyId: string;\r\n messageId: string;\r\n attachments: IFileAttachment[];\r\n onChangeAttachments: (attachments: IFileAttachment[]) => void;\r\n}\r\n\r\nexport const MessageEditDialogAttachments = (props: IMessageEditDialogAttachmentsProps) => {\r\n // #region Attachments\r\n const handleAttachmentDownload = async (id: string) => {\r\n if (!id) return;\r\n const attachment = props.attachments.find(i => i.id === id);\r\n if (!attachment) return;\r\n if (attachment.file) {\r\n downloadjs(attachment.file, attachment.name);\r\n return;\r\n }\r\n if (attachment.isNew()) return;\r\n const fileName = await AppUtils.callService(() => attachmentService.getAttachment(id));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.AttachmentParameterDownloaded, fileName));\r\n };\r\n\r\n const getRemoveAttachmentsSaveData = (attachmentIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.messageId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"ids\", attachmentIds);\r\n return result;\r\n };\r\n\r\n const handleAttachmentRemove = async (id: string) => {\r\n if (!id) return;\r\n if (!props.isNew) {\r\n const saveData = getRemoveAttachmentsSaveData([id]);\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveAttachmentParameter, props.attachments.find(x => x.id === id)?.name), false) === ConfirmationDialogResult.No) return;\r\n const result = AppUtils.callService(() => messageService.messageEditRemoveAttachments(saveData.obj));\r\n if (!result) return;\r\n }\r\n props.onChangeAttachments(props.attachments.filter(i => i.id !== id));\r\n };\r\n\r\n const getAddAttachmentsSaveData = async (attachments: IFileAttachment[]): Promise => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.messageId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"attachments\", await SaveAttachmentBase64.fromFileAttachments(attachments));\r\n return result;\r\n };\r\n \r\n const handleAttachmentsAdd = async (fileList: FileList) => {\r\n const attachments = await FileAttachment.addFileListToFileAttachments([], fileList, 0);\r\n if (attachments.length < 1) return;\r\n if (!props.isNew) {\r\n const saveData = await getAddAttachmentsSaveData(attachments);\r\n const result = await AppUtils.callService(() => messageService.messageEditAddAttachments(saveData.obj));\r\n if (!result) return;\r\n EditItem.setItemIdsFromIds(attachments, result.ids);\r\n }\r\n props.onChangeAttachments(props.attachments.concat(attachments));\r\n };\r\n // #endregion Attachments\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { infiniteListPageSize } from \"../../../models/common/webConsts\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListSearchFilter } from \"source/components/framework/List/ListSearchFilter\";\r\nimport { ListSearchContainer } from \"source/components/framework/List/ListSearchContainer\";\r\nimport { IReadReceiptListItem } from \"ui/Scripts/source/models/readReceipt/readReceiptListItem\";\r\nimport { ReadReceiptListItems } from \"ui/Scripts/source/models/readReceipt/readReceiptListItems\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Box } from \"@mui/material\";\r\n\r\nexport interface IReadReceiptListProp {\r\n companyId: string;\r\n recordId: string;\r\n height?: string;\r\n getReadReceiptListItems: (companyId: string, recordId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean) => Promise;\r\n}\r\n\r\ninterface IReadReceiptListState {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n pageSize: number;\r\n page: number;\r\n hasMore: boolean;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n items: IReadReceiptListItem[];\r\n selectedId: string;\r\n}\r\n\r\nexport class ReadReceiptList extends React.Component {\r\n constructor(props: IReadReceiptListProp) {\r\n super(props);\r\n this.state = {\r\n intialized: false,\r\n isLoading: false,\r\n page: 1,\r\n hasMore: true,\r\n filter: \"\",\r\n pageSize: infiniteListPageSize,\r\n sortColumn: \"ModifyDate\",\r\n sortOrderIsAsc: false,\r\n items: [],\r\n selectedId: null,\r\n };\r\n }\r\n\r\n searchItems = async (pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean) => {\r\n const props = this.props;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => props.getReadReceiptListItems(props.companyId, props.recordId, !refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1, filter, sortColumn, sortOrderIsAsc), false, true, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const state = this.state;\r\n const items = List.getListItems(state.items, state.selectedId, [], result.items, resetItems, refreshList);\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n selectedId: items.selectedId\r\n });\r\n };\r\n\r\n refreshList = async () => {\r\n const state = this.state;\r\n await this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, true);\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: IReadReceiptListProp, prevState: IReadReceiptListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n const prevRecordId = prevProps.recordId ? prevProps.recordId : \"\";\r\n const recordId = props.recordId ? props.recordId : \"\";\r\n if (companyId === prevCompanyId && recordId === prevRecordId) return;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId\r\n });\r\n };\r\n\r\n // getRemoveSaveData = (props: IReadReceiptListProp, ids: string[]): SaveDataObj => {\r\n // const result = new SaveDataObj();\r\n // result.append(\"companyId\", props.companyId);\r\n // result.append(\"ids\", ids);\r\n // return result;\r\n // };\r\n\r\n // remove = async (ids: string[]): Promise => {\r\n // const props = this.props;\r\n // if (ids.length < 1) return;\r\n // const saveData = this.getRemoveSaveData(props, ids);\r\n // // Call server\r\n // const result = await AppUtils.callService(() => taskService.removeTaskStates(saveData.obj));\r\n // if (!result) return null;\r\n // this.refreshList();\r\n // return result;\r\n // };\r\n\r\n // handleRemove = async () => {\r\n // const state = this.state;\r\n // const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n // const selectedItems = state.items.filter(i => selectedIds.indexOf(i.id) > -1);\r\n // if (selectedItems.length < 1) return;\r\n // if (await AppUtils.showConfirmationDialog(selectedItems.length > 1\r\n // ? Translations.DoYouReallyWantToRemoveSelectedTaskStates\r\n // : String.format(Translations.DoYouReallyWantToRemoveTaskStateParameter, selectedItems[0].code), false) === ConfirmationDialogResult.Yes) {\r\n // // Call server\r\n // this.remove(selectedIds);\r\n // }\r\n // };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n \r\n \r\n {\r\n return {\r\n columns: [\r\n { size: 3, content: Base.timeToDateTimeStr(item.modifyUser.date) },\r\n {\r\n size: 5,\r\n content: \r\n \r\n \r\n {item.modifyUser.name}\r\n \r\n \r\n },\r\n {\r\n size: 4,\r\n content: \r\n \r\n \r\n {item.userCompanyName}\r\n \r\n \r\n }\r\n ],\r\n id: item.id\r\n };\r\n })}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={[]}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={null}\r\n />\r\n \r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { infiniteListPageSize } from \"../../../models/common/webConsts\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport * as messageService from \"../../../models/services/messageService\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListSearchFilter } from \"source/components/framework/List/ListSearchFilter\";\r\nimport { ListSearchContainer } from \"source/components/framework/List/ListSearchContainer\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Box } from \"@mui/material\";\r\nimport { IMessageSendEnmailListItem } from \"source/models/messageSendEnmail/messageSendEnmailListItem\";\r\n\r\nexport interface IMessageSendEmailListProp {\r\n companyId: string;\r\n messageId: string;\r\n height?: string;\r\n}\r\n\r\ninterface IMessageSendEmailListState {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n pageSize: number;\r\n page: number;\r\n hasMore: boolean;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n items: IMessageSendEnmailListItem[];\r\n selectedId: string;\r\n}\r\n\r\nexport class MessageSendEmailList extends React.Component {\r\n constructor(props: IMessageSendEmailListProp) {\r\n super(props);\r\n this.state = {\r\n intialized: false,\r\n isLoading: false,\r\n page: 1,\r\n hasMore: true,\r\n filter: \"\",\r\n pageSize: infiniteListPageSize,\r\n sortColumn: \"ModifyDate\",\r\n sortOrderIsAsc: false,\r\n items: [],\r\n selectedId: null,\r\n };\r\n }\r\n\r\n searchItems = async (pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean) => {\r\n const props = this.props;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => messageService.getMessageSendEnmailListItems(props.companyId, props.messageId, !refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1, filter, sortColumn, sortOrderIsAsc), false, true, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const state = this.state;\r\n const items = List.getListItems(state.items, state.selectedId, [], result.items, resetItems, refreshList);\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n selectedId: items.selectedId\r\n });\r\n };\r\n\r\n refreshList = async () => {\r\n const state = this.state;\r\n await this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, true);\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: IMessageSendEmailListProp, prevState: IMessageSendEmailListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n const prevMessageId = prevProps.messageId ? prevProps.messageId : \"\";\r\n const messageId = props.messageId ? props.messageId : \"\";\r\n if (companyId === prevCompanyId && messageId === prevMessageId) return;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId\r\n });\r\n };\r\n\r\n // getRemoveSaveData = (props: IReadReceiptListProp, ids: string[]): SaveDataObj => {\r\n // const result = new SaveDataObj();\r\n // result.append(\"companyId\", props.companyId);\r\n // result.append(\"ids\", ids);\r\n // return result;\r\n // };\r\n\r\n // remove = async (ids: string[]): Promise => {\r\n // const props = this.props;\r\n // if (ids.length < 1) return;\r\n // const saveData = this.getRemoveSaveData(props, ids);\r\n // // Call server\r\n // const result = await AppUtils.callService(() => taskService.removeTaskStates(saveData.obj));\r\n // if (!result) return null;\r\n // this.refreshList();\r\n // return result;\r\n // };\r\n\r\n // handleRemove = async () => {\r\n // const state = this.state;\r\n // const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n // const selectedItems = state.items.filter(i => selectedIds.indexOf(i.id) > -1);\r\n // if (selectedItems.length < 1) return;\r\n // if (await AppUtils.showConfirmationDialog(selectedItems.length > 1\r\n // ? Translations.DoYouReallyWantToRemoveSelectedTaskStates\r\n // : String.format(Translations.DoYouReallyWantToRemoveTaskStateParameter, selectedItems[0].code), false) === ConfirmationDialogResult.Yes) {\r\n // // Call server\r\n // this.remove(selectedIds);\r\n // }\r\n // };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n \r\n \r\n {\r\n return {\r\n columns: [\r\n { size: 2, content: Base.timeToDateTimeStr(item.modifyUser.date) },\r\n {\r\n size: 4,\r\n content: \r\n \r\n \r\n {item.modifyUser.name}\r\n \r\n \r\n },\r\n { size: 3, content: item.email },\r\n {\r\n size: 3,\r\n content: \r\n \r\n \r\n {item.userCompanyName}\r\n \r\n \r\n }\r\n ],\r\n id: item.id\r\n };\r\n })}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={[]}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={null}\r\n />\r\n \r\n );\r\n }\r\n}","import { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { ConfirmationDialogResult, DatabaseRecordType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as messageService from \"../../../models/services/messageService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport { CkEditorDialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { DialogTabs } from \"../../framework/Dialog/DialogTabs\";\r\nimport { IModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { LockedRecord } from \"ui/Scripts/source/models/common/lockedRecord\";\r\nimport { recordLockManager } from \"source/models/services/recordLockService\";\r\nimport { StoreUtils } from \"source/models/store/storeUtils\";\r\nimport { DialogButtons } from \"source/components/framework/Dialog/DialogButtons\";\r\nimport { removeConfirmationWord } from \"ui/Scripts/source/models/consts\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IMessageEditItem } from \"source/models/message/messageEditItem\";\r\nimport { IMessageTypeListItem } from \"source/models/messageType/messageTypeListItem\";\r\nimport { IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { MessageEditDialogGeneralInformation } from \"./MessageEditDialogGeneralInformation\";\r\nimport { IMessageEditItemTargetUnit, MessageEditItemTargetUnitSave } from \"source/models/message/messageEditItemTargetUnit\";\r\nimport { IMessageEditItemTargetCompanyGroup, MessageEditItemTargetCompanyGroupSave } from \"source/models/message/messageEditItemTargetCompanyGroup\";\r\nimport { MessageEditDialogAttachments } from \"./MessageEditDialogAttachments\";\r\nimport { ReadReceiptList } from \"source/components/readReceipt/readReceiptList\";\r\nimport { MessageSendEmailList } from \"../MessageSendEmailList\";\r\nimport { SaveAttachmentBase64 } from \"ui/Scripts/source/models/common/saveAttachmentBase64\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum MessageEditDialogMenuItem {\r\n General = \"1\",\r\n Attachments = \"2\",\r\n ReadReceipts = \"3\",\r\n SentEmails = \"4\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\nexport interface IMessageEditDialogProp {\r\n sessionState: ISessionState;\r\n messageCompanyId: string;\r\n messageId: string;\r\n forwardMessage: boolean;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onOk: () => void;\r\n onCancel: () => void;\r\n //onNewSaved: (userGroupId: string) => void;\r\n onRefreshList: () => Promise;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n //onRefreshSessionState: () => void;\r\n}\r\n\r\nexport interface IMessageEditDialogState {\r\n activeMenuItem: MessageEditDialogMenuItem;\r\n isLoading: boolean;\r\n hasNormalCompanyGroups: boolean;\r\n hasFixedCompanyGroups: boolean;\r\n canUseAllCompanyGroup: boolean;\r\n canSaveAndSendEmail: boolean;\r\n message: IMessageEditItem;\r\n messageCompanyId: string;\r\n id: string;\r\n rowId: string;\r\n title: string;\r\n content: string;\r\n contentDirty: boolean;\r\n messageTypeId: string;\r\n dateStr: string;\r\n startDateStr: string;\r\n endDateStr: string;\r\n unitId: string;\r\n requiresReceipt: boolean;\r\n systemAdminMessage: boolean;\r\n messageTargetUnits: IMessageEditItemTargetUnit[];\r\n messageTargetCompanyGroups: IMessageEditItemTargetCompanyGroup[];\r\n attachments: IFileAttachment[];\r\n messageTypes: IMessageTypeListItem[];\r\n senderUnits: IIdTitleNode[];\r\n targetUnits: IIdTitleNode[];\r\n lockedUser: IModifyUser;\r\n isLockedToOtherUser: boolean;\r\n}\r\n\r\nexport class MessageEditDialog extends React.Component {\r\n private _isMounted: boolean;\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IMessageEditDialogProp) {\r\n super(props);\r\n this.state = {\r\n activeMenuItem: MessageEditDialogMenuItem.General,\r\n isLoading: false,\r\n hasNormalCompanyGroups: false,\r\n hasFixedCompanyGroups: false,\r\n canUseAllCompanyGroup: false,\r\n canSaveAndSendEmail: false,\r\n message: null,\r\n messageCompanyId: props.messageCompanyId,\r\n id: props.messageId,\r\n rowId: \"\",\r\n title: \"\",\r\n content: \"\",\r\n contentDirty: false,\r\n messageTypeId: \"\",\r\n dateStr: \"\",\r\n startDateStr: \"\",\r\n endDateStr: \"\",\r\n unitId: \"\",\r\n requiresReceipt: false,\r\n systemAdminMessage: false,\r\n messageTargetUnits: [],\r\n messageTargetCompanyGroups: [],\r\n attachments: [],\r\n messageTypes: [],\r\n senderUnits: [],\r\n targetUnits: [],\r\n lockedUser: null,\r\n isLockedToOtherUser: false,\r\n };\r\n }\r\n\r\n loadMessage = async (companyId: string, id: string, forwardMessage: boolean = false) => {\r\n const props = this.props;\r\n //Unlock current message\r\n if (LockedRecord.isLockedToUser(this.state.lockedUser, props.sessionState.code)) {\r\n await recordLockManager.unlock(this.state.messageCompanyId, this.state.id, DatabaseRecordType.Message);\r\n }\r\n //Load and lock message\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => messageService.getMessageEdit(companyId, id, forwardMessage), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const message = result.item;\r\n const isNew = message.id === Base.emptyGuid;\r\n const state = {\r\n ...this.state,\r\n hasNormalCompanyGroups: result.hasNormalCompanyGroups,\r\n hasFixedCompanyGroups: result.hasFixedCompanyGroups,\r\n canUseAllCompanyGroup: result.canUseAllCompanyGroup,\r\n canSaveAndSendEmail: result.canSaveAndSendEmail,\r\n message,\r\n id: message.id,\r\n messageCompanyId: message.companyId,\r\n rowId: message.rowId,\r\n title: message.title,\r\n content: message.content,\r\n messageTypeId: message.messageTypeId,\r\n dateStr: Base.utcTimeToDateStr(message.date),\r\n startDateStr: Base.utcTimeToDateStr(message.startDate),\r\n endDateStr: message.endDate ? Base.utcTimeToDateStr(message.endDate) : \"\",\r\n unitId: message.unitId,\r\n requiresReceipt: message.requiresReceipt,\r\n systemAdminMessage: message.systemAdminMessage,\r\n messageTargetUnits: message.targetUnits,\r\n messageTargetCompanyGroups: message.targetCompanyGroups,\r\n attachments: message.attachments,\r\n messageTypes: result.messageTypes,\r\n senderUnits: result.senderUnits,\r\n targetUnits: result.targetUnits,\r\n lockedUser: message.lockedUser,\r\n isLockedToOtherUser: message.isLockedToOtherUser(props.sessionState.code)\r\n };\r\n this.setState(state);\r\n this.orgStateHash = await this.getHashFromState(props, state);\r\n //Add locked record to idb\r\n if (!isNew && LockedRecord.isLockedToUser(message.lockedUser, props.sessionState.code)) {\r\n recordLockManager.addLock(LockedRecord.createLockedRecord(state.messageCompanyId, state.id, props.sessionState.code, DatabaseRecordType.Message));\r\n }\r\n //Send read receipt for message\r\n // if (!isNew) {\r\n // const userIsCreator = task.createUser.code === props.sessionState.code;\r\n // if (!userIsCreator && !task.isRead) {\r\n // AppUtils.callService(() => taskService.sendTaskReadReceipt(props.companyId, state.id), false, true);\r\n // }\r\n // }\r\n };\r\n\r\n componentDidMount(): void {\r\n this._isMounted = true;\r\n const props = this.props;\r\n this.loadMessage(props.messageCompanyId, props.messageId, props.forwardMessage);\r\n }\r\n\r\n async componentWillUnmount(): Promise {\r\n this._isMounted = false;\r\n //Unlock on close\r\n const props = this.props;\r\n const state = this.state;\r\n const isNew = state.id === Base.emptyGuid;\r\n if (!isNew && LockedRecord.isLockedToUser(this.state.lockedUser, props.sessionState.code)) {\r\n await recordLockManager.unlock(state.messageCompanyId, state.id, DatabaseRecordType.Message);\r\n }\r\n }\r\n\r\n async componentDidUpdate(prevProps: IMessageEditDialogProp, prevState: IMessageEditDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if (prevProps.messageCompanyId === props.messageCompanyId && prevProps.messageId === props.messageId) {\r\n return;\r\n }\r\n const cancelResult = await AppUtils.cancel(await this.getHashFromState(props, state), this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb(false)) return;\r\n props.onRefreshList();\r\n }\r\n await this.loadMessage(props.messageCompanyId, props.messageId);\r\n }\r\n\r\n handleToggleActiveMenuItem = (activeMenuItem: MessageEditDialogMenuItem) => {\r\n this.setState({ activeMenuItem });\r\n };\r\n\r\n handleChangeSystemAdminMessage = (systemAdminMessage: boolean) => {\r\n const state = this.state;\r\n this.setState({\r\n systemAdminMessage,\r\n messageTargetUnits: systemAdminMessage ? [] : state.messageTargetUnits,\r\n messageTargetCompanyGroups: systemAdminMessage ? [] : state.messageTargetCompanyGroups\r\n });\r\n };\r\n\r\n // #region Locking\r\n handleUnlockAndLockToMe = async () => {\r\n const props = this.props;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToUnlockMessage, this.state.message.title), false) !== ConfirmationDialogResult.Yes) {\r\n return;\r\n }\r\n const state = this.state;\r\n const result = await recordLockManager.lock(state.messageCompanyId, state.id, props.sessionState.code, DatabaseRecordType.Message);\r\n if (!result || result.items.length < 1) return;\r\n this.setState({\r\n lockedUser: StoreUtils.getNowModifyUser(result.items[0].lockedDate),\r\n isLockedToOtherUser: false\r\n });\r\n };\r\n // #endregion Locking\r\n\r\n getBaseSaveDataFromState = async (props: IMessageEditDialogProp, state: IMessageEditDialogState, sendEmail: boolean = false): Promise => {\r\n const result = new SaveDataObj();\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"companyId\", state.messageCompanyId);\r\n result.append(\"id\", state.id);\r\n result.append(\"title\", state.title);\r\n result.append(\"messageTypeId\", state.messageTypeId);\r\n result.append(\"unitId\", state.unitId);\r\n result.append(\"date\", state.dateStr.toUtcDate().getTime());\r\n result.append(\"startDate\", state.startDateStr.toUtcDate().getTime());\r\n result.append(\"endDate\", state.endDateStr ? state.endDateStr.toUtcDate().getTime() : null);\r\n result.append(\"systemAdminMessage\", state.systemAdminMessage);\r\n result.append(\"requiresReceipt\", state.requiresReceipt);\r\n result.append(\"targetUnits\", state.messageTargetUnits.map(i => new MessageEditItemTargetUnitSave(i)));\r\n result.append(\"targetCompanyGroups\", state.messageTargetCompanyGroups.map(i => new MessageEditItemTargetCompanyGroupSave(i)));\r\n result.append(\"sendEmail\", sendEmail);\r\n if (state.message.isNew()) {\r\n result.append(\"attachments\", await SaveAttachmentBase64.fromFileAttachments(state.attachments));\r\n }\r\n return result;\r\n };\r\n\r\n getSaveDataFromState = async (props: IMessageEditDialogProp, state: IMessageEditDialogState, sendEmail: boolean = false): Promise => {\r\n const result = await this.getBaseSaveDataFromState(props, state, sendEmail);\r\n result.append(\"content\", state.content);\r\n return result;\r\n };\r\n\r\n getHashFromState = async (props: IMessageEditDialogProp, state: IMessageEditDialogState): Promise => {\r\n const result = await this.getBaseSaveDataFromState(props, state, false);\r\n result.append(\"contentDirty\", state.contentDirty);\r\n return result.hash;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.title) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.TitleMustBeDefined));\r\n return resolve(false);\r\n }\r\n if (!state.dateStr) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.DateMustBeDefined));\r\n return resolve(false);\r\n }\r\n if (!state.startDateStr) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.MessageStartDateMustBeDefined));\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (sendEmail: boolean): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n const saveData = await this.getSaveDataFromState(props, state, sendEmail);\r\n //Call server\r\n const result = await AppUtils.callService(() => messageService.saveMessageEdit(saveData.obj));\r\n if (!result) return null;\r\n return result;\r\n };\r\n\r\n handleSave = async () => {\r\n const result = await this.saveToDb(false);\r\n if (!result) return;\r\n this.loadMessage(this.state.messageCompanyId, result.id);\r\n this.props.onOk();\r\n };\r\n\r\n handleSaveAndSendEmail = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToEmailMessageParameter, state.title)) === ConfirmationDialogResult.Yes) {\r\n const result = await this.saveToDb(true);\r\n if (!result) return;\r\n this.loadMessage(state.messageCompanyId, result.id);\r\n props.onOk();\r\n }\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.isLockedToOtherUser || state.message.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveMessageParameter, state.message.title), false, removeConfirmationWord) === ConfirmationDialogResult.Yes) {\r\n const result = await AppUtils.callService(() => messageService.removeMessage(state.messageCompanyId, state.id));\r\n if (!result) return;\r\n this.setState({ lockedUser: null }, () => props.onCancel());\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(await this.getHashFromState(props, state), this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n const result = await AppUtils.canMoveOut(await this.getHashFromState(props, this.state), this.orgStateHash, async () => !!await this.saveToDb(false), props.onRefreshList);\r\n if (result) {\r\n this.setState({\r\n contentDirty: false\r\n }, () => {\r\n this.getHashFromState(props, this.state)\r\n .then(hash => {\r\n this.orgStateHash = hash;\r\n });\r\n });\r\n }\r\n return result;\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.message) return null;\r\n const isNew = state.message.isNew();\r\n return (\r\n \r\n }\r\n body={\r\n <>\r\n {state.activeMenuItem === MessageEditDialogMenuItem.General &&\r\n this.setState({ title })}\r\n onChangeDateStr={(dateStr: string) => this.setState({ dateStr })}\r\n onChangeStartDateStr={(startDateStr: string) => this.setState({ startDateStr })}\r\n onChangeEndDateStr={(endDateStr: string) => this.setState({ endDateStr })}\r\n onChangeMessageType={(messageTypeId: string) => this.setState({ messageTypeId })}\r\n onChangeUnit={(unitId: string) => this.setState({ unitId })}\r\n onChangeRequiresReceipt={(requiresReceipt: boolean) => this.setState({ requiresReceipt })}\r\n onChangeSystemAdminMessage={this.handleChangeSystemAdminMessage}\r\n onChangeContent={(content: string, contentDirty: boolean) => this.setState({ content, contentDirty })}\r\n onChangeMessageTargetUnits={(messageTargetUnits: IMessageEditItemTargetUnit[]) => this.setState({ messageTargetUnits })}\r\n onChangeMessageTargetCompanyGroups={(messageTargetCompanyGroups: IMessageEditItemTargetCompanyGroup[]) => this.setState({ messageTargetCompanyGroups })}\r\n onUnlockAndLockToMe={this.handleUnlockAndLockToMe}\r\n />\r\n }\r\n {state.activeMenuItem === MessageEditDialogMenuItem.Attachments &&\r\n this.setState({ attachments })}\r\n />\r\n }\r\n {state.activeMenuItem === MessageEditDialogMenuItem.ReadReceipts &&\r\n \r\n }\r\n {state.activeMenuItem === MessageEditDialogMenuItem.SentEmails &&\r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n {Translations.SaveAndEmail}}\r\n onCancel={this.handleCancel}\r\n onRemove={!isNew ? this.handleRemove : null}\r\n onSave={this.handleSave}\r\n \r\n />\r\n \r\n }\r\n onClose={this.handleCancel}/>\r\n );\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\n\r\nexport interface IMessagePageFilterLists {\r\n units: IIdTitleNode[];\r\n companies: IIdTitle[];\r\n modifyUsers: IIdTitle[];\r\n dynamicTimeFilters: IIdTitle[];\r\n}\r\n\r\nexport interface IMessagePageFilterStateWithoutDates {\r\n selectedUnitIds: string[];\r\n selectedCompanyIds: string[];\r\n selectedModifyUserCodes: string[];\r\n selectedDynamicTimeFilterId: string;\r\n}\r\n\r\nexport interface IMessagePageFilterState extends IMessagePageFilterStateWithoutDates {\r\n selectedStartDate: number;\r\n selectedEndDate: number\r\n}\r\n\r\nexport interface IMessagePageGeneralFilter {\r\n startDate: number;\r\n endDate: number;\r\n unitIds: string[];\r\n companyIds: string[];\r\n modifyUserCodes: string[];\r\n dynamicTimeFilterId: number;\r\n}\r\n\r\nexport interface IMessagePageGeneralFilterChange extends IMessagePageGeneralFilter {\r\n notChanged: boolean;\r\n}\r\n\r\nexport const getMessagePageGeneralFilterFromState = (state: IMessagePageFilterState): IMessagePageGeneralFilter => {\r\n return {\r\n startDate: state?.selectedStartDate ? state.selectedStartDate : null,\r\n endDate: state?.selectedEndDate ? state.selectedEndDate : null,\r\n unitIds: state?.selectedUnitIds ? state.selectedUnitIds.filter(i => i !== Base.emptyGuid) : [],\r\n companyIds: state?.selectedCompanyIds ? state.selectedCompanyIds.filter(i => i !== Base.emptyGuid) : [],\r\n modifyUserCodes: state?.selectedModifyUserCodes ? state.selectedModifyUserCodes.filter(i => !!i) : [],\r\n dynamicTimeFilterId: state?.selectedDynamicTimeFilterId ? parseInt(state.selectedDynamicTimeFilterId, 10) : 0\r\n };\r\n};\r\n\r\nexport const getMessagePageFilterStateFromGeneralFilter = (generalFilter: any): IMessagePageFilterState => {\r\n return {\r\n selectedStartDate: generalFilter?.startDate ? generalFilter.startDate : 0,\r\n selectedEndDate: generalFilter?.endDate ? generalFilter.endDate : 0,\r\n selectedUnitIds: generalFilter && generalFilter.unitIds && generalFilter.unitIds.length > 0 ? generalFilter.unitIds : [Base.emptyGuid],\r\n selectedCompanyIds: generalFilter && generalFilter.companyIds && generalFilter.companyIds.length > 0 ? generalFilter.companyIds : [Base.emptyGuid],\r\n selectedModifyUserCodes: generalFilter && generalFilter.modifyUserCodes && generalFilter.modifyUserCodes.length > 0 ? generalFilter.modifyUserCodes : [\"\"],\r\n selectedDynamicTimeFilterId: !Base.isNullOrUndefined(generalFilter?.dynamicTimeFilterId) ? generalFilter.dynamicTimeFilterId.toString(10) : \"0\"\r\n };\r\n};\r\n\r\nexport const getMessagePageGeneralFilterNotChanged = (prevFilter: IMessagePageGeneralFilter, filter: IMessagePageGeneralFilter): boolean => {\r\n return (prevFilter.startDate ?? -99).toString(10) === (filter.startDate ?? -99).toString(10) &&\r\n (prevFilter.endDate ?? -99).toString(10) === (filter.endDate ?? -99).toString(10) &&\r\n Base.equalStrArrays(prevFilter.unitIds, filter.unitIds) &&\r\n Base.equalStrArrays(prevFilter.companyIds, filter.companyIds) &&\r\n Base.equalStrArrays(prevFilter.modifyUserCodes, filter.modifyUserCodes) &&\r\n prevFilter.dynamicTimeFilterId.toString(10) === filter.dynamicTimeFilterId.toString(10);\r\n};\r\n\r\nexport const getMessagePageGeneralFilterChange = (prevProps: IMessagePageFilterState, props: IMessagePageFilterState): IMessagePageGeneralFilterChange => {\r\n const prevFilter = getMessagePageGeneralFilterFromState(prevProps);\r\n const filter = getMessagePageGeneralFilterFromState(props);\r\n return {\r\n ...filter,\r\n notChanged: getMessagePageGeneralFilterNotChanged(prevFilter, filter)\r\n };\r\n};\r\n","/* global JSX */\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport * as messageService from \"../../../models/services/messageService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { AddButton } from \"../../framework/Button/AddButton\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListActionButtons } from \"../../framework/List/ListActionButtons\";\r\nimport { ListContainer } from \"../../framework/List/ListContainer\";\r\nimport { PageTitle } from \"../../framework/Page/PageTitle\";\r\nimport { ListSearchContainer } from \"source/components/framework/List/ListSearchContainer\";\r\nimport { ListSearchFilter } from \"source/components/framework/List/ListSearchFilter\";\r\nimport { ActionContainer } from \"source/components/framework/ActionContainer\";\r\nimport { IMessageListItem } from \"source/models/message/messageListItem\";\r\n// import { EditToggleButton } from \"source/components/framework/Button/EditToggleButton\";\r\nimport { IMessageListItems } from \"source/models/message/messageListItems\";\r\nimport { IPageNavMenuItem } from \"source/components/framework/PageNav/PageNavMenuItems\";\r\nimport { SettingsButton } from \"source/components/framework/Button/SettingsButton\";\r\nimport { MessageContentContainer } from \"./MessageList.styles\";\r\nimport { MessageListHeader } from \"../MessageListHeader/MessageListHeader\";\r\nimport { MessageListAttachments } from \"../MessageListAttachments\";\r\nimport { MessageReadReceiptDialog } from \"../MessageReadReceiptDialog/MessageReadReceiptDialog\";\r\nimport { MessageEditDialog } from \"../MessageEditDialog\";\r\nimport { EditToggleButtonHeader } from \"source/components/framework/Button/EditToggleButtonHeader\";\r\nimport { getMessagePageGeneralFilterFromState, getMessagePageGeneralFilterChange, IMessagePageGeneralFilter, IMessagePageFilterState } from \"../MessagePageFilter\";\r\n\r\n// MessageList\r\nexport interface IMessageListProp extends IMessagePageFilterState {\r\n sessionState: ISessionState;\r\n settingsActions: IPageNavMenuItem[];\r\n savedFilter: IListFilterItem;\r\n companyId: string;\r\n editMode: boolean;\r\n canEditMessages: boolean;\r\n preloaded?: boolean;\r\n list?: IMessageListItems;\r\n listFilterIsSet: boolean;\r\n units: IIdTitleNode[];\r\n dataId?: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n titleSuffix?: JSX.Element;\r\n reportTabs?: React.ReactNode;\r\n onSetSortData: (sortColumn: string, sortOrderIsAsc: boolean) => void;\r\n onLoadPageData: () => void;\r\n onOpenFiltersDialog: () => void;\r\n onOpenSettingsDialog: () => void;\r\n onChangeEditMode: (editMode: boolean) => Promise;\r\n}\r\n\r\ninterface IMessageListSearchFilter extends IMessagePageGeneralFilter {\r\n pageSize: number;\r\n page: number;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n}\r\n\r\ninterface IMessageListState extends IMessageListSearchFilter {\r\n // List\r\n hasMore: boolean;\r\n intialized: boolean;\r\n isLoading: boolean;\r\n waitingPreloadedData: boolean;\r\n\r\n items: IMessageListItem[];\r\n selectedId: string;\r\n checkedIds: string[];\r\n\r\n // ReadReceipts\r\n readReceiptMessages: IMessageListItem[];\r\n shownReceiptMessageIds: string[];\r\n\r\n // Details\r\n detailsDataId: string;\r\n detailsItem: IMessageListItem;\r\n\r\n // New Dialog\r\n showNewDialog: boolean;\r\n\r\n // Dialog\r\n showEditDialog: boolean;\r\n editDialogRecordId: string;\r\n editDialogCompanyId: string;\r\n editDialogHasPrevious: boolean;\r\n editDialogHasNext: boolean;\r\n editDialogForwardMessage: boolean;\r\n}\r\n\r\nexport class MessageList extends React.Component {\r\n sendReadReceipts: string[] = [];\r\n messageListPageSize = 10;\r\n\r\n getReadReceiptMessages = (items: IMessageListItem[]) => {\r\n const props = this.props;\r\n if (props.sessionState.isSuperAdmin || props.editMode) return [];\r\n const shownReceiptMessageIds = this.state?.shownReceiptMessageIds ?? [];\r\n return items ? items.filter(i => i.requiresReceipt && !i.isRead && shownReceiptMessageIds.indexOf(i.id) < 0).reverse() : [];\r\n };\r\n\r\n constructor(props: IMessageListProp) {\r\n super(props);\r\n const generalFilterValues = getMessagePageGeneralFilterFromState(props);\r\n this.state = {\r\n ...generalFilterValues,\r\n intialized: props.list && !!props.preloaded,\r\n isLoading: false,\r\n waitingPreloadedData: props.preloaded,\r\n page: props.list ? props.list.page : 1,\r\n hasMore: props.list ? props.list.hasMore : true,\r\n filter: \"\",\r\n pageSize: props.list ? props.list.pageSize : this.messageListPageSize,\r\n sortColumn: props.sortColumn,\r\n sortOrderIsAsc: props.sortOrderIsAsc,\r\n items: props.list ? props.list.items : [],\r\n selectedId: null,\r\n checkedIds: [],\r\n // ReadReceipts\r\n readReceiptMessages: this.getReadReceiptMessages(props.list ? props.list.items : []),\r\n shownReceiptMessageIds: [],\r\n // Details\r\n detailsDataId: \"\",\r\n detailsItem: null,\r\n // New Dialog\r\n showNewDialog: false,\r\n // Dialog\r\n showEditDialog: false,\r\n editDialogRecordId: \"\",\r\n editDialogCompanyId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false,\r\n editDialogForwardMessage: false\r\n };\r\n }\r\n\r\n // setReadReceipt = (detailsItem: IMessageListItem) => {\r\n // const props = this.props;\r\n // if (!detailsItem || detailsItem.isRead) return;\r\n // const userIsCreator = detailsItem.createUser.code === props.sessionState.code;\r\n // if (userIsCreator || this.sendReadReceipts.indexOf(detailsItem.id) > -1) return;\r\n // const result = AppUtils.callService(() => messageService.sendMessageReadReceipt(props.companyId, detailsItem.id), false, true);\r\n // if (!result) return;\r\n // this.sendReadReceipts.push(detailsItem.id);\r\n // const items = this.state.items.slice(0);\r\n // const item = items.find(i => i.id === detailsItem.id);\r\n // if (!item) return;\r\n // item.isRead = true;\r\n // this.setState({\r\n // items\r\n // });\r\n // };\r\n\r\n searchItems = async (searchFilter: IMessageListSearchFilter, resetItems: boolean, refreshList: boolean, moveNext: boolean = false, setDialogData: boolean = true) => {\r\n const props = this.props;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => messageService.getMessageListItems(props.companyId, !refreshList ? searchFilter.pageSize : (searchFilter.page * searchFilter.pageSize), !refreshList ? searchFilter.page : 1,\r\n props.editMode, searchFilter.filter, searchFilter.startDate, searchFilter.endDate, searchFilter.dynamicTimeFilterId, searchFilter.companyIds, searchFilter.unitIds, searchFilter.modifyUserCodes, searchFilter.sortColumn,\r\n searchFilter.sortOrderIsAsc), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const items = List.getListItems(this.state.items, this.state.selectedId, this.state.checkedIds, result.items, resetItems, refreshList);\r\n let selectedId = items.selectedId;\r\n let index = items.items.findIndex(i => i.id === selectedId);\r\n let detailsItem = index > -1 ? items.items[index] : null;\r\n if (moveNext && detailsItem && index < items.items.length - 1) {\r\n index = index + 1;\r\n detailsItem = items.items[index];\r\n selectedId = items.items[index].id;\r\n }\r\n this.setState({\r\n ...searchFilter,\r\n intialized: true,\r\n page: !refreshList ? result.page : searchFilter.page,\r\n hasMore: result.hasMore,\r\n items: items.items,\r\n selectedId,\r\n checkedIds: items.checkedIds,\r\n detailsItem,\r\n readReceiptMessages: this.getReadReceiptMessages(items.items),\r\n editDialogRecordId: setDialogData ? (moveNext && detailsItem ? detailsItem.id : \"\") : this.state.editDialogRecordId,\r\n editDialogCompanyId: setDialogData ? (moveNext && detailsItem ? detailsItem.companyId : \"\") : this.state.editDialogCompanyId,\r\n editDialogHasPrevious: setDialogData ? index > 0 : this.state.editDialogHasPrevious,\r\n editDialogHasNext: setDialogData ? (index < items.items.length - 1 || result.hasMore) : this.state.editDialogHasNext,\r\n });\r\n this.props.onSetSortData(searchFilter.sortColumn, searchFilter.sortOrderIsAsc);\r\n //this.setReadReceipt(detailsItem);\r\n };\r\n\r\n refreshList = async (setDialogData: boolean = true) => {\r\n const state = this.state;\r\n await this.searchItems(state, false, true, false, setDialogData);\r\n this.setState({ detailsDataId: Base.getGuid() });\r\n };\r\n\r\n componentDidMount(): void {\r\n const props = this.props;\r\n const state = this.state;\r\n if (props.preloaded && !props.savedFilter) return;\r\n this.searchItems(state, true, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: IMessageListProp, prevState: IMessageListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.waitingPreloadedData) {\r\n if (!props.list || (props.dataId ?? \"\") === (prevProps.dataId ?? \"\")) return;\r\n this.setState({\r\n intialized: true,\r\n waitingPreloadedData: false,\r\n page: props.list.page,\r\n hasMore: props.list.hasMore,\r\n items: props.list.items,\r\n pageSize: props.list.pageSize,\r\n readReceiptMessages: this.getReadReceiptMessages(props.list.items),\r\n });\r\n } else {\r\n const prevDataId = prevProps.dataId ? prevProps.dataId : \"\";\r\n const dataId = props.dataId ? props.dataId : \"\";\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n const prevEditMode = prevProps.editMode ?? false;\r\n const editMode = props.editMode ?? false;\r\n const filterStateChange = getMessagePageGeneralFilterChange(prevProps, props);\r\n const prevSortColumn = prevProps.sortColumn;\r\n const sortColumn = props.sortColumn;\r\n const prevSortOrderIsAsc = prevProps.sortOrderIsAsc;\r\n const sortOrderIsAsc = props.sortOrderIsAsc;\r\n if (dataId === prevDataId && companyId === prevCompanyId && editMode === prevEditMode &&\r\n filterStateChange.notChanged &&\r\n prevSortColumn === sortColumn && prevSortOrderIsAsc === sortOrderIsAsc) return;\r\n this.searchItems({ ...filterStateChange, pageSize: state.pageSize, page: state.page, filter: state.filter, sortColumn, sortOrderIsAsc }, true, false, false, false);\r\n }\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems({ ...state, filter }, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems({ ...state, page: !nextPage ? 1 : state.page + 1, sortColumn, sortOrderIsAsc }, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n const detailsItem = this.state.items.find(i => i.id === selectedId);\r\n this.setState({\r\n selectedId,\r\n checkedIds,\r\n detailsItem,\r\n });\r\n //this.setReadReceipt(detailsItem);\r\n };\r\n\r\n handleChangeEditMode = (editMode: boolean) => {\r\n this.props.onChangeEditMode(editMode);\r\n };\r\n\r\n // #region Edit dialog\r\n handleShowEditDialog = (recordId: string, forward: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n const isNew = recordId === Base.emptyGuid;\r\n const index = isNew\r\n ? 0\r\n : state.items.findIndex(i => i.id === recordId);\r\n if (index < 0) return;\r\n this.setState({\r\n showEditDialog: true,\r\n editDialogRecordId: recordId,\r\n editDialogCompanyId: isNew\r\n ? props.companyId\r\n : state.items[index].companyId,\r\n editDialogHasPrevious: index > 0,\r\n editDialogHasNext: isNew\r\n ? false\r\n : index < state.items.length || state.hasMore,\r\n editDialogForwardMessage: forward,\r\n detailsItem: isNew\r\n ? null\r\n : state.items[index]\r\n });\r\n };\r\n\r\n handleOpenLine = (id: string) => {\r\n this.handleShowEditDialog(id, false);\r\n };\r\n\r\n handleAdd = () => {\r\n this.handleShowEditDialog(Base.emptyGuid, false);\r\n };\r\n\r\n handleForwardMessage = (id: string) => {\r\n this.handleShowEditDialog(id, true);\r\n if (!this.props.editMode) {\r\n this.props.onChangeEditMode(true);\r\n }\r\n };\r\n \r\n handleEditDialogOk = () => {\r\n //this.setState({\r\n // showEditDialog: false\r\n //});\r\n this.refreshList(false);\r\n this.props.onLoadPageData();\r\n };\r\n\r\n handleEditDialogCancel = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n this.refreshList();\r\n this.props.onLoadPageData();\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n if (index < 0) return;\r\n if (index >= state.items.length) {\r\n if (!state.hasMore) return;\r\n this.searchItems({ ...state, page: state.page + 1 }, false, false, true);\r\n } else {\r\n this.setState({\r\n selectedId: state.items[index].id,\r\n detailsItem: state.items[index],\r\n editDialogRecordId: state.items[index].id,\r\n editDialogCompanyId: state.items[index].companyId,\r\n editDialogHasPrevious: index > 0,\r\n editDialogHasNext: index < state.items.length - 1 || state.hasMore\r\n });\r\n }\r\n };\r\n // #endregion Edit dialog\r\n\r\n // #region Read receipt dialog\r\n handleMessageReadReceiptDialogClose = (id: string) => {\r\n if (!id) return;\r\n const state = this.state;\r\n const shownReceiptMessageIds = state.shownReceiptMessageIds.slice(0);\r\n shownReceiptMessageIds.push(id);\r\n this.setState({\r\n shownReceiptMessageIds,\r\n readReceiptMessages: state.readReceiptMessages.filter(i => i.id !== id)\r\n });\r\n };\r\n // #endregion Read receipt dialog\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n {props.settingsActions.length > 0 &&\r\n \r\n {Translations.Settings}\r\n \r\n }\r\n {props.editMode &&\r\n \r\n {Translations.AddMessage}\r\n \r\n }\r\n {props.canEditMessages &&\r\n this.handleChangeEditMode(!props.editMode)} sx={{ marginLeft: \"1.5rem\" }} selected={props.editMode}>\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n {\r\n return {\r\n sm: 12,\r\n rows: [\r\n {\r\n cols: [\r\n {\r\n style: { width: \"100%\" },\r\n title: null,\r\n value: <>\r\n \r\n \r\n \r\n \r\n }\r\n ]\r\n }\r\n ],\r\n id: item.id\r\n };\r\n })}\r\n lineDetails={null}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={props.editMode ? this.handleOpenLine : null}\r\n />\r\n {(state.showEditDialog && !!state.editDialogRecordId) &&\r\n this.refreshList(false)}\r\n onPrevious={() => List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n />\r\n }\r\n {!props.editMode && state.readReceiptMessages.length > 0 &&\r\n \r\n }\r\n \r\n \r\n );\r\n }\r\n}","import { Box, Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult, MessageTypeClass } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../../../framework/appUtils\";\r\nimport * as store from \"../../../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../../../framework/saveData\";\r\nimport * as messageService from \"../../../../../models/services/messageService\";\r\nimport * as storeActions from \"../../../../../models/store/storeActions\";\r\nimport { ISessionState } from \"../../../../../models/session/sessionState\";\r\nimport { Dialog } from \"../../../../framework/Dialog/Dialog\";\r\nimport { DialogItemsNav } from \"../../../../framework/Dialog/DialogItemsNav\";\r\nimport { FormField } from \"../../../../framework/FormField\";\r\nimport { GridRow } from \"../../../../framework/Grid/GridRow\";\r\nimport { ModifyUserInfo } from \"../../../../framework/User/ModifyUserInfo\";\r\nimport { DialogButtons } from \"source/components/framework/Dialog/DialogButtons\";\r\nimport { IMessageTypeEditItem } from \"source/models/messageType/messageTypeEditItem\";\r\nimport { FileAttachment, IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { SaveAttachmentBase64 } from \"ui/Scripts/source/models/common/saveAttachmentBase64\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { IdTitleDropdown } from \"ui/Scripts/source/components/framework/Dropdown/IdTitleDropdown\";\r\n\r\nexport interface IMessageTypeDialogProp {\r\n sessionState: ISessionState;\r\n id: string;\r\n companyId: string;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onOk: () => void;\r\n onCancel: () => void;\r\n onRemove: (ids: string[]) => Promise;\r\n onRefreshList: () => Promise;\r\n}\r\n\r\nexport interface IMessageTypeDialogState {\r\n code: string;\r\n name: string;\r\n file: IFileAttachment;\r\n image: string;\r\n defaultImage: string;\r\n resetImage: boolean;\r\n messageTypeClass: MessageTypeClass;\r\n \r\n item: IMessageTypeEditItem;\r\n rowId: string;\r\n}\r\n\r\nexport class MessageTypeDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IMessageTypeDialogProp) {\r\n super(props);\r\n this.state = {\r\n item: null,\r\n code: \"\",\r\n name: \"\",\r\n file: null,\r\n image: \"\",\r\n defaultImage: \"\",\r\n resetImage: false,\r\n messageTypeClass: MessageTypeClass.NormalMessage,\r\n rowId: \"\",\r\n };\r\n }\r\n\r\n loadData = async () => {\r\n const props = this.props;\r\n const result = await AppUtils.callService(() => messageService.getMessageTypeEdit(props.companyId, props.id), false);\r\n if (!result) return;\r\n const item = result.item;\r\n const state = {\r\n ...this.state,\r\n item,\r\n code: item.code,\r\n name: item.name,\r\n file: null,\r\n image: item.image,\r\n defaultImage: item.defaultImage,\r\n resetImage: !item.image,\r\n messageTypeClass: item.messageTypeClass,\r\n rowId: item.rowId\r\n };\r\n this.setState(state);\r\n const saveData = await this.getSaveDataFromState(this.props, state);\r\n this.orgStateHash = saveData.hash;\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadData();\r\n }\r\n\r\n async componentDidUpdate(prevProps: IMessageTypeDialogProp, prevState: IMessageTypeDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if (prevProps.companyId === props.companyId && prevProps.id === props.id) return;\r\n const cancelResult = await AppUtils.cancel((await this.getSaveDataFromState(props, state)).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb()) return;\r\n props.onRefreshList();\r\n }\r\n this.loadData();\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"code\") {\r\n this.setState({ code: value });\r\n } else if (name === \"name\") {\r\n this.setState({ name: value });\r\n }\r\n };\r\n\r\n handleSetImage = async (file: File) => {\r\n if (!file) return;\r\n const attachment = await FileAttachment.fileToFileAttachment(file, 0);\r\n if (!attachment) return;\r\n if (!AppUtils.validateFileAttachment(attachment)) return;\r\n this.setState({ file: attachment, resetImage: false, image: attachment.thumbnail });\r\n };\r\n\r\n handleRemoveImage = () => {\r\n this.setState({ file: null, resetImage: true, image: \"\" });\r\n };\r\n\r\n getSaveDataFromState = async (props: IMessageTypeDialogProp, state: IMessageTypeDialogState): Promise => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.item.id);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"code\", state.code);\r\n result.append(\"name\", state.name);\r\n result.append(\"resetImage\", state.resetImage);\r\n if (state.file) {\r\n result.append(\"attachments\", await SaveAttachmentBase64.fromFileAttachments([state.file]));\r\n }\r\n result.append(\"messageTypeClass\", state.messageTypeClass);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.code) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.MessageTypeCodeMustBeDefined));\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n const saveData = await this.getSaveDataFromState(props, state);\r\n //Call server\r\n return !!(await AppUtils.callService(() => messageService.saveMessageTypeEdit(saveData.obj)));\r\n };\r\n\r\n handleSave = async () => {\r\n if (!await this.saveToDb()) return;\r\n this.props.onOk();\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.item.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveMessageTypeParameter, state.item.code), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await props.onRemove([state.item.id]);\r\n if (!result) return;\r\n props.onOk();\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel((await this.getSaveDataFromState(props, state)).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut((await this.getSaveDataFromState(props, this.state)).hash, this.orgStateHash, this.saveToDb, props.onRefreshList);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.item) return null;\r\n const isNew = state.item.isNew();\r\n return (\r\n \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.sessionState.isSuperAdmin &&\r\n \r\n \r\n \r\n this.setState({ messageTypeClass: id.toInteger() })}\r\n />\r\n \r\n \r\n \r\n }\r\n {!isNew &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { infiniteListPageSize } from \"../../../../models/common/webConsts\";\r\nimport { ISessionState } from \"../../../../models/session/sessionState\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport * as messageService from \"../../../../models/services/messageService\";\r\nimport { IListUsingComponentState, List } from \"../../../framework/List/List\";\r\nimport { SaveDataObj } from \"source/framework/saveData\";\r\nimport { DialogSettingsCard } from \"source/components/framework/Container/DialogSettingsCard\";\r\nimport { ActionContainer } from \"source/components/framework/ActionContainer\";\r\nimport { ListSearchFilter } from \"source/components/framework/List/ListSearchFilter\";\r\nimport { ListIconButtonsItem } from \"source/components/framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { Box } from \"@mui/material\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { IMessageTypeListItem } from \"source/models/messageType/messageTypeListItem\";\r\nimport { ListLinkValue } from \"source/components/framework/List/ListLinkValue\";\r\nimport { MessageTypeDialog } from \"./MessageTypeDialog\";\r\n\r\nexport interface IMessageTypeListProp {\r\n sessionState: ISessionState;\r\n companyId: string;\r\n}\r\n\r\ninterface IMessageTypeListState extends IListUsingComponentState {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n page: number;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n checkedIds: string[];\r\n}\r\n\r\nexport class MessageTypeList extends React.Component {\r\n constructor(props: IMessageTypeListProp) {\r\n super(props);\r\n this.state = {\r\n intialized: false,\r\n isLoading: false,\r\n page: 1,\r\n hasMore: true,\r\n filter: \"\",\r\n sortColumn: \"code\",\r\n sortOrderIsAsc: true,\r\n items: [],\r\n selectedId: null,\r\n checkedIds: [],\r\n showEditDialog: false,\r\n editDialogId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false,\r\n detailsItem: null\r\n };\r\n }\r\n\r\n searchItems = async (page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean, moveNext: boolean = false, setEditDialogData: boolean = true) => {\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => messageService.getMessageTypeListItems(this.props.companyId, !refreshList ? infiniteListPageSize : (page * infiniteListPageSize), !refreshList ? page : 1, filter, sortColumn, sortOrderIsAsc), false, true, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const state = this.state;\r\n const items = List.getListItems(state.items, state.selectedId, state.checkedIds, result.items, resetItems, refreshList);\r\n let selectedId = items.selectedId;\r\n let index = items.items.findIndex(i => i.id === selectedId);\r\n let selectedItem = index > -1 ? items.items[index] : null;\r\n if (moveNext && selectedItem && index < items.items.length - 1) {\r\n index = index + 1;\r\n selectedItem = items.items[index];\r\n selectedId = items.items[index].id;\r\n }\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n selectedId,\r\n checkedIds: items.checkedIds,\r\n editDialogId: setEditDialogData ? (moveNext && selectedItem ? selectedItem.id : \"\") : state.editDialogId,\r\n editDialogHasPrevious: setEditDialogData ? index > 0 : state.editDialogHasPrevious,\r\n editDialogHasNext: setEditDialogData ? (index < items.items.length - 1 || result.hasMore) : state.editDialogHasNext,\r\n });\r\n };\r\n\r\n refreshList = async (setEditDialogData: boolean = true) => {\r\n const state = this.state;\r\n await this.searchItems(state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, true, false, setEditDialogData);\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.searchItems(state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: IMessageTypeListProp, prevState: IMessageTypeListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n if (companyId === prevCompanyId) return;\r\n this.searchItems(state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(1, filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(!nextPage ? 1 : state.page + 1, state.filter, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n handleAdd = () => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, Base.emptyGuid));\r\n };\r\n\r\n handleOpenLine = (id: string) => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, id));\r\n };\r\n\r\n handleEditDialogOk = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n this.refreshList();\r\n };\r\n\r\n handleEditDialogCancel = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n };\r\n\r\n getRemoveSaveData = (props: IMessageTypeListProp, ids: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"ids\", ids);\r\n return result;\r\n };\r\n\r\n remove = async (ids: string[]): Promise => {\r\n const props = this.props;\r\n if (ids.length < 1) return;\r\n const saveData = this.getRemoveSaveData(props, ids);\r\n // Call server\r\n const result = await AppUtils.callService(() => messageService.removeMessageTypes(saveData.obj));\r\n if (!result) return null;\r\n this.refreshList();\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n const selectedItems = state.items.filter(i => selectedIds.indexOf(i.id) > -1);\r\n if (selectedItems.length < 1) return;\r\n if (await AppUtils.showConfirmationDialog(selectedItems.length > 1\r\n ? Translations.DoYouReallyWantToRemoveSelectedMessageTypes\r\n : String.format(Translations.DoYouReallyWantToRemoveMessageTypeParameter, selectedItems[0].code), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n this.remove(selectedIds);\r\n }\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n this.setState(List.getEditDialogItemByIndexStateChange(state, index, () => this.searchItems(state.page + 1, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false, true)));\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n }\r\n rightItems={\r\n this.handleOpenLine(state.selectedId)}\r\n onRemove={this.handleRemove}\r\n />\r\n }\r\n />\r\n }\r\n content={\r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 5,\r\n content: \r\n \r\n \r\n this.handleOpenLine(item.id)}>{item.code}\r\n \r\n \r\n },\r\n { size: 7, content: item.name }\r\n ],\r\n id: item.id\r\n };\r\n })}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpenLine}\r\n />\r\n } />\r\n {(state.showEditDialog && !!state.editDialogId) &&\r\n this.refreshList(false)}\r\n onPrevious={() => List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","//SelectCompanyGroupDialog\r\n//***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as messageService from \"../../../models/services/messageService\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { IGroupPermission } from \"source/models/common/groupPermission\";\r\nimport { EnumHelper, GroupPermissionLevel, GroupType } from \"ui/Scripts/source/models/enums\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { DialogSettingsCard } from \"source/components/framework/Container/DialogSettingsCard\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Box, FormControlLabel, Radio, Stack, Typography } from \"@mui/material\";\r\nimport { ActionContainer } from \"source/components/framework/ActionContainer\";\r\nimport { IdTitleDropdown } from \"ui/Scripts/source/components/framework/Dropdown/IdTitleDropdown\";\r\nimport { AddToolButton } from \"source/components/framework/Button/AddToolButton\";\r\nimport { RemoveToolButton } from \"source/components/framework/Button/RemoveToolButton\";\r\nimport { SelectCompanyGroupForPermissionsDialog } from \"../SelectCompanyGroupForPermissionsDialog\";\r\nimport { ICompanyGroupForPermissionListItem } from \"source/models/companyGroup/companyGroupForPermissionListItem\";\r\nimport { SaveDataObj } from \"source/framework/saveData\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { CodeTitle, ICodeTitle } from \"source/models/common/codeTitle\";\r\nimport { INumberTitle, NumberTitle } from \"ui/Scripts/source/models/common/numberTitle\";\r\nimport { List } from \"../../framework/List/List\";\r\n\r\nexport interface ICompanyGroupPermissionSettingsProps {\r\n sessionState: ISessionState;\r\n companyId: string;\r\n canIncreasePermissions?: boolean;\r\n levels: INumberTitle[];\r\n maxPermissionLevel: GroupPermissionLevel;\r\n}\r\n\r\ninterface IPermissionSummaryLine {\r\n id: string;\r\n title: string;\r\n permission: string;\r\n}\r\n\r\nexport interface ICompanyGroupPermissionSettingsState {\r\n basePermission: number;\r\n hasNormalCompanyGroups: boolean;\r\n hasFixedCompanyGroups: boolean;\r\n permissions: IGroupPermission[];\r\n companyGroups: ICodeTitle[];\r\n permissionSummaryLines: IPermissionSummaryLine[];\r\n}\r\n\r\ninterface ISelectedGroupPermission {\r\n title: string;\r\n level: number;\r\n selected: boolean;\r\n inherited: boolean;\r\n disabled: boolean;\r\n}\r\n\r\nexport interface ISelectedPermissionsState {\r\n selectedGroupCode: string;\r\n selectedGroupPermissions: ISelectedGroupPermission[];\r\n}\r\n\r\nexport const CompanyGroupPermissionSettings = (props: ICompanyGroupPermissionSettingsProps) => {\r\n const [showSelectUserGroupDialog, setShowSelectUserGroupDialog] = useState(false);\r\n const [selectedGroupState, setSelectedGroupState] = useState({\r\n selectedGroupCode: \"\",\r\n selectedGroupPermissions: []\r\n });\r\n const [state, setState] = useState({\r\n basePermission: 0,\r\n hasNormalCompanyGroups: false,\r\n hasFixedCompanyGroups: false,\r\n permissions: [],\r\n companyGroups: [],\r\n permissionSummaryLines: [],\r\n });\r\n\r\n const changeState = (obj: any) => {\r\n setState(prevState => ({\r\n ...prevState,\r\n ...obj\r\n }));\r\n };\r\n\r\n const changeSelectedGroupState = (obj: any) => {\r\n setSelectedGroupState(prevState => ({\r\n ...prevState,\r\n ...obj\r\n }));\r\n };\r\n\r\n const getPermissionAuthorizationLevel = (permissions: IGroupPermission[], code: string, defaultValue: GroupPermissionLevel): GroupPermissionLevel => {\r\n let allPermission = defaultValue;\r\n for (const permission of permissions) {\r\n if (permission.code === code) {\r\n return permission.level;\r\n } else if (!permission.code) { //Special inherited user group base permission for shared folders OR implicit group for 'all'\r\n allPermission = permission.level;\r\n }\r\n }\r\n return allPermission;\r\n };\r\n\r\n const getSelectedGroupPermissions = (permissions: IGroupPermission[], code: string, canIncreasePermissions: boolean, maxPermissionLevel: GroupPermissionLevel): ISelectedGroupPermission[] => {\r\n if (Base.isNullOrUndefined(code)) return [];\r\n const permission = getPermissionAuthorizationLevel(permissions, code, state.basePermission);\r\n return props.levels.map(level => {\r\n return {\r\n level: level.number,\r\n title: level.title,\r\n selected: EnumHelper.isEqual(level.number, permission),\r\n inherited: EnumHelper.isEqual(level.number, state.basePermission),\r\n disabled: (!canIncreasePermissions && EnumHelper.isGreaterThan(level.number, state.basePermission)) || (canIncreasePermissions && EnumHelper.isGreaterThan(level.number, maxPermissionLevel))\r\n };\r\n });\r\n };\r\n\r\n const getPermissionSummaryLines = (permissions: IGroupPermission[], companyGroups: ICodeTitle[]): IPermissionSummaryLine[] => {\r\n const result: IPermissionSummaryLine[] = [];\r\n for (const group of companyGroups) {\r\n const permission = permissions.find(i => i.code === group.code);\r\n if (!permission) continue;\r\n result.push({ id: group.code, title: group.title, permission: NumberTitle.getTitleByNumber(permission.level, props.levels) });\r\n }\r\n return result;\r\n };\r\n\r\n const loadData = async () => {\r\n if (!props.companyId) return;\r\n const result = await AppUtils.callService(() => messageService.getCompanyGroupPermissions(props.companyId), false);\r\n if (!result) return;\r\n changeState({\r\n basePermission: Math.min(result.basePermission, GroupPermissionLevel.Write),\r\n hasNormalCompanyGroups: result.hasNormalCompanyGroups,\r\n hasFixedCompanyGroups: result.hasFixedCompanyGroups,\r\n inheritedPermissions: result.inheritedPermissions,\r\n permissions: result.permissions,\r\n companyGroups: result.companyGroups,\r\n permissionSummaryLines: getPermissionSummaryLines(result.permissions, result.companyGroups)\r\n });\r\n const selectedGroupCode = result.companyGroups.length > 0 ? result.companyGroups[0].code : \"\";\r\n changeSelectedGroupState({\r\n selectedGroupCode,\r\n selectedGroupPermissions: getSelectedGroupPermissions(result.permissions, selectedGroupCode, props.canIncreasePermissions, props.maxPermissionLevel),\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n loadData();\r\n }, [props.companyId]);\r\n\r\n const changeCompanyGroupCode = (selectedGroupCode: string) => {\r\n changeSelectedGroupState({\r\n selectedGroupCode,\r\n selectedGroupPermissions: getSelectedGroupPermissions(state.permissions, selectedGroupCode, props.canIncreasePermissions, props.maxPermissionLevel),\r\n });\r\n };\r\n\r\n const saveToDb = async (permissions: IGroupPermission[]): Promise => {\r\n const saveData = new SaveDataObj();\r\n saveData.append(\"companyId\", props.companyId);\r\n saveData.append(\"permissions\", permissions);\r\n //Call server\r\n return !!(await AppUtils.callService(() => messageService.saveCompanyGroupPermissions(saveData.obj), false));\r\n };\r\n\r\n // #region SelectCompanyGroupForPermissionsDialog\r\n const handleCompanyGroup = () => {\r\n setShowSelectUserGroupDialog(true);\r\n };\r\n\r\n const handleSelectCompanyGroupForPermissionsDialogOk = async (addCompanyGroups: ICompanyGroupForPermissionListItem[]) => {\r\n if (addCompanyGroups === null || !addCompanyGroups.length) return;\r\n const allPermission = state.permissions.find(i => !i.code);\r\n const newPermissions = addCompanyGroups.map(i => {\r\n return {\r\n id: Base.emptyGuid,\r\n code: i.code,\r\n level: allPermission ? allPermission.level : state.basePermission,\r\n type: GroupType.CompanyGroup\r\n };\r\n });\r\n const permissions = state.permissions.concat(newPermissions);\r\n if (!saveToDb(permissions)) return;\r\n const companyGroups = CodeTitle.sortCodeTitles(state.companyGroups.concat(addCompanyGroups.map(i => CodeTitle.createCodeTitle(i.code, i.name))), \"title\", true);\r\n setShowSelectUserGroupDialog(false);\r\n changeState({\r\n permissions,\r\n companyGroups,\r\n permissionSummaryLines: getPermissionSummaryLines(permissions, companyGroups)\r\n });\r\n changeSelectedGroupState({\r\n selectedGroupCode: addCompanyGroups[0].code,\r\n selectedGroupPermissions: getSelectedGroupPermissions(permissions, addCompanyGroups[0].code, props.canIncreasePermissions, props.maxPermissionLevel),\r\n });\r\n };\r\n\r\n const handleSelectCompanyGroupForPermissionsDialogCancel = () => {\r\n setShowSelectUserGroupDialog(false);\r\n };\r\n // #endregion SelectCompanyGroupForPermissionsDialog\r\n \r\n const handleRemoveUserGroup = () => {\r\n if (!selectedGroupState.selectedGroupCode) return;\r\n const permissions = state.permissions.filter(i => i.code !== selectedGroupState.selectedGroupCode);\r\n if (!saveToDb(permissions)) return;\r\n const companyGroups = state.companyGroups.filter(i => i.code !== selectedGroupState.selectedGroupCode);\r\n const selectedGroupCode = companyGroups.length > 0 ? companyGroups[0].code : \"\";\r\n changeState({\r\n permissions,\r\n companyGroups,\r\n permissionSummaryLines: getPermissionSummaryLines(permissions, companyGroups)\r\n });\r\n changeSelectedGroupState({\r\n selectedGroupCode,\r\n selectedGroupPermissions: getSelectedGroupPermissions(permissions, selectedGroupCode, props.canIncreasePermissions, props.maxPermissionLevel),\r\n });\r\n };\r\n\r\n const handleChangeUserGroupPermission = (checked: boolean, level: number) => {\r\n if (!checked) return;\r\n const permissions = state.permissions.slice(0);\r\n const permission = permissions.find(i => i.code === selectedGroupState.selectedGroupCode);\r\n if (!permission) return;\r\n const oldLevel = permission.level;\r\n permission.level = level;\r\n if (!permission.code) {\r\n for (const tempPermission of permissions) {\r\n if (!tempPermission.code || tempPermission.level !== oldLevel) continue;\r\n tempPermission.level = level;\r\n }\r\n }\r\n if (!saveToDb(permissions)) return;\r\n changeState({\r\n permissions,\r\n permissionSummaryLines: getPermissionSummaryLines(permissions, state.companyGroups)\r\n });\r\n changeSelectedGroupState({\r\n selectedGroupPermissions: getSelectedGroupPermissions(permissions, selectedGroupState.selectedGroupCode, props.canIncreasePermissions, props.maxPermissionLevel),\r\n });\r\n };\r\n\r\n return (\r\n
    \r\n \r\n { return { id: i.code, title: i.title }; })}\r\n onChange={changeCompanyGroupCode}\r\n />}\r\n rightItems={\r\n \r\n \r\n }\r\n />\r\n
    \r\n \r\n {Translations.Permission}\r\n \r\n \r\n {selectedGroupState.selectedGroupPermissions.map((selectedGroupPermission) => handleChangeUserGroupPermission(checked, selectedGroupPermission.level)} />}\r\n sx={{ marginBottom: 0 }} />\r\n )}\r\n \r\n
    \r\n \r\n {Translations.ActiveUserRights}\r\n \r\n
    \r\n {\r\n return {\r\n columns: [\r\n { size: 6, content: permissionSummaryLine.title },\r\n { size: 6, content: permissionSummaryLine.permission }\r\n ],\r\n id: permissionSummaryLine.id\r\n };\r\n })}\r\n sortColumn={\"\"}\r\n sortOrderIsAsc={true}\r\n selectedId={selectedGroupState.selectedGroupCode}\r\n onSetSelectedIds={(selectedId: string) => changeCompanyGroupCode(selectedId)}\r\n onSearchLines={null}\r\n />\r\n
    \r\n }\r\n />\r\n {showSelectUserGroupDialog &&\r\n i.code)}\r\n multiSelect={true}\r\n messageTargetMode={false}\r\n hasNormalCompanyGroups={state.hasNormalCompanyGroups}\r\n hasFixedCompanyGroups={state.hasFixedCompanyGroups}\r\n onOk={handleSelectCompanyGroupForPermissionsDialogOk}\r\n onCancel={handleSelectCompanyGroupForPermissionsDialogCancel}\r\n />\r\n }\r\n
    \r\n );\r\n};\r\n","// MessageSettingsDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Grid } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport * as messageService from \"../../../models/services/messageService\";\r\nimport { ApplicationPermissionType, GroupPermissionLevel } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { IUnitModuleNode } from \"../../../models/unit/unitModuleNode\";\r\nimport { IUnitNodePermissions } from \"../../../models/unit/unitNodePermissions\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { IPageNavMenuItem, PageNavMenuItems } from \"../../framework/PageNav/PageNavMenuItems\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { UnitModuleSettings } from \"source/components/unit/Unit/UnitModuleSettings\";\r\nimport { UnitPermissionSettings } from \"source/components/unit/Unit/UnitPermissionSettings\";\r\nimport { MessageTypeList } from \"./MessageTypeList\";\r\nimport { CompanyGroupPermissionSettings } from \"source/components/companyGroup/CompanyGroupPermissionSettings\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum MessageSettingsDialogMenuItem {\r\n Units = \"1\",\r\n Permissions = \"2\",\r\n PermissionsOtherCompanies = \"3\",\r\n MessageTypes = \"4\",\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n//MessageSettingsDialog\r\nexport interface IMessageSettingsDialogProp {\r\n sessionState: ISessionState;\r\n companyId: string;\r\n classes?: string;\r\n settingsActions: IPageNavMenuItem[];\r\n validAdditionalPermissions?: number[]\r\n onClose: (refreshView: boolean) => void;\r\n}\r\n\r\nexport interface IMessageSettingsDialogState {\r\n // Units\r\n unitModuleNode: IUnitModuleNode;\r\n // Permissions\r\n unitNodePermissions: IUnitNodePermissions;\r\n\r\n activeMenuItem: MessageSettingsDialogMenuItem;\r\n}\r\n\r\nexport class MessageSettingsDialog extends React.Component {\r\n private unitsRef = React.createRef();\r\n private permissionsRef = React.createRef();\r\n private refreshViewOnClose = false;\r\n\r\n constructor(props: IMessageSettingsDialogProp) {\r\n super(props);\r\n this.state = {\r\n unitModuleNode: null,\r\n unitNodePermissions: null,\r\n activeMenuItem: props.settingsActions.find(i => i.id === MessageSettingsDialogMenuItem.Units)\r\n ? MessageSettingsDialogMenuItem.Units\r\n : MessageSettingsDialogMenuItem.MessageTypes,\r\n };\r\n }\r\n\r\n async componentDidMount(): Promise {\r\n if (this.state.activeMenuItem !== MessageSettingsDialogMenuItem.Units) return;\r\n await this.loadUnits();\r\n }\r\n\r\n // #region Units\r\n onUnitModuleSettingsCancel = async (): Promise => {\r\n return await this.unitsRef.current.handleCancel(false);\r\n };\r\n\r\n loadUnits = async () => {\r\n const result = await AppUtils.callService(() => messageService.getUnits(this.props.companyId), false);\r\n if (!result) return;\r\n this.setState({\r\n unitModuleNode: result.unitModuleNode\r\n });\r\n };\r\n\r\n handleUnitModuleSettingsSave = async (obj: any) => {\r\n return await messageService.saveUnits(obj);\r\n };\r\n // #endregion Units\r\n\r\n // #region Permissions\r\n onUnitPermissionSettingsCancel = async (): Promise => {\r\n return await this.permissionsRef.current.handleCancel(false);\r\n };\r\n\r\n loadPermissions = async () => {\r\n const result = await AppUtils.callService(() => messageService.getUnitNodePermissions(this.props.companyId), false);\r\n if (!result) return;\r\n this.setState({\r\n unitNodePermissions: result\r\n });\r\n };\r\n\r\n handleUnitPermissionSettingsSave = async (obj: any) => {\r\n const result = await messageService.saveUnitNodePermissions(obj);\r\n this.loadPermissions();\r\n return result;\r\n };\r\n // #endregion Permissions\r\n\r\n handleSubViewOk = (_closeDialog: boolean) => {\r\n this.refreshViewOnClose = true;\r\n };\r\n\r\n handleToggleActiveMenuItem = async (menuItem: MessageSettingsDialogMenuItem) => {\r\n const state = this.state;\r\n if (state.activeMenuItem === menuItem) return;\r\n //Check current tab cancel\r\n if (state.activeMenuItem === MessageSettingsDialogMenuItem.Units) {\r\n if (!await this.onUnitModuleSettingsCancel()) return;\r\n } else if (state.activeMenuItem === MessageSettingsDialogMenuItem.Permissions) {\r\n if (!await this.onUnitPermissionSettingsCancel()) return;\r\n }\r\n //Load new tab data\r\n if (menuItem === MessageSettingsDialogMenuItem.Units) {\r\n await this.loadUnits();\r\n } else if (menuItem === MessageSettingsDialogMenuItem.Permissions) {\r\n await this.loadPermissions();\r\n }\r\n //Set new tab active\r\n this.setState({\r\n activeMenuItem: menuItem\r\n });\r\n };\r\n\r\n handleCancel = async (closeDialog: boolean) => {\r\n if (!closeDialog) return;\r\n this.props.onClose(this.refreshViewOnClose);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n this.handleCancel(true)}\r\n body={\r\n \r\n \r\n \r\n \r\n \r\n {(state.activeMenuItem === MessageSettingsDialogMenuItem.Units) && (\r\n \r\n )}\r\n {state.activeMenuItem === MessageSettingsDialogMenuItem.Permissions && (\r\n \r\n )}\r\n {state.activeMenuItem === MessageSettingsDialogMenuItem.PermissionsOtherCompanies &&\r\n \r\n }\r\n {state.activeMenuItem === MessageSettingsDialogMenuItem.MessageTypes &&\r\n \r\n }\r\n \r\n \r\n }\r\n buttons={\r\n state.activeMenuItem !== MessageSettingsDialogMenuItem.Units && state.activeMenuItem !== MessageSettingsDialogMenuItem.Permissions\r\n ? [{ title: Translations.Close, variant: \"outlined\", onClick: () => this.handleCancel(true) }]\r\n : null\r\n }\r\n />\r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IIdTitle, IdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { ApplicationPermissionType } from \"ui/Scripts/source/models/enums\";\r\nimport * as messageService from \"../../../models/services/messageService\";\r\n//import * as userService from \"../../../models/services/userService\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IListFilterItem, ListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { ISavedListFilter } from \"../../../models/common/savedListFilter\";\r\nimport { ITypedOption } from \"../../../models/common/typedOption\";\r\nimport { IReportItem } from \"../../../models/report/reportItem\";\r\nimport { recordLockManager } from \"../../../models/services/recordLockService\";\r\nimport { IAppSessionState } from \"../../../models/store/storeTypes\";\r\nimport { HeaderMenuItem, NavigationMenu } from \"../../app/NavigationMenu\";\r\nimport { ListFilterSaveDialog } from \"../../framework/Filters/ListFilterSaveDialog\";\r\nimport { PageContainer } from \"../../framework/Page/PageContainer\";\r\nimport { PageContent } from \"../../framework/Page/PageContent\";\r\nimport { IPageNavMenuItem } from \"../../framework/PageNav/PageNavMenuItems\";\r\n// import { PageListAndReportsContainer } from \"../../framework/Page/PageListAndReportsContainer\";\r\nimport { ICodeTitle } from \"source/models/common/codeTitle\";\r\nimport { IMessagePage } from \"source/models/message/messagePage\";\r\nimport { IIdTitleNode, IdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { UserMenu } from \"../../app/UserMenu\";\r\nimport { PageTopBar } from \"../../framework/Page/PageTopBar\";\r\nimport { FilterTabs } from \"../../framework/PageNavMenuItem/FilterTabs\";\r\nimport { MessageFilterDrawer } from \"../MessageFilterDrawer\";\r\nimport { MessageList } from \"../MessageList/MessageList\";\r\nimport { MessageSettingsDialog, MessageSettingsDialogMenuItem } from \"../MessageSettingsDialog\";\r\nimport { abortManager } from \"source/models/services/tokenService\";\r\nimport { getMessagePageGeneralFilterFromState, getMessagePageFilterStateFromGeneralFilter, IMessagePageFilterState } from \"../MessagePageFilter\";\r\n\r\n// MessagePage\r\nexport interface IMessagePageOwnProps {\r\n}\r\n\r\nexport interface IMessagePageStateProps {\r\n appState: IAppSessionState;\r\n dataId: number;\r\n messagePage: IMessagePage;\r\n}\r\n\r\nexport interface IMessagePageDispatchProps {\r\n onGetMessagePage: () => void;\r\n onLogout: () => void;\r\n onSetCulture: (culture: string) => void;\r\n onSaveUserParameters: (parameters: ITypedOption[]) => void;\r\n onRefreshSessionState: () => void;\r\n}\r\n\r\ntype MessagePageProp = IMessagePageOwnProps & IMessagePageStateProps & IMessagePageDispatchProps;\r\n\r\ninterface IMessagePageState extends IMessagePageFilterState {\r\n initialized: boolean;\r\n listDataPreloaded: boolean;\r\n units: IIdTitleNode[];\r\n companies: IIdTitle[];\r\n modifyUsers: IIdTitle[];\r\n dynamicTimeFilters: IIdTitle[];\r\n activeCompanyId: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n settingsActions: IPageNavMenuItem[];\r\n // Filters\r\n listEditMode: boolean;\r\n listFilterIsSet: boolean;\r\n showListFilter: boolean;\r\n listFilterFilter: IListFilterItem;\r\n filters: IListFilterItem[];\r\n savedFilters: IListFilterItem[];\r\n activeFilterId: string;\r\n activeSavedFilterId: string;\r\n showListFilterSaveDialog: boolean;\r\n listFilterSaveDialogFilter: IListFilterItem;\r\n listFilterSaveDialogGeneralFilter: any;\r\n listFilterSaveDialogReservedNames: string[];\r\n listFilterSaveDialogOnGetGeneralFilter: () => any;\r\n // Permissions\r\n dataId: number;\r\n // Settings\r\n showSettingsDialog: boolean;\r\n}\r\n\r\nexport class MessagePage extends React.Component {\r\n getUnits = (units: IIdTitleNode[]): IIdTitleNode[] => {\r\n const result: IIdTitleNode[] = [];\r\n result.push(IdTitleNode.createIdTitleNode(Base.emptyGuid, \"'\" + Translations.All + \"'\", []));\r\n return result.concat(units);\r\n };\r\n \r\n getIdTitles = (idTitles: IIdTitle[]): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(Base.emptyGuid, \"'\" + Translations.All + \"'\"));\r\n return result.concat(idTitles);\r\n };\r\n\r\n getModifyUsers = (modifyUsers: ICodeTitle[]): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(\"\", \"'\" + Translations.All + \"'\"));\r\n return result.concat(modifyUsers.map(i => IdTitle.createIdTitle(i.code, i.title)));\r\n };\r\n \r\n getDynamicTimeFilters = (): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(\"0\", \"'\" + Translations.SpecifedTimeFrame + \"'\"));\r\n result.push(IdTitle.createIdTitle(\"1\", Translations.Last7Days));\r\n result.push(IdTitle.createIdTitle(\"2\", Translations.Last30Days));\r\n result.push(IdTitle.createIdTitle(\"3\", Translations.LastYear));\r\n result.push(IdTitle.createIdTitle(\"7\", Translations.CurrentCalendarWeek));\r\n result.push(IdTitle.createIdTitle(\"8\", Translations.CurrentCalendarMonth));\r\n result.push(IdTitle.createIdTitle(\"9\", Translations.CurrentCalendarYear));\r\n result.push(IdTitle.createIdTitle(\"4\", Translations.PreviousCalendarWeek));\r\n result.push(IdTitle.createIdTitle(\"5\", Translations.PreviousCalendarMonth));\r\n result.push(IdTitle.createIdTitle(\"6\", Translations.PreviousCalendarYear));\r\n return result;\r\n };\r\n\r\n getHtlmlReportItems = (): IReportItem[] => {\r\n const result: IReportItem[] = [];\r\n return result;\r\n };\r\n \r\n getFilters = (): IListFilterItem[] => {\r\n const result: IListFilterItem[] = [];\r\n result.push(ListFilterItem.createListFilterItem(Translations.CurrentTopics, Translations.CurrentTopics, getMessagePageGeneralFilterFromState(null), \"date\", false, 0));\r\n ListFilterItem.sortListFilterItems(result);\r\n return result;\r\n };\r\n\r\n getListFilterIsSet = (state: IMessagePageState): boolean => {\r\n return MessageFilterDrawer.filterIsSet(state, state);\r\n };\r\n\r\n // getReportFilterIsSet = (state: IMessagePageState): boolean => {\r\n // return MessageReportFilterPanel.filterIsSet(state, state);\r\n // };\r\n\r\n getSettingsActions = (activeCompanyId: string, canEditOtherCompanyPermissions: boolean, canEditModuleProperties: boolean, canEditAllModuleProperties: boolean): IPageNavMenuItem[] => {\r\n const result: IPageNavMenuItem[] = [];\r\n if (canEditAllModuleProperties) {\r\n result.push({ id: MessageSettingsDialogMenuItem.Units, title: Translations.Units });\r\n result.push({ id: MessageSettingsDialogMenuItem.Permissions, title: Translations.Permissions });\r\n if (canEditOtherCompanyPermissions) {\r\n result.push({ id: MessageSettingsDialogMenuItem.PermissionsOtherCompanies, title: Translations.PermissionsOtherCompanies });\r\n }\r\n }\r\n if (canEditModuleProperties) {\r\n result.push({ id: MessageSettingsDialogMenuItem.MessageTypes, title: Translations.MessageTypes });\r\n }\r\n return result;\r\n };\r\n\r\n constructor(props: MessagePageProp) {\r\n super(props);\r\n abortManager.abortAll(); //Abort all abortable calls regardless of module\r\n const sessionState = props.appState.state;\r\n const filters = this.getFilters();\r\n const filterProps = ListFilterItem.getFilterProps(filters[0], \"\", true, getMessagePageFilterStateFromGeneralFilter);\r\n const dynamicTimeFilters = this.getDynamicTimeFilters();\r\n const state = {\r\n ...filterProps,\r\n initialized: !!props.messagePage,\r\n activeCompanyId: sessionState.companyId,\r\n listDataPreloaded: true,\r\n units: this.getUnits(props.messagePage?.units ?? []),\r\n companies: this.getIdTitles(props.messagePage?.filterCompanies ?? []),\r\n modifyUsers: this.getModifyUsers(props.messagePage?.modifyUsers ?? []),\r\n dynamicTimeFilters,\r\n selectedStartDate: 0,\r\n selectedEndDate: 0,\r\n selectedDynamicTimeFilterId: dynamicTimeFilters[0].id,\r\n settingsActions: this.getSettingsActions(sessionState.companyId, props.messagePage?.canEditOtherCompanyPermissions, props.messagePage?.canEditModuleProperties, props.messagePage?.canEditAllModuleProperties),\r\n // Filters\r\n listEditMode: false,\r\n listFilterIsSet: false,\r\n activeFilterId: filters[0].id,\r\n activeSavedFilterId: \"\",\r\n filters,\r\n savedFilters: ListFilterItem.getListFilterItems(props.messagePage?.companyFilters, props.messagePage?.userFilters),\r\n showListFilter: false,\r\n listFilterFilter: null,\r\n showListFilterSaveDialog: false,\r\n listFilterSaveDialogFilter: null,\r\n listFilterSaveDialogGeneralFilter: null,\r\n listFilterSaveDialogReservedNames: [],\r\n listFilterSaveDialogOnGetGeneralFilter: null,\r\n // Permissions\r\n dataId: props.dataId,\r\n // Settings\r\n showSettingsDialog: false,\r\n };\r\n this.state = {\r\n ...state,\r\n //dashBoardPanels: SavedChartPanel.getDashBoardPanels(props.messagePage?.panels, props.messagePage?.chartPanels, state.chartItems, ApplicationPermissionType.Message),\r\n listFilterIsSet: this.getListFilterIsSet(state),\r\n //reportFilterIsSet: this.getReportFilterIsSet(state)\r\n };\r\n }\r\n\r\n // getReports = async (companyId: string) => {\r\n // const state = this.state;\r\n // const newState = await ReportItems.getReportsState(companyId, state.activeReportId, this.getHtlmlReportItems(), eventService.getEventPageReportItems,\r\n // () => {\r\n // if (!this._isMounted) return;\r\n // this.setState({ loadingReports: true });\r\n // },\r\n // () => {\r\n // if (!this._isMounted) return;\r\n // this.setState({ loadingReports: false });\r\n // });\r\n // if (!this._isMounted || !newState) return;\r\n // const props = this.props;\r\n // this.setState({\r\n // ...newState,\r\n // dashBoardPanels: SavedChartPanel.getDashBoardPanels(props.messagePage?.panels, props.messagePage?.chartPanels, newState.chartItems, ApplicationPermissionType.Message)\r\n // });\r\n // };\r\n\r\n componentDidMount(): void {\r\n const sessionState = this.props.appState.state;\r\n recordLockManager.unlockAll(sessionState?.companyId, sessionState?.code);\r\n this.props.onGetMessagePage();\r\n // this.getReports(sessionState.companyId);\r\n }\r\n\r\n componentDidUpdate(prevProps: MessagePageProp, prevState: IMessagePageState): void {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n const equalCompanyIds = Base.equalStrArrays(prevProps.messagePage?.companies.map(i => i.id) ?? [], props.messagePage?.companies.map(i => i.id) ?? []);\r\n const prevCompanyId = prevProps.messagePage && prevProps.messagePage.companies.length > 0 ? prevProps.messagePage.companies[0].id : sessionState.companyId;\r\n const companyId = props.messagePage && props.messagePage.companies.length > 0 ? props.messagePage.companies[0].id : sessionState.companyId;\r\n const prevCanEditMessages = prevProps.messagePage?.canEditMessages ?? false;\r\n const canEditMessages = props.messagePage?.canEditMessages ?? false;\r\n const prevCanEditModuleProperties = prevProps.messagePage?.canEditModuleProperties ?? false;\r\n const canEditModuleProperties = props.messagePage?.canEditModuleProperties ?? false;\r\n const prevCanEditOtherCompanyPermissions = prevProps.messagePage?.canEditOtherCompanyPermissions ?? false;\r\n const canEditOtherCompanyPermissions = props.messagePage?.canEditOtherCompanyPermissions ?? false;\r\n const unitsData = props.messagePage?.units ?? [];\r\n const equalUnits = IdTitleNode.equalIds(prevProps.messagePage?.units ?? [], unitsData);\r\n const units = this.getUnits(unitsData);\r\n const companiesData = props.messagePage?.filterCompanies ?? [];\r\n const equalCompanies = IdTitle.equal(prevProps.messagePage?.filterCompanies ?? [], companiesData);\r\n const companies = this.getIdTitles(companiesData);\r\n const modifyUsersData = props.messagePage?.modifyUsers ?? [];\r\n const equalModifyUsers = IdTitle.equal(prevProps.messagePage?.modifyUsers ?? [], modifyUsersData);\r\n const modifyUsers = this.getModifyUsers(modifyUsersData);\r\n if (prevProps.dataId === props.dataId && prevCompanyId === companyId && prevCanEditMessages === canEditMessages &&\r\n prevCanEditModuleProperties === canEditModuleProperties && prevCanEditOtherCompanyPermissions === canEditOtherCompanyPermissions &&\r\n equalCompanyIds && equalUnits && equalCompanies && equalModifyUsers) return;\r\n const savedFilters = ListFilterItem.getListFilterItems(props.messagePage?.companyFilters, props.messagePage?.userFilters);\r\n const selectedUnitIds = equalUnits ? state.selectedUnitIds : [Base.emptyGuid];\r\n const selectedCompanyIds = equalCompanies ? state.selectedCompanyIds : [Base.emptyGuid];\r\n const selectedModifyUserCodes = equalModifyUsers ? state.selectedModifyUserCodes : [\"\"];\r\n const activeSavedFilterId = savedFilters.find(i => i.id === state.activeSavedFilterId)\r\n ? state.activeSavedFilterId\r\n : \"\";\r\n const stateChange = {\r\n dataId: props.dataId,\r\n initialized: !!props.messagePage,\r\n //dashBoardPanels: SavedChartPanel.getDashBoardPanels(props.messagePage?.panels, props.messagePage?.chartPanels, state.chartItems, ApplicationPermissionType.Message),\r\n //activeViewTypeId: companyId !== sessionState.companyId ? MessagePageViewTypeId.Records : state.activeViewTypeId,\r\n activeCompanyId: companyId,\r\n units,\r\n companies,\r\n modifyUsers,\r\n selectedUnitIds,\r\n selectedCompanyIds,\r\n selectedModifyUserCodes,\r\n savedFilters,\r\n activeSavedFilterId,\r\n settingsActions: this.getSettingsActions(companyId, props.messagePage?.canEditOtherCompanyPermissions, props.messagePage?.canEditModuleProperties, props.messagePage?.canEditAllModuleProperties)\r\n };\r\n const newState = { ...state, ...stateChange };\r\n this.setState({\r\n ...stateChange,\r\n listFilterIsSet: this.getListFilterIsSet(newState),\r\n //reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n });\r\n }\r\n\r\n // #region Saved Filter\r\n getFilterPropsWithState = (listItemFilter: IListFilterItem) => {\r\n const state = this.state;\r\n let result = {\r\n selectedStartDate: state.selectedStartDate,\r\n selectedEndDate: state.selectedEndDate,\r\n selectedUnitIds: state.selectedUnitIds,\r\n selectedCompanyIds: state.selectedCompanyIds,\r\n selectedModifyUserCodes: state.selectedModifyUserCodes,\r\n selectedDynamicTimeFilterId: state.selectedDynamicTimeFilterId,\r\n sortColumn: state.sortColumn,\r\n sortOrderIsAsc: state.sortOrderIsAsc\r\n };\r\n if (listItemFilter) {\r\n result = ListFilterItem.getFilterProps(listItemFilter, result.sortColumn, result.sortOrderIsAsc, getMessagePageFilterStateFromGeneralFilter);\r\n }\r\n return result;\r\n };\r\n\r\n handleChangeActiveCompanyId = async (companyId: string) => {\r\n if (this.state.activeCompanyId === companyId) return;\r\n await this.handleRefreshPageData(companyId, this.state.listEditMode);\r\n };\r\n\r\n getStateChangeAfterChangeActiveFilter = (activeFilterId: string): any => {\r\n const state = this.state;\r\n const filter = state.filters.find(i => i.id === activeFilterId);\r\n if (!filter) return {};\r\n const filterProps = this.getFilterPropsWithState(filter);\r\n const activeSavedFilterId = \"\";\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId };\r\n return {\r\n ...filterProps,\r\n activeFilterId,\r\n activeSavedFilterId: \"\",\r\n listFilterIsSet: this.getListFilterIsSet(newState),\r\n //reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n };\r\n };\r\n\r\n handleChangeActiveFilter = (activeFilterId: string) => {\r\n this.setState(this.getStateChangeAfterChangeActiveFilter(activeFilterId));\r\n };\r\n\r\n getStateChangeAfterChangeActiveSavedFilter = (activeSavedFilterId: string): any => {\r\n const state = this.state;\r\n const savedFilter = state.savedFilters.find(i => i.id === activeSavedFilterId);\r\n if (!savedFilter) return {};\r\n const filterProps = this.getFilterPropsWithState(savedFilter);\r\n const activeFilterId = \"\";\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId };\r\n return {\r\n ...filterProps,\r\n activeFilterId,\r\n activeSavedFilterId,\r\n listFilterIsSet: this.getListFilterIsSet(newState),\r\n //reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n };\r\n };\r\n\r\n handleChangeActiveSavedFilter = (activeSavedFilterId: string) => {\r\n this.setState(this.getStateChangeAfterChangeActiveSavedFilter(activeSavedFilterId));\r\n };\r\n\r\n handleRemoveSavedFilter = async (savedFilterId: string) => {\r\n const state = this.state;\r\n const savedFilter = state.savedFilters.find(i => i.id === savedFilterId);\r\n if (!savedFilter) return;\r\n const result = await ListFilterSaveDialog.removeListFilterFromDb(state.savedFilters, state.activeCompanyId, savedFilterId, savedFilter.isShared, ApplicationPermissionType.Message);\r\n if (!result) return;\r\n const savedFilters = state.savedFilters.filter(i => i.id !== savedFilterId);\r\n let activeFilterId = \"\";\r\n let activeSavedFilterId = \"\";\r\n let newfilter: IListFilterItem = null;\r\n if (savedFilters.length > 0) {\r\n newfilter = savedFilters[0];\r\n activeSavedFilterId = newfilter.id;\r\n } else if (state.filters.length > 0) {\r\n newfilter = state.filters[0];\r\n activeFilterId = newfilter.id;\r\n }\r\n const filterProps = this.getFilterPropsWithState(newfilter);\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId, savedFilters };\r\n this.setState({\r\n ...filterProps,\r\n showListFilter: false,\r\n activeFilterId,\r\n activeSavedFilterId,\r\n savedFilters,\r\n listFilterIsSet: this.getListFilterIsSet(newState),\r\n //reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n });\r\n };\r\n\r\n handleFilterSortData = (sortColumn: string, sortOrderIsAsc: boolean) => {\r\n this.setState({\r\n sortColumn,\r\n sortOrderIsAsc,\r\n });\r\n };\r\n\r\n updateFiltersAfterSave = (orgFilterId: string, savedListFilter: ISavedListFilter, isShared: boolean) => {\r\n if (!savedListFilter) return;\r\n const state = this.state;\r\n const savedFilters = state.savedFilters.filter(i => i.id !== orgFilterId || i.isShared !== isShared);\r\n const filter = ListFilterItem.createListFilterItemFromSavedListFilter(savedListFilter, isShared);\r\n savedFilters.push(filter);\r\n ListFilterItem.sortListFilterItems(savedFilters);\r\n this.setState({\r\n showListFilterSaveDialog: false,\r\n savedFilters,\r\n activeFilterId: \"\",\r\n activeSavedFilterId: savedListFilter.id,\r\n listFilterFilter: filter\r\n });\r\n };\r\n\r\n getActiveFilter = (): IListFilterItem => {\r\n const state = this.state;\r\n return state.activeFilterId\r\n ? state.filters.find(i => i.id === state.activeFilterId)\r\n : state.savedFilters.find(i => i.id === state.activeSavedFilterId);\r\n };\r\n\r\n handleSaveListFilter = async (saveAs: boolean, onGetGeneralFilter: () => any) => {\r\n const state = this.state;\r\n const filter = this.getActiveFilter();\r\n if (!filter) return;\r\n if (!saveAs) {\r\n const savedListFilter = await ListFilterSaveDialog.saveListFilterToDb(filter, getMessagePageGeneralFilterFromState(state), state.sortColumn, state.sortOrderIsAsc, state.activeCompanyId, ApplicationPermissionType.Message);\r\n this.updateFiltersAfterSave(filter.id, savedListFilter, filter.isShared);\r\n } else {\r\n this.setState({\r\n showListFilterSaveDialog: true,\r\n listFilterSaveDialogFilter: filter,\r\n listFilterSaveDialogReservedNames: state.savedFilters.map(i => i.id).concat(state.filters.map(i => i.title)),\r\n listFilterSaveDialogGeneralFilter: getMessagePageGeneralFilterFromState(state),\r\n listFilterSaveDialogOnGetGeneralFilter: onGetGeneralFilter\r\n });\r\n }\r\n };\r\n\r\n handleSaveListFilterDialogOk = (savedListFilter: ISavedListFilter, isShared: boolean) => {\r\n this.updateFiltersAfterSave(\"\", savedListFilter, isShared);\r\n };\r\n\r\n handleSaveListFilterDialogCancel = () => {\r\n this.setState({\r\n showListFilterSaveDialog: false\r\n });\r\n };\r\n // #endregion Saved Filter\r\n\r\n // #region Record Filter\r\n handleShowListFilter = () => {\r\n const filter = this.getActiveFilter();\r\n if (!filter) return;\r\n this.setState({\r\n showListFilter: true, //this.state.activeViewTypeId !== MessagePageViewTypeId.Reports,\r\n listFilterFilter: filter\r\n });\r\n };\r\n\r\n handleListFilterPanelOk = (closeDialog: boolean, newFilterState: IMessagePageFilterState): any => {\r\n const newState = {\r\n ...this.state,\r\n ...newFilterState\r\n };\r\n this.setState({\r\n showListFilter: !closeDialog,\r\n ...newFilterState,\r\n dataId: this.state.dataId + 1,\r\n listFilterIsSet: this.getListFilterIsSet(newState),\r\n //reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n });\r\n return getMessagePageGeneralFilterFromState(newState);\r\n };\r\n \r\n handleFilterPanelCancel = () => {\r\n this.setState({ showListFilter: false });\r\n };\r\n // #endregion Record Filter\r\n\r\n // #region Units\r\n handleRefreshPageData = async (companyId: string, listEditMode: boolean) => {\r\n const sessionState = this.props.appState.state;\r\n const pageData = await messageService.getMessagePageData(companyId, listEditMode);\r\n if (!pageData) return;\r\n const state = this.state;\r\n //Units\r\n const units = this.getUnits(pageData.units);\r\n const selectedUnitIds = IdTitleNode.keepAvailableSelectedIds(units, state.selectedUnitIds);\r\n //Companies\r\n const companies = this.getIdTitles(pageData.filterCompanies);\r\n const selectedCompanyIds = Base.keepAvailableSelectedIds(companies, state.selectedCompanyIds);\r\n //ModifyUsers\r\n const modifyUsers = this.getModifyUsers(pageData.modifyUsers);\r\n const selectedModifyUserCodes = Base.keepAvailableSelectedIds(modifyUsers, state.selectedModifyUserCodes, \"\");\r\n const stateChange = {\r\n activeCompanyId: companyId,\r\n listEditMode,\r\n units,\r\n companies,\r\n modifyUsers,\r\n selectedUnitIds,\r\n selectedCompanyIds,\r\n selectedModifyUserCodes,\r\n settingsActions: this.getSettingsActions(sessionState.companyId, pageData.canEditOtherCompanyPermissions, pageData.canEditModuleProperties, pageData.canEditAllModuleProperties)\r\n };\r\n const newState = { ...state, ...stateChange };\r\n this.setState({\r\n ...stateChange,\r\n listFilterIsSet: this.getListFilterIsSet(newState),\r\n //reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n });\r\n };\r\n // #endregion Units\r\n\r\n handleChangeListEditMode = (listEditMode: boolean) => {\r\n const sessionState = this.props.appState.state;\r\n const companyId = listEditMode\r\n ? this.state.activeCompanyId\r\n : sessionState.companyId;\r\n return this.handleRefreshPageData(companyId, listEditMode);\r\n };\r\n\r\n // #region Settings\r\n handleOpenSettingsDialog = () => {\r\n this.setState({\r\n showSettingsDialog: true\r\n });\r\n };\r\n \r\n handleSettingsDialogOk = async (refreshView: boolean) => {\r\n this.setState({\r\n showSettingsDialog: false,\r\n dataId: this.state.dataId + 1\r\n });\r\n if (!refreshView) return;\r\n await this.handleRefreshPageData(this.state.activeCompanyId, this.state.listEditMode);\r\n };\r\n // #endregion Settings\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n const companies = props.messagePage ? props.messagePage.companies : [];\r\n //const settingsVisible = state.settingsActions?.length > 0;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n i.id === state.activeSavedFilterId) : null}\r\n dataId={state.dataId.toString(10)}\r\n preloaded={state.listDataPreloaded}\r\n list={props.messagePage?.list}\r\n listFilterIsSet={state.listFilterIsSet}\r\n units={state.units}\r\n selectedStartDate={state.selectedStartDate}\r\n selectedEndDate={state.selectedEndDate}\r\n selectedUnitIds={state.selectedUnitIds}\r\n selectedCompanyIds={state.selectedCompanyIds}\r\n selectedModifyUserCodes={state.selectedModifyUserCodes}\r\n selectedDynamicTimeFilterId={state.selectedDynamicTimeFilterId}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n onSetSortData={this.handleFilterSortData}\r\n onLoadPageData={() => this.handleRefreshPageData(this.state.activeCompanyId, this.state.listEditMode)}\r\n onOpenFiltersDialog={this.handleShowListFilter}\r\n onOpenSettingsDialog={this.handleOpenSettingsDialog}\r\n onChangeEditMode={this.handleChangeListEditMode}\r\n reportTabs={(\r\n \r\n )}\r\n />\r\n \r\n \r\n {state.showListFilterSaveDialog &&\r\n \r\n }\r\n {state.showSettingsDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","/* eslint-disable no-unused-vars */\r\nimport * as React from \"react\";\r\n/* eslint-enable no-unused-vars */\r\nimport { connect } from \"react-redux\";\r\nimport { IApplicationState } from \"../../models/store/storeTypes\";\r\nimport * as storeEffects from \"../../models/store/storeEffects\";\r\nimport { IMessagePageOwnProps, IMessagePageStateProps, IMessagePageDispatchProps, MessagePage } from \"../../components/message/MessagePage/MessagePage\";\r\nimport { ITypedOption } from \"../../models/common/typedOption\";\r\n\r\nexport function mapStateToProps(applicationState: IApplicationState, ownProps: IMessagePageOwnProps): IMessagePageStateProps {\r\n if (!applicationState || !applicationState.front) {\r\n return {\r\n appState: null,\r\n dataId: -1,\r\n messagePage: null\r\n };\r\n }\r\n const messages = applicationState.messages;\r\n return {\r\n appState: applicationState.session,\r\n dataId: messages.dataId,\r\n messagePage: messages.messagePage\r\n };\r\n}\r\n\r\nexport function mapDispatchToProps(dispatch: storeEffects.MessagesThunkDispatch): IMessagePageDispatchProps {\r\n return {\r\n onGetMessagePage: () => dispatch(storeEffects.getMessagePage()),\r\n onLogout: () => dispatch(storeEffects.logout()),\r\n onSetCulture: (culture: string) => dispatch(storeEffects.setCulture(culture)),\r\n onSaveUserParameters: (parameters: ITypedOption[]) => dispatch(storeEffects.saveUserParameters(parameters)),\r\n onRefreshSessionState: () => dispatch(storeEffects.refreshSessionState()),\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MessagePage);","// RecordFilterDrawer - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Grid, MenuItem, Select } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { CheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/CheckboxDropdown\";\r\nimport { TreeCheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/TreeCheckboxDropdown\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Base } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/framework/base\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { DrawerContent } from \"../../framework/Drawer/DrawerContent\";\r\nimport { FilterButtons } from \"../../framework/Filters/FilterButtons\";\r\nimport { FilterSearchField } from \"../../framework/Filters/FilterSearchField\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { PageFilterConditionDrawer } from \"../../framework/Page/PageFilterConditionDrawer\";\r\n\r\n//RecordFilterDrawer\r\nexport interface IRecordFilterDrawerProp {\r\n open: boolean;\r\n classes?: string;\r\n filter: IListFilterItem;\r\n units: IIdTitleNode[];\r\n activityFilters: IIdTitle[];\r\n jobTitles: IIdTitle[];\r\n employeeTypes: IIdTitle[];\r\n selectedActivityFilterId: string;\r\n selectedEmployeeTypeIds: string[];\r\n selectedJobTitleIds: string[];\r\n selectedUnitIds: string[];\r\n canRemoveSharedFilters: boolean;\r\n onSaveFilter: (saveAs: boolean, onGetGeneralFilter: () => any) => void;\r\n onRemoveFilter: (filterId: string) => void;\r\n onOk: (closeDialog: boolean, selectedActivityFilterId: string, selectedEmployeeTypeIds: string[], selectedJobTitleIds: string[], selectedUnitIds: string[]) => any;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IRecordFilterDrawerState {\r\n selectedEmployeeTypeIds: string[];\r\n selectedJobTitleIds: string[];\r\n selectedUnitIds: string[];\r\n selectedActivityFilterId: string;\r\n}\r\n\r\nexport class RecordFilterDrawer extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n getStateFromProps = (props: IRecordFilterDrawerProp): IRecordFilterDrawerState => {\r\n return {\r\n selectedActivityFilterId: props.selectedActivityFilterId,\r\n selectedEmployeeTypeIds: props.selectedEmployeeTypeIds.slice(0),\r\n selectedJobTitleIds: props.selectedJobTitleIds.slice(0),\r\n selectedUnitIds: props.selectedUnitIds.slice(0),\r\n };\r\n };\r\n\r\n constructor(props: IRecordFilterDrawerProp) {\r\n super(props);\r\n this.state = this.getStateFromProps(props);\r\n this.orgStateHash = this.getSaveDataFromState(props, this.state).hash;\r\n }\r\n\r\n componentDidUpdate(prevProps: IRecordFilterDrawerProp, prevState: IRecordFilterDrawerState): void {\r\n const props = this.props;\r\n if (!prevProps || prevProps.filter?.getHash() === props.filter?.getHash()) return;\r\n const state = this.getStateFromProps(props);\r\n this.setState(state);\r\n this.orgStateHash = this.getSaveDataFromState(props, state).hash;\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"activityFilterId\") {\r\n this.setState({ selectedActivityFilterId: value });\r\n }\r\n };\r\n\r\n handleChangeUnitIds = (selectedUnitIds: string[]) => {\r\n this.setState({\r\n selectedUnitIds\r\n });\r\n };\r\n\r\n handleChangeEmployeeTypeIds = (selectedEmployeeTypeIds: string[]) => {\r\n this.setState({\r\n selectedEmployeeTypeIds\r\n });\r\n };\r\n\r\n handleChangeJobTitleIds = (selectedJobTitleIds: string[]) => {\r\n this.setState({\r\n selectedJobTitleIds\r\n });\r\n };\r\n\r\n getSaveDataFromState = (props: IRecordFilterDrawerProp, state: IRecordFilterDrawerState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"selectedActivityFilterId\", state.selectedActivityFilterId ? state.selectedActivityFilterId : null);\r\n result.append(\"selectedEmployeeTypeIds\", state.selectedEmployeeTypeIds);\r\n result.append(\"selectedUnitIds\", state.selectedUnitIds);\r\n result.append(\"selectedJobTitleIds\", state.selectedJobTitleIds);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n static filterIsSet = (activityFilters: IIdTitle[], employeeTypes: IIdTitle[], jobTitles: IIdTitle[], units: IIdTitleNode[],\r\n selectedActivityFilterId: string, selectedEmployeeTypeIds: string[], selectedJobTitleIds: string[], selectedUnitIds: string[]): boolean => {\r\n return !(selectedActivityFilterId === activityFilters[1].id &&\r\n Base.equalStrArrays(selectedEmployeeTypeIds, [employeeTypes[0].id]) &&\r\n Base.equalStrArrays(selectedJobTitleIds, [jobTitles[0].id]) &&\r\n Base.equalStrArrays(selectedUnitIds, [units[0].id]));\r\n };\r\n\r\n handleSaveFilter = async (saveAs: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n if (!saveAs) {\r\n props.onOk(false, state.selectedActivityFilterId, state.selectedEmployeeTypeIds, state.selectedJobTitleIds, state.selectedUnitIds);\r\n await this.props.onSaveFilter(false, null);\r\n } else {\r\n await this.props.onSaveFilter(true, () => {\r\n return props.onOk(false, state.selectedActivityFilterId, state.selectedEmployeeTypeIds, state.selectedJobTitleIds, state.selectedUnitIds);\r\n });\r\n }\r\n };\r\n\r\n handleClear = () => {\r\n const props = this.props;\r\n this.setState({\r\n selectedActivityFilterId: props.activityFilters[1].id,\r\n selectedEmployeeTypeIds: [props.employeeTypes[0].id],\r\n selectedJobTitleIds: [props.jobTitles[0].id],\r\n selectedUnitIds: [props.units[0].id]\r\n });\r\n };\r\n\r\n handleSave = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n props.onOk(true, state.selectedActivityFilterId, state.selectedEmployeeTypeIds, state.selectedJobTitleIds, state.selectedUnitIds);\r\n };\r\n\r\n handleCancel = async (checkChanges: boolean) => {\r\n AppUtils.cancelEditDialog(checkChanges, this.getSaveDataFromState(this.props, this.state).hash, this.orgStateHash, this.handleSave, this.props.onCancel, Translations.YouHaveUnapprovedChangesDoYouWantApproveChanges);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n this.handleCancel(false)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n actions={\r\n this.handleCancel(false)}\r\n onClear={this.handleClear}\r\n />\r\n }\r\n />\r\n \r\n );\r\n }\r\n}","import WorkspacePremiumIcon from \"@mui/icons-material/WorkspacePremium\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ListStateIcon } from \"../ListStateIcon/ListStateIcon\";\r\n\r\ninterface ListStateIconCertificateProps {\r\n valid: boolean;\r\n}\r\n\r\nexport const ListStateIconCertificate = (\r\n props: ListStateIconCertificateProps\r\n) => (\r\n \r\n);\r\n","//RecordExpiredFamiliarizationsList\r\n//***********************************************************************************************************************\r\nimport { Box, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IRecordExpiredFamiliarizationListItem, RecordExpiredFamiliarizationListItem } from \"../../../models/record/recordExpiredFamiliarizationListItem\";\r\nimport * as attachmentService from \"../../../models/services/attachmentService\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListLinkValue } from \"../../framework/List/ListLinkValue\";\r\nimport { EllipsisTypography } from \"../../framework/Typography/EllipsisTypography\";\r\n\r\n//RecordExpiredFamiliarizationsList\r\nexport interface IRecordExpiredFamiliarizationsListProps {\r\n classes?: string;\r\n companyId: string;\r\n isReport: boolean;\r\n employeeTypes: number[];\r\n jobTitles: string[];\r\n unitIds: string[];\r\n activityState: number;\r\n selectedId?: string;\r\n checkedIds?: string[];\r\n dataId?: string;\r\n sortColumn?: string;\r\n sortOrderIsAsc?: boolean;\r\n onSetSelectedIds?: (selectedId: string, checkedIds: string[]) => void;\r\n onSetSortData?: (sortColumn: string, sortOrderIsAsc: boolean) => void;\r\n}\r\n\r\nexport interface IRecordExpiredFamiliarizationsListState {\r\n //List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n pageSize: number;\r\n page: number;\r\n hasMore: boolean;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n items: IRecordExpiredFamiliarizationListItem[];\r\n}\r\n\r\nexport class RecordExpiredFamiliarizationsList extends React.Component {\r\n constructor(props: IRecordExpiredFamiliarizationsListProps) {\r\n super(props);\r\n this.state = {\r\n //List\r\n intialized: false,\r\n isLoading: false,\r\n pageSize: 10000,\r\n page: 1,\r\n hasMore: true,\r\n filter: \"\",\r\n sortColumn: props.sortColumn ? props.sortColumn : \"name\",\r\n sortOrderIsAsc: props.sortColumn ? props.sortOrderIsAsc : true,\r\n items: []\r\n };\r\n }\r\n\r\n searchItems = async (pageSize: number, page: number, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean, initialLoad: boolean = false) => {\r\n const props = this.props;\r\n const state = this.state;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => recordService.getExpiredRecordUserFamiliarizationListItems(props.companyId, props.employeeTypes, props.jobTitles, props.unitIds, props.activityState, !refreshList ? pageSize : (page * 10000),\r\n !refreshList ? page : 1, sortColumn, sortOrderIsAsc, props.isReport), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const items = List.getListItems(state.items, props.selectedId ?? \"\", props.checkedIds ?? [], result.items, resetItems, refreshList);\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items\r\n });\r\n if (props.onSetSelectedIds) {\r\n props.onSetSelectedIds(items.selectedId, !initialLoad ? items.checkedIds : items.items.map(i => i.id));\r\n }\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, state.sortColumn, state.sortOrderIsAsc, true, false, true);\r\n }\r\n\r\n componentDidUpdate(prevProps: IRecordExpiredFamiliarizationsListProps, prevState: IRecordExpiredFamiliarizationsListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevDataId = prevProps.dataId ? prevProps.dataId : \"\";\r\n const dataId = props.dataId ? props.dataId : \"\";\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n const prevJobTitles = prevProps.jobTitles ? prevProps.jobTitles.filter(i => !!i) : [];\r\n const jobTitles = props.jobTitles ? props.jobTitles.filter(i => !!i) : [];\r\n const prevActivityState = prevProps.activityState ? prevProps.activityState : 0;\r\n const activityState = props.activityState ? props.activityState : 0;\r\n const prevSortColumn = prevProps.sortColumn ? prevProps.sortColumn : state.sortColumn;\r\n const sortColumn = props.sortColumn ? props.sortColumn : state.sortColumn;\r\n const prevSortOrderIsAsc = prevProps.sortColumn ? prevProps.sortOrderIsAsc : state.sortOrderIsAsc;\r\n const sortOrderIsAsc = props.sortColumn ? props.sortOrderIsAsc : state.sortOrderIsAsc;\r\n if (dataId === prevDataId && companyId === prevCompanyId &&\r\n Base.equalArrays(prevProps.employeeTypes, props.employeeTypes) &&\r\n Base.equalStrArrays(prevJobTitles, jobTitles) &&\r\n Base.equalStrArrays(prevProps.unitIds, props.unitIds) &&\r\n prevActivityState === activityState &&\r\n prevSortColumn === sortColumn && prevSortOrderIsAsc === sortOrderIsAsc) return;\r\n this.searchItems(state.pageSize, 1, sortColumn, sortOrderIsAsc, true, false, true);\r\n }\r\n\r\n handleSearchLinesDialog = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n \r\n filteredList = (column: string, asc: boolean) => {\r\n const props = this.props;\r\n const items = this.state.items.slice(0);\r\n RecordExpiredFamiliarizationListItem.sortRecordExpiredFamiliarizationListItemsByColumn(items, column, asc);\r\n if (props.onSetSortData) {\r\n props.onSetSortData(column, asc);\r\n }\r\n this.setState({\r\n sortColumn: column,\r\n sortOrderIsAsc: asc,\r\n items\r\n });\r\n };\r\n \r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n this.filteredList(sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n handleDownloadAttachment = async (id: string) => {\r\n if (!id) return;\r\n const fileName = await AppUtils.callService(() => attachmentService.getAttachment(id));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.AttachmentParameterDownloaded, fileName));\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.intialized) return null;\r\n return (\r\n {\r\n return {\r\n classes: item.recordArchived ? \" disabled\" : \"\",\r\n columns: [\r\n { size: 3, content: item.name },\r\n { size: 2, content: Base.utcTimeToDateStr(item.validityEndDate) },\r\n {\r\n size: 2,\r\n content:\r\n \r\n \r\n {item.recordLastName}\r\n \r\n },\r\n { size: 2, content: item.recordFirstName },\r\n { size: 1, content: Base.utcTimeToDateStr(item.recordBirthDate) },\r\n {\r\n size: 2,\r\n content:\r\n i.title), \", \")}>\r\n {item.attachments.map(i => (\r\n this.handleDownloadAttachment(i.id)}\r\n sx={(theme) => ({\r\n \"&::before\": {\r\n content: \"\\\", \\\"\",\r\n },\r\n \"&:first-of-type\": {\r\n \"&::before\": {\r\n content: \"\\\"\\\"\",\r\n },\r\n },\r\n })}\r\n >\r\n {i.title}\r\n \r\n ))}\r\n \r\n }\r\n ],\r\n id: item.id\r\n };\r\n })\r\n }\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={props.isReport ? \"\" : props.selectedId}\r\n checkedIds={props.isReport ? [] : props.checkedIds}\r\n onSetSelectedIds={props.onSetSelectedIds}\r\n onSearchLines={props.isReport ? this.handleSearchLines : this.handleSearchLinesDialog}\r\n />\r\n );\r\n }\r\n}","//RecordArchiveExpiredFamiliarizationsDialog\r\n//***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { RecordExpiredFamiliarizationsList } from \"../RecordExpiredFamiliarizationsList\";\r\n\r\n//RecordArchiveExpiredFamiliarizationsDialog\r\nexport interface IRecordArchiveExpiredFamiliarizationsDialogProps {\r\n classes?: string;\r\n companyId: string;\r\n onOk: () => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IRecordArchiveExpiredFamiliarizationsDialogState {\r\n selectedId: string;\r\n checkedIds: string[];\r\n}\r\n\r\nexport class RecordArchiveExpiredFamiliarizationsDialog extends React.Component {\r\n constructor(props: IRecordArchiveExpiredFamiliarizationsDialogProps) {\r\n super(props);\r\n this.state = {\r\n selectedId: null,\r\n checkedIds: [],\r\n };\r\n }\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n handleCancel = () => {\r\n this.props.onCancel();\r\n };\r\n\r\n static getSaveData = (companyId: string, recordUserFamiliarizationsIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"ids\", recordUserFamiliarizationsIds);\r\n result.append(\"companyId\", companyId);\r\n return result;\r\n };\r\n\r\n static archiveRecordUserFamiliarizations = async (companyId: string, recordUserFamiliarizationsIds: string[]): Promise => {\r\n if (recordUserFamiliarizationsIds.length < 1) return;\r\n const saveData = RecordArchiveExpiredFamiliarizationsDialog.getSaveData(companyId, recordUserFamiliarizationsIds);\r\n // Call server\r\n return await AppUtils.callService(() => recordService.archiveRecordUserFamiliarizations(saveData.obj));\r\n };\r\n\r\n handleOk = async () => {\r\n const state = this.state;\r\n const result = await RecordArchiveExpiredFamiliarizationsDialog.archiveRecordUserFamiliarizations(this.props.companyId, List.getSelectedIds(state.selectedId, state.checkedIds));\r\n if (!result) return null;\r\n this.props.onOk();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n }\r\n buttons={[\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: this.handleCancel },\r\n { title: Translations.OK, variant: \"confirmation\", onClick: this.handleOk },\r\n ]}\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","//RecordExpiredFurtherEducationsList\r\n//***********************************************************************************************************************\r\nimport { Box, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IRecordExpiredFurtherEducationListItem, RecordExpiredFurtherEducationListItem } from \"../../../models/record/recordExpiredFurtherEducationListItem\";\r\nimport * as attachmentService from \"../../../models/services/attachmentService\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { EllipsisTypography } from \"../../framework/Typography/EllipsisTypography\";\r\nimport { ListLinkValue } from \"../../framework/List/ListLinkValue\";\r\n\r\n//RecordExpiredFurtherEducationsList\r\nexport interface IRecordExpiredFurtherEducationsListProps {\r\n classes?: string;\r\n companyId: string;\r\n isReport: boolean;\r\n employeeTypes: number[];\r\n jobTitles: string[];\r\n unitIds: string[];\r\n activityState: number;\r\n selectedId?: string;\r\n checkedIds?: string[];\r\n dataId?: string;\r\n sortColumn?: string;\r\n sortOrderIsAsc?: boolean;\r\n onSetSelectedIds?: (selectedId: string, checkedIds: string[]) => void;\r\n onSetSortData?: (sortColumn: string, sortOrderIsAsc: boolean) => void;\r\n}\r\n\r\nexport interface IRecordExpiredFurtherEducationsListState {\r\n //List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n pageSize: number;\r\n page: number;\r\n hasMore: boolean;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n items: IRecordExpiredFurtherEducationListItem[];\r\n}\r\n\r\nexport class RecordExpiredFurtherEducationsList extends React.Component {\r\n constructor(props: IRecordExpiredFurtherEducationsListProps) {\r\n super(props);\r\n this.state = {\r\n //List\r\n intialized: false,\r\n isLoading: false,\r\n pageSize: 10000,\r\n page: 1,\r\n hasMore: true,\r\n filter: \"\",\r\n sortColumn: props.sortColumn ? props.sortColumn : \"name\",\r\n sortOrderIsAsc: props.sortColumn ? props.sortOrderIsAsc : true,\r\n items: []\r\n };\r\n }\r\n\r\n searchItems = async (pageSize: number, page: number, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean, initialLoad: boolean = false) => {\r\n const props = this.props;\r\n const state = this.state;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => recordService.getExpiredRecordUserFurtherEducationListItems(props.companyId, props.employeeTypes, props.jobTitles, props.unitIds, props.activityState, !refreshList ? pageSize : (page * 10000),\r\n !refreshList ? page : 1, sortColumn, sortOrderIsAsc, props.isReport), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const items = List.getListItems(state.items, props.selectedId ?? \"\", props.checkedIds ?? [], result.items, resetItems, refreshList);\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items\r\n });\r\n if (props.onSetSelectedIds) {\r\n props.onSetSelectedIds(items.selectedId, !initialLoad ? items.checkedIds : items.items.map(i => i.id));\r\n }\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, state.sortColumn, state.sortOrderIsAsc, true, false, true);\r\n }\r\n\r\n componentDidUpdate(prevProps: IRecordExpiredFurtherEducationsListProps, prevState: IRecordExpiredFurtherEducationsListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevDataId = prevProps.dataId ? prevProps.dataId : \"\";\r\n const dataId = props.dataId ? props.dataId : \"\";\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n const prevJobTitles = prevProps.jobTitles ? prevProps.jobTitles.filter(i => !!i) : [];\r\n const jobTitles = props.jobTitles ? props.jobTitles.filter(i => !!i) : [];\r\n const prevActivityState = prevProps.activityState ? prevProps.activityState : 0;\r\n const activityState = props.activityState ? props.activityState : 0;\r\n const prevSortColumn = prevProps.sortColumn ? prevProps.sortColumn : state.sortColumn;\r\n const sortColumn = props.sortColumn ? props.sortColumn : state.sortColumn;\r\n const prevSortOrderIsAsc = prevProps.sortColumn ? prevProps.sortOrderIsAsc : state.sortOrderIsAsc;\r\n const sortOrderIsAsc = props.sortColumn ? props.sortOrderIsAsc : state.sortOrderIsAsc;\r\n if (dataId === prevDataId && companyId === prevCompanyId &&\r\n Base.equalArrays(prevProps.employeeTypes, props.employeeTypes) &&\r\n Base.equalStrArrays(prevJobTitles, jobTitles) &&\r\n Base.equalStrArrays(prevProps.unitIds, props.unitIds) &&\r\n prevActivityState === activityState &&\r\n prevSortColumn === sortColumn && prevSortOrderIsAsc === sortOrderIsAsc) return;\r\n this.searchItems(state.pageSize, 1, sortColumn, sortOrderIsAsc, true, false, true);\r\n }\r\n\r\n handleSearchLinesDialog = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n \r\n filteredList = (column: string, asc: boolean) => {\r\n const props = this.props;\r\n const items = this.state.items.slice(0);\r\n RecordExpiredFurtherEducationListItem.sortRecordExpiredFurtherEducationListItemsByColumn(items, column, asc);\r\n if (props.onSetSortData) {\r\n props.onSetSortData(column, asc);\r\n }\r\n this.setState({\r\n sortColumn: column,\r\n sortOrderIsAsc: asc,\r\n items\r\n });\r\n };\r\n \r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n this.filteredList(sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n handleDownloadAttachment = async (id: string) => {\r\n if (!id) return;\r\n const fileName = await AppUtils.callService(() => attachmentService.getAttachment(id));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.AttachmentParameterDownloaded, fileName));\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.intialized) return null;\r\n return (\r\n {\r\n return {\r\n classes: item.recordArchived ? \" disabled\" : \"\",\r\n columns: [\r\n { size: 3, content: item.name },\r\n { size: 2, content: Base.utcTimeToDateStr(item.validityEndDate) },\r\n {\r\n size: 2,\r\n content:\r\n \r\n \r\n {item.recordLastName}\r\n \r\n },\r\n { size: 2, content: item.recordFirstName },\r\n { size: 1, content: Base.utcTimeToDateStr(item.recordBirthDate) },\r\n {\r\n size: 2,\r\n content:\r\n i.title), \", \")}>\r\n {item.attachments.map(i => (\r\n this.handleDownloadAttachment(i.id)}\r\n sx={(theme) => ({\r\n \"&::before\": {\r\n content: \"\\\", \\\"\",\r\n },\r\n \"&:first-of-type\": {\r\n \"&::before\": {\r\n content: \"\\\"\\\"\",\r\n },\r\n },\r\n })}\r\n >\r\n {i.title}\r\n \r\n ))}\r\n \r\n }\r\n ],\r\n id: item.id\r\n };\r\n })\r\n }\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={props.isReport ? \"\" : props.selectedId}\r\n checkedIds={props.isReport ? [] : props.checkedIds}\r\n onSetSelectedIds={props.onSetSelectedIds}\r\n onSearchLines={props.isReport ? this.handleSearchLines : this.handleSearchLinesDialog}\r\n />\r\n );\r\n }\r\n}","//RecordArchiveExpiredFurtherEducationsDialog\r\n//***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { RecordExpiredFurtherEducationsList } from \"../RecordExpiredFurtherEducationsList\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\n\r\n//RecordArchiveExpiredFurtherEducationsDialog\r\nexport interface IRecordArchiveExpiredFurtherEducationsDialogProps {\r\n classes?: string;\r\n companyId: string;\r\n onOk: () => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IRecordArchiveExpiredFurtherEducationsDialogState {\r\n selectedId: string;\r\n checkedIds: string[];\r\n}\r\n\r\nexport class RecordArchiveExpiredFurtherEducationsDialog extends React.Component {\r\n constructor(props: IRecordArchiveExpiredFurtherEducationsDialogProps) {\r\n super(props);\r\n this.state = {\r\n selectedId: null,\r\n checkedIds: [],\r\n };\r\n }\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n handleCancel = () => {\r\n this.props.onCancel();\r\n };\r\n\r\n static getSaveData = (companyId: string, recordUserFurtherEducationIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"ids\", recordUserFurtherEducationIds);\r\n result.append(\"companyId\", companyId);\r\n return result;\r\n };\r\n\r\n static archiveRecordUserFurtherEducations = async (companyId: string, recordUserFurtherEducationIds: string[]): Promise => {\r\n if (recordUserFurtherEducationIds.length < 1) return;\r\n const saveData = RecordArchiveExpiredFurtherEducationsDialog.getSaveData(companyId, recordUserFurtherEducationIds);\r\n // Call server\r\n return await AppUtils.callService(() => recordService.archiveRecordUserFurtherEducations(saveData.obj));\r\n };\r\n\r\n handleOk = async () => {\r\n const state = this.state;\r\n const result = await RecordArchiveExpiredFurtherEducationsDialog.archiveRecordUserFurtherEducations(this.props.companyId, List.getSelectedIds(state.selectedId, state.checkedIds));\r\n if (!result) return null;\r\n this.props.onOk();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n }\r\n buttons={[\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: this.handleCancel },\r\n { title: Translations.OK, variant: \"confirmation\", onClick: this.handleOk },\r\n ]}\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","// UserEditChangePasswordDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as userService from \"../../../models/services/userService\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\n\r\n//UserEditChangePasswordDialog\r\nexport interface IUserEditChangePasswordDialogProp {\r\n classes?: string;\r\n userId: string;\r\n companyId: string;\r\n minPasswordLength: number;\r\n rowId: string;\r\n onOk: (rowId: string) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IUserEditChangePasswordDialogState {\r\n newPassword: string;\r\n newPasswordConfirmation: string;\r\n}\r\n\r\nexport class UserEditChangePasswordDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IUserEditChangePasswordDialogProp) {\r\n super(props);\r\n this.state = {\r\n newPassword: \"\",\r\n newPasswordConfirmation: \"\",\r\n };\r\n const saveData = this.getSaveDataFromState(props, this.state);\r\n this.orgStateHash = saveData.hash;\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"n_p\") {\r\n this.setState({ newPassword: value });\r\n } else if (name === \"n_pc\") {\r\n this.setState({ newPasswordConfirmation: value });\r\n }\r\n };\r\n\r\n getSaveDataFromState = (props: IUserEditChangePasswordDialogProp, state: IUserEditChangePasswordDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"rowId\", props.rowId);\r\n result.append(\"id\", props.userId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"newPassword\", state.newPassword);\r\n result.append(\"newPasswordConfirmation\", state.newPasswordConfirmation);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n console.log(state.newPassword, state.newPasswordConfirmation);\r\n if (!state.newPassword) {\r\n AppUtils.showErrorMessage(Translations.NewPasswordMustBeDefined);\r\n return resolve(false);\r\n }\r\n const errorMessage = Base.isValidPassword(state.newPassword, this.props.minPasswordLength);\r\n if (errorMessage) {\r\n AppUtils.showErrorMessage(errorMessage);\r\n return resolve(false);\r\n }\r\n if (!state.newPasswordConfirmation || state.newPassword !== state.newPasswordConfirmation) {\r\n AppUtils.showErrorMessage(Translations.PasswordConfirmationDoesNotMatchPassword);\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = await AppUtils.callService(() => userService.userEditChangePassword(saveData.obj));\r\n if (!result) return;\r\n props.onOk(result.rowId);\r\n };\r\n\r\n handleSave = () => {\r\n this.saveToDb();\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.saveToDb();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n render() {\r\n // const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n buttons={[\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: this.handleCancel },\r\n { title: Translations.Save, variant: \"contained\", onClick: this.handleSave }\r\n ]}\r\n onClose={this.handleCancel}/>\r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { ISelectUserGroupDialogBaseProps, ISelectUserGroupDialogState } from \"../SelectUserGroupDialog\";\r\nimport { FormSectionTitle } from \"source/components/framework/Form/FormSectionTitle\";\r\nimport { SelectUserGroupDialogList } from \"../SelectUserGroupDialogList\";\r\nimport { CompanyDropdown } from \"source/components/company/CompanyDropdown\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { IUserGroupListItem } from \"ui/Scripts/source/models/userGroup/userGroupListItem\";\r\nimport { UserGroupType } from \"ui/Scripts/source/models/enums\";\r\n\r\nexport interface ISelectUserGroupDialogWithCompanySelectProps extends ISelectUserGroupDialogBaseProps {\r\n companies: ICompanyMenuItem[];\r\n ignoreUserGroups?: IIdTitle[]\r\n requireUserGroups?: IIdTitle[]\r\n onOk: (companyGroups: IUserGroupListItem[], companyId :string) => void;\r\n}\r\n\r\nexport interface ISelectUserGroupDialogWithCompanySelectState extends ISelectUserGroupDialogState {\r\n company: ICompanyMenuItem;\r\n ignoreUserGroupCodes: string[]\r\n requireUserGroupCodes: string[]\r\n}\r\n\r\nexport class SelectUserGroupDialogWithCompanySelect extends React.Component {\r\n getIgnoreUserGroupCodes = (company: ICompanyMenuItem) => {\r\n const props = this.props;\r\n return props.ignoreUserGroups && company\r\n ? props.ignoreUserGroups.filter(x => x.id === company.code).map(x => x.title)\r\n : [];\r\n };\r\n\r\n getRequireUserGroupCodes = (company: ICompanyMenuItem) => {\r\n const props = this.props;\r\n return props.requireUserGroups && company\r\n ? props.requireUserGroups.filter(x => x.id === company.code).map(x => x.title)\r\n : [];\r\n };\r\n\r\n constructor(props: ISelectUserGroupDialogWithCompanySelectProps) {\r\n super(props);\r\n const company = props.companies.length ? props.companies[0] : null;\r\n this.state = {\r\n company,\r\n ignoreUserGroupCodes: this.getIgnoreUserGroupCodes(company),\r\n requireUserGroupCodes: this.getRequireUserGroupCodes(company),\r\n intialized: !!props.records,\r\n selectedId: null,\r\n checkedIds: [],\r\n selectedItems: [],\r\n userGroupType: UserGroupType.Normal\r\n };\r\n }\r\n\r\n handleSetInitialized = (intialized: boolean) => {\r\n this.setState({\r\n intialized\r\n });\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[], selectedItems: IUserGroupListItem[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds,\r\n selectedItems\r\n });\r\n };\r\n\r\n handleCompanyChange = (company: ICompanyMenuItem) => {\r\n if (!company) return;\r\n this.setState({\r\n company,\r\n ignoreUserGroupCodes: this.getIgnoreUserGroupCodes(company),\r\n requireUserGroupCodes: this.getRequireUserGroupCodes(company)\r\n });\r\n };\r\n\r\n handleCancel = () => {\r\n this.props.onCancel();\r\n };\r\n\r\n handleOk = () => {\r\n const state = this.state;\r\n if (state.selectedItems.length < 1) return;\r\n this.props.onOk(state.selectedItems, state.company.id);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n {props.companies.length > 1 &&\r\n <>\r\n {Translations.SelectCompany}\r\n \r\n {Translations.SelectUserGroup}\r\n \r\n }\r\n \r\n \r\n }\r\n buttons={[\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: this.handleCancel },\r\n { title: Translations.OK, variant: \"confirmation\", onClick: this.handleOk },\r\n ]}\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","// UserEditDialogUserList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Alert, Box, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Base } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/framework/base\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as userGroupService from \"../../../models/services/userGroupService\";\r\nimport * as userService from \"../../../models/services/userService\";\r\nimport { IUserGroupListItem, UserGroupListItem } from \"ui/Scripts/source/models/userGroup/userGroupListItem\";\r\nimport { UserGroupListItems } from \"ui/Scripts/source/models/userGroup/userGroupListItems\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { DialogListContainer } from \"../../framework/Dialog/DialogListContainer\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListIconButtonsItem } from \"../../framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { SelectUserGroupDialogWithCompanySelect } from \"source/components/userGroup/SelectUserGroupDialogWithCompanySelect\";\r\nimport { IdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { IListValueLineData } from \"source/components/framework/List/ListLine\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\n\r\n// UserEditDialogUserGroupList\r\nexport interface IUserEditDialogUserGroupListProp {\r\n isReadOnly: boolean;\r\n sessionState: ISessionState;\r\n userId: string;\r\n companyId: string;\r\n userGroups: IUserGroupListItem[];\r\n companies: ICompanyMenuItem[];\r\n onRemoved: (ids: string[]) => void;\r\n onAdded: (userGroups: IUserGroupListItem[]) => void;\r\n}\r\n\r\ninterface IUserEditDialogUserGroupListState {\r\n // List\r\n isLoading: boolean;\r\n userGroups: IUserGroupListItem[];\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n selectedId: string;\r\n checkedIds: string[];\r\n\r\n // Dialog\r\n showSelectUserGroupDialog: boolean;\r\n selectUserGroupDialogCompanies: ICompanyMenuItem[];\r\n}\r\n\r\nexport class UserEditDialogUserGroupList extends React.Component {\r\n constructor(props: IUserEditDialogUserGroupListProp) {\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n userGroups: props.userGroups ? props.userGroups.slice(0) : [],\r\n filter: \"\",\r\n sortColumn: \"name\",\r\n sortOrderIsAsc: true,\r\n selectedId: null,\r\n checkedIds: [],\r\n showSelectUserGroupDialog: false,\r\n selectUserGroupDialogCompanies: []\r\n };\r\n }\r\n\r\n filteredList = (filter: string, column: string, asc: boolean) => {\r\n const props = this.props;\r\n let userGroups = props.userGroups ? props.userGroups.slice(0) : [];\r\n if (filter) {\r\n const lowFilter = filter.toLowerCase();\r\n userGroups = userGroups.filter(i => i.name.toLowerCase().indexOf(lowFilter) > -1 || i.comment.toLowerCase().indexOf(lowFilter) > -1);\r\n }\r\n UserGroupListItem.sortUserGroupListItems(userGroups, column, asc);\r\n this.setState({\r\n filter,\r\n sortColumn: column,\r\n sortOrderIsAsc: asc,\r\n userGroups\r\n });\r\n };\r\n\r\n componentDidUpdate(prevProps: IUserEditDialogUserGroupListProp, prevState: IUserEditDialogUserGroupListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (Base.equalStrArrays(prevProps.userGroups ? prevProps.userGroups.map(i => i.id) : [], props.userGroups ? props.userGroups.map(i => i.id) : [])) return;\r\n this.filteredList(state.filter, state.sortColumn, state.sortOrderIsAsc);\r\n };\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.filteredList(filter, state.sortColumn, state.sortOrderIsAsc);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.filteredList(state.filter, sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n getRemoveSaveData = (props: IUserEditDialogUserGroupListProp, userGroupIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.userId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"userGroupIds\", userGroupIds);\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const obj = this;\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n if (selectedIds.length < 1) return;\r\n const saveData = this.getRemoveSaveData(this.props, selectedIds);\r\n // Call server\r\n const result = await AppUtils.callService(() => userService.userEditRemoveUserGroups(saveData.obj));\r\n if (!result) return;\r\n obj.props.onRemoved(selectedIds);\r\n };\r\n \r\n handleAdd = () => {\r\n const props = this.props;\r\n this.setState({\r\n showSelectUserGroupDialog: true,\r\n selectUserGroupDialogCompanies: props.sessionState.isSuperAdmin\r\n ? props.companies\r\n : props.companies.filter(i => props.sessionState.allowedCompanies.find(j => j.code === i.code))\r\n });\r\n };\r\n\r\n getAddSaveData = (props: IUserEditDialogUserGroupListProp, userGroupCompanyCode: string, userGroupIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.userId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"userGroupCompanyCode\", userGroupCompanyCode);\r\n result.append(\"userGroupIds\", userGroupIds);\r\n return result;\r\n };\r\n\r\n handleGetUserGroupListItems = (companyId: string, pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, _groupType: number,\r\n ignoreUserGroupCodes: string[], _requireUserGroupCodes: string[], _messageTargetMode: boolean): Promise => {\r\n return userGroupService.getUserGroupListItemsForUser(companyId, pageSize, page, filter, [], sortColumn, sortOrderIsAsc, ignoreUserGroupCodes);\r\n };\r\n\r\n handleSelectUserGroupDialogOk = async (userGroups: IUserGroupListItem[]) => {\r\n const props = this.props;\r\n if (!userGroups || userGroups.length < 1) return;\r\n this.setState({\r\n showSelectUserGroupDialog: false\r\n });\r\n const saveData = this.getAddSaveData(props, userGroups[0].companyCode, userGroups.map(i => i.id));\r\n // Call server\r\n const result = await AppUtils.callService(() => userService.userEditAddUserGroups(saveData.obj));\r\n if (!result) return;\r\n props.onAdded(userGroups);\r\n };\r\n\r\n handleSelectUserGroupDialogCancel = () => {\r\n this.setState({\r\n showSelectUserGroupDialog: false\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const multipleCompaniesInUse = Base.getUniqueStringItems(state.userGroups.map(i => i.companyCode)).length > 1;\r\n return (\r\n \r\n \r\n }\r\n rightItems={\r\n \r\n }\r\n />\r\n {!!props.isReadOnly &&\r\n {Translations.NewUserMustBeSavedBeforeUserGroupsCanBeAdded}\r\n }\r\n {!props.isReadOnly &&\r\n {\r\n const lines: IListValueLineData[] = [];\r\n for (const company of props.companies) {\r\n const companyUserGroups = state.userGroups.filter(i => i.companyCode === company.code);\r\n if (companyUserGroups.length < 1) continue;\r\n //Company row\r\n if (multipleCompaniesInUse) {\r\n lines.push({\r\n columns: [\r\n {\r\n size: 12,\r\n content:\r\n \r\n \r\n {company.name}\r\n \r\n }\r\n ],\r\n id: company.id,\r\n unselectable: true,\r\n });\r\n }\r\n //UserGroup rows\r\n for (const userGroup of companyUserGroups) {\r\n lines.push({\r\n columns: [\r\n { size: 4, content: userGroup.name },\r\n { size: 4, content: userGroup.comment },\r\n { size: 4, content: userGroup.levelStr }],\r\n id: userGroup.id\r\n });\r\n }\r\n }\r\n return lines;\r\n })()}\r\n noDataMessage={Translations.AddUserGroups}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n />\r\n }\r\n {state.showSelectUserGroupDialog &&\r\n {\r\n return IdTitle.createIdTitle(i.companyCode, i.code);\r\n })}\r\n onOk={this.handleSelectUserGroupDialogOk}\r\n onCancel={this.handleSelectUserGroupDialogCancel}\r\n onGetUserGroupListItems={this.handleGetUserGroupListItems}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","//UserEditRemoveSelectTypeDialog\r\n//***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { UserRemoveType } from \"ui/Scripts/source/models/enums\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { FormControlLabel, Grid, Radio } from \"@mui/material\";\r\n\r\n//UserEditRemoveSelectTypeDialog\r\nexport interface IUserEditRemoveSelectTypeDialogProps {\r\n onOk: (removeType: UserRemoveType) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IUserEditRemoveSelectTypeDialogState {\r\n removeType: UserRemoveType;\r\n}\r\n\r\nexport class UserEditRemoveSelectTypeDialog extends React.Component {\r\n constructor(props: IUserEditRemoveSelectTypeDialogProps) {\r\n super(props);\r\n this.state = {\r\n removeType: UserRemoveType.RemoveUser\r\n };\r\n }\r\n\r\n handleChange = (checked: boolean, removeType: UserRemoveType) => {\r\n if (!checked) return;\r\n this.setState({\r\n removeType\r\n });\r\n };\r\n\r\n handleCancel = () => {\r\n this.props.onCancel();\r\n };\r\n\r\n handleOk = async () => {\r\n const state = this.state;\r\n this.props.onOk(state.removeType);\r\n };\r\n\r\n render() {\r\n const state = this.state;\r\n return (\r\n \r\n \r\n \r\n {\r\n this.handleChange(checked, UserRemoveType.RemoveUser);\r\n }}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n this.handleChange(checked, UserRemoveType.RemoveUserAndRecordUserArchive);\r\n }}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n this.handleChange(checked, UserRemoveType.RemoveUserAndRecordUser);\r\n }}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n buttons={[\r\n { title: Translations.OK, variant: \"confirmation\", onClick: this.handleOk },\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: this.handleCancel },\r\n ]}\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","import SendIcon from \"@mui/icons-material/Send\";\r\nimport React from \"react\";\r\nimport { AppButton, IAppButtonProps } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\nexport const SendButton = (props: IAppButtonProps) => (\r\n }\r\n {...props}\r\n >\r\n {props.children}\r\n \r\n);\r\n","import * as React from \"react\";\r\nimport * as userService from \"../../../models/services/userService\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { SendButton } from \"source/components/framework/Button/SendButton\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { IUserTokenData } from \"source/models/user/userTokenData\";\r\n\r\nexport interface IUserEditSendEmailDialogProp {\r\n userId: string;\r\n companyId: string;\r\n onCancel: (tokenData: IUserTokenData) => void;\r\n}\r\n\r\nexport const UserEditSendEmailDialog = (props: IUserEditSendEmailDialogProp) => {\r\n const handleSendInvitationLink = async () => {\r\n if (await AppUtils.showConfirmationDialog(Translations.SendEmailInvitationConfirmation, false) !== ConfirmationDialogResult.Yes) return;\r\n const result = await AppUtils.callService(() => userService.sendInvitationEmail(props.userId, props.companyId));\r\n if (!result) return;\r\n props.onCancel(result.tokenData);\r\n };\r\n\r\n const handleSendPasswordChangeLink = async () => {\r\n if (await AppUtils.showConfirmationDialog(Translations.SendPasswordChangeEmailConfirmation, false) !== ConfirmationDialogResult.Yes) return;\r\n const result = await AppUtils.callService(() => userService.sendPasswordChangeEmail(props.userId, props.companyId));\r\n if (!result) return;\r\n props.onCancel(result.tokenData);\r\n };\r\n\r\n return (\r\n \r\n \r\n {Translations.SendEmailInvitation}\r\n \r\n \r\n {Translations.SendPasswordChangeEmail}\r\n \r\n \r\n }\r\n buttons={[\r\n { title: Translations.Close, variant: \"outlined\", onClick: () => props.onCancel(null) }\r\n ]}\r\n onClose={() => props.onCancel(null)}/>\r\n );\r\n};","// UserEditDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Checkbox, FormControlLabel, Grid, MenuItem, Select, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ListExternalSystemLine } from \"source/components/framework/List/ListExternalSystemLine\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { FileAttachment, IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { removeConfirmationWord } from \"ui/Scripts/source/models/consts\";\r\nimport { ConfirmationDialogResult, CultureCode, EnumHelper, InstantMessageUserInvitationAcceptType, RecordEmailNotificationType, UserRemoveType, UserType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { SaveAttachmentBase64 } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/saveAttachmentBase64\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IUserExternalSystem, UserSaveExternalSystem } from \"../../../models/externalSystem/userExternalSystem\";\r\nimport { IUserIntraModule, UserSaveIntraModule } from \"../../../models/intraModule/userIntraModule\";\r\nimport * as userService from \"../../../models/services/userService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { IUserEditItem } from \"../../../models/user/userEditItem\";\r\nimport { UserEditSaveSuccess } from \"../../../models/user/userEditSaveSuccess\";\r\nimport { IUserGroupListItem } from \"ui/Scripts/source/models/userGroup/userGroupListItem\";\r\nimport { ConfirmationButton } from \"../../framework/Button/ConfirmationButton\";\r\nimport { DangerButton } from \"../../framework/Button/DangerButton\";\r\nimport { DatePicker } from \"../../framework/DateTime/DatePicker\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { DialogTabs } from \"../../framework/Dialog/DialogTabs\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { ListHeaderLine } from \"../../framework/List/ListLine\";\r\nimport { UserEditChangePasswordDialog } from \"../UserEditChangePasswordDialog\";\r\nimport { UserEditDialogUserGroupList } from \"../UserEditDialogUserGroupList/UserEditDialogUserGroupList\";\r\nimport { UserEditRemoveSelectTypeDialog } from \"../UserEditRemoveSelectTypeDialog/UserEditRemoveSelectTypeDialog\";\r\nimport { ChangePasswordButton } from \"source/components/framework/Button/ChangePasswordButton\";\r\nimport { ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\nimport { SendButton } from \"source/components/framework/Button/SendButton\";\r\nimport { UserEditSendEmailDialog } from \"../UserEditSendEmailDialog\";\r\nimport { IUserTokenData } from \"source/models/user/userTokenData\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum UserDialogMenuItem {\r\n General = \"1\",\r\n NotificationSettings = \"2\",\r\n UserGroups = \"3\",\r\n ExternalSystems = \"4\",\r\n IntraModules = \"5\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n//UserEditDialog\r\nexport interface IUserEditDialogProp {\r\n sessionState: ISessionState;\r\n companyId: string;\r\n userId: string;\r\n classes?: string;\r\n openedFromRecordUser?: boolean;\r\n recordUserPicture?: string;\r\n recordUserFirstName?: string;\r\n recordUserLastName?: string;\r\n recordUserEmail?: string;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n defaultMenuItem: UserDialogMenuItem;\r\n onOk: (userId: string, userCode: string) => void;\r\n onCancel: (userDataWasModified: boolean) => void;\r\n onRefreshList: () => Promise;\r\n onNewSaved: (userId: string, userCode: string) => void;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onRefreshSessionState: () => void;\r\n}\r\n\r\nexport interface IUserEditDialogState {\r\n activeMenuItem: UserDialogMenuItem;\r\n isLoading: boolean;\r\n userDataWasModified: boolean;\r\n file: IFileAttachment;\r\n user: IUserEditItem;\r\n savedEmail: string;\r\n picture: string;\r\n resetPicture: boolean;\r\n id: string;\r\n code: string;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n comment: string;\r\n endDateStr: string;\r\n userType: number;\r\n portalUseType: number;\r\n emailNotificationType: number;\r\n pushNotificationType: number;\r\n recordEmailNotificationType: number;\r\n recordEmailNotificationShowExpired: boolean;\r\n instantMessageUserInvitationAcceptType: number;\r\n defaultCulture: string;\r\n rowId: string;\r\n newPassword: string;\r\n newPasswordConfirmation: string;\r\n userGroups: IUserGroupListItem[];\r\n externalSystems: IUserExternalSystem[];\r\n intraModules: IUserIntraModule[];\r\n companies: ICompanyMenuItem[];\r\n companyCanUseInstantMessages: boolean;\r\n showChangePasswordDialog: boolean;\r\n minPasswordLength: number;\r\n tokenData: IUserTokenData;\r\n showRemoveTypeDialog: boolean;\r\n showSendEmailDialog: boolean;\r\n}\r\n\r\nexport class UserEditDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IUserEditDialogProp) {\r\n super(props);\r\n this.state = {\r\n activeMenuItem: Base.isNullOrUndefined(props.defaultMenuItem) ? UserDialogMenuItem.General : props.defaultMenuItem,\r\n isLoading: false,\r\n userDataWasModified: false,\r\n file: null,\r\n user: null,\r\n savedEmail: \"\",\r\n picture: \"\",\r\n resetPicture: false,\r\n id: \"\",\r\n code: \"\",\r\n firstName: \"\",\r\n lastName: \"\",\r\n email: \"\",\r\n comment: \"\",\r\n endDateStr: \"\",\r\n userType: UserType.Normal,\r\n portalUseType: 0,\r\n emailNotificationType: 0,\r\n pushNotificationType: 0,\r\n recordEmailNotificationType: RecordEmailNotificationType.NotInUse,\r\n recordEmailNotificationShowExpired: false,\r\n instantMessageUserInvitationAcceptType: 0,\r\n defaultCulture: \"\",\r\n rowId: \"\",\r\n newPassword: \"\",\r\n newPasswordConfirmation: \"\",\r\n userGroups: [],\r\n externalSystems: [],\r\n intraModules: [],\r\n companies: [],\r\n companyCanUseInstantMessages: false,\r\n showChangePasswordDialog: false,\r\n minPasswordLength: 8,\r\n showRemoveTypeDialog: false,\r\n showSendEmailDialog: false,\r\n tokenData: null\r\n };\r\n }\r\n\r\n loadUser = async () => {\r\n const props = this.props;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => userService.getUserEdit(props.companyId, props.userId), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const user = result.user;\r\n const state = {\r\n ...this.state,\r\n user,\r\n savedEmail: user.email,\r\n resetPicture: user.isNew() && props.recordUserPicture ? false : !user.picture,\r\n picture: user.isNew() && props.recordUserPicture ? props.recordUserPicture : user.picture,\r\n file: user.isNew() && props.recordUserPicture ? await FileAttachment.photoToFileAttachment(props.recordUserPicture, 0) : null,\r\n id: user.id,\r\n code: user.code,\r\n firstName: user.isNew() && props.recordUserFirstName ? props.recordUserFirstName : user.firstName,\r\n lastName: user.isNew() && props.recordUserLastName ? props.recordUserLastName : user.lastName,\r\n email: user.isNew() && props.recordUserEmail ? props.recordUserEmail : user.email,\r\n comment: user.comment,\r\n endDateStr: user.endDate ? Base.utcTimeToDateStr(user.endDate) : \"\",\r\n userType: user.userType,\r\n portalUseType: user.portalUseType,\r\n emailNotificationType: user.emailNotificationType,\r\n pushNotificationType: user.pushNotificationType,\r\n recordEmailNotificationType: user.recordEmailNotificationType,\r\n recordEmailNotificationShowExpired: user.recordEmailNotificationShowExpired,\r\n instantMessageUserInvitationAcceptType: user.instantMessageUserInvitationAcceptType,\r\n defaultCulture: user.defaultCulture,\r\n rowId: user.rowId,\r\n userGroups: result.userGroups,\r\n externalSystems: result.externalSystems,\r\n intraModules: result.intraModules,\r\n companies: result.companies,\r\n companyCanUseInstantMessages: result.companyCanUseInstantMessages,\r\n minPasswordLength: result.minPasswordLength,\r\n tokenData: result.tokenData\r\n };\r\n this.setState(state);\r\n const saveData = await this.getSaveDataFromState(props, state);\r\n this.orgStateHash = saveData.hash;\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadUser();\r\n }\r\n\r\n async componentDidUpdate(prevProps: IUserEditDialogProp, prevState: IUserEditDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevDefaultMenuItem = Base.isNullOrUndefined(prevProps.defaultMenuItem) ? UserDialogMenuItem.General : prevProps.defaultMenuItem;\r\n const defaultMenuItem = Base.isNullOrUndefined(props.defaultMenuItem) ? UserDialogMenuItem.General : props.defaultMenuItem;\r\n if (prevProps.companyId === props.companyId && prevProps.userId === props.userId) return;\r\n const cancelResult = await AppUtils.cancel((await this.getSaveDataFromState(props, state)).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb()) return;\r\n if (!props.onRefreshList) {\r\n await props.onRefreshList();\r\n }\r\n }\r\n await this.loadUser();\r\n if (prevDefaultMenuItem !== defaultMenuItem) {\r\n this.setState({\r\n activeMenuItem: defaultMenuItem\r\n });\r\n }\r\n }\r\n\r\n handleToggleActiveMenuItem = (userDialogMenuItem: UserDialogMenuItem) => {\r\n this.setState({ activeMenuItem: userDialogMenuItem });\r\n };\r\n\r\n checkUserCode = async (userCode: string) => {\r\n };\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"xts\") {\r\n this.setState({ code: value });\r\n } else if (name === \"firstName\") {\r\n this.setState({ firstName: value });\r\n } else if (name === \"lastName\") {\r\n this.setState({ lastName: value });\r\n } else if (name === \"email\") {\r\n this.setState({ email: value });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n } else if (name === \"defaultCulture\") {\r\n this.setState({ defaultCulture: value });\r\n } else if (name === \"recordEmailNotificationType\") {\r\n this.setState({ recordEmailNotificationType: value.toInteger() });\r\n } else if (name === \"instantMessageUserInvitationAcceptType\") {\r\n this.setState({ instantMessageUserInvitationAcceptType: value.toInteger() });\r\n } else if (name === \"n_p\") {\r\n this.setState({ newPassword: value });\r\n } else if (name === \"n_pc\") {\r\n this.setState({ newPasswordConfirmation: value });\r\n }\r\n };\r\n\r\n handleBlur = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"xts\") {\r\n AppUtils.callService(() => userService.checkUserCode(this.state.id, this.props.companyId, value), false, true);\r\n }\r\n };\r\n\r\n handleEndDateChange = (value: string) => {\r\n this.setState({ endDateStr: value });\r\n };\r\n\r\n handleEndDateBlur = (value: string) => {\r\n this.setState({ endDateStr: value ? Base.utcTimeToDateStr(value.toUtcDate().getTime()) : \"\" });\r\n };\r\n\r\n recordEmailNotificationShowExpiredChange = (value: boolean) => {\r\n this.setState({ recordEmailNotificationShowExpired: value });\r\n };\r\n\r\n handleToggeExternalSystemInUse = (code: string, value: boolean) => {\r\n if (!code) return;\r\n const externalSystems = this.state.externalSystems.slice(0);\r\n const externalSystem = externalSystems.find(i => i.code === code);\r\n if (!externalSystem) return;\r\n externalSystem.inUse = value;\r\n this.setState({ externalSystems });\r\n };\r\n\r\n handleChangeExternalSystemExternalCode = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const code: string = target.name;\r\n if (!code) return;\r\n const externalSystems = this.state.externalSystems.slice(0);\r\n const externalSystem = externalSystems.find(i => i.code === code);\r\n if (!externalSystem) return;\r\n externalSystem.externalCode = value;\r\n this.setState({ externalSystems });\r\n };\r\n\r\n handleToggeIntraModuleInUse = (code: string, value: boolean) => {\r\n if (!code) return;\r\n const intraModules = this.state.intraModules.slice(0);\r\n const intraModule = intraModules.find(i => i.code === code);\r\n if (!intraModule) return;\r\n intraModule.inUse = value;\r\n this.setState({ intraModules });\r\n };\r\n\r\n handleChangeIntraModuleExternalCode = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const code: string = target.name;\r\n if (!code) return;\r\n const intraModules = this.state.intraModules.slice(0);\r\n const intraModule = intraModules.find(i => i.code === code);\r\n if (!intraModule) return;\r\n intraModule.externalCode = value;\r\n this.setState({ intraModules });\r\n };\r\n\r\n handleSetPicture = async (file: File) => {\r\n if (!file) return;\r\n const attachment = await FileAttachment.fileToFileAttachment(file, 0);\r\n if (!attachment) return;\r\n if (!AppUtils.validateFileAttachment(attachment)) return;\r\n this.setState({ file: attachment, resetPicture: false, picture: attachment.thumbnail });\r\n };\r\n\r\n handleRemovePicture = () => {\r\n this.setState({ file: null, resetPicture: true, picture: \"\" });\r\n };\r\n\r\n handleOnChangePassword = () => {\r\n this.setState({\r\n showChangePasswordDialog: true\r\n });\r\n };\r\n\r\n handleUserChangePasswordDialogOk = (rowId: string) => {\r\n this.setState({\r\n showChangePasswordDialog: false,\r\n rowId\r\n });\r\n this.orgStateHash = SaveDataObj.updateHashValue(this.orgStateHash, \"rowId\", rowId);\r\n };\r\n\r\n handleUserChangePasswordDialogCancel = () => {\r\n this.setState({\r\n showChangePasswordDialog: false\r\n });\r\n };\r\n\r\n // #region Email\r\n handleOnShowEmailDialog = () => {\r\n this.setState({\r\n showSendEmailDialog: true\r\n });\r\n };\r\n\r\n handleCloseSendEmailDialog = (tokenData: IUserTokenData) => {\r\n this.setState({\r\n showSendEmailDialog: false,\r\n tokenData: !tokenData\r\n ? this.state.tokenData\r\n : tokenData\r\n });\r\n };\r\n // #endregion Email\r\n\r\n // #region User Groups\r\n handleUserGroupsRemoved = (ids: string[]) => {\r\n if (!ids || ids.length < 1) return;\r\n this.setState({\r\n userGroups: this.state.userGroups.filter(i => ids.indexOf(i.id) < 0),\r\n userDataWasModified: true\r\n });\r\n };\r\n \r\n handleUserGroupsAdded = (newUserGroups: IUserGroupListItem[]) => {\r\n if (!newUserGroups || newUserGroups.length < 1) return;\r\n this.setState({\r\n userGroups: this.state.userGroups.concat(newUserGroups),\r\n userDataWasModified: true\r\n });\r\n };\r\n // #endregion User Groups\r\n\r\n getSaveDataFromState = async (props: IUserEditDialogProp, state: IUserEditDialogState): Promise => {\r\n const result = new SaveDataObj();\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"id\", state.id);\r\n result.append(\"code\", state.code);\r\n result.append(\"firstName\", state.firstName);\r\n result.append(\"lastName\", state.lastName);\r\n result.append(\"email\", state.email);\r\n result.append(\"endDate\", state.endDateStr ? state.endDateStr.toUtcDate().getTime() : null);\r\n result.append(\"newPassword\", state.newPassword);\r\n result.append(\"newPasswordConfirmation\", state.newPasswordConfirmation);\r\n result.append(\"defaultCulture\", state.defaultCulture);\r\n result.append(\"comment\", state.comment);\r\n result.append(\"portalUseType\", state.portalUseType);\r\n result.append(\"emailNotificationType\", state.emailNotificationType);\r\n result.append(\"pushNotificationType\", state.pushNotificationType);\r\n result.append(\"recordEmailNotificationType\", state.recordEmailNotificationType);\r\n result.append(\"recordEmailNotificationShowExpired\", state.recordEmailNotificationShowExpired);\r\n result.append(\"instantMessageUserInvitationAcceptType\", state.instantMessageUserInvitationAcceptType);\r\n result.append(\"resetImage\", state.resetPicture);\r\n if (state.file) {\r\n result.append(\"attachments\", await SaveAttachmentBase64.fromFileAttachments([state.file]));\r\n }\r\n // externalSystems\r\n result.append(\"externalSystems\", state.externalSystems.reduce((result, externalSystem) => {\r\n if (externalSystem.inUse) {\r\n result.push(new UserSaveExternalSystem(externalSystem));\r\n }\r\n return result;\r\n }, []));\r\n // intraModules\r\n result.append(\"intraModules\", state.intraModules.reduce((result, intraModule) => {\r\n if (intraModule.inUse) {\r\n result.push(new UserSaveIntraModule(intraModule));\r\n }\r\n return result;\r\n }, []));\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n const isNew = state.user.isNew();\r\n return new Promise((resolve) => {\r\n if (!state.code) {\r\n AppUtils.showErrorMessage(Translations.UserCodeMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (isNew && !state.newPassword) {\r\n AppUtils.showErrorMessage(Translations.UserPasswordMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (!state.firstName) {\r\n AppUtils.showErrorMessage(Translations.FirstNameMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (!state.lastName) {\r\n AppUtils.showErrorMessage(Translations.LastNameMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (!Base.isValidEmailAddress(state.email)) {\r\n AppUtils.showErrorMessage(Translations.EmailAddressMustBeValid);\r\n return resolve(false);\r\n }\r\n if (isNew && EnumHelper.isEqual(state.userType, UserType.Normal)) {\r\n if (!Base.isValidUserCode(state.code)) {\r\n AppUtils.showErrorMessage(Translations.UserCodeMustBeValid);\r\n return resolve(false);\r\n }\r\n if (!props.sessionState.isSuperAdmin) {\r\n const errorMessage = Base.isValidPassword(state.newPassword, state.minPasswordLength);\r\n if (errorMessage) {\r\n AppUtils.showErrorMessage(errorMessage);\r\n return resolve(false);\r\n }\r\n }\r\n }\r\n if (isNew && state.newPassword !== state.newPasswordConfirmation) {\r\n AppUtils.showErrorMessage(Translations.PasswordConfirmationDoesNotMatchPassword);\r\n return resolve(false);\r\n }\r\n for (const externalSystem of state.externalSystems) {\r\n if (!externalSystem.inUse) continue;\r\n if (!externalSystem.externalCode) {\r\n AppUtils.showErrorMessage(Translations.ExternalSystemUserCodeMustBeDefined);\r\n return resolve(false);\r\n }\r\n }\r\n for (const intraModule of state.intraModules) {\r\n if (!intraModule.inUse) continue;\r\n if (!intraModule.externalCode) {\r\n AppUtils.showErrorMessage(Translations.ExternalIntraSystemUserTokenMustBeDefined);\r\n return resolve(false);\r\n }\r\n }\r\n //validateDefaultEventHandlers\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n if (state.user.isNew() && state.activeMenuItem === UserDialogMenuItem.General) {\r\n this.setState({\r\n activeMenuItem: UserDialogMenuItem.NotificationSettings\r\n });\r\n return;\r\n }\r\n const saveData = await this.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = await AppUtils.callService(() => userService.saveUserEdit(saveData.obj));\r\n if (!result) return null;\r\n if (result.refreshSessionState) {\r\n props.onRefreshSessionState();\r\n }\r\n this.orgStateHash = saveData.hash;\r\n this.setState({\r\n savedEmail: state.email\r\n });\r\n return result;\r\n };\r\n\r\n handleSave = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const result = await this.saveToDb();\r\n if (!result) return;\r\n if (!state.user.isNew()) {\r\n props.onOk(result.id, state.code);\r\n } else {\r\n props.onNewSaved(result.id, state.code);\r\n }\r\n };\r\n\r\n remove = async (removeType: UserRemoveType) => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.user || state.user.isNew()) return;\r\n // Call server\r\n const result = await AppUtils.callService(() => userService.removeUser(state.user.id, props.companyId, removeType));\r\n if (!result) return;\r\n this.setState({\r\n showRemoveTypeDialog: false\r\n });\r\n props.onCancel(true);\r\n };\r\n\r\n handleUserEditRemoveSelectTypeDialogOk = async (removeType: UserRemoveType) => {\r\n await this.remove(removeType);\r\n };\r\n\r\n handleUserEditRemoveSelectTypeDialogCancel = () => {\r\n this.setState({\r\n showRemoveTypeDialog: false\r\n });\r\n };\r\n\r\n handleRemove = async () => {\r\n const state = this.state;\r\n if (state.user.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveUserParameter, state.user.code), false, removeConfirmationWord) === ConfirmationDialogResult.Yes) {\r\n if (state.user.recordUserId) {\r\n this.setState({\r\n showRemoveTypeDialog: true\r\n });\r\n } else {\r\n await this.remove(UserRemoveType.RemoveUser);\r\n }\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel((await this.getSaveDataFromState(props, state)).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel(state.userDataWasModified);\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut((await this.getSaveDataFromState(props, this.state)).hash, this.orgStateHash, async () => !!await this.saveToDb(), props.onRefreshList);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.user) return null;\r\n const isNew = state.user.isNew();\r\n return (\r\n \r\n }\r\n body={\r\n <>\r\n {state.activeMenuItem === UserDialogMenuItem.General &&\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n { AppUtils.showErrorMessage(message); }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {isNew &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!isNew &&\r\n \r\n \r\n \r\n \r\n \r\n {Translations.ChangePassword}\r\n \r\n \r\n \r\n \r\n {Translations.InvitationPasswordReset}\r\n \r\n {!!state.tokenData &&\r\n \r\n {Base.timeToDateTimeStr(state.tokenData.time, true)}\r\n (\r\n {Base.timeToDateTimeStr(state.tokenData.expireTime, true)}\r\n )\r\n \r\n }\r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {state.activeMenuItem === UserDialogMenuItem.NotificationSettings &&\r\n <>\r\n \r\n \r\n \r\n 0}\r\n onChange={(_e, checked: boolean) => {\r\n this.setState({ emailNotificationType: checked ? 1 : 0 });\r\n }}\r\n />\r\n }\r\n />\r\n 0}\r\n onChange={(_e, checked: boolean) => {\r\n this.setState({ pushNotificationType: checked ? 1 : 0 });\r\n }}\r\n />\r\n }\r\n />\r\n 0}\r\n onChange={(_e, checked: boolean) => {\r\n this.setState({\r\n recordEmailNotificationType: checked ? RecordEmailNotificationType.Expiration090 : RecordEmailNotificationType.NotInUse,\r\n recordEmailNotificationShowExpired: checked ? state.recordEmailNotificationShowExpired : false\r\n });\r\n }}\r\n />\r\n }\r\n />\r\n \r\n {\r\n this.setState({ recordEmailNotificationShowExpired: checked });\r\n }}\r\n />\r\n }\r\n sx={{ marginTop: \".5rem\" }}\r\n />\r\n \r\n \r\n \r\n {state.companyCanUseInstantMessages &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n {state.activeMenuItem === UserDialogMenuItem.UserGroups &&\r\n \r\n }\r\n {state.activeMenuItem === UserDialogMenuItem.ExternalSystems &&\r\n <>\r\n \r\n {state.externalSystems.map((externalSystem) =>\r\n \r\n )}\r\n \r\n }\r\n {state.activeMenuItem === UserDialogMenuItem.IntraModules &&\r\n <>\r\n \r\n {state.intraModules.map((intraModule) =>\r\n \r\n )}\r\n \r\n }\r\n {state.showChangePasswordDialog &&\r\n \r\n }\r\n {state.showRemoveTypeDialog &&\r\n \r\n }\r\n {state.showSendEmailDialog &&\r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n {state.user && !isNew && !props.openedFromRecordUser && (\r\n {Translations.Remove}\r\n )}\r\n {Translations.Close}\r\n {(isNew && (state.activeMenuItem === UserDialogMenuItem.General || state.activeMenuItem === UserDialogMenuItem.NotificationSettings)) ? Translations.Next : Translations.Save}\r\n \r\n \r\n }\r\n onClose={this.handleCancel}/>\r\n );\r\n }\r\n}","// RecordEditAttachmentList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Alert } from \"@mui/material\";\r\nimport downloadjs from \"downloadjs\";\r\nimport * as React from \"react\";\r\nimport { EditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { FileAttachment, IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { SaveAttachmentBase64 } from \"ui/Scripts/source/models/common/saveAttachmentBase64\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as attachmentService from \"../../../models/services/attachmentService\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { AttachmentList } from \"../../attachments/AttachmentList\";\r\n\r\n// RecordEditAttachmentList\r\nexport interface IRecordEditAttachmentListProp {\r\n isDisabled?: boolean;\r\n isDisabledMessage?: string;\r\n isReadOnly?: boolean;\r\n companyId: string;\r\n recordId: string;\r\n subOwnerId?: string;\r\n userCode: string;\r\n category: number;\r\n title?: string;\r\n margin?: string | number;\r\n attachments: IFileAttachment[];\r\n size: \"sm\" | \"md\";\r\n onRemoved: (ids: string[]) => void;\r\n onAdded: (attachments: IFileAttachment[]) => void;\r\n}\r\n\r\nexport class RecordEditAttachmentList extends React.Component {\r\n static defaultProps = {\r\n size: \"sm\",\r\n margin: \"1.5rem 0 0 0\",\r\n };\r\n\r\n handleDownload = async (id: string) => {\r\n if (!id) return;\r\n const props = this.props;\r\n const attachment = props.attachments.find(i => i.id === id);\r\n if (!attachment) return;\r\n if (attachment.file) {\r\n downloadjs(attachment.file, attachment.name);\r\n return;\r\n }\r\n if (attachment.isNew()) return;\r\n const fileName = await AppUtils.callService(() => attachmentService.getAttachment(id));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.AttachmentParameterDownloaded, fileName));\r\n };\r\n\r\n getRemoveSaveData = (props: IRecordEditAttachmentListProp, attachmentIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.recordId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"userCode\", props.userCode);\r\n result.append(\"ids\", attachmentIds);\r\n return result;\r\n };\r\n\r\n handleRemove = async (id: string) => {\r\n if (!id) return;\r\n const props = this.props;\r\n const saveData = this.getRemoveSaveData(this.props, [id]);\r\n const result = AppUtils.callService(() => recordService.recordEditRemoveAttachments(saveData.obj));\r\n if (!result) return;\r\n props.onRemoved([id]);\r\n };\r\n\r\n getAddSaveData = async (props: IRecordEditAttachmentListProp, attachments: IFileAttachment[]): Promise => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.recordId);\r\n result.append(\"subOwnerId\", props.subOwnerId ?? \"\");\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"userCode\", props.userCode);\r\n result.append(\"category\", props.category.toString(10));\r\n result.append(\"attachments\", await SaveAttachmentBase64.fromFileAttachments(attachments.filter(i => !!i.file)));\r\n return result;\r\n };\r\n \r\n handleAdd = async (fileList: FileList) => {\r\n const props = this.props;\r\n const attachments = await FileAttachment.addFileListToFileAttachments([], fileList, props.category, props.subOwnerId);\r\n if (attachments.length < 1) return;\r\n const saveData = await this.getAddSaveData(this.props, attachments);\r\n const result = await AppUtils.callService(() => recordService.recordEditAddAttachments(saveData.obj));\r\n if (!result) return;\r\n EditItem.setItemIdsFromIds(attachments, result.ids);\r\n props.onAdded(attachments);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n return (\r\n <>\r\n {!!props.isDisabled &&\r\n {props.isDisabledMessage}\r\n }\r\n {!props.isDisabled &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","// RecordEditAttachmentSubList - MODULE\r\n// ***********************************************************************************************************************\r\nimport downloadjs from \"downloadjs\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { IIdGetTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { EditItem } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/editItem\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as attachmentService from \"../../../models/services/attachmentService\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListIconButtonsItem } from \"../../framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { Box, Typography } from \"@mui/material\";\r\nimport { AttachmentIcon } from \"source/components/attachments/AttachmentIcon\";\r\n\r\n// RecordEditAttachmentSubList\r\ninterface IAttachmentLine extends IFileAttachment {\r\n relation: string;\r\n}\r\n\r\nexport interface IRecordEditAttachmentSubListProp {\r\n isReadOnly?: boolean;\r\n classes?: string;\r\n companyId: string;\r\n recordId: string;\r\n userCode: string;\r\n title?: string;\r\n attachments: IFileAttachment[];\r\n records: IIdGetTitle[];\r\n onRemoved: (ids: string[]) => void;\r\n onAdded: (attachments: IFileAttachment[]) => void;\r\n}\r\n\r\ninterface IRecordEditAttachmentSubListState {\r\n attachments: IAttachmentLine[];\r\n selectedId: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n}\r\n\r\nexport class RecordEditAttachmentSubList extends React.Component {\r\n static sortAttachmentLines(items: IAttachmentLine[], column: string, asc: boolean): IAttachmentLine[] {\r\n if (!items && items.length < 2) return items;\r\n if (column === \"date\") {\r\n return items.sort((a: IAttachmentLine, b: IAttachmentLine) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.numCompare(a.modifyDate, b.modifyDate)); });\r\n } else if (column === \"relation\") {\r\n return items.sort((a: IAttachmentLine, b: IAttachmentLine) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.relation, b.relation)); });\r\n } else {\r\n return items.sort((a: IAttachmentLine, b: IAttachmentLine) => { return (!a || !b) ? 0 : ((asc ? 1 : -1) * Base.strCompare(a.name, b.name)); });\r\n }\r\n }\r\n\r\n getFilteredList = (column: string, asc: boolean): IAttachmentLine[] => {\r\n const props = this.props;\r\n const result: IAttachmentLine[] = (props.attachments ? props.attachments.slice(0) : [])\r\n .map(i => {\r\n const record = props.records.find(j => j.id === i.subOwnerId);\r\n return {\r\n ...i,\r\n relation: record ? record.getTitle() : \"\"\r\n };\r\n });\r\n RecordEditAttachmentSubList.sortAttachmentLines(result, column, asc);\r\n return result;\r\n };\r\n\r\n constructor(props: IRecordEditAttachmentSubListProp) {\r\n super(props);\r\n this.state = {\r\n attachments: this.getFilteredList(\"name\", true),\r\n selectedId: null,\r\n sortColumn: \"name\",\r\n sortOrderIsAsc: true\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps: IRecordEditAttachmentSubListProp, prevState: IRecordEditAttachmentSubListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (EditItem.getHash(prevProps.attachments) === EditItem.getHash(props.attachments)) return;\r\n this.filteredList(state.sortColumn, state.sortOrderIsAsc);\r\n };\r\n\r\n handleSetSelectedIds = (id: string) => {\r\n this.setState({\r\n selectedId: id\r\n });\r\n };\r\n\r\n filteredList = (column: string, asc: boolean) => {\r\n this.setState({\r\n sortColumn: column,\r\n sortOrderIsAsc: asc,\r\n attachments: this.getFilteredList(column, asc)\r\n });\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n this.filteredList(sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n handleDownload = async () => {\r\n const selectedId = this.state.selectedId;\r\n if (!selectedId) return;\r\n const props = this.props;\r\n const attachment = props.attachments.find(i => i.id === selectedId);\r\n if (!attachment) return;\r\n if (attachment.file) {\r\n downloadjs(attachment.file, attachment.name);\r\n return;\r\n }\r\n if (attachment.isNew()) return;\r\n const fileName = await AppUtils.callService(() => attachmentService.getAttachment(selectedId));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.AttachmentParameterDownloaded, fileName));\r\n };\r\n\r\n getRemoveSaveData = (props: IRecordEditAttachmentSubListProp, attachmentIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.recordId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"userCode\", props.userCode);\r\n result.append(\"ids\", attachmentIds);\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const selectedId = this.state.selectedId;\r\n if (!selectedId) return;\r\n const attachment = this.state.attachments.find(i => i.id === selectedId);\r\n if (!attachment) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveAttachmentParameter, attachment.name + \" / \" + Base.timeToDateStr(attachment.modifyDate) + \" / \" + attachment.relation), false) === ConfirmationDialogResult.Yes) {\r\n const props = this.props;\r\n const saveData = this.getRemoveSaveData(this.props, [selectedId]);\r\n const result = AppUtils.callService(() => recordService.recordEditRemoveAttachments(saveData.obj));\r\n if (!result) return;\r\n props.onRemoved([selectedId]);\r\n }\r\n };\r\n\r\n render() {\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n }\r\n rightItems={\r\n \r\n }\r\n />\r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 6,\r\n content:\r\n \r\n \r\n {line.name}\r\n \r\n },\r\n { size: 2, content: Base.timeToDateStr(line.modifyDate) },\r\n { size: 4, content: line.relation }\r\n ],\r\n id: line.id\r\n };\r\n })\r\n }\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n />\r\n \r\n );\r\n }\r\n}\r\n","import {\r\n MenuItem,\r\n Autocomplete as MuiAutocomplete,\r\n TextField,\r\n createFilterOptions,\r\n} from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { IIdTitle, IdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\n\r\ninterface AutocompleteProps {\r\n value: string;\r\n maxLength: number;\r\n options: IIdTitle[];\r\n onChange: (value: string) => void;\r\n}\r\n\r\nconst filter = createFilterOptions();\r\n\r\nexport const Autocomplete = ({\r\n value = \"\",\r\n options,\r\n maxLength,\r\n onChange,\r\n}: AutocompleteProps) => (\r\n {\r\n if (typeof newValue === \"string\") {\r\n onChange(value);\r\n } else {\r\n onChange(newValue?.id);\r\n }\r\n }}\r\n filterOptions={(options, params) => {\r\n const filtered = filter(options, params);\r\n\r\n const { inputValue } = params;\r\n const isExisting = options.some((option) => inputValue === option.title);\r\n if (inputValue !== \"\" && !isExisting) {\r\n filtered.push(\r\n new IdTitle({\r\n id: inputValue,\r\n title: `${Translations.Add} \"${inputValue}\"`,\r\n } as IIdTitle)\r\n );\r\n }\r\n\r\n return filtered;\r\n }}\r\n selectOnFocus\r\n clearOnBlur\r\n handleHomeEndKeys\r\n options={options}\r\n getOptionLabel={(option) => {\r\n if (typeof option === \"string\") {\r\n return option;\r\n }\r\n if (option.id) {\r\n return option.id;\r\n }\r\n return option.title;\r\n }}\r\n renderOption={(props, option) => (\r\n {option.title}\r\n )}\r\n freeSolo\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n);\r\n","// RecordEditBasicInformation - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Checkbox, FormControlLabel, Grid, MenuItem, Select, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IIdTitle, IdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { EnumHelper, RecordEmployeeType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { IRecordEditItem } from \"../../../models/record/recordEditItem\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport { DatePicker } from \"../../framework/DateTime/DatePicker\";\r\nimport { Autocomplete } from \"../../framework/Form/Autocomplete\";\r\nimport { TextFieldWithButtonGroup } from \"../../framework/Form/TextFieldWithButtonGroup\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { ModifyUserInfo } from \"../../framework/User/ModifyUserInfo\";\r\n\r\n//RecordEditBasicInformation\r\nexport interface IRecordEditBasicInformationProp {\r\n onDialog: boolean;\r\n canReadUsers: boolean;\r\n canEditUsers: boolean;\r\n canClearUnit: boolean;\r\n canArchiveAndRemove: boolean;\r\n resetPicture: boolean;\r\n record: IRecordEditItem;\r\n workShiftNames: string[];\r\n // General\r\n unitCode: string;\r\n userCode: string;\r\n firstName: string;\r\n middleName: string;\r\n lastName: string;\r\n picture: string;\r\n birthDate: string;\r\n postalAddress: string;\r\n postalCode: string;\r\n city: string;\r\n phone: string;\r\n email: string;\r\n employeeType: RecordEmployeeType;\r\n ibanNumber: string;\r\n bicCode: string;\r\n taxNumber: string;\r\n driversLicenseType: string;\r\n workShiftName: string;\r\n comment: string;\r\n activeState: number;\r\n personalIdentityCode: string;\r\n identifier: string;\r\n onChange: (name: string, value: string) => void;\r\n onBlur: (name: string, value: string) => void;\r\n onChangePicture: (file: File) => void;\r\n onRemovePicture: () => void;\r\n onAddUser: () => void;\r\n onEditUser: () => void;\r\n onSelectUser: () => void;\r\n onRemoveUser: () => void;\r\n onSelectUnit: () => void;\r\n onRemoveUnit: () => void;\r\n}\r\n\r\nexport interface IRecordEditBasicInformationState {\r\n workShiftNames: IIdTitle[];\r\n}\r\n\r\nexport class RecordEditBasicInformation extends React.Component {\r\n getStateFromProps = (props: IRecordEditBasicInformationProp): IRecordEditBasicInformationState => {\r\n const workShiftNames = props.workShiftNames.slice(0);\r\n workShiftNames.sort(Base.strCompare);\r\n return {\r\n workShiftNames: workShiftNames.map(i => IdTitle.createIdTitleSimple(i))\r\n };\r\n };\r\n \r\n constructor(props: IRecordEditBasicInformationProp) {\r\n super(props);\r\n this.state = this.getStateFromProps(props);\r\n }\r\n\r\n async componentDidUpdate(prevProps: IRecordEditBasicInformationProp, prevState: IRecordEditBasicInformationState) {\r\n const props = this.props;\r\n if (Base.equalStrArrays(prevProps.workShiftNames, props.workShiftNames)) return;\r\n const state = this.getStateFromProps(props);\r\n this.setState(state);\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n this.props.onChange(target.name !== \"xts\" ? target.name : \"code\", target.value);\r\n };\r\n\r\n handleBlur = (event) => {\r\n const target = event.target;\r\n this.props.onBlur(target.name !== \"xts\" ? target.name : \"code\", target.value);\r\n };\r\n \r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const record = props.record;\r\n if (!record) return null;\r\n const isNew = record.isNew();\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n { store.customStore.dispatch(storeActions.showErrorMessage(message)); }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n props.onChange(\"birthDate\", value)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.onDialog &&\r\n \r\n \r\n \r\n props.onChange(\"activeState\", checked ? \"0\" : \"1\")}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n props.onChange(\"workShiftName\", value)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {(!isNew && !props.onDialog) &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n );\r\n }\r\n}","import AttachmentOutlined from \"@mui/icons-material/AttachmentOutlined\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ListStateIcon } from \"../ListStateIcon\";\r\n\r\ninterface IListStateIconAttachmentProps {\r\n hasAttachments: boolean\r\n}\r\n\r\nexport const ListStateIconAttachment = (props: IListStateIconAttachmentProps) => {\r\n if (!props.hasAttachments) return null;\r\n return (\r\n \r\n );\r\n};\r\n","/* global JSX */\r\n// RecordEditListFirstCol - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { ListLinkValue } from \"../../framework/List/ListLinkValue\";\r\nimport { ListStateIconAttachment } from \"../../framework/List/ListStateIconAttachment\";\r\n\r\n// RecordEditListFirstCol\r\nexport interface IRecordEditListFirstColProp {\r\n id: string;\r\n code: string;\r\n attachments: IFileAttachment[];\r\n onClick: (id: string) => void;\r\n suffixElement?: JSX.Element;\r\n paddingLeft?: string | number;\r\n}\r\n\r\nexport class RecordEditListFirstCol extends React.Component {\r\n hasAttachment = (id: string): boolean => {\r\n return !!this.props.attachments.find(i => i.subOwnerId === id);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n return (\r\n \r\n props.onClick(props.id)}>{props.code}\r\n \r\n {props.suffixElement}\r\n {this.hasAttachment(props.id) &&\r\n \r\n }\r\n \r\n \r\n );\r\n }\r\n}","// RecordUserFurtherEducationDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Checkbox, FormControlLabel, Grid, MenuItem, Select, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { TreeCheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/TreeCheckboxDropdown\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { EditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { IIdTitleNode, IdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { ConfirmationDialogResult, EnumHelper, RecordEducationScopeUnit, RecordUserAttachmentCategory } from \"ui/Scripts/source/models/enums\";\r\nimport { IRecordFurtherEducationGroupNode, RecordFurtherEducationGroupNode } from \"ui/Scripts/source/models/recordFurtherEducationGroup/recordFurtherEducationGroupNode\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IRecordEditItemFurtherEducation, RecordEditItemFurtherEducation, RecordEditItemFurtherEducationSave } from \"../../../models/record/recordEditItemFurtherEducation\";\r\nimport { IRecordEditItemQualification } from \"../../../models/record/recordEditItemQualification\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { StoreUtils } from \"../../../models/store/storeUtils\";\r\nimport { DatePicker } from \"../../framework/DateTime/DatePicker\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogButtons } from \"../../framework/Dialog/DialogButtons\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { ModifyUserInfo } from \"../../framework/User/ModifyUserInfo\";\r\nimport { RecordEditAttachmentList } from \"../RecordEditAttachmentList/RecordEditAttachmentList\";\r\nimport { IRecordFurtherEducationNode } from \"ui/Scripts/source/models/recordFurtherEducation/recordFurtherEducationNode\";\r\n\r\n//RecordUserFurtherEducationDialog\r\nexport interface IRecordUserFurtherEducationDialogProp {\r\n classes?: string;\r\n companyId: string;\r\n recordId: string;\r\n userCode: string;\r\n furtherEducationGroups: IRecordFurtherEducationGroupNode[];\r\n recordQualifications: IRecordEditItemQualification[];\r\n item: IRecordEditItemFurtherEducation;\r\n attachments: IFileAttachment[];\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onCustomSave?: (saveItem: RecordEditItemFurtherEducationSave) => Promise;\r\n onOk: (item: IRecordEditItemFurtherEducation, closeDialog: boolean) => void;\r\n onCancel: () => void;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onAttachmentsRemoved: (ids: string[]) => void;\r\n onAttachmentsAdded: (attachments: IFileAttachment[]) => void;\r\n}\r\n\r\nexport interface IRecordUserFurtherEducationDialogState {\r\n furtherEducations: IIdTitleNode[];\r\n furtherEducationId: string;\r\n scope: string;\r\n scopeReadOnly: boolean;\r\n scopeUnit: RecordEducationScopeUnit;\r\n scopeUnits: RecordEducationScopeUnit[];\r\n\r\n startDate: string;\r\n endDate: string;\r\n validityEndDate: string;\r\n validity: number;\r\n comment: string;\r\n activeState: number;\r\n attachments: IFileAttachment[];\r\n}\r\n\r\nexport class RecordUserFurtherEducationDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n \r\n getValidScopeUnits = (furtherEducation: IRecordFurtherEducationNode): RecordEducationScopeUnit[] => {\r\n let result: RecordEducationScopeUnit[] = [\r\n RecordEducationScopeUnit.Hour,\r\n RecordEducationScopeUnit.Day,\r\n RecordEducationScopeUnit.CourseCredit,\r\n RecordEducationScopeUnit.StudyWeek,\r\n RecordEducationScopeUnit.Course\r\n ];\r\n if (furtherEducation) {\r\n if (furtherEducation.scopeUnit !== 99) {\r\n result = [furtherEducation.scopeUnit as RecordEducationScopeUnit];\r\n }\r\n }\r\n return result;\r\n };\r\n \r\n private static setFurtherEducationTitle = (furtherEducations: IIdTitleNode[], qualifications: IRecordEditItemQualification[]) => {\r\n for (const furtherEducation of furtherEducations) {\r\n const isQualification = qualifications.findIndex(i => i.furtherEducationId === furtherEducation.id) > -1;\r\n if (isQualification) {\r\n furtherEducation.title = furtherEducation.title + \" (\" + Translations.Qualification + \")\";\r\n }\r\n RecordUserFurtherEducationDialog.setFurtherEducationTitle(furtherEducation.children, qualifications);\r\n }\r\n };\r\n\r\n private static getFurtherEducations = (furtherEducationGroups: IRecordFurtherEducationGroupNode[], qualifications: IRecordEditItemQualification[]): IIdTitleNode[] => {\r\n if (!furtherEducationGroups || furtherEducationGroups.length < 1) return [];\r\n const furtherEducations = RecordFurtherEducationGroupNode.getFurtherEducations(furtherEducationGroups);\r\n if (!qualifications || qualifications.length < 1) return furtherEducations;\r\n const result = furtherEducations.map(i => new IdTitleNode(i));\r\n RecordUserFurtherEducationDialog.setFurtherEducationTitle(result, qualifications);\r\n return result;\r\n };\r\n\r\n getStateFromProps = (props: IRecordUserFurtherEducationDialogProp): IRecordUserFurtherEducationDialogState => {\r\n const item = props.item;\r\n const furtherEducation = RecordFurtherEducationGroupNode.getRecordFurtherEducationById(this.props.furtherEducationGroups, item.furtherEducationId);\r\n const scopeUnits = this.getValidScopeUnits(furtherEducation);\r\n if (scopeUnits.length < 2) {\r\n if (scopeUnits[0] !== item.scopeUnit) {\r\n scopeUnits.push(item.scopeUnit);\r\n }\r\n }\r\n const startDate = Base.utcTimeToDateStr(item.startDate);\r\n const scope = furtherEducation?.scope ?? 0;\r\n const scopeReadOnly = scope > 0;\r\n const validity = furtherEducation?.validity ?? 0;\r\n const isNew = item.isNew();\r\n return {\r\n furtherEducations: RecordUserFurtherEducationDialog.getFurtherEducations(props.furtherEducationGroups, props.recordQualifications),\r\n furtherEducationId: item.furtherEducationId,\r\n scope: (isNew && scopeReadOnly\r\n ? scope\r\n : item.scope).toString(10),\r\n scopeReadOnly,\r\n scopeUnit: item.scopeUnit,\r\n scopeUnits,\r\n startDate,\r\n endDate: Base.utcTimeToDateStr(item.endDate),\r\n validityEndDate: Base.utcTimeToDateStr(isNew && item.startDate && validity > 0\r\n ? startDate.toUtcDate().addYears(validity).getTime()\r\n : item.validityEndDate),\r\n validity,\r\n comment: item.comment,\r\n activeState: item.activeState,\r\n attachments: props.attachments.filter(i => i.subOwnerId === item.id)\r\n };\r\n };\r\n\r\n constructor(props: IRecordUserFurtherEducationDialogProp) {\r\n super(props);\r\n this.state = this.getStateFromProps(props);\r\n this.orgStateHash = this.getHashFromState(props, this.state);\r\n }\r\n\r\n async componentDidUpdate(prevProps: IRecordUserFurtherEducationDialogProp, prevState: IRecordUserFurtherEducationDialogState) {\r\n const props = this.props;\r\n if (prevProps.item.getHash() === props.item.getHash() && EditItem.getHash(prevProps.attachments) === EditItem.getHash(props.attachments)) return;\r\n const state = this.getStateFromProps(props);\r\n this.setState(state);\r\n this.orgStateHash = this.getHashFromState(props, state);\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"scope\") {\r\n this.setState({ scope: value });\r\n } else if (name === \"scopeUnit\") {\r\n this.setState({ scopeUnit: value.toInteger() });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n }\r\n };\r\n\r\n handleChangeFurtherEducationId = (furtherEducationIds: string[]) => {\r\n if (furtherEducationIds.length < 1) return;\r\n const furtherEducationId = furtherEducationIds[0];\r\n const furtherEducation = RecordFurtherEducationGroupNode.getRecordFurtherEducationById(this.props.furtherEducationGroups, furtherEducationId);\r\n if (!furtherEducation) return;\r\n const state = this.state;\r\n const scopeUnits = this.getValidScopeUnits(furtherEducation);\r\n const scopeReadOnly = furtherEducation.scope > 0;\r\n const validity = furtherEducation.validity;\r\n this.setState({\r\n furtherEducationId,\r\n scopeUnits,\r\n scopeUnit: scopeUnits.length < 2\r\n ? scopeUnits[0]\r\n : state.scopeUnit,\r\n scope: scopeReadOnly\r\n ? furtherEducation.scope.toString(10)\r\n : state.scope,\r\n scopeReadOnly,\r\n validityEndDate: validity > 0 && state.startDate\r\n ? Base.utcTimeToDateStr(state.startDate.toUtcDate().addYears(furtherEducation.validity).getTime())\r\n : state.validityEndDate,\r\n validity\r\n });\r\n };\r\n\r\n handleBlur = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"scope\") {\r\n this.setState({ scope: value.toInteger().toString(10) });\r\n }\r\n };\r\n\r\n dateChange = (startDateStr: string, endDateStr: string) => {\r\n let newEndDateStr = endDateStr;\r\n if (startDateStr && endDateStr) {\r\n const startDate = startDateStr.toUtcDate();\r\n const endDate = endDateStr.toUtcDate();\r\n if (endDate < startDate) {\r\n newEndDateStr = startDateStr;\r\n };\r\n }\r\n const state = this.state;\r\n this.setState({\r\n startDate: startDateStr,\r\n endDate: newEndDateStr,\r\n validityEndDate: state.validity > 0 && startDateStr\r\n ? Base.utcTimeToDateStr(startDateStr.toUtcDate().addYears(state.validity).getTime())\r\n : state.validityEndDate\r\n });\r\n };\r\n\r\n handleStartDateChange = (value: string) => {\r\n this.dateChange(value, this.state.endDate);\r\n };\r\n\r\n handleEndDateChange = (value: string) => {\r\n this.dateChange(this.state.startDate, value);\r\n };\r\n\r\n handleValidityEndDateChange = (value: string) => {\r\n this.setState({ validityEndDate: value });\r\n };\r\n\r\n handleValidityEndDateBlur = (value: string) => {\r\n this.setState({\r\n validityEndDate: value ? Base.utcTimeToDateStr(value.toUtcDate().getTime()) : \"\"\r\n });\r\n };\r\n\r\n getHashFromState = (props: IRecordUserFurtherEducationDialogProp, state: IRecordUserFurtherEducationDialogState): string => {\r\n const result = new SaveDataObj();\r\n result.append(\"furtherEducationId\", state.furtherEducationId);\r\n result.append(\"scope\", state.scope);\r\n result.append(\"scopeUnit\", state.scopeUnit);\r\n result.append(\"startDate\", state.startDate);\r\n result.append(\"endDate\", !state.endDate ? null : state.endDate);\r\n result.append(\"validityEndDate\", !state.validityEndDate ? null : state.validityEndDate);\r\n result.append(\"comment\", state.comment);\r\n result.append(\"activeState\", state.activeState);\r\n return result.hash;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (state.endDate) {\r\n const endDate = state.endDate.toUtcDate().getTime();\r\n const startDate = state.startDate.toUtcDate().getTime();\r\n if (endDate < startDate) {\r\n AppUtils.showErrorMessage(Translations.TrainingEndDateCannotPrecedeTrainingStartDate);\r\n return resolve(false);\r\n }\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n getSaveData = (props: IRecordUserFurtherEducationDialogProp, recordFurtherEducation: RecordEditItemFurtherEducationSave): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.recordId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"userCode\", props.userCode);\r\n result.append(\"furtherEducation\", recordFurtherEducation);\r\n return result;\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n // Set data\r\n const item = new RecordEditItemFurtherEducation(this.props.item);\r\n item.furtherEducationId = state.furtherEducationId;\r\n item.scope = state.scope.toInteger();\r\n item.scopeUnit = state.scopeUnit;\r\n item.startDate = state.startDate.toUtcDate().getTime();\r\n item.endDate = state.endDate ? state.endDate.toUtcDate().getTime() : null;\r\n item.validityEndDate = state.validityEndDate ? state.validityEndDate.toUtcDate().getTime() : null;\r\n item.comment = state.comment;\r\n item.activeState = state.activeState;\r\n if (props.onCustomSave) {\r\n const customResult = await props.onCustomSave(new RecordEditItemFurtherEducationSave(item));\r\n if (!customResult) return null;\r\n return item;\r\n }\r\n const saveData = this.getSaveData(this.props, new RecordEditItemFurtherEducationSave(item));\r\n // Call server\r\n const result = await AppUtils.callService(() => recordService.recordEditSaveFurtherEducation(saveData.obj));\r\n if (!result) return null;\r\n item.id = result.id;\r\n item.rowId = result.rowId;\r\n item.modifyUser = StoreUtils.getNowModifyUser();\r\n return item;\r\n };\r\n\r\n saveDialog = async (close: boolean) => {\r\n const result = await this.saveToDb();\r\n if (result) {\r\n this.props.onOk(result, close);\r\n }\r\n return result;\r\n };\r\n\r\n handleSave = async (): Promise => {\r\n return await this.saveDialog(true);\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getHashFromState(props, state), this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut(this.getHashFromState(props, this.state), this.orgStateHash, async () => !!await this.saveDialog(false), null);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const isNew = props.item.isNew();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ activeState: checked ? 0 : 1 })}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!isNew &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {!!props.onAttachmentsAdded &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}/>\r\n );\r\n }\r\n}","// RecordEditFurtherEducationList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Alert, Box, Checkbox, FormControlLabel, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { EditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { IRecordFurtherEducationGroupNode, RecordFurtherEducationGroupNode } from \"ui/Scripts/source/models/recordFurtherEducationGroup/recordFurtherEducationGroupNode\";\r\nimport { RecordListItemUserQualification } from \"ui/Scripts/source/models/recordUserQualification/recordListItemUserQualification\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IRecordEditItemFurtherEducation, RecordEditItemFurtherEducation } from \"../../../models/record/recordEditItemFurtherEducation\";\r\nimport { IRecordEditItemQualification } from \"../../../models/record/recordEditItemQualification\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListIconButtonsItem } from \"../../framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { IListValueLineData } from \"../../framework/List/ListLine\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { ListStateIconCertificate } from \"../../framework/List/ListStateIconCertificate\";\r\nimport { RecordEditListFirstCol } from \"../RecordEditListFirstCol\";\r\nimport { RecordUserFurtherEducationDialog } from \"../RecordUserFurtherEducationDialog\";\r\n\r\ninterface IListFurtherEducationGroup {\r\n id: string;\r\n code: string;\r\n qualification: IRecordEditItemQualification;\r\n educations: IRecordEditItemFurtherEducation[];\r\n}\r\n\r\n// RecordEditFurtherEducationList\r\nexport interface IRecordEditFurtherEducationListProp {\r\n isReadOnly: boolean;\r\n companyId: string;\r\n recordId: string;\r\n userCode: string;\r\n recordQualifications: IRecordEditItemQualification[];\r\n recordFurtherEducations: IRecordEditItemFurtherEducation[];\r\n furtherEducationGroups: IRecordFurtherEducationGroupNode[];\r\n attachments: IFileAttachment[];\r\n onRemoved: (ids: string[]) => void;\r\n onSaved: (recordFurtherEducation: IRecordEditItemFurtherEducation) => void;\r\n onAttachmentsRemoved: (ids: string[]) => void;\r\n onAttachmentsAdded: (attachments: IFileAttachment[]) => void;\r\n}\r\n\r\ninterface IRecordEditFurtherEducationListState {\r\n // List\r\n isLoading: boolean;\r\n furtherEducationGroups: IListFurtherEducationGroup[];\r\n items: IRecordEditItemFurtherEducation[];\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n selectedId: string;\r\n checkedIds: string[];\r\n showArchived: boolean;\r\n selectedItemHasPrevious: boolean;\r\n selectedItemHasNext: boolean;\r\n\r\n // Dialog\r\n item: IRecordEditItemFurtherEducation;\r\n showEditDialog: boolean;\r\n}\r\n\r\nexport class RecordEditFurtherEducationList extends React.Component {\r\n getFilteredList = (filter: string, showArchived: boolean, column: string, asc: boolean): IRecordEditItemFurtherEducation[] => {\r\n const props = this.props;\r\n let result = props.recordFurtherEducations ? props.recordFurtherEducations.slice(0) : [];\r\n RecordEditItemFurtherEducation.setFurtherEducationCodes(result, props.furtherEducationGroups);\r\n result = result.filter(i => showArchived ? true : i.activeState > 0.5);\r\n if (filter) {\r\n const lowFilter = filter.toLowerCase();\r\n result = result.filter(i => i.furtherEducationCode.toLowerCase().indexOf(lowFilter) > -1 || i.comment.toLowerCase().indexOf(lowFilter) > -1);\r\n }\r\n RecordEditItemFurtherEducation.sortRecordEditItemFurtherEducations(result, column, asc);\r\n return result;\r\n };\r\n\r\n getListFurtherEducationGroups = (recordFurtherEducations: IRecordEditItemFurtherEducation[]): IListFurtherEducationGroup[] => {\r\n const props = this.props;\r\n const result: IListFurtherEducationGroup[] = [];\r\n for (const furtherEducationGroup of props.furtherEducationGroups) {\r\n for (let i = 0; i < recordFurtherEducations.length; i++) {\r\n const item = recordFurtherEducations[i];\r\n if (furtherEducationGroup.children.find(i => i.id === item.furtherEducationId)) {\r\n let resultGroup = result.find(j => j.id === furtherEducationGroup.id);\r\n if (!resultGroup) {\r\n resultGroup = {\r\n id: furtherEducationGroup.id,\r\n code: furtherEducationGroup.code,\r\n qualification: null,\r\n educations: []\r\n };\r\n if (furtherEducationGroup.requiredQualificationCount > 0) {\r\n resultGroup.qualification = props.recordQualifications.find(i => i.furtherEducationGroupId === resultGroup.id);\r\n }\r\n result.push(resultGroup);\r\n }\r\n resultGroup.educations.unshift(item);\r\n }\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n getFurtherEducationsSortedByGroups = (furtherEducationGroups: IListFurtherEducationGroup[]): IRecordEditItemFurtherEducation[] => {\r\n let result: IRecordEditItemFurtherEducation[] = [];\r\n for (const furtherEducationGroup of furtherEducationGroups) {\r\n result = result.concat(furtherEducationGroup.educations);\r\n }\r\n return result;\r\n };\r\n\r\n constructor(props: IRecordEditFurtherEducationListProp) {\r\n super(props);\r\n const recordFurtherEducations = this.getFilteredList(\"\", false, \"startDate\", false);\r\n const furtherEducationGroups = this.getListFurtherEducationGroups(recordFurtherEducations);\r\n this.state = {\r\n isLoading: false,\r\n items: this.getFurtherEducationsSortedByGroups(furtherEducationGroups),\r\n furtherEducationGroups,\r\n filter: \"\",\r\n sortColumn: \"startDate\",\r\n sortOrderIsAsc: false,\r\n selectedId: null,\r\n checkedIds: [],\r\n showArchived: false,\r\n selectedItemHasPrevious: false,\r\n selectedItemHasNext: false,\r\n item: null,\r\n showEditDialog: false,\r\n };\r\n }\r\n\r\n filteredList = (filter: string, showArchived: boolean, column: string, asc: boolean) => {\r\n const recordFurtherEducations = this.getFilteredList(filter, showArchived, column, asc);\r\n const furtherEducationGroups = this.getListFurtherEducationGroups(recordFurtherEducations);\r\n this.setState({\r\n filter,\r\n showArchived,\r\n sortColumn: column,\r\n sortOrderIsAsc: asc,\r\n items: this.getFurtherEducationsSortedByGroups(furtherEducationGroups),\r\n furtherEducationGroups,\r\n });\r\n };\r\n\r\n componentDidUpdate(prevProps: IRecordEditFurtherEducationListProp, prevState: IRecordEditFurtherEducationListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (EditItem.getHash(prevProps.recordFurtherEducations) === EditItem.getHash(props.recordFurtherEducations)) return;\r\n this.filteredList(state.filter, state.showArchived, state.sortColumn, state.sortOrderIsAsc);\r\n };\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.filteredList(filter, state.showArchived, state.sortColumn, state.sortOrderIsAsc);\r\n };\r\n\r\n changeShowArchived = (showArchived: boolean) => {\r\n const state = this.state;\r\n this.filteredList(state.filter, showArchived, state.sortColumn, state.sortOrderIsAsc);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.filteredList(state.filter, state.showArchived, sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n getRemoveSaveData = (props: IRecordEditFurtherEducationListProp, recordFurtherEducationIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.recordId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"userCode\", props.userCode);\r\n result.append(\"ids\", recordFurtherEducationIds);\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const obj = this;\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n if (selectedIds.length < 1) return;\r\n const furtherEducation = state.items.find(i => i.id === selectedIds[0]);\r\n if (!furtherEducation) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveRecordFurtherEducationParameter, furtherEducation.furtherEducationCode), false) === ConfirmationDialogResult.Yes) {\r\n const saveData = this.getRemoveSaveData(this.props, selectedIds);\r\n // Call server\r\n const result = await AppUtils.callService(() => recordService.recordEditRemoveFurtherEducations(saveData.obj));\r\n if (!result) return;\r\n obj.props.onRemoved(selectedIds);\r\n }\r\n };\r\n\r\n static createNewRecordEditItemFurtherEducation = (furtherEducationGroups: IRecordFurtherEducationGroupNode[]): RecordEditItemFurtherEducation => {\r\n const furtherEducation = RecordFurtherEducationGroupNode.getFirstRecordFurtherEducationById(furtherEducationGroups);\r\n const result = new RecordEditItemFurtherEducation();\r\n result.id = Base.getGuid();\r\n result.furtherEducationId = furtherEducation?.id ?? \"\";\r\n result.startDate = Base.getNowUtcDate().addDays(-1).getTime();\r\n result.activeState = 1;\r\n result.setFurtherEducationCode2(furtherEducationGroups);\r\n return result;\r\n };\r\n \r\n handleAdd = () => {\r\n const props = this.props;\r\n this.setState({\r\n item: RecordEditFurtherEducationList.createNewRecordEditItemFurtherEducation(props.furtherEducationGroups),\r\n showEditDialog: true\r\n });\r\n };\r\n\r\n handleOpen = (id: string) => {\r\n if (!id) return;\r\n const state = this.state;\r\n const index = state.items.findIndex(i => i.id === id);\r\n if (index < 0) return;\r\n this.setState({\r\n selectedId: id,\r\n item: state.items[index],\r\n showEditDialog: true,\r\n selectedItemHasPrevious: index > 0,\r\n selectedItemHasNext: index < state.items.length - 1\r\n });\r\n };\r\n\r\n onRecordUserFurtherEducationDialogOk = async (recordFurtherEducation: IRecordEditItemFurtherEducation, closeDialog: boolean) => {\r\n if (!recordFurtherEducation) return;\r\n this.props.onSaved(recordFurtherEducation);\r\n if (!closeDialog) return;\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n };\r\n\r\n onRecordUserFurtherEducationDialogCancel = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n if (index < 0 || index >= state.items.length) return;\r\n this.setState({\r\n selectedId: state.items[index].id,\r\n item: state.items[index],\r\n selectedItemHasPrevious: index > 0,\r\n selectedItemHasNext: index < state.items.length - 1\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n this.changeShowArchived(checked)}\r\n />\r\n }\r\n />\r\n ]}\r\n />\r\n }\r\n rightItems={\r\n \r\n }\r\n />\r\n {!!props.isReadOnly &&\r\n {Translations.NewRecordUserMustBeSavedBeforeFurtherEducationsCanBeAdded}\r\n }\r\n {!props.isReadOnly &&\r\n {\r\n let result: IListValueLineData[] = [];\r\n result.push({\r\n columns: [\r\n {\r\n size: 3,\r\n content:\r\n \r\n {item.code}\r\n \r\n {item.qualification\r\n ? \r\n : null}\r\n {item.qualification\r\n ? {RecordListItemUserQualification.getValidQualificationNumberStr(item.qualification)}\r\n : null}\r\n \r\n \r\n }\r\n ],\r\n id: item.id,\r\n unselectable: true\r\n });\r\n result = result.concat(\r\n item.educations.map((item) => {\r\n return {\r\n columns: [\r\n {\r\n size: 3,\r\n content:\r\n : null}\r\n onClick={this.handleOpen}\r\n />\r\n },\r\n { size: 1, content: item.scope.toLocaleFixed(0) },\r\n { size: 1, content: item.scopeUnitStr },\r\n { size: 2, content: Base.utcTimeToDateStr(item.startDate) },\r\n { size: 2, content: Base.utcTimeToDateStr(item.endDate) },\r\n { size: 2, content: Base.utcTimeToDateStr(item.validityEndDate) },\r\n { size: 1, content: item.activeState > 0.5 ? Translations.No : Translations.Yes }\r\n ],\r\n id: item.id,\r\n };\r\n })\r\n );\r\n return result;\r\n })\r\n }\r\n noDataMessage={Translations.AddFurtherEducations}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpen}\r\n />\r\n }\r\n {state.showEditDialog &&\r\n List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n onAttachmentsRemoved={props.onAttachmentsRemoved}\r\n onAttachmentsAdded={props.onAttachmentsAdded}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","// RecordEditEducation - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Grid, MenuItem, Select } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { FormSectionTitle } from \"source/components/framework/Form/FormSectionTitle\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { IRecordFurtherEducationGroupNode } from \"ui/Scripts/source/models/recordFurtherEducationGroup/recordFurtherEducationGroupNode\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IRecordEditItemFurtherEducation } from \"../../../models/record/recordEditItemFurtherEducation\";\r\nimport { IRecordEditItemQualification } from \"../../../models/record/recordEditItemQualification\";\r\nimport { IRecordEducationListItem } from \"../../../models/recordEducation/recordEducationListItem\";\r\nimport { RecordEditFurtherEducationList } from \"../RecordEditFurtherEducationList/RecordEditFurtherEducationList\";\r\n\r\n// RecordEditEducation\r\nexport interface IRecordEditEducationProp {\r\n isNew: boolean;\r\n companyId: string;\r\n recordId: string;\r\n userCode: string;\r\n basicEducationId: string;\r\n recordQualifications: IRecordEditItemQualification[];\r\n recordFurtherEducations: IRecordEditItemFurtherEducation[];\r\n basicEducations: IRecordEducationListItem[];\r\n furtherEducationGroups: IRecordFurtherEducationGroupNode[];\r\n attachments: IFileAttachment[];\r\n onChange: (name: string, value: string) => void;\r\n onFurherEducationRemoved: (ids: string[]) => void;\r\n onFurherEducationSaved: (recordFurtherEducation: IRecordEditItemFurtherEducation) => void;\r\n onAttachmentsRemoved: (ids: string[]) => void;\r\n onAttachmentsAdded: (attachments: IFileAttachment[]) => void;\r\n}\r\n\r\nexport class RecordEditEducation extends React.Component {\r\n handleChange = (event) => {\r\n const target = event.target;\r\n this.props.onChange(target.name, target.value);\r\n };\r\n \r\n render() {\r\n const props = this.props;\r\n return (\r\n <>\r\n \r\n \r\n {Translations.BasicEducation}\r\n \r\n \r\n \r\n \r\n \r\n {Translations.FurtherEducations + \" / \" + Translations.Competencies}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}","// RecordUserEmploymentDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { EditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { ConfirmationDialogResult, RecordUserAttachmentCategory } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IIdTitle, IdTitle } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/idTitle\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IRecordEditItemEmployment, RecordEditItemEmployment, RecordEditItemEmploymentSave } from \"../../../models/record/recordEditItemEmployment\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport { StoreUtils } from \"../../../models/store/storeUtils\";\r\nimport { DatePicker } from \"../../framework/DateTime/DatePicker\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogButtons } from \"../../framework/Dialog/DialogButtons\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { Autocomplete } from \"../../framework/Form/Autocomplete\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { ModifyUserInfo } from \"../../framework/User/ModifyUserInfo\";\r\nimport { RecordEditAttachmentList } from \"../RecordEditAttachmentList\";\r\n\r\n//RecordUserEmploymentDialog\r\nexport interface IRecordUserEmploymentDialogProp {\r\n classes?: string;\r\n companyId: string;\r\n recordId: string;\r\n userCode: string;\r\n item: IRecordEditItemEmployment;\r\n attachments: IFileAttachment[];\r\n jobTitles: string[];\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onOk: (item: IRecordEditItemEmployment, closeDialog: boolean) => void;\r\n onCancel: () => void;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onAttachmentsRemoved: (ids: string[]) => void;\r\n onAttachmentsAdded: (attachments: IFileAttachment[]) => void;\r\n}\r\n\r\nexport interface IRecordUserEmploymentDialogState {\r\n startDate: string;\r\n endDate: string;\r\n companyName: string;\r\n jobTitle: string;\r\n comment: string;\r\n attachments: IFileAttachment[];\r\n jobTitles: IIdTitle[];\r\n}\r\n\r\nexport class RecordUserEmploymentDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n \r\n getStateFromProps = (props: IRecordUserEmploymentDialogProp): IRecordUserEmploymentDialogState => {\r\n const item = props.item;\r\n return {\r\n startDate: Base.utcTimeToDateStr(item.startDate),\r\n endDate: Base.utcTimeToDateStr(item.endDate),\r\n companyName: item.companyName,\r\n jobTitle: item.jobTitle,\r\n comment: item.comment,\r\n attachments: props.attachments.filter(i => i.subOwnerId === item.id),\r\n jobTitles: props.jobTitles.map(i => IdTitle.createIdTitleSimple(i)),\r\n };\r\n };\r\n\r\n constructor(props: IRecordUserEmploymentDialogProp) {\r\n super(props);\r\n this.state = this.getStateFromProps(props);\r\n this.orgStateHash = this.getHashFromState(props, this.state);\r\n }\r\n\r\n async componentDidUpdate(prevProps: IRecordUserEmploymentDialogProp, prevState: IRecordUserEmploymentDialogState) {\r\n const props = this.props;\r\n if (prevProps.item.getHash() === props.item.getHash() && EditItem.getHash(prevProps.attachments) === EditItem.getHash(props.attachments)) return;\r\n const state = this.getStateFromProps(props);\r\n this.setState(state);\r\n this.orgStateHash = this.getHashFromState(props, state);\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"companyName\") {\r\n this.setState({ companyName: value });\r\n } else if (name === \"jobTitle\") {\r\n this.setState({ jobTitle: value });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n }\r\n };\r\n\r\n dateChange = (startDate: Date, endDate: Date) => {\r\n if (!Base.isNullOrUndefined(startDate) && !Base.isNullOrUndefined(endDate) && endDate < startDate) {\r\n endDate = startDate;\r\n }\r\n const startDateStr = Base.utcTimeToDateStr(startDate.getTime());\r\n const endDateStr = endDate ? Base.utcTimeToDateStr(endDate.getTime()) : \"\";\r\n this.setState({\r\n startDate: startDateStr,\r\n endDate: endDateStr\r\n });\r\n };\r\n\r\n handleStartDateChange = (value: string) => {\r\n this.setState({ startDate: value });\r\n };\r\n\r\n handleStartDateBlur = (value: string) => {\r\n const state = this.state;\r\n this.dateChange(value ? value.toUtcDate() : Base.getNowUtcDate().addDays(-1), state.endDate ? state.endDate.toUtcDate() : null);\r\n };\r\n\r\n handleEndDateChange = (value: string) => {\r\n this.setState({ endDate: value });\r\n };\r\n\r\n handleEndDateBlur = (value: string) => {\r\n const state = this.state;\r\n this.dateChange(state.startDate ? state.startDate.toUtcDate() : Base.getNowUtcDate().addDays(-1), value ? value.toUtcDate() : null);\r\n };\r\n\r\n getHashFromState = (props: IRecordUserEmploymentDialogProp, state: IRecordUserEmploymentDialogState): string => {\r\n const result = new SaveDataObj();\r\n result.append(\"startDate\", state.startDate);\r\n result.append(\"endDate\", !state.endDate ? null : state.endDate);\r\n result.append(\"companyName\", state.companyName);\r\n result.append(\"jobTitle\", state.jobTitle);\r\n result.append(\"comment\", state.comment);\r\n return result.hash;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.jobTitle) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.JobTitleMustBeDefined));\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n \r\n getSaveData = (props: IRecordUserEmploymentDialogProp, employment: RecordEditItemEmploymentSave): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.recordId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"userCode\", props.userCode);\r\n result.append(\"employment\", employment);\r\n return result;\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n // Set data\r\n const item = new RecordEditItemEmployment(this.props.item);\r\n item.startDate = state.startDate.toUtcDate().getTime();\r\n item.endDate = state.endDate ? state.endDate.toUtcDate().getTime() : null;\r\n item.companyName = state.companyName;\r\n item.jobTitle = state.jobTitle;\r\n item.comment = state.comment;\r\n const saveData = this.getSaveData(this.props, new RecordEditItemEmploymentSave(item));\r\n // Call server\r\n const result = await AppUtils.callService(() => recordService.recordEditSaveEmployment(saveData.obj));\r\n if (!result) return null;\r\n this.orgStateHash = this.getHashFromState(this.props, this.state);\r\n item.id = result.id;\r\n item.rowId = result.rowId;\r\n item.modifyUser = StoreUtils.getNowModifyUser();\r\n return item;\r\n };\r\n\r\n saveDialog = async (close: boolean) => {\r\n const result = await this.saveToDb();\r\n if (result) {\r\n this.props.onOk(result, close);\r\n }\r\n return result;\r\n };\r\n\r\n handleSave = async (): Promise => {\r\n return await this.saveDialog(true);\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getHashFromState(props, state), this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut(this.getHashFromState(props, this.state), this.orgStateHash, async () => !!await this.saveDialog(false), null);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const isNew = props.item.isNew();\r\n return (\r\n \r\n \r\n \r\n \r\n this.setState({ jobTitle: value })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!isNew &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {!!props.onAttachmentsAdded &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}/>\r\n );\r\n }\r\n}","// RecordEditEmploymentList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Alert, Box, Stack } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { EditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IRecordEditItemEmployment, RecordEditItemEmployment } from \"../../../models/record/recordEditItemEmployment\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListIconButtonsItem } from \"../../framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { EllipsisTypography } from \"../../framework/Typography/EllipsisTypography\";\r\nimport { RecordEditListFirstCol } from \"../RecordEditListFirstCol/RecordEditListFirstCol\";\r\nimport { RecordUserEmploymentDialog } from \"../RecordUserEmploymentDialog/RecordUserEmploymentDialog\";\r\nimport CircleIcon from \"@mui/icons-material/Circle\";\r\n\r\n// RecordEditEmploymentList\r\nexport interface IRecordEditEmploymentListProp {\r\n isReadOnly: boolean;\r\n companyId: string;\r\n recordId: string;\r\n userCode: string;\r\n jobTitles: string[];\r\n employments: IRecordEditItemEmployment[];\r\n attachments: IFileAttachment[];\r\n onRemoved: (ids: string[]) => void;\r\n onSaved: (employment: IRecordEditItemEmployment) => void;\r\n onAttachmentsRemoved: (ids: string[]) => void;\r\n onAttachmentsAdded: (attachments: IFileAttachment[]) => void;\r\n}\r\n\r\ninterface IRecordEditEmploymentListState {\r\n // List\r\n isLoading: boolean;\r\n items: IRecordEditItemEmployment[];\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n selectedId: string;\r\n checkedIds: string[];\r\n selectedItemHasPrevious: boolean;\r\n selectedItemHasNext: boolean;\r\n\r\n // Dialog\r\n item: IRecordEditItemEmployment;\r\n showEditDialog: boolean;\r\n}\r\n\r\nexport class RecordEditEmploymentList extends React.Component {\r\n getFilteredList = (filter: string, column: string, asc: boolean): IRecordEditItemEmployment[] => {\r\n const props = this.props;\r\n let result = props.employments ? props.employments.slice(0) : [];\r\n if (filter) {\r\n const lowFilter = filter.toLowerCase();\r\n result = result.filter(i => i.companyName.toLowerCase().indexOf(lowFilter) > -1 || i.jobTitle.toLowerCase().indexOf(lowFilter) > -1 || i.comment.toLowerCase().indexOf(lowFilter) > -1);\r\n }\r\n RecordEditItemEmployment.sortRecordEditItemEmployments(result, column, asc);\r\n return result;\r\n };\r\n\r\n constructor(props: IRecordEditEmploymentListProp) {\r\n super(props);\r\n const employments = this.getFilteredList(\"\", \"startDate\", false);\r\n this.state = {\r\n isLoading: false,\r\n items: employments,\r\n filter: \"\",\r\n sortColumn: \"startDate\",\r\n sortOrderIsAsc: false,\r\n selectedId: null,\r\n checkedIds: [],\r\n selectedItemHasPrevious: false,\r\n selectedItemHasNext: false,\r\n item: null,\r\n showEditDialog: false,\r\n };\r\n }\r\n\r\n filteredList = (filter: string, column: string, asc: boolean) => {\r\n this.setState({\r\n filter,\r\n sortColumn: column,\r\n sortOrderIsAsc: asc,\r\n items: this.getFilteredList(filter, column, asc)\r\n });\r\n };\r\n\r\n componentDidUpdate(prevProps: IRecordEditEmploymentListProp, prevState: IRecordEditEmploymentListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (EditItem.getHash(prevProps.employments) === EditItem.getHash(props.employments)) return;\r\n this.filteredList(state.filter, state.sortColumn, state.sortOrderIsAsc);\r\n };\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.filteredList(filter, state.sortColumn, state.sortOrderIsAsc);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.filteredList(state.filter, sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n getRemoveSaveData = (props: IRecordEditEmploymentListProp, recordEmploymentIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.recordId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"userCode\", props.userCode);\r\n result.append(\"ids\", recordEmploymentIds);\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const obj = this;\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n if (selectedIds.length < 1) return;\r\n const employment = state.items.find(i => i.id === selectedIds[0]);\r\n if (!employment) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveRecordUserEmploymentParameter, employment.getUiTitle()), false) === ConfirmationDialogResult.Yes) {\r\n const saveData = this.getRemoveSaveData(this.props, selectedIds);\r\n // Call server\r\n const result = await AppUtils.callService(() => recordService.recordEditRemoveEmployments(saveData.obj));\r\n if (!result) return;\r\n obj.props.onRemoved(selectedIds);\r\n }\r\n };\r\n \r\n handleAdd = () => {\r\n const editItem = new RecordEditItemEmployment();\r\n editItem.id = Base.getGuid();\r\n editItem.startDate = Base.getNowUtcDate().addDays(-1).getTime();\r\n this.setState({\r\n item: editItem,\r\n showEditDialog: true\r\n });\r\n };\r\n\r\n handleOpen = (id: string) => {\r\n if (!id) return;\r\n const state = this.state;\r\n const index = state.items.findIndex(i => i.id === id);\r\n if (index < 0) return;\r\n this.setState({\r\n item: state.items[index],\r\n selectedId: id,\r\n showEditDialog: true,\r\n selectedItemHasPrevious: index > 0,\r\n selectedItemHasNext: index < state.items.length - 1\r\n });\r\n };\r\n\r\n onRecordUserEmploymentDialogOk = async (employment: IRecordEditItemEmployment, closeDialog: boolean) => {\r\n if (!employment) return;\r\n this.props.onSaved(employment);\r\n if (!closeDialog) return;\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n };\r\n\r\n onRecordUserEmploymentDialogCancel = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n if (index < 0 || index >= state.items.length) return;\r\n this.setState({\r\n selectedId: state.items[index].id,\r\n item: state.items[index],\r\n selectedItemHasPrevious: index > 0,\r\n selectedItemHasNext: index < state.items.length - 1\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const currentEmployments = state.items.filter(i => Base.isNullOrUndefined(i.endDate));\r\n return (\r\n <>\r\n \r\n {currentEmployments.length < 0 &&\r\n <>\r\n }\r\n \r\n {currentEmployments.map((employment, index) =>\r\n \r\n {(employment.companyName ? employment.companyName + \", \" : \"\") + Translations.EmploymentStartDate + \": \" + Base.utcTimeToDateStr(employment.startDate)}\r\n {!(currentEmployments.length === 1 || index === currentEmployments.length - 1) && (\r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n }\r\n rightItems={\r\n \r\n }\r\n />\r\n {!!props.isReadOnly &&\r\n {Translations.NewRecordUserMustBeSavedBeforeEmploymentsCanBeAdded}\r\n }\r\n {!props.isReadOnly &&\r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 2,\r\n content:\r\n \r\n },\r\n { size: 2, content: Base.utcTimeToDateStr(employment.endDate) },\r\n { size: 2, content: employment.companyName },\r\n { size: 2, content: employment.jobTitle },\r\n { size: 4, content: employment.comment }\r\n ],\r\n id: employment.id\r\n };\r\n })\r\n }\r\n noDataMessage={Translations.AddEmployments}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpen}\r\n />\r\n }\r\n \r\n {state.showEditDialog &&\r\n List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n onAttachmentsRemoved={props.onAttachmentsRemoved}\r\n onAttachmentsAdded={props.onAttachmentsAdded}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","// RecordEditEmployment - MODULE\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { IRecordEditItemEmployment } from \"../../../models/record/recordEditItemEmployment\";\r\nimport { RecordEditEmploymentList } from \"../RecordEditEmploymentList\";\r\nimport { IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\n\r\n// RecordEditEmployment\r\nexport interface IRecordEditEmploymentProp {\r\n isNew: boolean;\r\n companyId: string;\r\n recordId: string;\r\n userCode: string;\r\n jobTitles: string[];\r\n employments: IRecordEditItemEmployment[];\r\n attachments: IFileAttachment[];\r\n onEmploymentRemoved: (ids: string[]) => void;\r\n onEmploymentSaved: (employment: IRecordEditItemEmployment) => void;\r\n onAttachmentsRemoved: (ids: string[]) => void;\r\n onAttachmentsAdded: (attachments: IFileAttachment[]) => void;\r\n}\r\n\r\nexport class RecordEditEmployment extends React.Component {\r\n render() {\r\n const props = this.props;\r\n return (\r\n \r\n );\r\n }\r\n}","// RecordUserFamiliarizationDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Checkbox, FormControlLabel, Grid, MenuItem, Select, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { EditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { IIdTitle, IdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { ConfirmationDialogResult, RecordUserAttachmentCategory } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IRecordEditItemFamiliarization, RecordEditItemFamiliarization, RecordEditItemFamiliarizationSave } from \"../../../models/record/recordEditItemFamiliarization\";\r\nimport { IRecordFamiliarizationListItem } from \"../../../models/recordFamiliarization/recordFamiliarizationListItem\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { StoreUtils } from \"../../../models/store/storeUtils\";\r\nimport { DatePicker } from \"../../framework/DateTime/DatePicker\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogButtons } from \"../../framework/Dialog/DialogButtons\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { Autocomplete } from \"../../framework/Form/Autocomplete\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { ModifyUserInfo } from \"../../framework/User/ModifyUserInfo\";\r\nimport { RecordEditAttachmentList } from \"../RecordEditAttachmentList\";\r\n\r\n//RecordUserFamiliarizationDialog\r\nexport interface IRecordUserFamiliarizationDialogProp {\r\n classes?: string;\r\n companyId: string;\r\n recordId: string;\r\n userCode: string;\r\n familiarizations: IRecordFamiliarizationListItem[];\r\n familiarizationTrainers: string[];\r\n item: IRecordEditItemFamiliarization;\r\n attachments: IFileAttachment[];\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onCustomSave?: (saveItem: RecordEditItemFamiliarizationSave) => Promise;\r\n onOk: (item: IRecordEditItemFamiliarization, closeDialog: boolean) => void;\r\n onCancel: () => void;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onAttachmentsRemoved: (ids: string[]) => void;\r\n onAttachmentsAdded: (attachments: IFileAttachment[]) => void;\r\n}\r\n\r\nexport interface IRecordUserFamiliarizationDialogState {\r\n familiarizationId: string;\r\n startDate: string;\r\n endDate: string;\r\n validityEndDate: string;\r\n trainer: string;\r\n comment: string;\r\n activeState: number;\r\n familiarizationTrainers: IIdTitle[];\r\n attachments: IFileAttachment[];\r\n}\r\n\r\nexport class RecordUserFamiliarizationDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n \r\n getStateFromProps = (props: IRecordUserFamiliarizationDialogProp): IRecordUserFamiliarizationDialogState => {\r\n const item = props.item;\r\n const familiarizationTrainers = props.familiarizationTrainers.slice(0);\r\n familiarizationTrainers.sort(Base.strCompare);\r\n return {\r\n familiarizationId: item.familiarizationId,\r\n startDate: Base.utcTimeToDateStr(item.startDate),\r\n endDate: Base.utcTimeToDateStr(item.endDate),\r\n validityEndDate: Base.utcTimeToDateStr(item.validityEndDate),\r\n trainer: item.trainer,\r\n comment: item.comment,\r\n activeState: item.activeState,\r\n familiarizationTrainers: familiarizationTrainers.map(i => IdTitle.createIdTitleSimple(i)),\r\n attachments: props.attachments.filter(i => i.subOwnerId === item.id),\r\n };\r\n };\r\n\r\n constructor(props: IRecordUserFamiliarizationDialogProp) {\r\n super(props);\r\n this.state = this.getStateFromProps(props);\r\n this.orgStateHash = this.getHashFromState(props, this.state);\r\n }\r\n\r\n async componentDidUpdate(prevProps: IRecordUserFamiliarizationDialogProp, prevState: IRecordUserFamiliarizationDialogState) {\r\n const props = this.props;\r\n if (prevProps.item.getHash() === props.item.getHash() && EditItem.getHash(prevProps.attachments) === EditItem.getHash(props.attachments)) return;\r\n const state = this.getStateFromProps(props);\r\n this.setState(state);\r\n this.orgStateHash = this.getHashFromState(props, state);\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"familiarizationId\") {\r\n this.setState({ familiarizationId: value });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n }\r\n };\r\n\r\n handleTrainerAutoCompleteChange = (value: string) => {\r\n this.setState({ trainer: value });\r\n };\r\n\r\n dateChange = (startDate: Date, endDate: Date) => {\r\n if (!Base.isNullOrUndefined(startDate) && !Base.isNullOrUndefined(endDate) && endDate < startDate) {\r\n endDate = startDate;\r\n }\r\n const startDateStr = Base.utcTimeToDateStr(startDate.getTime());\r\n const endDateStr = endDate ? Base.utcTimeToDateStr(endDate.getTime()) : \"\";\r\n this.setState({\r\n startDate: startDateStr,\r\n endDate: endDateStr\r\n });\r\n };\r\n\r\n handleStartDateChange = (value: string) => {\r\n this.setState({ startDate: value });\r\n };\r\n\r\n handleStartDateBlur = (value: string) => {\r\n const state = this.state;\r\n this.dateChange(value ? value.toUtcDate() : Base.getNowUtcDate().addDays(-1), state.endDate ? state.endDate.toUtcDate() : null);\r\n };\r\n\r\n handleEndDateChange = (value: string) => {\r\n this.setState({ endDate: value });\r\n };\r\n\r\n handleEndDateBlur = (value: string) => {\r\n const state = this.state;\r\n this.dateChange(state.startDate ? state.startDate.toUtcDate() : Base.getNowUtcDate().addDays(-1), value ? value.toUtcDate() : null);\r\n };\r\n\r\n handleValidityEndDateChange = (value: string) => {\r\n this.setState({ validityEndDate: value });\r\n };\r\n\r\n handleValidityEndDateBlur = (value: string) => {\r\n this.setState({\r\n validityEndDate: value ? Base.utcTimeToDateStr(value.toUtcDate().getTime()) : \"\"\r\n });\r\n };\r\n\r\n getHashFromState = (props: IRecordUserFamiliarizationDialogProp, state: IRecordUserFamiliarizationDialogState): string => {\r\n const result = new SaveDataObj();\r\n result.append(\"familiarizationId\", state.familiarizationId);\r\n result.append(\"startDate\", state.startDate);\r\n result.append(\"endDate\", !state.endDate ? null : state.endDate);\r\n result.append(\"validityEndDate\", !state.validityEndDate ? null : state.validityEndDate);\r\n result.append(\"trainer\", state.trainer);\r\n result.append(\"comment\", state.comment);\r\n result.append(\"activeState\", state.activeState);\r\n return result.hash;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n getSaveData = (props: IRecordUserFamiliarizationDialogProp, recordFamiliarization: RecordEditItemFamiliarizationSave): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.recordId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"userCode\", props.userCode);\r\n result.append(\"familiarization\", recordFamiliarization);\r\n return result;\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n // Set data\r\n const item = new RecordEditItemFamiliarization(this.props.item);\r\n item.familiarizationId = state.familiarizationId;\r\n item.startDate = state.startDate.toUtcDate().getTime();\r\n item.endDate = state.endDate ? state.endDate.toUtcDate().getTime() : null;\r\n item.validityEndDate = state.validityEndDate ? state.validityEndDate.toUtcDate().getTime() : null;\r\n item.trainer = state.trainer;\r\n item.comment = state.comment;\r\n item.activeState = state.activeState;\r\n if (props.onCustomSave) {\r\n const customResult = await props.onCustomSave(new RecordEditItemFamiliarizationSave(item));\r\n if (!customResult) return null;\r\n return item;\r\n }\r\n const saveData = this.getSaveData(this.props, new RecordEditItemFamiliarizationSave(item));\r\n // Call server\r\n const result = await AppUtils.callService(() => recordService.recordEditSaveFamiliarization(saveData.obj));\r\n if (!result) return null;\r\n item.id = result.id;\r\n item.rowId = result.rowId;\r\n item.modifyUser = StoreUtils.getNowModifyUser();\r\n return item;\r\n };\r\n\r\n saveDialog = async (close: boolean) => {\r\n const result = await this.saveToDb();\r\n if (result) {\r\n this.props.onOk(result, close);\r\n }\r\n return result;\r\n };\r\n\r\n handleSave = async (): Promise => {\r\n return await this.saveDialog(true);\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getHashFromState(props, state), this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut(this.getHashFromState(props, this.state), this.orgStateHash, async () => !!await this.saveDialog(false), null);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const isNew = props.item.isNew();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ activeState: checked ? 0 : 1 })}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!isNew &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {!!props.onAttachmentsAdded &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","// RecordEditFamiliarizationList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Alert, Checkbox, FormControlLabel } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { EditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IRecordEditItemFamiliarization, RecordEditItemFamiliarization } from \"../../../models/record/recordEditItemFamiliarization\";\r\nimport { IRecordFamiliarizationListItem } from \"../../../models/recordFamiliarization/recordFamiliarizationListItem\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListIconButtonsItem } from \"../../framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { RecordEditListFirstCol } from \"../RecordEditListFirstCol/RecordEditListFirstCol\";\r\nimport { RecordUserFamiliarizationDialog } from \"../RecordUserFamiliarizationDialog/RecordUserFamiliarizationDialog\";\r\n\r\n// RecordEditFamiliarizationList\r\nexport interface IRecordEditFamiliarizationListProp {\r\n isReadOnly: boolean;\r\n companyId: string;\r\n recordId: string;\r\n userCode: string;\r\n familiarizationTrainers: string[];\r\n recordFamiliarizations: IRecordEditItemFamiliarization[];\r\n familiarizations: IRecordFamiliarizationListItem[];\r\n attachments: IFileAttachment[];\r\n onRemoved: (ids: string[]) => void;\r\n onSaved: (recordFamiliarization: IRecordEditItemFamiliarization) => void;\r\n onAttachmentsRemoved: (ids: string[]) => void;\r\n onAttachmentsAdded: (attachments: IFileAttachment[]) => void;\r\n}\r\n\r\ninterface IRecordEditFamiliarizationListState {\r\n // List\r\n isLoading: boolean;\r\n items: IRecordEditItemFamiliarization[];\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n selectedId: string;\r\n checkedIds: string[];\r\n showArchived: boolean;\r\n selectedItemHasPrevious: boolean;\r\n selectedItemHasNext: boolean;\r\n familiarizationTrainers: string[];\r\n\r\n // Dialog\r\n item: IRecordEditItemFamiliarization;\r\n showEditDialog: boolean;\r\n}\r\n\r\nexport class RecordEditFamiliarizationList extends React.Component {\r\n getFilteredList = (filter: string, showArchived: boolean, column: string, asc: boolean): IRecordEditItemFamiliarization[] => {\r\n const props = this.props;\r\n let result = props.recordFamiliarizations ? props.recordFamiliarizations.slice(0) : [];\r\n RecordEditItemFamiliarization.setFamiliarizationCodes(result, props.familiarizations);\r\n result = result.filter(i => showArchived ? true : i.activeState > 0.5);\r\n if (filter) {\r\n const lowFilter = filter.toLowerCase();\r\n result = result.filter(i => i.familiarizationCode.toLowerCase().indexOf(lowFilter) > -1 || i.comment.toLowerCase().indexOf(lowFilter) > -1);\r\n }\r\n RecordEditItemFamiliarization.sortRecordEditItemFamiliarizations(result, column, asc);\r\n return result;\r\n };\r\n\r\n constructor(props: IRecordEditFamiliarizationListProp) {\r\n super(props);\r\n const recordFamiliarizations = this.getFilteredList(\"\", false, \"startDate\", false);\r\n this.state = {\r\n isLoading: false,\r\n items: recordFamiliarizations,\r\n filter: \"\",\r\n sortColumn: \"startDate\",\r\n sortOrderIsAsc: false,\r\n selectedId: null,\r\n checkedIds: [],\r\n showArchived: false,\r\n selectedItemHasPrevious: false,\r\n selectedItemHasNext: false,\r\n item: null,\r\n showEditDialog: false,\r\n familiarizationTrainers: Base.getUniqueStringItems(props.familiarizationTrainers.concat(props.recordFamiliarizations.map(i => i.trainer).filter(i => !!i)))\r\n };\r\n }\r\n\r\n filteredList = (filter: string, showArchived: boolean, column: string, asc: boolean) => {\r\n this.setState({\r\n filter,\r\n showArchived,\r\n sortColumn: column,\r\n sortOrderIsAsc: asc,\r\n items: this.getFilteredList(filter, showArchived, column, asc)\r\n });\r\n };\r\n\r\n componentDidUpdate(prevProps: IRecordEditFamiliarizationListProp, prevState: IRecordEditFamiliarizationListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (EditItem.getHash(prevProps.recordFamiliarizations) === EditItem.getHash(props.recordFamiliarizations)) return;\r\n this.filteredList(state.filter, state.showArchived, state.sortColumn, state.sortOrderIsAsc);\r\n this.setState({\r\n familiarizationTrainers: Base.getUniqueStringItems(props.familiarizationTrainers.concat(props.recordFamiliarizations.map(i => i.trainer).filter(i => !!i)))\r\n });\r\n };\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.filteredList(filter, state.showArchived, state.sortColumn, state.sortOrderIsAsc);\r\n };\r\n\r\n changeShowArchived = (showArchived: boolean) => {\r\n const state = this.state;\r\n this.filteredList(state.filter, showArchived, state.sortColumn, state.sortOrderIsAsc);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.filteredList(state.filter, state.showArchived, sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n getRemoveSaveData = (props: IRecordEditFamiliarizationListProp, recordFamiliarizationIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.recordId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"userCode\", props.userCode);\r\n result.append(\"ids\", recordFamiliarizationIds);\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const obj = this;\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n if (selectedIds.length < 1) return;\r\n const familiarization = state.items.find(i => i.id === selectedIds[0]);\r\n if (!familiarization) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveRecordFamiliarizationParameter, familiarization.familiarizationCode), false) === ConfirmationDialogResult.Yes) {\r\n const saveData = this.getRemoveSaveData(this.props, selectedIds);\r\n // Call server\r\n const result = await AppUtils.callService(() => recordService.recordEditRemoveFamiliarizations(saveData.obj));\r\n if (!result) return;\r\n obj.props.onRemoved(selectedIds);\r\n }\r\n };\r\n\r\n static createNewRecordEditItemFamiliarization = (familiarizations: IRecordFamiliarizationListItem[]): RecordEditItemFamiliarization => {\r\n const result = new RecordEditItemFamiliarization();\r\n result.id = Base.getGuid();\r\n result.familiarizationId = familiarizations.length > 0 ? familiarizations[0].id : \"\";\r\n result.startDate = Base.getNowUtcDate().addDays(-1).getTime();\r\n result.activeState = 1;\r\n result.setFamiliarizationCode(familiarizations);\r\n return result;\r\n };\r\n \r\n handleAdd = () => {\r\n const props = this.props;\r\n if (props.familiarizations.length < 1) return;\r\n this.setState({\r\n item: RecordEditFamiliarizationList.createNewRecordEditItemFamiliarization(props.familiarizations),\r\n showEditDialog: true\r\n });\r\n };\r\n\r\n handleOpen = (id: string) => {\r\n if (!id) return;\r\n const state = this.state;\r\n const index = state.items.findIndex(i => i.id === id);\r\n if (index < 0) return;\r\n this.setState({\r\n selectedId: id,\r\n item: state.items[index],\r\n showEditDialog: true,\r\n selectedItemHasPrevious: index > 0,\r\n selectedItemHasNext: index < state.items.length - 1\r\n });\r\n };\r\n\r\n onRecordUserFamiliarizationDialogOk = async (recordFamiliarization: IRecordEditItemFamiliarization, closeDialog: boolean) => {\r\n if (!recordFamiliarization) return;\r\n this.props.onSaved(recordFamiliarization);\r\n if (!closeDialog) return;\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n };\r\n\r\n onRecordUserFamiliarizationDialogCancel = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n if (index < 0 || index >= state.items.length) return;\r\n this.setState({\r\n selectedId: state.items[index].id,\r\n item: state.items[index],\r\n selectedItemHasPrevious: index > 0,\r\n selectedItemHasNext: index < state.items.length - 1\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const familiarizationsSpecified = props.familiarizations.length > 0;\r\n return (\r\n <>\r\n this.changeShowArchived(checked)}\r\n />\r\n }\r\n />\r\n ]}\r\n />\r\n }\r\n rightItems={\r\n \r\n }\r\n />\r\n {!!props.isReadOnly &&\r\n {Translations.NewRecordUserMustBeSavedBeforeFamiliarizationsCanBeAdded}\r\n }\r\n {!props.isReadOnly && !familiarizationsSpecified &&\r\n {Translations.FamiliarizationsMustBeDefinedBeforeAddingRecordUserFamiliarizations}\r\n }\r\n {!props.isReadOnly &&\r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 3,\r\n content:\r\n \r\n },\r\n { size: 2, content: Base.utcTimeToDateStr(recordFamiliarization.startDate) },\r\n { size: 2, content: Base.utcTimeToDateStr(recordFamiliarization.endDate) },\r\n { size: 2, content: Base.utcTimeToDateStr(recordFamiliarization.validityEndDate) },\r\n { size: 2, content: recordFamiliarization.trainer },\r\n { size: 1, content: recordFamiliarization.activeState > 0.5 ? Translations.No : Translations.Yes }\r\n ],\r\n id: recordFamiliarization.id\r\n };\r\n })\r\n }\r\n noDataMessage={Translations.AddFamiliarizations}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpen}\r\n />\r\n }\r\n {state.showEditDialog &&\r\n List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n onAttachmentsRemoved={props.onAttachmentsRemoved}\r\n onAttachmentsAdded={props.onAttachmentsAdded}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","// RecordEditLogList - MODULE\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { infiniteListPageSize } from \"../../../models/common/webConsts\";\r\nimport { IRecordEditItemLogListItem } from \"../../../models/record/recordEditItemLogListItem\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\n\r\n// RecordEditLogList\r\nexport interface IRecordEditLogListProp {\r\n companyId: string;\r\n recordId: string;\r\n userCode: string;\r\n}\r\n\r\ninterface IRecordEditLogListState {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n items: IRecordEditItemLogListItem[];\r\n pageSize: number;\r\n page: number;\r\n hasMore: boolean;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n selectedId: string;\r\n}\r\n\r\nexport class RecordEditLogList extends React.Component {\r\n constructor(props: IRecordEditLogListProp) {\r\n super(props);\r\n this.state = {\r\n intialized: false,\r\n isLoading: false,\r\n items: [],\r\n pageSize: infiniteListPageSize,\r\n page: 1,\r\n hasMore: true,\r\n filter: \"\",\r\n sortColumn: \"modifyDate\",\r\n sortOrderIsAsc: false,\r\n selectedId: null\r\n };\r\n }\r\n\r\n searchItems = async (pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean) => {\r\n const props = this.props;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => recordService.getRecordEditItemLogListItems(props.companyId, props.recordId, props.userCode, filter, !refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1, sortColumn, sortOrderIsAsc),\r\n false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const items = List.getListItems(this.state.items, this.state.selectedId, [], result.items, resetItems, refreshList);\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items\r\n });\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false);\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n });\r\n };\r\n\r\n render() {\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n }\r\n />\r\n {\r\n return {\r\n columns: [\r\n { size: 2, column: \"code\", content: Base.timeToDateTimeStr(logLine.modifyUser.date) },\r\n { size: 2, column: \"userCode\", content: logLine.modifyUser.code },\r\n { size: 3, column: \"userName\", content: logLine.modifyUser.name },\r\n { size: 3, column: \"entryType\", content: logLine.entryTypeStr },\r\n { size: 2, column: \"callerIp\", content: logLine.callerIp },\r\n ],\r\n id: logLine.id\r\n };\r\n })\r\n }\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={[]}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n />\r\n \r\n );\r\n }\r\n}","// RecordEditNextOfKin - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IRecordEditItem } from \"../../../models/record/recordEditItem\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\n\r\n//RecordEditNextOfKin\r\nexport interface IRecordEditNextOfKinProp {\r\n record: IRecordEditItem;\r\n nextOfKinFirstName: string;\r\n nextOfKinLastName: string;\r\n nextOfKinPostalAddress: string;\r\n nextOfKinPostalCode: string;\r\n nextOfKinCity: string;\r\n nextOfKinPhone: string;\r\n nextOfKinEmail: string;\r\n onChange: (name: string, value: string) => void;\r\n}\r\n\r\nexport class RecordEditNextOfKin extends React.Component {\r\n handleChange = (event) => {\r\n const target = event.target;\r\n this.props.onChange(target.name, target.value);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const record = props.record;\r\n if (!record) return null;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}","import { Box, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Dialog } from \"source/components/framework/Dialog/Dialog\";\r\nimport { TreeCheckBoxDropdownItems } from \"ui/Scripts/source/components/framework/Dropdown/TreeCheckboxDropdown/TreeCheckboxDropdownItems\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\n\r\n//SelectQualificationDialog\r\nexport interface ISelectQualificationDialogProps {\r\n nodes: IIdTitleNode[];\r\n selectedIds: string[];\r\n onOk: (selectedIds: string[]) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface ISelectQualificationDialogState {\r\n selectedIds: string[];\r\n eductionGroupNodes: IIdTitleNode[];\r\n eductionNodes: IIdTitleNode[];\r\n}\r\n\r\nexport class SelectQualificationDialog extends React.Component {\r\n constructor(props: ISelectQualificationDialogProps) {\r\n super(props);\r\n this.state = {\r\n selectedIds: props.selectedIds ?? [],\r\n eductionGroupNodes: props.nodes?.filter(i => i.active) ?? [],\r\n eductionNodes: props.nodes?.filter(i => !i.active && !!i.getFirstActiveNode()) ?? []\r\n };\r\n }\r\n\r\n handleOk = () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.selectedIds.length < 1) return;\r\n props.onOk(state.selectedIds);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n {state.eductionGroupNodes.length > 0 &&\r\n <>\r\n \r\n 0 ? \".5rem\" : \"0\")} color=\"\">\r\n {Translations.Groups}\r\n \r\n \r\n \r\n this.setState({ selectedIds })}\r\n />\r\n \r\n \r\n }\r\n {state.eductionNodes.length > 0 &&\r\n <>\r\n \r\n 0 ? \"1rem\" : \"0\") + \" 0 .5rem\"} color=\"\">\r\n {Translations.EducationsAndCompetencies}\r\n \r\n \r\n \r\n this.setState({ selectedIds })}\r\n />\r\n \r\n \r\n }\r\n \r\n }\r\n buttons={[\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: props.onCancel },\r\n { title: Translations.OK, variant: \"confirmation\", onClick: this.handleOk, disabled: state.selectedIds.length < 1 },\r\n ]}\r\n onClose={props.onCancel}\r\n />\r\n );\r\n }\r\n}","// RecordEditQualificationList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Alert, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { EditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IIdTitleNode, IdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { IRecordFurtherEducationGroupNode, RecordFurtherEducationGroupNode } from \"ui/Scripts/source/models/recordFurtherEducationGroup/recordFurtherEducationGroupNode\";\r\nimport { RecordListItemUserQualification } from \"ui/Scripts/source/models/recordUserQualification/recordListItemUserQualification\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IRecordEditItemFurtherEducation } from \"../../../models/record/recordEditItemFurtherEducation\";\r\nimport { IRecordEditItemQualification, RecordEditItemQualification, RecordEditItemQualificationSave } from \"../../../models/record/recordEditItemQualification\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { StoreUtils } from \"../../../models/store/storeUtils\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListIconButtonsItem } from \"../../framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { SelectQualificationDialog } from \"../SelectQualificationDialog\";\r\n\r\n// RecordEditQualificationList\r\nexport interface IRecordEditQualificationListProp {\r\n isReadOnly: boolean;\r\n companyId: string;\r\n recordId: string;\r\n userCode: string;\r\n recordFurtherEducations: IRecordEditItemFurtherEducation[];\r\n recordQualifications: IRecordEditItemQualification[];\r\n furtherEducationGroups: IRecordFurtherEducationGroupNode[];\r\n onRemoved: (ids: string[]) => void;\r\n onSaved: (qualification: IRecordEditItemQualification) => void;\r\n}\r\n\r\ninterface IRecordEditQualificationListState {\r\n // List\r\n isLoading: boolean;\r\n recordQualifications: IRecordEditItemQualification[];\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n selectedId: string;\r\n checkedIds: string[];\r\n selectedItemHasPrevious: boolean;\r\n selectedItemHasNext: boolean;\r\n\r\n // Dialog\r\n showSelectQualificationDialog: boolean;\r\n selectQualificationDialogFurtherEducations: IIdTitleNode[];\r\n}\r\n\r\nexport class RecordEditQualificationList extends React.Component {\r\n getFilteredList = (filter: string, column: string, asc: boolean): IRecordEditItemQualification[] => {\r\n const props = this.props;\r\n let result = props.recordQualifications ? props.recordQualifications.slice(0) : [];\r\n RecordEditItemQualification.setFurtherEducationCodes(result, props.furtherEducationGroups, props.recordFurtherEducations);\r\n if (filter) {\r\n const lowFilter = filter.toLowerCase();\r\n result = result.filter(i => i.code.toLowerCase().indexOf(lowFilter) > -1);\r\n }\r\n RecordEditItemQualification.sortRecordEditItemFurtherEducations(result, column, asc);\r\n return result;\r\n };\r\n\r\n constructor(props: IRecordEditQualificationListProp) {\r\n super(props);\r\n const filter = \"\";\r\n const sortColumn = \"code\";\r\n const sortOrderIsAsc = true;\r\n this.state = {\r\n isLoading: false,\r\n recordQualifications: this.getFilteredList(filter, sortColumn, sortOrderIsAsc),\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n selectedId: null,\r\n checkedIds: [],\r\n selectedItemHasPrevious: false,\r\n selectedItemHasNext: false,\r\n showSelectQualificationDialog: false,\r\n selectQualificationDialogFurtherEducations: []\r\n };\r\n }\r\n\r\n filteredList = (filter: string, sortColumn: string, sortOrderIsAsc: boolean) => {\r\n this.setState({\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n recordQualifications: this.getFilteredList(filter, sortColumn, sortOrderIsAsc)\r\n });\r\n };\r\n\r\n componentDidUpdate(prevProps: IRecordEditQualificationListProp, prevState: IRecordEditQualificationListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (EditItem.getHash(prevProps.recordQualifications) === EditItem.getHash(props.recordQualifications)) return;\r\n this.filteredList(state.filter, state.sortColumn, state.sortOrderIsAsc);\r\n };\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.filteredList(filter, state.sortColumn, state.sortOrderIsAsc);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.filteredList(state.filter, sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n getRemoveSaveData = (props: IRecordEditQualificationListProp, qualificationIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.recordId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"userCode\", props.userCode);\r\n result.append(\"ids\", qualificationIds);\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const obj = this;\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n if (selectedIds.length < 1) return;\r\n const recordQualification = state.recordQualifications.find(i => i.id === selectedIds[0]);\r\n if (!recordQualification) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveRecordQualificationParameter, recordQualification.code), false) === ConfirmationDialogResult.Yes) {\r\n const saveData = this.getRemoveSaveData(this.props, selectedIds);\r\n // Call server\r\n const result = await AppUtils.callService(() => recordService.recordEditRemoveQualifications(saveData.obj));\r\n if (!result) return;\r\n obj.props.onRemoved(selectedIds);\r\n }\r\n };\r\n \r\n handleAdd = () => {\r\n const props = this.props;\r\n const selectQualificationDialogFurtherEducations = RecordFurtherEducationGroupNode.getFurtherEducationsForQualification(props.furtherEducationGroups);\r\n const reservedNodes = IdTitleNode.getByIds(selectQualificationDialogFurtherEducations, props.recordQualifications.map(i => i.furtherEducationId ? i.furtherEducationId : i.furtherEducationGroupId));\r\n for (const reservedNode of reservedNodes) {\r\n reservedNode.active = false;\r\n }\r\n this.setState({\r\n showSelectQualificationDialog: true,\r\n selectQualificationDialogFurtherEducations\r\n });\r\n };\r\n\r\n getSaveData = (props: IRecordEditQualificationListProp, qualification: RecordEditItemQualificationSave): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.recordId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"userCode\", props.userCode);\r\n result.append(\"qualification\", qualification);\r\n return result;\r\n };\r\n\r\n saveToDb = async (qualification: IRecordEditItemQualification): Promise => {\r\n const saveData = this.getSaveData(this.props, new RecordEditItemQualificationSave(qualification));\r\n // Call server\r\n const result = await AppUtils.callService(() => recordService.recordEditSaveQualification(saveData.obj));\r\n if (!result) return null;\r\n qualification.id = result.id;\r\n qualification.rowId = result.rowId;\r\n qualification.modifyUser = StoreUtils.getNowModifyUser();\r\n return qualification;\r\n };\r\n\r\n onSelectQualificationDialogOk = async (ids: string[]) => {\r\n const props = this.props;\r\n if (!ids || ids.length < 1) return;\r\n const item = RecordFurtherEducationGroupNode.getItemById(props.furtherEducationGroups, ids[0]);\r\n if (!item) return;\r\n const isGroup = RecordFurtherEducationGroupNode.isGroup(item);\r\n const result = new RecordEditItemQualification();\r\n result.id = Base.getGuid();\r\n result.furtherEducationId = !isGroup ? item.id : \"\";\r\n result.furtherEducationGroupId = isGroup ? item.id : \"\";\r\n result.setCodeAndValidity(props.furtherEducationGroups, props.recordFurtherEducations);\r\n await this.saveToDb(result);\r\n if (!result) return;\r\n this.props.onSaved(result);\r\n this.setState({\r\n showSelectQualificationDialog: false\r\n });\r\n };\r\n\r\n onSelectQualificationDialogCancel = () => {\r\n this.setState({\r\n showSelectQualificationDialog: false\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n }\r\n rightItems={\r\n \r\n }\r\n />\r\n {!!props.isReadOnly &&\r\n {Translations.NewRecordUserMustBeSavedBeforeQualificationsCanBeAdded}\r\n }\r\n {!props.isReadOnly &&\r\n {\r\n return {\r\n columns: [\r\n { size: 8, content: recordQualification.code },\r\n {\r\n size: 2,\r\n content: (\r\n = recordQualification.requiredQualificationCount ||\r\n !recordQualification.furtherEducationGroupId && recordQualification.validUserFurtherEducations.length > 0\r\n ? \"success.main\"\r\n : \"error.main\")\r\n }}\r\n >\r\n {RecordListItemUserQualification.getQualificationState(recordQualification)}\r\n \r\n ),\r\n },\r\n { size: 2, content: Base.utcTimeToDateStr(recordQualification.validityEndDate) }\r\n ],\r\n id: recordQualification.id\r\n };\r\n })\r\n }\r\n noDataMessage={Translations.AddQualifications}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n />\r\n }\r\n {state.showSelectQualificationDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","import { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { ITaskDataRow, TaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskDataRowCol, TaskDataRowCol } from \"ui/Scripts/source/models/task/taskDataRowCol\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { ITaskTypeCol, TaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogButtons } from \"../../framework/Dialog/DialogButtons\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { TaskDynamicForm } from \"../../task/TaskDynamicForm/TaskDynamicForm\";\r\n\r\n//RecordEditSheetDataRowDialog\r\n//***************************************************************\r\ninterface ITaskDataRowSaveResult {\r\n taskDataRow: ITaskDataRow;\r\n rowId: string;\r\n}\r\n\r\nexport interface IRecordEditSheetDataRowDialogProp {\r\n classes?: string;\r\n taskType: ITaskEditTypeItem;\r\n item: ITaskDataRow;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n saveToDb: (taskDataRow: ITaskDataRow) => Promise;\r\n onOk: (item: ITaskDataRow, rowId: string, closeDialog: boolean) => void;\r\n onCancel: () => void;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n\r\n}\r\n\r\nexport interface IRecordEditSheetDataRowDialogState {\r\n cols: ITaskDataRowCol[];\r\n}\r\n\r\nexport class RecordEditSheetDataRowDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n \r\n getStateFromProps = (props: IRecordEditSheetDataRowDialogProp): IRecordEditSheetDataRowDialogState => {\r\n const item = props.item;\r\n return {\r\n cols: item.cols.map(i => new TaskDataRowCol(i))\r\n };\r\n };\r\n\r\n getHashFromState = (props: IRecordEditSheetDataRowDialogProp, state: IRecordEditSheetDataRowDialogState): string => {\r\n const result = new SaveDataObj();\r\n for (const col of state.cols) {\r\n result.append(col.field, (col.valueNbr ?? 0).toString(10) + \"#\" + (col.valueStr ?? \"\"));\r\n }\r\n return result.hash;\r\n };\r\n\r\n constructor(props: IRecordEditSheetDataRowDialogProp) {\r\n super(props);\r\n this.state = this.getStateFromProps(props);\r\n this.orgStateHash = this.getHashFromState(props, this.state);\r\n }\r\n\r\n async componentDidUpdate(prevProps: IRecordEditSheetDataRowDialogProp, prevState: IRecordEditSheetDataRowDialogState) {\r\n const props = this.props;\r\n if (prevProps.item.getHash() === props.item.getHash()) return;\r\n const state = this.getStateFromProps(props);\r\n this.setState(state);\r\n this.orgStateHash = this.getHashFromState(props, state);\r\n }\r\n\r\n handleRefreshTaskDataRowsForm = (taskDataRowCols: ITaskDataRowCol[]) => {\r\n this.setState({ cols: taskDataRowCols });\r\n };\r\n\r\n checkErrors = (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n TaskTypeCol.validateInputOfRequiredTaskTypeCols(props.taskType.formCols, state.cols, null,\r\n (typeCol: ITaskTypeCol) => {\r\n store.customStore.dispatch(storeActions.showErrorMessage(String.format(Translations.FieldParameterValueMustBeDefined, typeCol.title)));\r\n return resolve(false);\r\n });\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n // Set data\r\n const taskDataRow = new TaskDataRow(props.item);\r\n taskDataRow.cols = state.cols.slice(0);\r\n // Call server\r\n const result = await props.saveToDb(taskDataRow);\r\n if (!result) return null;\r\n return {\r\n taskDataRow,\r\n rowId: result.rowId\r\n };\r\n };\r\n\r\n saveDialog = async (close: boolean) => {\r\n const result = await this.saveToDb();\r\n if (result) {\r\n this.props.onOk(result.taskDataRow, result.rowId, close);\r\n }\r\n return result;\r\n };\r\n\r\n handleSave = async (): Promise => {\r\n const result = await this.saveDialog(true);\r\n if (!result) return null;\r\n return result.taskDataRow;\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getHashFromState(props, state), this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut(this.getHashFromState(props, this.state), this.orgStateHash, async () => !!await this.saveDialog(false), null);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const isNew = props.item.isNew();\r\n return (\r\n \r\n \r\n \r\n }\r\n actions={\r\n \r\n {!isNew && (\r\n \r\n )}\r\n \r\n \r\n }\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","// RecordEditSheetDataRowList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Alert } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { EditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { ITaskDataRow, SaveTaskDataRow, TaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListIconButtonsItem } from \"../../framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { ListLinkValue } from \"../../framework/List/ListLinkValue\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { RecordEditSheetDataRowDialog } from \"../RecordEditSheetDataRowDialog/RecordEditSheetDataRowDialog\";\r\n\r\n// RecordEditSheetDataRowList\r\nexport interface IRecordEditSheetDataRowListProp {\r\n isReadOnly: boolean;\r\n companyId: string;\r\n recordId: string;\r\n userCode: string;\r\n rowId: string;\r\n taskType: ITaskEditTypeItem;\r\n taskDataRows: ITaskDataRow[];\r\n\r\n onRowRemoved: (ids: string[], rowId: string) => void;\r\n onRowSaved: (taskDataRow: ITaskDataRow, rowId: string) => void;\r\n}\r\n\r\ninterface IRecordEditSheetDataRowListState {\r\n // List\r\n isLoading: boolean;\r\n items: ITaskDataRow[];\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n selectedId: string;\r\n checkedIds: string[];\r\n selectedItemHasPrevious: boolean;\r\n selectedItemHasNext: boolean;\r\n\r\n // Dialog\r\n item: ITaskDataRow;\r\n showEditDialog: boolean;\r\n}\r\n\r\nexport class RecordEditSheetDataRowList extends React.Component {\r\n getFilteredList = (filter: string, column: string, asc: boolean): ITaskDataRow[] => {\r\n const props = this.props;\r\n let result = props.taskDataRows ? props.taskDataRows.slice(0) : [];\r\n if (filter) {\r\n const lowFilter = filter.toLowerCase();\r\n result = result.filter(i => i.matchesToFilter(lowFilter, props.taskType));\r\n }\r\n TaskDataRow.sortTaskDataRowsByColumn(result, props.taskType, column, asc);\r\n return result;\r\n };\r\n\r\n constructor(props: IRecordEditSheetDataRowListProp) {\r\n super(props);\r\n const taskDataRows = this.getFilteredList(\"\", \"startDate\", false);\r\n this.state = {\r\n isLoading: false,\r\n items: taskDataRows,\r\n filter: \"\",\r\n sortColumn: \"startDate\",\r\n sortOrderIsAsc: false,\r\n selectedId: null,\r\n checkedIds: [],\r\n selectedItemHasPrevious: false,\r\n selectedItemHasNext: false,\r\n item: null,\r\n showEditDialog: false,\r\n };\r\n }\r\n\r\n filteredList = (filter: string, column: string, asc: boolean) => {\r\n this.setState({\r\n filter,\r\n sortColumn: column,\r\n sortOrderIsAsc: asc,\r\n items: this.getFilteredList(filter, column, asc)\r\n });\r\n };\r\n\r\n componentDidUpdate(prevProps: IRecordEditSheetDataRowListProp, prevState: IRecordEditSheetDataRowListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (EditItem.getHash(prevProps.taskDataRows) === EditItem.getHash(props.taskDataRows)) return;\r\n this.filteredList(state.filter, state.sortColumn, state.sortOrderIsAsc);\r\n };\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.filteredList(filter, state.sortColumn, state.sortOrderIsAsc);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.filteredList(state.filter, sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n getSaveData = (props: IRecordEditSheetDataRowListProp, taskDataRows: ITaskDataRow[]): SaveDataObj => {\r\n TaskDataRow.sortTaskDataRows(taskDataRows, props.taskType);\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.recordId);\r\n result.append(\"rowId\", props.rowId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"userCode\", props.userCode);\r\n result.append(\"saveTaskDataRows\", taskDataRows.map(i => SaveTaskDataRow.createSaveTaskDataRow(props.taskType.formCols, i, null)));\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const obj = this;\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n if (selectedIds.length < 1) return;\r\n const index = state.items.findIndex(i => i.id === selectedIds[0]);\r\n if (index < 0) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.RemoveRowConfirmation, (index + 1).toString(10)), false) === ConfirmationDialogResult.Yes) {\r\n const saveData = this.getSaveData(this.props, state.items.filter(i => selectedIds.indexOf(i.id) < 0));\r\n // Call server\r\n const result = await AppUtils.callService(() => recordService.recordEditSaveSheetData(saveData.obj));\r\n if (!result) return;\r\n obj.props.onRowRemoved(selectedIds, result.rowId);\r\n }\r\n };\r\n \r\n static createNewTaskDataRow = (taskType: ITaskEditTypeItem): TaskDataRow => {\r\n const result = new TaskDataRow();\r\n result.id = Base.getGuid();\r\n result.initializeToTaskType(taskType);\r\n return result;\r\n };\r\n\r\n handleAdd = () => {\r\n this.setState({\r\n item: RecordEditSheetDataRowList.createNewTaskDataRow(this.props.taskType),\r\n showEditDialog: true\r\n });\r\n };\r\n\r\n handleOpen = (id: string) => {\r\n if (!id) return;\r\n const state = this.state;\r\n const index = state.items.findIndex(i => i.id === id);\r\n if (index < 0) return;\r\n this.setState({\r\n selectedId: id,\r\n item: state.items[index],\r\n showEditDialog: true,\r\n selectedItemHasPrevious: index > 0,\r\n selectedItemHasNext: index < state.items.length - 1\r\n });\r\n };\r\n\r\n saveToDb = async (taskDataRow: ITaskDataRow): Promise => {\r\n const obj = this;\r\n const state = this.state;\r\n if (!taskDataRow) return null;\r\n const taskDataRows = state.items.filter(i => i.id !== taskDataRow.id);\r\n taskDataRows.push(taskDataRow);\r\n const saveData = this.getSaveData(this.props, taskDataRows);\r\n // Call server\r\n const result = await AppUtils.callService(() => recordService.recordEditSaveSheetData(saveData.obj));\r\n if (!result) return null;\r\n taskDataRow.rowId = result.rowId;\r\n obj.props.onRowSaved(taskDataRow, result.rowId);\r\n return result;\r\n };\r\n\r\n onRecordUserSheetDataRowDialogOk = async (taskDataRow: ITaskDataRow, rowId: string, closeDialog: boolean) => {\r\n if (!taskDataRow) return;\r\n this.props.onRowSaved(taskDataRow, rowId);\r\n if (!closeDialog) return;\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n };\r\n\r\n onRecordSheetDataRowDialogCancel = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n if (index < 0 || index >= state.items.length) return;\r\n this.setState({\r\n selectedId: state.items[index].id,\r\n item: state.items[index],\r\n selectedItemHasPrevious: index > 0,\r\n selectedItemHasNext: index < state.items.length - 1\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n console.log(props.taskType);\r\n \r\n return (\r\n <>\r\n \r\n }\r\n rightItems={\r\n \r\n }\r\n />\r\n {!!props.isReadOnly &&\r\n {Translations.NewRecordUserMustBeSavedBeforeRowsCanBeAdded}\r\n }\r\n {!props.isReadOnly && !!props.taskType &&\r\n {\r\n return { styleClass: i.class, column: i.field, content: i.title };\r\n })\r\n }}\r\n lines={\r\n state.items.map((dataRow) => {\r\n return {\r\n columns: props.taskType.lineCols.map((i, index) => {\r\n const value = dataRow.getTaskDataRowColListUiValue(i.field, props.taskType);\r\n return {\r\n styleClass: i.class,\r\n column: i.field,\r\n content: index < 0.5\r\n ? this.handleOpen(dataRow.id)}>{value}\r\n : value\r\n };\r\n }),\r\n id: dataRow.id\r\n };\r\n })\r\n }\r\n noDataMessage={Translations.AddRows}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpen}\r\n />\r\n }\r\n {state.showEditDialog &&\r\n List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","// RecordUserTransferredPropertyDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { EditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { IIdTitle, IdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { ConfirmationDialogResult, RecordUserAttachmentCategory } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IRecordEditItemTransferredProperty, RecordEditItemTransferredProperty, RecordEditItemTransferredPropertySave } from \"../../../models/record/recordEditItemTransferredProperty\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport { StoreUtils } from \"../../../models/store/storeUtils\";\r\nimport { DatePicker } from \"../../framework/DateTime/DatePicker\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogButtons } from \"../../framework/Dialog/DialogButtons\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { Autocomplete } from \"../../framework/Form/Autocomplete\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { ModifyUserInfo } from \"../../framework/User/ModifyUserInfo\";\r\nimport { RecordEditAttachmentList } from \"../RecordEditAttachmentList/RecordEditAttachmentList\";\r\n\r\n//RecordUserTransferredPropertyDialog\r\nexport interface IRecordUserTransferredPropertyDialogProp {\r\n classes?: string;\r\n companyId: string;\r\n recordId: string;\r\n userCode: string;\r\n transferredPropertyTypes: string[];\r\n item: IRecordEditItemTransferredProperty;\r\n attachments: IFileAttachment[];\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onCustomSave?: (saveItem: RecordEditItemTransferredPropertySave) => Promise;\r\n onOk: (item: IRecordEditItemTransferredProperty, closeDialog: boolean) => void;\r\n onCancel: () => void;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onAttachmentsRemoved: (ids: string[]) => void;\r\n onAttachmentsAdded: (attachments: IFileAttachment[]) => void;\r\n}\r\n\r\nexport interface IRecordUserTransferredPropertyDialogState {\r\n type: string;\r\n code: string;\r\n description: string;\r\n transferDate: string;\r\n returnDate: string;\r\n transferredPropertyTypes: IIdTitle[];\r\n attachments: IFileAttachment[];\r\n}\r\n\r\nexport class RecordUserTransferredPropertyDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n \r\n getStateFromProps = (props: IRecordUserTransferredPropertyDialogProp): IRecordUserTransferredPropertyDialogState => {\r\n const item = props.item;\r\n const transferredPropertyTypes = props.transferredPropertyTypes.slice(0);\r\n transferredPropertyTypes.sort(Base.strCompare);\r\n return {\r\n type: item.type,\r\n code: item.code,\r\n description: item.description,\r\n transferDate: Base.utcTimeToDateStr(item.transferDate),\r\n returnDate: Base.utcTimeToDateStr(item.returnDate),\r\n transferredPropertyTypes: transferredPropertyTypes.map(i => IdTitle.createIdTitleSimple(i)),\r\n attachments: props.attachments.filter(i => i.subOwnerId === item.id)\r\n };\r\n };\r\n\r\n constructor(props: IRecordUserTransferredPropertyDialogProp) {\r\n super(props);\r\n this.state = this.getStateFromProps(props);\r\n this.orgStateHash = this.getHashFromState(props, this.state);\r\n }\r\n\r\n async componentDidUpdate(prevProps: IRecordUserTransferredPropertyDialogProp, prevState: IRecordUserTransferredPropertyDialogState) {\r\n const props = this.props;\r\n if (prevProps.item.getHash() === props.item.getHash() && EditItem.getHash(prevProps.attachments) === EditItem.getHash(props.attachments)) return;\r\n const state = this.getStateFromProps(props);\r\n this.setState(state);\r\n this.orgStateHash = this.getHashFromState(props, state);\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"transferredPropertyCode\") {\r\n this.setState({ code: value });\r\n } else if (name === \"description\") {\r\n this.setState({ description: value });\r\n }\r\n };\r\n\r\n handleTypeAutoCompleteChange = (value: string) => {\r\n this.setState({ type: value });\r\n };\r\n\r\n dateChange = (transferDate: Date, returnDate: Date) => {\r\n if (!Base.isNullOrUndefined(transferDate) && !Base.isNullOrUndefined(returnDate) && returnDate < transferDate) {\r\n returnDate = transferDate;\r\n }\r\n const transferDateStr = Base.utcTimeToDateStr(transferDate.getTime());\r\n const returnDateStr = returnDate ? Base.utcTimeToDateStr(returnDate.getTime()) : \"\";\r\n this.setState({\r\n transferDate: transferDateStr,\r\n returnDate: returnDateStr\r\n });\r\n };\r\n\r\n handleTransferDateChange = (value: string) => {\r\n this.setState({ transferDate: value });\r\n };\r\n\r\n handleTransferDateBlur = (value: string) => {\r\n const state = this.state;\r\n this.dateChange(value ? value.toUtcDate() : Base.getNowUtcDate().addDays(-1), state.returnDate ? state.returnDate.toUtcDate() : null);\r\n };\r\n\r\n handleReturnDateChange = (value: string) => {\r\n this.setState({ returnDate: value });\r\n };\r\n\r\n handleReturnDateBlur = (value: string) => {\r\n const state = this.state;\r\n this.dateChange(state.transferDate ? state.transferDate.toUtcDate() : Base.getNowUtcDate(), value ? value.toUtcDate() : null);\r\n };\r\n\r\n getHashFromState = (props: IRecordUserTransferredPropertyDialogProp, state: IRecordUserTransferredPropertyDialogState): string => {\r\n const result = new SaveDataObj();\r\n result.append(\"type\", state.type);\r\n result.append(\"code\", state.code);\r\n result.append(\"description\", state.description);\r\n result.append(\"transferDate\", state.transferDate);\r\n result.append(\"returnDate\", !state.returnDate ? null : state.returnDate);\r\n return result.hash;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.type) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.TypeMustBeDefined));\r\n return resolve(false);\r\n }\r\n if (!state.code) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.TitleMustBeDefined));\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n \r\n getSaveData = (props: IRecordUserTransferredPropertyDialogProp, item: RecordEditItemTransferredPropertySave): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.recordId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"userCode\", props.userCode);\r\n result.append(\"transferredProperty\", item);\r\n return result;\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const state = this.state;\r\n const props = this.props;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n // Set data\r\n const item = new RecordEditItemTransferredProperty(this.props.item);\r\n item.type = state.type;\r\n item.code = state.code;\r\n item.description = state.description;\r\n item.transferDate = state.transferDate.toUtcDate().getTime();\r\n item.returnDate = state.returnDate ? state.returnDate.toUtcDate().getTime() : null;\r\n if (props.onCustomSave) {\r\n const customResult = await props.onCustomSave(new RecordEditItemTransferredPropertySave(item));\r\n if (!customResult) return null;\r\n return item;\r\n }\r\n const saveData = this.getSaveData(this.props, new RecordEditItemTransferredPropertySave(item));\r\n // Call server\r\n const result = await AppUtils.callService(() => recordService.recordEditSaveTransferredProperty(saveData.obj));\r\n if (!result) return null;\r\n this.orgStateHash = this.getHashFromState(this.props, this.state);\r\n item.id = result.id;\r\n item.rowId = result.rowId;\r\n item.modifyUser = StoreUtils.getNowModifyUser();\r\n return item;\r\n };\r\n\r\n saveDialog = async (close: boolean) => {\r\n const result = await this.saveToDb();\r\n if (result) {\r\n this.props.onOk(result, close);\r\n }\r\n return result;\r\n };\r\n\r\n handleSave = async (): Promise => {\r\n return await this.saveDialog(true);\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getHashFromState(props, state), this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut(this.getHashFromState(props, this.state), this.orgStateHash, async () => !!await this.saveDialog(false), null);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const isNew = props.item.isNew();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!isNew &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {!!props.onAttachmentsAdded &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}/>\r\n );\r\n }\r\n}","// RecordEditTransferredPropertyList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Alert } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { EditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IRecordEditItemTransferredProperty, RecordEditItemTransferredProperty } from \"../../../models/record/recordEditItemTransferredProperty\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListIconButtonsItem } from \"../../framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { RecordEditListFirstCol } from \"../RecordEditListFirstCol/RecordEditListFirstCol\";\r\nimport { RecordUserTransferredPropertyDialog } from \"../RecordUserTransferredPropertyDialog/RecordUserTransferredPropertyDialog\";\r\n\r\n// RecordEditTransferredPropertyList\r\nexport interface IRecordEditTransferredPropertyListProp {\r\n isReadOnly: boolean;\r\n companyId: string;\r\n recordId: string;\r\n userCode: string;\r\n transferredPropertyTypes: string[];\r\n items: IRecordEditItemTransferredProperty[];\r\n attachments: IFileAttachment[];\r\n onRemoved: (ids: string[]) => void;\r\n onSaved: (employment: IRecordEditItemTransferredProperty) => void;\r\n onAttachmentsRemoved: (ids: string[]) => void;\r\n onAttachmentsAdded: (attachments: IFileAttachment[]) => void;\r\n}\r\n\r\ninterface IRecordEditTransferredPropertyListState {\r\n // List\r\n isLoading: boolean;\r\n items: IRecordEditItemTransferredProperty[];\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n selectedId: string;\r\n checkedIds: string[];\r\n selectedItemHasPrevious: boolean;\r\n selectedItemHasNext: boolean;\r\n transferredPropertyTypes: string[];\r\n\r\n // Dialog\r\n item: IRecordEditItemTransferredProperty;\r\n showEditDialog: boolean;\r\n}\r\n\r\nexport class RecordEditTransferredPropertyList extends React.Component {\r\n getFilteredList = (filter: string, column: string, asc: boolean): IRecordEditItemTransferredProperty[] => {\r\n const props = this.props;\r\n let result = props.items ? props.items.slice(0) : [];\r\n if (filter) {\r\n const lowFilter = filter.toLowerCase();\r\n result = result.filter(i => i.type.toLowerCase().indexOf(lowFilter) > -1 || i.code.toLowerCase().indexOf(lowFilter) > -1 || i.description.toLowerCase().indexOf(lowFilter) > -1);\r\n }\r\n RecordEditItemTransferredProperty.sortRecordEditItemTransferredProperties(result, column, asc);\r\n return result;\r\n };\r\n\r\n constructor(props: IRecordEditTransferredPropertyListProp) {\r\n super(props);\r\n const items = this.getFilteredList(\"\", \"returnDate\", false);\r\n this.state = {\r\n isLoading: false,\r\n items,\r\n filter: \"\",\r\n sortColumn: \"returnDate\",\r\n sortOrderIsAsc: false,\r\n selectedId: null,\r\n checkedIds: [],\r\n selectedItemHasPrevious: false,\r\n selectedItemHasNext: false,\r\n item: null,\r\n showEditDialog: false,\r\n transferredPropertyTypes: Base.getUniqueStringItems(props.transferredPropertyTypes.concat(props.items.map(i => i.type).filter(i => !!i)))\r\n };\r\n }\r\n\r\n filteredList = (filter: string, column: string, asc: boolean) => {\r\n this.setState({\r\n filter,\r\n sortColumn: column,\r\n sortOrderIsAsc: asc,\r\n items: this.getFilteredList(filter, column, asc)\r\n });\r\n };\r\n\r\n componentDidUpdate(prevProps: IRecordEditTransferredPropertyListProp, prevState: IRecordEditTransferredPropertyListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (EditItem.getHash(prevProps.items) === EditItem.getHash(props.items)) return;\r\n this.filteredList(state.filter, state.sortColumn, state.sortOrderIsAsc);\r\n this.setState({\r\n transferredPropertyTypes: Base.getUniqueStringItems(props.transferredPropertyTypes.concat(props.items.map(i => i.type).filter(i => !!i)))\r\n });\r\n };\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.filteredList(filter, state.sortColumn, state.sortOrderIsAsc);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.filteredList(state.filter, sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n getRemoveSaveData = (props: IRecordEditTransferredPropertyListProp, recordEmploymentIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.recordId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"userCode\", props.userCode);\r\n result.append(\"ids\", recordEmploymentIds);\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const obj = this;\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n if (selectedIds.length < 1) return;\r\n const item = state.items.find(i => i.id === selectedIds[0]);\r\n if (!item) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveRecordUserTransferredPropertyParameter, item.code), false) === ConfirmationDialogResult.Yes) {\r\n const saveData = this.getRemoveSaveData(this.props, selectedIds);\r\n // Call server\r\n const result = await AppUtils.callService(() => recordService.recordEditRemoveTransferredProperties(saveData.obj));\r\n if (!result) return;\r\n obj.props.onRemoved(selectedIds);\r\n }\r\n };\r\n \r\n handleAdd = () => {\r\n const editItem = new RecordEditItemTransferredProperty();\r\n editItem.id = Base.getGuid();\r\n editItem.transferDate = Base.getNowUtcDate().getTime();\r\n this.setState({\r\n item: editItem,\r\n showEditDialog: true\r\n });\r\n };\r\n\r\n handleOpen = (id: string) => {\r\n if (!id) return;\r\n const state = this.state;\r\n const index = state.items.findIndex(i => i.id === id);\r\n if (index < 0) return;\r\n this.setState({\r\n selectedId: id,\r\n item: state.items[index],\r\n showEditDialog: true,\r\n selectedItemHasPrevious: index > 0,\r\n selectedItemHasNext: index < state.items.length - 1\r\n });\r\n };\r\n\r\n onRecordUserEmploymentDialogOk = async (item: IRecordEditItemTransferredProperty, closeDialog: boolean) => {\r\n if (!item) return;\r\n this.props.onSaved(item);\r\n if (!closeDialog) return;\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n };\r\n\r\n onRecordUserEmploymentDialogCancel = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n if (index < 0 || index >= state.items.length) return;\r\n this.setState({\r\n selectedId: state.items[index].id,\r\n item: state.items[index],\r\n selectedItemHasPrevious: index > 0,\r\n selectedItemHasNext: index < state.items.length - 1\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n }\r\n rightItems={\r\n \r\n }\r\n />\r\n {!!props.isReadOnly &&\r\n {Translations.NewRecordUserMustBeSavedBeforeTransferredPropertiesCanBeAdded}\r\n }\r\n {!props.isReadOnly &&\r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 2,\r\n content:\r\n \r\n },\r\n { size: 2, content: item.code },\r\n { size: 4, content: item.description },\r\n { size: 2, content: Base.utcTimeToDateStr(item.transferDate) },\r\n { size: 2, content: Base.utcTimeToDateStr(item.returnDate) }\r\n ],\r\n id: item.id\r\n };\r\n })\r\n }\r\n noDataMessage={Translations.AddTransferredProperties}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpen}\r\n />\r\n }\r\n {state.showEditDialog &&\r\n List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n onAttachmentsRemoved={props.onAttachmentsRemoved}\r\n onAttachmentsAdded={props.onAttachmentsAdded}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","// RecordEdit - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Grid } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { FileAttachment, IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { ConfirmationDialogResult, RecordEmployeeType, RecordUserAttachmentCategory } from \"ui/Scripts/source/models/enums\";\r\nimport { IRecordFurtherEducationGroupNode } from \"ui/Scripts/source/models/recordFurtherEducationGroup/recordFurtherEducationGroupNode\";\r\nimport { ITaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { SaveAttachmentBase64 } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/saveAttachmentBase64\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IRecordEdit } from \"../../../models/record/recordEdit\";\r\nimport { IRecordEditItem } from \"../../../models/record/recordEditItem\";\r\nimport { IRecordEditItemEmployment } from \"../../../models/record/recordEditItemEmployment\";\r\nimport { IRecordEditItemFamiliarization } from \"../../../models/record/recordEditItemFamiliarization\";\r\nimport { IRecordEditItemFurtherEducation, RecordEditItemFurtherEducation } from \"../../../models/record/recordEditItemFurtherEducation\";\r\nimport { IRecordEditItemQualification, RecordEditItemQualification } from \"../../../models/record/recordEditItemQualification\";\r\nimport { IRecordEditItemTransferredProperty } from \"../../../models/record/recordEditItemTransferredProperty\";\r\nimport { IRecordEducationListItem } from \"../../../models/recordEducation/recordEducationListItem\";\r\nimport { IRecordFamiliarizationListItem } from \"../../../models/recordFamiliarization/recordFamiliarizationListItem\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { IUserListItem } from \"../../../models/user/userListItem\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { SelectUnitDialog } from \"../../framework/Unit/SelectUnitDialog\";\r\nimport { SelectUserDialog } from \"../../user/SelectUserDialog/SelectUserDialog\";\r\nimport { UserDialogMenuItem, UserEditDialog } from \"../../user/UserEditDialog/UserEditDialog\";\r\nimport { RecordEditAttachmentList } from \"../RecordEditAttachmentList/RecordEditAttachmentList\";\r\nimport { RecordEditAttachmentSubList } from \"../RecordEditAttachmentSubList/RecordEditAttachmentSubList\";\r\nimport { RecordEditBasicInformation } from \"../RecordEditBasicInformation/RecordEditBasicInformation\";\r\nimport { RecordEditEducation } from \"../RecordEditEducation\";\r\nimport { RecordEditEmployment } from \"../RecordEditEmployment\";\r\nimport { RecordEditFamiliarizationList } from \"../RecordEditFamiliarizationList/RecordEditFamiliarizationList\";\r\nimport { RecordEditLogList } from \"../RecordEditLogList\";\r\nimport { RecordEditNextOfKin } from \"../RecordEditNextOfKin/RecordEditNextOfKin\";\r\nimport { RecordEditQualificationList } from \"../RecordEditQualificationList/RecordEditQualificationList\";\r\nimport { RecordEditSheetDataRowList } from \"../RecordEditSheetDataRowList\";\r\nimport { RecordEditTransferredPropertyList } from \"../RecordEditTransferredPropertyList/RecordEditTransferredPropertyList\";\r\nimport { DialogSectionCard } from \"../../framework/Dialog/DialogSectionCard\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum RecordEditViewMode {\r\n None = \"\",\r\n General = \"1\",\r\n Familiarization = \"2\",\r\n Education = \"3\",\r\n Employment = \"4\",\r\n NextOfKin = \"5\",\r\n Salary = \"6\",\r\n Attachments = \"7\",\r\n TransferredProperty = \"8\",\r\n Log = \"9\",\r\n Qualifications = \"10\",\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n//RecordEdit\r\nexport interface IRecordEditProp {\r\n sessionState: ISessionState;\r\n recordEdit?: IRecordEdit;\r\n companyId: string;\r\n recordId: string;\r\n onDialog: boolean;\r\n viewMode: RecordEditViewMode;\r\n onRecordLoaded?: (record: IRecordEditItem) => void;\r\n onRefreshSessionState: () => void;\r\n onAfterSave?: (closeDialog: boolean) => void;\r\n onEmploymentSaved?: () => void;\r\n}\r\n\r\nexport interface IRecordEditState {\r\n isLoading: boolean;\r\n recordDataWasModified: boolean;\r\n canReadUsers: boolean;\r\n canEditUsers: boolean;\r\n canClearUnit: boolean;\r\n canArchiveAndRemove: boolean;\r\n record: IRecordEditItem;\r\n pictureFile: IFileAttachment;\r\n copyPictureFromUser: boolean;\r\n resetPicture: boolean;\r\n units: IIdTitleNode[];\r\n workShiftNames: string[];\r\n // General\r\n id: string;\r\n rowId: string;\r\n unitId: string;\r\n unitCode: string;\r\n userId: string;\r\n userCode: string;\r\n firstName: string;\r\n middleName: string;\r\n lastName: string;\r\n picture: string;\r\n birthDate: string;\r\n postalAddress: string;\r\n postalCode: string;\r\n city: string;\r\n phone: string;\r\n email: string;\r\n employeeType: RecordEmployeeType;\r\n ibanNumber: string;\r\n bicCode: string;\r\n taxNumber: string;\r\n driversLicenseType: string;\r\n workShiftName: string;\r\n comment: string;\r\n orgActiveState: number;\r\n activeState: number;\r\n personalIdentityCode: string;\r\n identifier: string;\r\n nextOfKinFirstName: string;\r\n nextOfKinLastName: string;\r\n nextOfKinPostalAddress: string;\r\n nextOfKinPostalCode: string;\r\n nextOfKinCity: string;\r\n nextOfKinPhone: string;\r\n nextOfKinEmail: string;\r\n showSelectUserDialog: boolean;\r\n showUserDialog: boolean;\r\n userDialogUserId: string;\r\n userDialogDefaultMenuItem: UserDialogMenuItem;\r\n showSelectUnitDialog: boolean;\r\n // Familiarization\r\n familiarizations: IRecordFamiliarizationListItem[];\r\n recordFamiliarizations: IRecordEditItemFamiliarization[];\r\n familiarizationTrainers: string[];\r\n // Education\r\n basicEducations: IRecordEducationListItem[];\r\n //furtherEducations: IIdTitleNode[];\r\n furtherEducationGroups: IRecordFurtherEducationGroupNode[];\r\n basicEducationId: string;\r\n recordFurtherEducations: IRecordEditItemFurtherEducation[];\r\n // Qualification\r\n recordQualifications: IRecordEditItemQualification[];\r\n // Employment\r\n jobTitles: string[];\r\n recordEmployments: IRecordEditItemEmployment[];\r\n // TransferredProperty\r\n transferredPropertyTypes: string[];\r\n recordTransferredProperties: IRecordEditItemTransferredProperty[];\r\n // Attachments\r\n attachments: IFileAttachment[];\r\n // Salary\r\n sheetDataRows: ITaskDataRow[];\r\n taskType: ITaskEditTypeItem;\r\n}\r\n\r\nexport class RecordEdit extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n getUsedStoragePercent = (usedFileStorageQuota: number, fileStorageQuota: number): number => {\r\n if (!usedFileStorageQuota || !fileStorageQuota) return 0;\r\n return usedFileStorageQuota > 0 ? Math.min(100, (usedFileStorageQuota / fileStorageQuota) * 100) : 0;\r\n };\r\n \r\n getStateFromRecordEdit = (oldState: IRecordEditState, recordEdit?: IRecordEdit) => {\r\n const record = recordEdit.record;\r\n //const selectedUnitId = this.state.selectedUnitModuleNode?.id;\r\n return {\r\n ...oldState,\r\n record,\r\n pictureFile: null,\r\n resetPicture: !record.picture,\r\n units: recordEdit.units,\r\n canReadUsers: recordEdit.canReadUsers,\r\n canEditUsers: recordEdit.canEditUsers,\r\n canClearUnit: recordEdit.canClearUnit,\r\n canArchiveAndRemove: recordEdit.canArchiveAndRemove,\r\n workShiftNames: recordEdit.workShiftNames,\r\n // General\r\n id: record.id,\r\n rowId: record.rowId,\r\n unitId: record.unitId,\r\n unitCode: record.unitCode,\r\n userId: record.userId,\r\n userCode: record.userCode,\r\n firstName: record.firstName,\r\n middleName: record.middleName,\r\n lastName: record.lastName,\r\n picture: record.picture,\r\n birthDate: Base.utcTimeToDateStr(record.birthDate),\r\n postalAddress: record.postalAddress,\r\n postalCode: record.postalCode,\r\n city: record.city,\r\n phone: record.phone,\r\n email: record.email,\r\n employeeType: record.employeeType,\r\n ibanNumber: record.ibanNumber,\r\n bicCode: record.bicCode,\r\n taxNumber: record.taxNumber,\r\n driversLicenseType: record.driversLicenseType,\r\n workShiftName: record.workShiftName,\r\n comment: record.comment,\r\n orgActiveState: record.activeState,\r\n activeState: record.activeState,\r\n personalIdentityCode: record.personalIdentityCode,\r\n identifier: record.identifier,\r\n nextOfKinFirstName: record.nextOfKinFirstName,\r\n nextOfKinLastName: record.nextOfKinLastName,\r\n nextOfKinPostalAddress: record.nextOfKinPostalAddress,\r\n nextOfKinPostalCode: record.nextOfKinPostalCode,\r\n nextOfKinCity: record.nextOfKinCity,\r\n nextOfKinPhone: record.nextOfKinPhone,\r\n nextOfKinEmail: record.nextOfKinEmail,\r\n // Education\r\n basicEducations: recordEdit.basicEducations,\r\n furtherEducationGroups: recordEdit.furtherEducationGroups,\r\n //furtherEducations: RecordEdit.getFurtherEducations(recordEdit.furtherEducationGroups),\r\n basicEducationId: record.basicEducationId,\r\n recordFurtherEducations: record.furtherEducations,\r\n // Familiarization\r\n familiarizations: recordEdit.familiarizations,\r\n recordFamiliarizations: record.familiarizations,\r\n familiarizationTrainers: recordEdit.familiarizationTrainers,\r\n // Qualification\r\n recordQualifications: record.qualifications,\r\n // Employment\r\n jobTitles: recordEdit.jobTitles,\r\n recordEmployments: record.employments,\r\n // TransferredProperty\r\n transferredPropertyTypes: recordEdit.transferredPropertyTypes,\r\n recordTransferredProperties: record.transferredProperties,\r\n // Attachments\r\n attachments: recordEdit.attachments,\r\n // Salary\r\n sheetDataRows: record.sheetDataRows,\r\n taskType: recordEdit.taskType\r\n };\r\n };\r\n\r\n constructor(props: IRecordEditProp) {\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n recordDataWasModified: false,\r\n canReadUsers: false,\r\n canEditUsers: false,\r\n canClearUnit: false,\r\n canArchiveAndRemove: false,\r\n record: null,\r\n pictureFile: null,\r\n copyPictureFromUser: false,\r\n resetPicture: false,\r\n units: [],\r\n workShiftNames: [],\r\n // General\r\n id: \"\",\r\n rowId: \"\",\r\n unitId: \"\",\r\n unitCode: \"\",\r\n userId: \"\",\r\n userCode: \"\",\r\n firstName: \"\",\r\n middleName: \"\",\r\n lastName: \"\",\r\n picture: \"\",\r\n birthDate: \"\",\r\n postalAddress: \"\",\r\n postalCode: \"\",\r\n city: \"\",\r\n phone: \"\",\r\n email: \"\",\r\n employeeType: RecordEmployeeType.Employee,\r\n ibanNumber: \"\",\r\n bicCode: \"\",\r\n taxNumber: \"\",\r\n driversLicenseType: \"\",\r\n workShiftName: \"\",\r\n comment: \"\",\r\n nextOfKinFirstName: \"\",\r\n nextOfKinLastName: \"\",\r\n nextOfKinPostalAddress: \"\",\r\n nextOfKinPostalCode: \"\",\r\n nextOfKinCity: \"\",\r\n nextOfKinPhone: \"\",\r\n nextOfKinEmail: \"\",\r\n orgActiveState: 1,\r\n activeState: 1,\r\n personalIdentityCode: \"\",\r\n identifier: \"\",\r\n showSelectUserDialog: false,\r\n showUserDialog: false,\r\n userDialogUserId: \"\",\r\n userDialogDefaultMenuItem: UserDialogMenuItem.General,\r\n showSelectUnitDialog: false,\r\n // Attachments\r\n attachments: [],\r\n // Education\r\n basicEducations: [],\r\n furtherEducationGroups: [],\r\n basicEducationId: \"\",\r\n recordFurtherEducations: [],\r\n // Familiarization\r\n familiarizations: [],\r\n recordFamiliarizations: [],\r\n familiarizationTrainers: [],\r\n // Qualification\r\n recordQualifications: [],\r\n // Employment\r\n jobTitles: [],\r\n recordEmployments: [],\r\n // TransferredProperty\r\n transferredPropertyTypes: [],\r\n recordTransferredProperties: [],\r\n // Salary\r\n sheetDataRows: [],\r\n taskType: null\r\n };\r\n if (!props.recordEdit) return;\r\n this.state = this.getStateFromRecordEdit(this.state, props.recordEdit);\r\n this.updateStateHash();\r\n }\r\n\r\n loadRecord = async () => {\r\n const props = this.props;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => recordService.getRecordEdit(props.recordId, props.companyId), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const state = this.getStateFromRecordEdit(this.state, result);\r\n this.setState(state);\r\n await this.updateStateHash();\r\n if (props.onRecordLoaded) {\r\n props.onRecordLoaded(result.record);\r\n }\r\n };\r\n\r\n getRecord = (): IRecordEditItem => {\r\n return this.state.record;\r\n };\r\n \r\n getRecordDataWasModified = (): boolean => {\r\n return this.state.recordDataWasModified;\r\n };\r\n \r\n getRecordName = (): string => {\r\n const state = this.state;\r\n return state.record ? state.record.getName() : \"\";\r\n };\r\n\r\n cancel = async (closeDialog: boolean, doSave: boolean = true): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel((await this.getSaveDataFromState(props, state)).hash, this.orgStateHash, null);\r\n if (!doSave && cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb(closeDialog)) return null;\r\n }\r\n return cancelResult;\r\n };\r\n\r\n canNavigateOut = async (): Promise => {\r\n const cancelResult = await this.cancel(true);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return Base.getPromiseResult(false);\r\n return Base.getPromiseResult(true);\r\n };\r\n\r\n componentDidMount(): void {\r\n const props = this.props;\r\n if (props.recordEdit) {\r\n if (props.onRecordLoaded) {\r\n props.onRecordLoaded(props.recordEdit.record);\r\n }\r\n return;\r\n }\r\n this.loadRecord();\r\n }\r\n\r\n async componentDidUpdate(prevProps: IRecordEditProp, prevState: IRecordEditState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if (prevProps.recordId === props.recordId) return;\r\n const cancelResult = await AppUtils.cancel((await this.getSaveDataFromState(props, state)).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb(false)) return;\r\n }\r\n this.loadRecord();\r\n }\r\n\r\n handleChange = (name: string, value: string) => {\r\n if (!name) return;\r\n // General\r\n if (name === \"firstName\") {\r\n this.setState({ firstName: value });\r\n } else if (name === \"middleName\") {\r\n this.setState({ middleName: value });\r\n } else if (name === \"lastName\") {\r\n this.setState({ lastName: value });\r\n } else if (name === \"postalAddress\") {\r\n this.setState({ postalAddress: value });\r\n } else if (name === \"postalCode\") {\r\n this.setState({ postalCode: value });\r\n } else if (name === \"city\") {\r\n this.setState({ city: value });\r\n } else if (name === \"phone\") {\r\n this.setState({ phone: value });\r\n } else if (name === \"email\") {\r\n this.setState({ email: value });\r\n } else if (name === \"birthDate\") {\r\n this.setState({ birthDate: value });\r\n } else if (name === \"taxNumber\") {\r\n this.setState({ taxNumber: value });\r\n } else if (name === \"ibanNumber\") {\r\n this.setState({ ibanNumber: value });\r\n } else if (name === \"bicCode\") {\r\n this.setState({ bicCode: value });\r\n } else if (name === \"driversLicenseType\") {\r\n this.setState({ driversLicenseType: value });\r\n } else if (name === \"employeeType\") {\r\n this.setState({ employeeType: value.toInteger() });\r\n } else if (name === \"workShiftName\") {\r\n this.setState({ workShiftName: value });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n } else if (name === \"activeState\") {\r\n this.setState({ activeState: value.toInteger() });\r\n } else if (name === \"personalIdentityCode\") {\r\n this.setState({ personalIdentityCode: value });\r\n } else if (name === \"identifier\") {\r\n this.setState({ identifier: value });\r\n // Education\r\n } else if (name === \"basicEducationId\") {\r\n this.setState({ basicEducationId: value });\r\n // NextOfKin\r\n } else if (name === \"nextOfKinFirstName\") {\r\n this.setState({ nextOfKinFirstName: value });\r\n } else if (name === \"nextOfKinLastName\") {\r\n this.setState({ nextOfKinLastName: value });\r\n } else if (name === \"nextOfKinPostalAddress\") {\r\n this.setState({ nextOfKinPostalAddress: value });\r\n } else if (name === \"nextOfKinPostalCode\") {\r\n this.setState({ nextOfKinPostalCode: value });\r\n } else if (name === \"nextOfKinCity\") {\r\n this.setState({ nextOfKinCity: value });\r\n } else if (name === \"nextOfKinPhone\") {\r\n this.setState({ nextOfKinPhone: value });\r\n } else if (name === \"nextOfKinEmail\") {\r\n this.setState({ nextOfKinEmail: value });\r\n }\r\n };\r\n\r\n handleBlur = (name: string, value: string) => {\r\n if (!name) return;\r\n if (name === \"birthDate\") {\r\n this.setState({ birthDate: value ? Base.utcTimeToDateStr(value.toUtcDate().getTime()) : \"\" });\r\n } else if (name === \"ibanNumber\") {\r\n this.setState({ ibanNumber: Base.formatIbanNumber(value) });\r\n }\r\n };\r\n\r\n handleChangePicture = async (file: File) => {\r\n if (!file) return;\r\n const attachment = await FileAttachment.fileToFileAttachment(file, 0);\r\n if (!AppUtils.validateFileAttachment(attachment)) return;\r\n this.setState({\r\n pictureFile: attachment,\r\n resetPicture: false,\r\n picture: attachment.thumbnail\r\n });\r\n };\r\n\r\n handleRemovePicture = () => {\r\n this.setState({\r\n pictureFile: null,\r\n resetPicture: true,\r\n picture: \"\"\r\n });\r\n };\r\n\r\n handleRemoveUser = () => {\r\n this.setState({\r\n userId: \"\",\r\n userCode: \"\"\r\n });\r\n };\r\n\r\n handleRemoveUnit = () => {\r\n this.setState({\r\n unitId: \"\",\r\n unitCode: \"\"\r\n });\r\n };\r\n\r\n // #region Select User\r\n handleSelectUser = () => {\r\n this.setState({\r\n showSelectUserDialog: true\r\n });\r\n };\r\n\r\n onSelectUserDialogOk = async (users: IUserListItem[]) => {\r\n if (!users || users.length < 1) return;\r\n const user = users[0];\r\n if (!user) return;\r\n const pictureFile = user.defaultPictureInUse ? null : await FileAttachment.photoToFileAttachment(user.picture, 0);\r\n this.setState({\r\n showSelectUserDialog: false,\r\n userId: user.id,\r\n userCode: user.code,\r\n firstName: user.firstName,\r\n lastName: user.lastName,\r\n email: user.email,\r\n picture: user.picture,\r\n resetPicture: user.defaultPictureInUse,\r\n pictureFile\r\n });\r\n };\r\n\r\n onSelectUserDialogCancel = () => {\r\n this.setState({\r\n showSelectUserDialog: false\r\n });\r\n };\r\n // #endregion Select User\r\n\r\n // #region User Dialog\r\n handleAddUser = () => {\r\n const state = this.state;\r\n if (!state.firstName) {\r\n AppUtils.showErrorMessage(Translations.FirstNameMustBeDefined);\r\n return;\r\n }\r\n if (!state.lastName) {\r\n AppUtils.showErrorMessage(Translations.LastNameMustBeDefined);\r\n return;\r\n }\r\n this.setState({\r\n showUserDialog: true,\r\n userDialogUserId: Base.emptyGuid,\r\n userDialogDefaultMenuItem: UserDialogMenuItem.General\r\n });\r\n };\r\n\r\n handleEditUser = () => {\r\n const state = this.state;\r\n if (!state.userId) return;\r\n this.setState({\r\n showUserDialog: true,\r\n userDialogUserId: state.userId,\r\n userDialogDefaultMenuItem: UserDialogMenuItem.General\r\n });\r\n };\r\n \r\n handleUserDialogOk = (userId: string, userCode: string) => {\r\n this.setState({\r\n showUserDialog: false,\r\n userId,\r\n userCode\r\n });\r\n };\r\n\r\n handleUserDialogCancel = () => {\r\n this.setState({\r\n showUserDialog: false\r\n });\r\n };\r\n\r\n handleUserDialogNewSaved = (userId: string, userCode: string) => {\r\n this.setState({\r\n showUserDialog: true,\r\n userId,\r\n userCode,\r\n userDialogUserId: userId,\r\n userDialogDefaultMenuItem: UserDialogMenuItem.UserGroups\r\n });\r\n };\r\n // #endregion User Dialog\r\n\r\n // #region Select Unit\r\n handleSelectUnit = () => {\r\n this.setState({\r\n showSelectUnitDialog: true\r\n });\r\n };\r\n\r\n handleSelectUnitDialogOk = async (node: IIdTitleNode) => {\r\n if (!node) return;\r\n this.setState({\r\n showSelectUnitDialog: false,\r\n unitId: node.id,\r\n unitCode: node.title\r\n });\r\n };\r\n\r\n handleSelectUnitDialogCancel = () => {\r\n this.setState({\r\n showSelectUnitDialog: false\r\n });\r\n };\r\n // #endregion Select Unit\r\n\r\n // #region Familiarization\r\n handleFamiliarizationRemoved = (ids: string[]) => {\r\n if (!ids || ids.length < 1) return;\r\n this.setState({\r\n recordFamiliarizations: this.state.recordFamiliarizations.filter(i => ids.indexOf(i.id) < 0),\r\n recordDataWasModified: true\r\n });\r\n };\r\n\r\n handleFamiliarizationSaved = (recordFamiliarization: IRecordEditItemFamiliarization) => {\r\n if (!recordFamiliarization) return;\r\n const recordFamiliarizations = this.state.recordFamiliarizations.filter(i => i.id !== recordFamiliarization.id);\r\n recordFamiliarizations.push(recordFamiliarization);\r\n this.setState({\r\n recordFamiliarizations,\r\n recordDataWasModified: true\r\n });\r\n };\r\n // #endregion Familiarization\r\n\r\n // #region Education\r\n handleFurherEducationRemoved = (ids: string[]) => {\r\n if (!ids || ids.length < 1) return;\r\n const recordFurtherEducations = this.state.recordFurtherEducations.filter(i => ids.indexOf(i.id) < 0);\r\n const recordQualifications = this.state.recordQualifications.slice(0);\r\n RecordEditItemQualification.setFurtherEducationCodes(recordQualifications, this.state.furtherEducationGroups, recordFurtherEducations);\r\n RecordEditItemFurtherEducation.setQaulificationsValidity(recordFurtherEducations, recordQualifications);\r\n this.setState({\r\n recordQualifications,\r\n recordFurtherEducations,\r\n recordDataWasModified: true\r\n });\r\n };\r\n\r\n handleFurherEducationSaved = (recordFurtherEducation: IRecordEditItemFurtherEducation) => {\r\n if (!recordFurtherEducation) return;\r\n const recordFurtherEducations = this.state.recordFurtherEducations.filter(i => i.id !== recordFurtherEducation.id);\r\n recordFurtherEducations.push(recordFurtherEducation);\r\n const recordQualifications = this.state.recordQualifications.slice(0);\r\n RecordEditItemQualification.setFurtherEducationCodes(recordQualifications, this.state.furtherEducationGroups, recordFurtherEducations);\r\n RecordEditItemFurtherEducation.setQaulificationsValidity(recordFurtherEducations, recordQualifications);\r\n this.setState({\r\n recordQualifications,\r\n recordFurtherEducations,\r\n recordDataWasModified: true\r\n });\r\n };\r\n // #endregion Education\r\n\r\n // #region Qualification\r\n handleQualificationRemoved = (ids: string[]) => {\r\n if (!ids || ids.length < 1) return;\r\n const recordQualifications = this.state.recordQualifications.filter(i => ids.indexOf(i.id) < 0);\r\n const recordFurtherEducations = this.state.recordFurtherEducations.slice(0);\r\n RecordEditItemQualification.setFurtherEducationCodes(recordQualifications, this.state.furtherEducationGroups, recordFurtherEducations);\r\n RecordEditItemFurtherEducation.setQaulificationsValidity(recordFurtherEducations, recordQualifications);\r\n this.setState({\r\n recordQualifications,\r\n recordFurtherEducations,\r\n recordDataWasModified: true\r\n });\r\n };\r\n\r\n handleQualificationSaved = (recordQualification: IRecordEditItemQualification) => {\r\n if (!recordQualification) return;\r\n const recordQualifications = this.state.recordQualifications.filter(i => i.id !== recordQualification.id);\r\n recordQualifications.push(recordQualification);\r\n const recordFurtherEducations = this.state.recordFurtherEducations.slice(0);\r\n RecordEditItemQualification.setFurtherEducationCodes(recordQualifications, this.state.furtherEducationGroups, recordFurtherEducations);\r\n RecordEditItemFurtherEducation.setQaulificationsValidity(recordFurtherEducations, recordQualifications);\r\n this.setState({\r\n recordQualifications,\r\n recordFurtherEducations,\r\n recordDataWasModified: true\r\n });\r\n };\r\n // #endregion Qualification\r\n\r\n // #region Employments\r\n handleEmploymentRemoved = (ids: string[]) => {\r\n if (!ids || ids.length < 1) return;\r\n this.setState({\r\n recordEmployments: this.state.recordEmployments.filter(i => ids.indexOf(i.id) < 0),\r\n recordDataWasModified: true\r\n });\r\n };\r\n\r\n handleEmploymentSaved = (employment: IRecordEditItemEmployment) => {\r\n if (!employment) return;\r\n const props = this.props;\r\n const state = this.state;\r\n const recordEmployments = this.state.recordEmployments.filter(i => i.id !== employment.id);\r\n recordEmployments.push(employment);\r\n const jobTitles = state.jobTitles.filter(i => i !== employment.jobTitle);\r\n jobTitles.push(employment.jobTitle);\r\n jobTitles.sort();\r\n this.setState({\r\n jobTitles,\r\n recordEmployments,\r\n recordDataWasModified: true\r\n });\r\n if (!props.onEmploymentSaved) return;\r\n props.onEmploymentSaved();\r\n };\r\n // #endregion Employments\r\n\r\n // #region TransferredProperties\r\n handleTransferredPropertyRemoved = (ids: string[]) => {\r\n if (!ids || ids.length < 1) return;\r\n this.setState({\r\n recordTransferredProperties: this.state.recordTransferredProperties.filter(i => ids.indexOf(i.id) < 0),\r\n recordDataWasModified: true\r\n });\r\n };\r\n\r\n handleTransferredPropertySaved = (item: IRecordEditItemTransferredProperty) => {\r\n if (!item) return;\r\n const recordTransferredProperties = this.state.recordTransferredProperties.filter(i => i.id !== item.id);\r\n recordTransferredProperties.push(item);\r\n this.setState({\r\n recordTransferredProperties,\r\n recordDataWasModified: true\r\n });\r\n };\r\n // #endregion Employments\r\n\r\n // #region SheetData\r\n handleSheetDataRowRemoved = (ids: string[], rowId: string) => {\r\n if (!ids || ids.length < 1) return;\r\n this.setState({\r\n sheetDataRows: this.state.sheetDataRows.filter(i => ids.indexOf(i.id) < 0),\r\n rowId,\r\n recordDataWasModified: true\r\n }, this.updateStateHash);\r\n };\r\n\r\n handleSheetDataRowSaved = (sheetDataRow: ITaskDataRow, rowId: string) => {\r\n if (!sheetDataRow) return;\r\n const sheetDataRows = this.state.sheetDataRows.filter(i => i.id !== sheetDataRow.id);\r\n sheetDataRows.push(sheetDataRow);\r\n this.setState({\r\n sheetDataRows,\r\n rowId,\r\n recordDataWasModified: true\r\n }, this.updateStateHash);\r\n };\r\n // #endregion SheetData\r\n\r\n // #region Attachments\r\n getAttahmentsCount = (): number => {\r\n return this.state.attachments.length;\r\n };\r\n\r\n handleAttachmentsRemoved = (ids: string[]) => {\r\n if (!ids || ids.length < 1) return;\r\n this.setState({\r\n attachments: this.state.attachments.filter(i => ids.indexOf(i.id) < 0),\r\n recordDataWasModified: true\r\n });\r\n };\r\n\r\n handleAttachmentsAdded = (attachments: IFileAttachment[]) => {\r\n if (!attachments || attachments.length < 1) return;\r\n const newAttachments = this.state.attachments.concat(attachments);\r\n FileAttachment.sortFileAttachments(newAttachments);\r\n this.setState({\r\n attachments: newAttachments,\r\n recordDataWasModified: true\r\n });\r\n };\r\n // #endregion Attachments\r\n\r\n getSaveDataFromState = async (props: IRecordEditProp, state: IRecordEditState): Promise => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.id);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"userCode\", state.userCode);\r\n result.append(\"unitId\", !state.unitId ? null : state.unitId);\r\n result.append(\"firstName\", state.firstName);\r\n result.append(\"middleName\", state.middleName);\r\n result.append(\"lastName\", state.lastName);\r\n result.append(\"postalAddress\", state.postalAddress);\r\n result.append(\"postalCode\", state.postalCode);\r\n result.append(\"city\", state.city);\r\n result.append(\"phone\", state.phone);\r\n result.append(\"email\", state.email);\r\n result.append(\"employeeType\", state.employeeType);\r\n result.append(\"birthDate\", !state.birthDate ? null : state.birthDate.toUtcDate().getTime());\r\n result.append(\"ibanNumber\", state.ibanNumber);\r\n result.append(\"bicCode\", state.bicCode);\r\n result.append(\"taxNumber\", state.taxNumber);\r\n result.append(\"comment\", state.comment);\r\n result.append(\"driversLicenseType\", state.driversLicenseType);\r\n result.append(\"workShiftName\", state.workShiftName);\r\n result.append(\"changeActiveState\", props.onDialog && !Base.equalInt(state.activeState, state.orgActiveState));\r\n result.append(\"activeState\", state.activeState);\r\n result.append(\"personalIdentityCode\", state.personalIdentityCode);\r\n result.append(\"identifier\", state.identifier);\r\n result.append(\"nextOfKinFirstName\", state.nextOfKinFirstName);\r\n result.append(\"nextOfKinLastName\", state.nextOfKinLastName);\r\n result.append(\"nextOfKinPostalAddress\", state.nextOfKinPostalAddress);\r\n result.append(\"nextOfKinPostalCode\", state.nextOfKinPostalCode);\r\n result.append(\"nextOfKinCity\", state.nextOfKinCity);\r\n result.append(\"nextOfKinPhone\", state.nextOfKinPhone);\r\n result.append(\"nextOfKinEmail\", state.nextOfKinEmail);\r\n result.append(\"basicEducationId\", !state.basicEducationId ? null : state.basicEducationId);\r\n result.append(\"copyPictureFromUser\", state.copyPictureFromUser);\r\n result.append(\"resetPicture\", state.resetPicture);\r\n if (state.pictureFile) {\r\n result.append(\"pictureAttachments\", await SaveAttachmentBase64.fromFileAttachments([state.pictureFile]));\r\n }\r\n return result;\r\n };\r\n\r\n updateStateHash = async () => {\r\n this.orgStateHash = (await this.getSaveDataFromState(this.props, this.state)).hash;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.firstName) {\r\n AppUtils.showErrorMessage(Translations.FirstNameMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (!state.lastName) {\r\n AppUtils.showErrorMessage(Translations.LastNameMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (!Base.isValidEmailAddress(state.email)) {\r\n AppUtils.showErrorMessage(Translations.EmailAddressMustBeValid);\r\n return resolve(false);\r\n }\r\n if (!!state.bicCode && !Base.isValidFinnishBicCode(state.bicCode)) {\r\n AppUtils.showErrorMessage(String.format(Translations.ParameterIsNotValidBankBICCode, state.bicCode));\r\n return resolve(false);\r\n }\r\n if (!!state.ibanNumber && !Base.isValidIbanNumber(state.ibanNumber)) {\r\n AppUtils.showErrorMessage(String.format(Translations.ParameterIsNotValidAccountIBANNumber, state.ibanNumber));\r\n return resolve(false);\r\n }\r\n if (state.employeeType > 98) {\r\n AppUtils.showErrorMessage(Translations.EmployeeTypeMustBeDefined);\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (closeDialog: boolean): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n const saveData = await this.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = await AppUtils.callService(() => recordService.saveRecordEdit(saveData.obj));\r\n if (!result) return null;\r\n props.onRefreshSessionState();\r\n const newState = {\r\n ...this.state,\r\n id: result.id,\r\n rowId: result.rowId\r\n };\r\n await this.updateStateHash();\r\n this.setState(newState);\r\n if (!props.onDialog) {\r\n await this.loadRecord();\r\n }\r\n if (!props.onAfterSave) return result.id;\r\n props.onAfterSave(closeDialog);\r\n return result.id;\r\n };\r\n\r\n save = async () => {\r\n await this.saveToDb(true);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.record) return null;\r\n const record = state.record;\r\n const isNew = record.isNew();\r\n const unclassifiedAttachments = state.attachments.filter(i => i.category === RecordUserAttachmentCategory.RecordUser);\r\n const familiarizationAttachments = state.attachments.filter(i => i.category === RecordUserAttachmentCategory.Familiarization);\r\n const furtherEducationAttachments = state.attachments.filter(i => i.category === RecordUserAttachmentCategory.FurtherEducation);\r\n const employmentAttachments = state.attachments.filter(i => i.category === RecordUserAttachmentCategory.Employment);\r\n const transferredPropertyAttachments = state.attachments.filter(i => i.category === RecordUserAttachmentCategory.TransferredProperty);\r\n return (\r\n <>\r\n {props.viewMode === RecordEditViewMode.General &&\r\n \r\n }\r\n {props.viewMode === RecordEditViewMode.Familiarization &&\r\n \r\n }\r\n {props.viewMode === RecordEditViewMode.Education &&\r\n \r\n }\r\n {props.viewMode === RecordEditViewMode.Qualifications &&\r\n \r\n }\r\n {props.viewMode === RecordEditViewMode.Employment &&\r\n \r\n }\r\n {props.viewMode === RecordEditViewMode.NextOfKin &&\r\n \r\n }\r\n {props.viewMode === RecordEditViewMode.Salary &&\r\n \r\n }\r\n {props.viewMode === RecordEditViewMode.Attachments &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {familiarizationAttachments.length > 0 &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {furtherEducationAttachments.length > 0 &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n {employmentAttachments.length > 0 &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {transferredPropertyAttachments.length > 0 &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n }\r\n {props.viewMode === RecordEditViewMode.TransferredProperty &&\r\n \r\n }\r\n {props.viewMode === RecordEditViewMode.Log &&\r\n \r\n }\r\n {state.showSelectUserDialog &&\r\n \r\n }\r\n {state.showUserDialog &&\r\n \r\n }\r\n {state.showSelectUnitDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","//RecordEditRemoveSelectTypeDialog\r\n//***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { RecordUserRemoveType } from \"ui/Scripts/source/models/enums\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { FormControlLabel, Grid, Radio } from \"@mui/material\";\r\n\r\n//RecordEditRemoveSelectTypeDialog\r\nexport interface IRecordEditRemoveSelectTypeDialogProps {\r\n classes?: string;\r\n onOk: (removeType: RecordUserRemoveType) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IRecordEditRemoveSelectTypeDialogState {\r\n removeType: RecordUserRemoveType;\r\n}\r\n\r\nexport class RecordEditRemoveSelectTypeDialog extends React.Component {\r\n constructor(props: IRecordEditRemoveSelectTypeDialogProps) {\r\n super(props);\r\n this.state = {\r\n removeType: RecordUserRemoveType.RemoveRecordUser\r\n };\r\n }\r\n\r\n handleChange = (checked: boolean, removeType: RecordUserRemoveType) => {\r\n if (!checked) return;\r\n this.setState({\r\n removeType\r\n });\r\n };\r\n\r\n handleCancel = () => {\r\n this.props.onCancel();\r\n };\r\n\r\n handleOk = async () => {\r\n const state = this.state;\r\n this.props.onOk(state.removeType);\r\n };\r\n\r\n render() {\r\n const state = this.state;\r\n return (\r\n \r\n \r\n \r\n {\r\n this.handleChange(checked, RecordUserRemoveType.RemoveRecordUser);\r\n }}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n this.handleChange(checked, RecordUserRemoveType.RemoveRecordUserAndUserExpired);\r\n }}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n this.handleChange(checked, RecordUserRemoveType.RemoveRecordUserAndUser);\r\n }}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n buttons={[\r\n { title: Translations.OK, variant: \"confirmation\", onClick: this.handleOk },\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: this.handleCancel },\r\n ]}\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","// RecordEditDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { removeConfirmationWord } from \"ui/Scripts/source/models/consts\";\r\nimport { ConfirmationDialogResult, RecordUserRemoveType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IRecordEdit } from \"../../../models/record/recordEdit\";\r\nimport { IRecordEditItem } from \"../../../models/record/recordEditItem\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogButtons } from \"../../framework/Dialog/DialogButtons\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { DialogTabs } from \"../../framework/Dialog/DialogTabs\";\r\nimport { RecordEdit as RecordEditView, RecordEditViewMode } from \"../RecordEdit\";\r\nimport { RecordEditRemoveSelectTypeDialog } from \"../RecordEditRemoveSelectTypeDialog/RecordEditRemoveSelectTypeDialog\";\r\n\r\n//RecordEditDialog\r\nexport interface IRecordEditDialogProp {\r\n sessionState: ISessionState;\r\n companyId: string;\r\n recordId: string;\r\n classes?: string;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n defaultMenuItem: RecordEditViewMode;\r\n hasSheet: boolean;\r\n onOk: () => void;\r\n onCancel: (listRefreshNeeded: boolean) => void;\r\n onRefreshList: () => Promise;\r\n onNewSaved: (recordId: string) => void;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onRefreshSessionState: () => void;\r\n onEmploymentSaved: () => void;\r\n}\r\n\r\nexport interface IRecordEditDialogState {\r\n recordEditViewMode: RecordEditViewMode;\r\n recordEdit: IRecordEdit;\r\n record: IRecordEditItem;\r\n showRemoveTypeDialog: boolean;\r\n}\r\n\r\nexport class RecordEditDialog extends React.Component {\r\n private recordEditViewRef = React.createRef();\r\n\r\n constructor(props: IRecordEditDialogProp) {\r\n super(props);\r\n this.state = {\r\n recordEditViewMode: Base.isNullOrUndefined(props.defaultMenuItem) ? RecordEditViewMode.General : props.defaultMenuItem,\r\n recordEdit: null,\r\n record: null,\r\n showRemoveTypeDialog: false\r\n };\r\n }\r\n\r\n loadRecord = async () => {\r\n const props = this.props;\r\n const result = await AppUtils.callService(() => recordService.getRecordEdit(props.recordId, props.companyId), false);\r\n if (!result) return;\r\n this.setState({\r\n recordEdit: result,\r\n record: result.record\r\n });\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadRecord();\r\n }\r\n\r\n async componentDidUpdate(prevProps: IRecordEditDialogProp, prevState: IRecordEditDialogState): Promise {\r\n const props = this.props;\r\n const prevDefaultMenuItem = Base.isNullOrUndefined(prevProps.defaultMenuItem) ? RecordEditViewMode.General : prevProps.defaultMenuItem;\r\n const defaultMenuItem = Base.isNullOrUndefined(props.defaultMenuItem) ? RecordEditViewMode.General : props.defaultMenuItem;\r\n if (prevDefaultMenuItem === defaultMenuItem) return;\r\n this.setState({\r\n recordEditViewMode: defaultMenuItem\r\n });\r\n }\r\n\r\n handleToggleActiveMenuItem = (recordEditViewMode: RecordEditViewMode) => {\r\n this.setState({ recordEditViewMode });\r\n };\r\n\r\n handleRecordLoaded = (record: IRecordEditItem) => {\r\n this.setState({\r\n record\r\n });\r\n };\r\n\r\n getRecordDataWasModified = (): boolean => {\r\n return this.recordEditViewRef && this.recordEditViewRef.current && this.recordEditViewRef.current.getRecordDataWasModified();\r\n };\r\n \r\n getAttahmentsCount = (): number => {\r\n if (this.recordEditViewRef && this.recordEditViewRef.current) {\r\n return this.recordEditViewRef.current.getAttahmentsCount();\r\n } else {\r\n return 0;\r\n }\r\n };\r\n\r\n handlePrint = async () => {\r\n const state = this.state;\r\n if (!state.record) return;\r\n const fileName = await AppUtils.callService(() => recordService.getRecordPrint(state.record.id, this.props.companyId));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.PrintParameterDownloaded, fileName));\r\n };\r\n\r\n handleSave = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const isNew = state.record.isNew();\r\n if (!this.recordEditViewRef || !this.recordEditViewRef.current) return;\r\n const savedRecordId = await this.recordEditViewRef.current.saveToDb(false);\r\n if (!savedRecordId) return;\r\n if (!isNew) {\r\n props.onOk();\r\n } else {\r\n props.onNewSaved(savedRecordId);\r\n }\r\n };\r\n\r\n remove = async (removeType: RecordUserRemoveType) => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.record || state.record.isNew()) return;\r\n // Call server\r\n const result = await AppUtils.callService(() => recordService.removeRecord(state.record.id, props.companyId, removeType));\r\n if (!result) return;\r\n this.setState({\r\n showRemoveTypeDialog: false\r\n });\r\n props.onCancel(true);\r\n };\r\n\r\n handleUserEditRemoveSelectTypeDialogOk = async (removeType: RecordUserRemoveType) => {\r\n await this.remove(removeType);\r\n };\r\n\r\n handleUserEditRemoveSelectTypeDialogCancel = () => {\r\n this.setState({\r\n showRemoveTypeDialog: false\r\n });\r\n };\r\n\r\n handleRemove = async () => {\r\n const state = this.state;\r\n if (!state.record || state.record.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveRecordUserParameter, state.record.getName()), false, removeConfirmationWord) === ConfirmationDialogResult.Yes) {\r\n if (state.record.userCode) {\r\n this.setState({\r\n showRemoveTypeDialog: true\r\n });\r\n } else {\r\n await this.remove(RecordUserRemoveType.RemoveRecordUser);\r\n }\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n if (this.recordEditViewRef && this.recordEditViewRef.current) {\r\n const cancelResult = await await this.recordEditViewRef.current.cancel(false, false);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel(this.getRecordDataWasModified());\r\n }\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n if (!this.recordEditViewRef || !this.recordEditViewRef.current) return false;\r\n const cancelResult = await this.recordEditViewRef.current.cancel(false);\r\n if (Base.isNullOrUndefined(cancelResult)) return false;\r\n if (cancelResult) {\r\n await props.onRefreshList();\r\n }\r\n return true;\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n handleAfterSave = (closeDialog: boolean) => {\r\n if (!closeDialog) return;\r\n this.props.onOk();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.recordEdit) return null;\r\n const record = state.record;\r\n const isNew = !record || record.isNew();\r\n const attachmentsCount = this.getAttahmentsCount();\r\n return (\r\n \r\n }\r\n body={\r\n <>\r\n \r\n {state.showRemoveTypeDialog &&\r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","// RecordEditNewRecordDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { FormControlLabel, Grid, MenuItem, Radio, RadioGroup, Select, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { CheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/CheckboxDropdown\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { FileAttachment, IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { ConfirmationDialogResult, EnumHelper, RecordEmployeeType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { SaveAttachmentBase64 } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/saveAttachmentBase64\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IRecordEditNew } from \"../../../models/record/recordEditNew\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport * as userService from \"../../../models/services/userService\";\r\nimport { IUserListItem } from \"../../../models/user/userListItem\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { TextFieldWithButtonGroup } from \"../../framework/Form/TextFieldWithButtonGroup\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { SelectUnitDialog } from \"../../framework/Unit/SelectUnitDialog\";\r\nimport { SelectUserDialog } from \"../../user/SelectUserDialog/SelectUserDialog\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nconst enum NewRecordType {\r\n NewRecord = \"1\",\r\n NewRecordAndNewUser = \"2\",\r\n NewRecordAndExistingUser = \"3\"\r\n}\r\n\r\nconst enum NewRecordDialogPage {\r\n Selection = \"1\",\r\n NewRecord = \"2\",\r\n NewRecordAndNewUser = \"3\",\r\n NewRecordAndExistingUser = \"4\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n//RecordEditNewRecordDialog\r\nexport interface IRecordEditNewRecordDialogProp {\r\n classes?: string;\r\n companyId: string;\r\n unitId: string;\r\n unitCode: string;\r\n employeeType: RecordEmployeeType;\r\n onOk: (recordId: string) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IRecordEditNewRecordDialogState {\r\n page: NewRecordDialogPage;\r\n recordEditNew: IRecordEditNew;\r\n // Selection\r\n recordType: NewRecordType;\r\n // NewRecord\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n employeeType: RecordEmployeeType;\r\n unitId: string;\r\n unitCode: string;\r\n showSelectUnitDialog: boolean;\r\n // NewRecordAndNewUser\r\n userCode: string;\r\n userPassword: string;\r\n userPasswordConfirmation: string;\r\n userGroupIds: string[];\r\n // NewRecordAndExistingUser\r\n selectedUserId: string;\r\n selectedUserCode: string;\r\n selectedUserPictureFile: IFileAttachment;\r\n showSelectUserDialog: boolean;\r\n}\r\n\r\nexport class RecordEditNewRecordDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n \r\n getStateFromProps = (props: IRecordEditNewRecordDialogProp): IRecordEditNewRecordDialogState => {\r\n return {\r\n page: NewRecordDialogPage.Selection,\r\n recordEditNew: null,\r\n // Selection\r\n recordType: NewRecordType.NewRecord,\r\n // NewRecord\r\n firstName: \"\",\r\n lastName: \"\",\r\n email: \"\",\r\n employeeType: props.employeeType,\r\n unitId: props.unitId,\r\n unitCode: props.unitCode,\r\n showSelectUnitDialog: false,\r\n // NewRecordAndNewUser\r\n userCode: \"\",\r\n userPassword: \"\",\r\n userPasswordConfirmation: \"\",\r\n userGroupIds: [],\r\n // NewRecordAndExistingUser\r\n selectedUserId: \"\",\r\n selectedUserCode: \"\",\r\n selectedUserPictureFile: null,\r\n showSelectUserDialog: false\r\n };\r\n };\r\n\r\n constructor(props: IRecordEditNewRecordDialogProp) {\r\n super(props);\r\n this.state = this.getStateFromProps(props);\r\n this.orgStateHash = this.getHashFromState(this.state);\r\n }\r\n\r\n async componentDidMount(): Promise {\r\n const props = this.props;\r\n const recordEditNew = await AppUtils.callService(() => recordService.getRecordEditNew(props.companyId), false, false);\r\n if (!recordEditNew) return;\r\n this.setState({\r\n recordEditNew\r\n });\r\n }\r\n \r\n handleChangePage = (page: NewRecordDialogPage) => {\r\n this.setState({\r\n page\r\n });\r\n };\r\n\r\n handleChangePageByRecordType = (recordType: NewRecordType) => {\r\n this.setState({\r\n page: recordType === NewRecordType.NewRecord\r\n ? NewRecordDialogPage.NewRecord\r\n : (recordType === NewRecordType.NewRecordAndNewUser\r\n ? NewRecordDialogPage.NewRecordAndNewUser\r\n : NewRecordDialogPage.NewRecordAndExistingUser)\r\n });\r\n };\r\n\r\n handleChangeRecordType = (checked: boolean, recordType: NewRecordType) => {\r\n if (!checked) return;\r\n this.setState({\r\n recordType\r\n });\r\n };\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n // NewRecord\r\n if (name === \"firstName\") {\r\n this.setState({ firstName: value });\r\n } else if (name === \"lastName\") {\r\n this.setState({ lastName: value });\r\n } else if (name === \"email\") {\r\n this.setState({ email: value });\r\n } else if (name === \"employeeType\") {\r\n this.setState({ employeeType: value.toInteger() });\r\n // NewRecordAndNewUser\r\n } else if (name === \"xts\") {\r\n this.setState({ userCode: value });\r\n } else if (name === \"n_p\") {\r\n this.setState({ userPassword: value });\r\n } else if (name === \"n_pc\") {\r\n this.setState({ userPasswordConfirmation: value });\r\n }\r\n };\r\n\r\n handleBlur = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"xts\") {\r\n AppUtils.callService(() => userService.checkUserCode(Base.emptyGuid, this.props.companyId, value), false, true);\r\n }\r\n };\r\n\r\n handleUserGroupsChange = (selectedIds: string[]) => {\r\n this.setState({ userGroupIds: selectedIds });\r\n };\r\n\r\n getHashFromState = (state: IRecordEditNewRecordDialogState): string => {\r\n const result = new SaveDataObj();\r\n result.append(\"firstName\", state.firstName);\r\n result.append(\"lastName\", state.lastName);\r\n result.append(\"email\", state.email);\r\n result.append(\"employeeType\", state.employeeType);\r\n result.append(\"unitId\", state.unitId);\r\n result.append(\"userCode\", state.userCode);\r\n result.append(\"userPassword\", state.userPassword);\r\n result.append(\"userGroupIds\", state.userGroupIds);\r\n result.append(\"selectedUserId\", state.selectedUserId);\r\n result.append(\"selectedUserCode\", state.selectedUserCode);\r\n return result.hash;\r\n };\r\n \r\n // #region Select Unit\r\n handleSelectUnit = () => {\r\n this.setState({\r\n showSelectUnitDialog: true\r\n });\r\n };\r\n\r\n handleSelectUnitDialogOk = async (node: IIdTitleNode) => {\r\n if (!node) return;\r\n this.setState({\r\n showSelectUnitDialog: false,\r\n unitId: node.id,\r\n unitCode: node.title\r\n });\r\n };\r\n\r\n handleSelectUnitDialogCancel = () => {\r\n this.setState({\r\n showSelectUnitDialog: false\r\n });\r\n };\r\n // #endregion Select Unit\r\n\r\n // #region Select User\r\n handleSelectUser = () => {\r\n this.setState({\r\n showSelectUserDialog: true\r\n });\r\n };\r\n\r\n onSelectUserDialogOk = async (users: IUserListItem[]) => {\r\n if (!users || users.length < 1) return;\r\n const user = users[0];\r\n if (!user) return;\r\n const pictureFile = user.defaultPictureInUse ? null : await FileAttachment.photoToFileAttachment(user.picture, 0);\r\n this.setState({\r\n showSelectUserDialog: false,\r\n selectedUserId: user.id,\r\n selectedUserCode: user.code,\r\n selectedUserPictureFile: pictureFile,\r\n firstName: user.firstName,\r\n lastName: user.lastName,\r\n email: user.email\r\n });\r\n };\r\n\r\n onSelectUserDialogCancel = () => {\r\n this.setState({\r\n showSelectUserDialog: false\r\n });\r\n };\r\n // #endregion Select User\r\n\r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n // NewRecord\r\n if (!state.firstName) {\r\n AppUtils.showErrorMessage(Translations.FirstNameMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (!state.lastName) {\r\n AppUtils.showErrorMessage(Translations.LastNameMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (state.employeeType > 98) {\r\n AppUtils.showErrorMessage(Translations.EmployeeTypeMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (!Base.isValidEmailAddress(state.email)) {\r\n AppUtils.showErrorMessage(Translations.EmailAddressMustBeValid);\r\n return resolve(false);\r\n }\r\n if (!state.unitId) {\r\n AppUtils.showErrorMessage(Translations.UnitMustBeSelected);\r\n return resolve(false);\r\n }\r\n // NewRecordAndNewUser\r\n if (state.page === NewRecordDialogPage.NewRecordAndNewUser) {\r\n if (!Base.isValidUserCode(state.userCode)) {\r\n AppUtils.showErrorMessage(Translations.UserCodeMustBeValid);\r\n return resolve(false);\r\n }\r\n const errorMessage = Base.isValidPassword(state.userPassword, state.recordEditNew.minPasswordLength);\r\n if (errorMessage) {\r\n AppUtils.showErrorMessage(errorMessage);\r\n return resolve(false);\r\n }\r\n if (state.userPassword !== state.userPasswordConfirmation) {\r\n AppUtils.showErrorMessage(Translations.PasswordConfirmationDoesNotMatchPassword);\r\n return resolve(false);\r\n }\r\n if (state.userGroupIds.length < 1) {\r\n AppUtils.showErrorMessage(Translations.UserGroupsMustBeDefined);\r\n return resolve(false);\r\n }\r\n }\r\n // NewRecordAndExistingUser\r\n if (state.page === NewRecordDialogPage.NewRecordAndExistingUser) {\r\n if (!state.selectedUserId) {\r\n AppUtils.showErrorMessage(Translations.UserAccountMustBeSelected);\r\n return resolve(false);\r\n }\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n \r\n getSaveData = async (props: IRecordEditNewRecordDialogProp, state: IRecordEditNewRecordDialogState): Promise => {\r\n const result = new SaveDataObj();\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"unitId\", state.unitId ? state.unitId : null);\r\n result.append(\"firstName\", state.firstName);\r\n result.append(\"lastName\", state.lastName);\r\n result.append(\"email\", state.email);\r\n result.append(\"employeeType\", state.employeeType);\r\n if (state.recordEditNew.canEditUsers && state.page === NewRecordDialogPage.NewRecordAndNewUser) {\r\n result.append(\"newUserCode\", state.userCode);\r\n result.append(\"newUserPassword\", state.userPassword);\r\n result.append(\"newUserPasswordConfirmation\", state.userPasswordConfirmation);\r\n result.append(\"newUserGroupIds\", state.userGroupIds);\r\n }\r\n if (state.recordEditNew.canReadUsers && state.page === NewRecordDialogPage.NewRecordAndExistingUser) {\r\n result.append(\"selectedUserCode\", state.selectedUserCode);\r\n if (state.selectedUserPictureFile) {\r\n result.append(\"pictureAttachments\", await SaveAttachmentBase64.fromFileAttachments([state.selectedUserPictureFile]));\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n // Set data\r\n const saveData = await this.getSaveData(this.props, state);\r\n // Call server\r\n const result = await AppUtils.callService(() => recordService.saveRecordEditNew(saveData.obj));\r\n if (!result) return null;\r\n this.orgStateHash = this.getHashFromState(this.state);\r\n return result;\r\n };\r\n\r\n handleSave = async (): Promise => {\r\n const result = await this.saveToDb();\r\n if (result) {\r\n this.props.onOk(result.id);\r\n }\r\n return result;\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getHashFromState(state), this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.recordEditNew) return null;\r\n return (\r\n \r\n {state.page === NewRecordDialogPage.Selection &&\r\n <>\r\n \r\n \r\n \r\n this.handleChangeRecordType(true, value as NewRecordType)}>\r\n \r\n }\r\n />\r\n {state.recordEditNew.canEditUsers &&\r\n \r\n }\r\n />\r\n }\r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {state.page === NewRecordDialogPage.NewRecordAndExistingUser &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {(state.page === NewRecordDialogPage.NewRecord || state.page === NewRecordDialogPage.NewRecordAndNewUser || state.page === NewRecordDialogPage.NewRecordAndExistingUser) &&\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {state.page === NewRecordDialogPage.NewRecordAndNewUser &&\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {state.showSelectUserDialog &&\r\n \r\n }\r\n {state.showSelectUnitDialog &&\r\n i.id !== Base.emptyGuid)}\r\n title={Translations.SelectUnit}\r\n firstColumnTitle={Translations.Unit}\r\n selectedId={state.unitId}\r\n onOk={this.handleSelectUnitDialogOk}\r\n onCancel={this.handleSelectUnitDialogCancel}\r\n />\r\n }\r\n }\r\n buttons={[\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: this.handleCancel },\r\n { title: Translations.Previous, variant: \"outlined\", onClick: state.page === NewRecordDialogPage.Selection ? null : () => this.handleChangePage(NewRecordDialogPage.Selection) },\r\n { title: state.page === NewRecordDialogPage.Selection ? Translations.Next : Translations.Save, variant: \"confirmation\", onClick: state.page === NewRecordDialogPage.Selection ? () => this.handleChangePageByRecordType(state.recordType) : this.handleSave },\r\n ]}\r\n onClose={this.handleCancel}/>\r\n );\r\n }\r\n}","// PageNavMenuItemCheckBox\r\n// ***********************************************************************************************************************\r\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\r\nimport { Accordion, AccordionDetails, AccordionSummary, Checkbox, FormControlLabel, Stack, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\n\r\nexport interface IPageNavMenuItemCheckBoxProp {\r\n classes?: string;\r\n hidden?: boolean;\r\n isActive: boolean;\r\n items: IIdTitle[];\r\n activeItemIds: string[];\r\n title: string;\r\n onToggleMenuItem: () => void;\r\n onSetActiveItem: (itemId: string, value: boolean) => void;\r\n}\r\n\r\nexport class PageNavMenuItemCheckBox extends React.Component {\r\n render() {\r\n const props = this.props;\r\n if (props.hidden) return null;\r\n const items = props.items;\r\n return (\r\n <>\r\n \r\n }>\r\n {props.title}\r\n \r\n \r\n {items &&\r\n \r\n {items.map((item) => {\r\n const isActiveItem = props.activeItemIds.indexOf(item.id) > -1;\r\n if (props.isActive) {\r\n return \r\n }\r\n onClick={(e) => { e.stopPropagation(); e.preventDefault(); props.onSetActiveItem(item.id, !isActiveItem); }}\r\n />;\r\n } else {\r\n return
    props.onSetActiveItem(item.id, false) }>\r\n {item.title}\r\n
    ;\r\n }\r\n })}\r\n
    \r\n }\r\n
    \r\n
    \r\n {!props.isActive && (\r\n \r\n {items.filter(x => props.activeItemIds.includes(x.id)).map((item) => (\r\n {item.title}\r\n ))}\r\n \r\n )}\r\n \r\n );\r\n }\r\n}","// PageNavMenuItemRadio\r\n// ***********************************************************************************************************************\r\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\r\nimport { Accordion, AccordionDetails, AccordionSummary, FormControlLabel, Radio, Stack, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\n\r\nexport interface IPageNavMenuItemRadioProp {\r\n classes?: string;\r\n hidden?: boolean;\r\n isActive: boolean;\r\n items: IIdTitle[];\r\n activeItemId: string;\r\n title: string;\r\n onToggleMenuItem: () => void;\r\n onSetActiveItem: (itemId: string) => void;\r\n}\r\n\r\nexport class PageNavMenuItemRadio extends React.Component {\r\n handleSetActiveItemId = (itemId: string, checked: boolean) => {\r\n if (!checked) return;\r\n this.props.onSetActiveItem(itemId);\r\n };\r\n \r\n render() {\r\n const props = this.props;\r\n if (props.hidden) return null;\r\n const items = props.items;\r\n return (\r\n <>\r\n \r\n }>\r\n {props.title}\r\n \r\n \r\n {items &&\r\n \r\n {items.map((item) => {\r\n const isActiveItem = props.activeItemId === item.id;\r\n return \r\n }\r\n onClick={(e) => { e.stopPropagation(); e.preventDefault(); this.handleSetActiveItemId(item.id, true); }}\r\n />;\r\n })}\r\n \r\n }\r\n \r\n \r\n {!props.isActive && (\r\n \r\n {items.filter(x => props.activeItemId === x.id).map((item) => (\r\n {item.title}\r\n ))}\r\n \r\n )}\r\n \r\n );\r\n }\r\n}","// PageNavMenuItemTreeCheckBox\r\n// ***********************************************************************************************************************\r\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\r\nimport { Accordion, AccordionDetails, AccordionSummary, Checkbox, FormControlLabel, Stack, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IdTitleNode, IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\n\r\nexport interface IPageNavMenuItemTreeCheckBoxChildProp {\r\n isActive: boolean;\r\n item: IIdTitleNode;\r\n level: number;\r\n activeItemIds: string[];\r\n onToggleItem: (item: IIdTitleNode, checked: boolean, hasChildren: boolean) => void;\r\n}\r\n\r\nclass PageNavMenuItemTreeCheckBoxChild extends React.Component {\r\n render() {\r\n const props = this.props;\r\n const item = props.item;\r\n const hasChildren = item.hasChildren();\r\n const selected = props.activeItemIds.indexOf(item.id) > -1;\r\n if (props.isActive) {\r\n return (\r\n \r\n \r\n }\r\n onClick={(e) => { e.stopPropagation(); e.preventDefault(); props.onToggleItem(item, !selected, hasChildren); }}\r\n sx={{ paddingLeft: `${props.level.toString(10)}0px` }}\r\n />\r\n {item.children.map((childItem) =>\r\n \r\n )}\r\n \r\n );\r\n }\r\n if (!selected) return null;\r\n return (\r\n <>\r\n \r\n {item.title}\r\n \r\n {item.children.map((childItem) =>\r\n \r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport interface IPageNavMenuItemTreeCheckBoxProp {\r\n classes?: string;\r\n hidden?: boolean;\r\n isActive: boolean;\r\n items: IIdTitleNode[];\r\n activeItemIds: string[];\r\n title: string;\r\n onToggleMenuItem: () => void;\r\n onSetActiveItemIds: (ids: string[]) => void;\r\n}\r\n\r\nexport class PageNavMenuItemTreeCheckBox extends React.Component {\r\n handleToggleItem = (item: IIdTitleNode, checked: boolean, hasChildren: boolean) => {\r\n if (!item || !item.active) return;\r\n const id = item.id;\r\n const props = this.props;\r\n let activeItemIds = props.activeItemIds.filter(i => i !== Base.emptyGuid);\r\n if (hasChildren) {\r\n const parent = IdTitleNode.getById(props.items, id);\r\n if (!parent) return;\r\n const childIds = parent.getChildIds();\r\n activeItemIds = activeItemIds.filter(i => childIds.indexOf(i) < 0 && i !== id);\r\n if (checked) {\r\n activeItemIds.push(id);\r\n activeItemIds = activeItemIds.concat(childIds);\r\n }\r\n } else {\r\n if (id === Base.emptyGuid) {\r\n if (checked) {\r\n props.onSetActiveItemIds([Base.emptyGuid]);\r\n return;\r\n } else if (activeItemIds.length < 1 && props.items.length > 1) {\r\n activeItemIds.push(props.items[1].id);\r\n }\r\n } else {\r\n if (checked) {\r\n if (activeItemIds.indexOf(id) < 0) {\r\n activeItemIds.push(id);\r\n }\r\n } else {\r\n activeItemIds = activeItemIds.filter(i => i !== id);\r\n }\r\n }\r\n }\r\n if (activeItemIds.length < 1) {\r\n activeItemIds.push(Base.emptyGuid);\r\n }\r\n props.onSetActiveItemIds(activeItemIds);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n if (props.hidden) return null;\r\n const items = props.items;\r\n return (\r\n <>\r\n \r\n }>\r\n {props.title}\r\n \r\n \r\n {items &&\r\n \r\n {items.map((item) => {\r\n const hasChildren = item.hasChildren();\r\n const selected = props.activeItemIds.indexOf(item.id) > -1;\r\n return
    \r\n { e.stopPropagation(); e.preventDefault(); this.handleToggleItem(item, !selected, hasChildren); }}\r\n control={\r\n \r\n }\r\n />\r\n {item.children.map((childItem) =>\r\n \r\n )}\r\n
    ;\r\n })}\r\n
    \r\n }\r\n
    \r\n
    \r\n {!props.isActive && (\r\n \r\n {items.filter(x => props.activeItemIds.includes(x.id) || x.children.some(i => props.activeItemIds.includes(i.id))).map((item) => (\r\n
    \r\n \r\n {item.title}\r\n \r\n {item.children.map((childItem) =>\r\n \r\n )}\r\n
    \r\n ))}\r\n
    \r\n )}\r\n \r\n );\r\n }\r\n}","//SelectRecordDialog\r\n//***********************************************************************************************************************\r\nimport { Box, Grid, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { IRecordFurtherEducationGroupNode } from \"ui/Scripts/source/models/recordFurtherEducationGroup/recordFurtherEducationGroupNode\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { infiniteListPageSize } from \"../../../models/common/webConsts\";\r\nimport { IRecordListItem } from \"../../../models/record/recordListItem\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListActionButtons } from \"../../framework/List/ListActionButtons\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { PageNavMenuItemCheckBox } from \"../../framework/PageNavMenuItem/PageNavMenuItemCheckBox\";\r\nimport { PageNavMenuItemRadio } from \"../../framework/PageNavMenuItem/PageNavMenuItemRadio\";\r\nimport { PageNavMenuItemTreeCheckBox } from \"../../framework/PageNavMenuItem/PageNavMenuItemTreeCheckBox\";\r\nimport { RecordPageList, RecordPageListActivityFilterId } from \"../RecordPageList/RecordPageList\";\r\n\r\n//SelectRecordDialog\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum SelectRecordDialogMenuItem {\r\n None = \"\",\r\n ActivityFilter = \"1\",\r\n UnitFilter = \"2\",\r\n EmployeeTypeFilter = \"3\",\r\n JobTitleFilter = \"4\",\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\nexport interface ISelectRecordDialogProps {\r\n classes?: string;\r\n companyId: string;\r\n multiSelect?: boolean;\r\n title?: string;\r\n pageSize?: number;\r\n units: IIdTitleNode[];\r\n jobTitles: IIdTitle[];\r\n furtherEducationGroups: IRecordFurtherEducationGroupNode[];\r\n onOk: (users: IRecordListItem[]) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface ISelectRecordDialogState {\r\n //Menu\r\n filtersVisible: boolean;\r\n activityFilters: IIdTitle[];\r\n employeeTypes: IIdTitle[];\r\n activeMenuItem: SelectRecordDialogMenuItem;\r\n activeActivityFilterId: string;\r\n selectedUnitIds: string[];\r\n selectedJobTitleIds: string[];\r\n selectedEmployeeTypeIds: string[];\r\n\r\n //List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n pageSize: number;\r\n page: number;\r\n hasMore: boolean;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n items: IRecordListItem[];\r\n selectedId: string;\r\n checkedIds: string[];\r\n}\r\n\r\nexport class SelectRecordDialog extends React.Component {\r\n constructor(props: ISelectRecordDialogProps) {\r\n super(props);\r\n this.state = {\r\n //Menu\r\n filtersVisible: false,\r\n activityFilters: RecordPageList.getActivityFilters(),\r\n employeeTypes: RecordPageList.getEmployeeTypes(),\r\n activeMenuItem: SelectRecordDialogMenuItem.ActivityFilter,\r\n activeActivityFilterId: RecordPageListActivityFilterId.Active,\r\n selectedUnitIds: [Base.emptyGuid],\r\n selectedJobTitleIds: [\"\"],\r\n selectedEmployeeTypeIds: [\"\"],\r\n //List\r\n intialized: false,\r\n isLoading: false,\r\n pageSize: props.pageSize ?? infiniteListPageSize,\r\n page: 1,\r\n hasMore: true,\r\n filter: \"\",\r\n sortColumn: \"lastName\",\r\n sortOrderIsAsc: true,\r\n items: [],\r\n selectedId: null,\r\n checkedIds: [],\r\n };\r\n }\r\n\r\n handleToggleActiveMenuItem = (menuItem: SelectRecordDialogMenuItem) => {\r\n this.setState({ activeMenuItem: this.state.activeMenuItem !== menuItem ? menuItem : SelectRecordDialogMenuItem.None });\r\n };\r\n\r\n searchItems = async (pageSize: number, page: number, filter: string, activityFilterId: string, selectedUnitIds: string[], selectedEmployeeTypeIds: string[],\r\n selectedJobTitleIds: string[], sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => recordService.getRecordListItems(props.companyId, !refreshList ? pageSize : (page * infiniteListPageSize), !refreshList ? page : 1, filter,\r\n selectedEmployeeTypeIds.filter(i => !!i).map(i => i.toInteger()), selectedJobTitleIds.filter(i => !!i), selectedUnitIds.filter(i => i !== Base.emptyGuid),\r\n activityFilterId ? parseInt(activityFilterId, 10) : 0, sortColumn, sortOrderIsAsc), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n result.initializeQualifications(props.furtherEducationGroups);\r\n const items = List.getListItems(state.items, state.selectedId, state.checkedIds, result.items, resetItems, refreshList);\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n activeActivityFilterId: activityFilterId,\r\n selectedEmployeeTypeIds,\r\n selectedJobTitleIds,\r\n selectedUnitIds,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n selectedId: items.selectedId,\r\n checkedIds: items.checkedIds,\r\n });\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, state.filter, state.activeActivityFilterId, state.selectedUnitIds, state.selectedEmployeeTypeIds, state.selectedJobTitleIds, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: ISelectRecordDialogProps, prevState: ISelectRecordDialogState) {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n if (companyId === prevCompanyId) return;\r\n this.searchItems(state.pageSize, 1, state.filter, state.activeActivityFilterId, state.selectedUnitIds, state.selectedEmployeeTypeIds, state.selectedJobTitleIds, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, filter, state.activeActivityFilterId, state.selectedUnitIds, state.selectedEmployeeTypeIds, state.selectedJobTitleIds, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n changeaActivityFilter = (activityFilterId: string) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, state.filter, activityFilterId, state.selectedUnitIds, state.selectedEmployeeTypeIds, state.selectedJobTitleIds, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n changeUnits = (selectedUnitIds: string[]) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, state.filter, state.activeActivityFilterId, selectedUnitIds, state.selectedEmployeeTypeIds, state.selectedJobTitleIds, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleToggleEmployeeType = (employeeType: string, checked: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, state.filter, state.activeActivityFilterId, state.selectedUnitIds, Base.getToggledMultiSelectIds(state.employeeTypes, state.selectedEmployeeTypeIds, employeeType, checked),\r\n state.selectedJobTitleIds, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleToggleJobTitle = (jobTitle: string, checked: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, state.filter, state.activeActivityFilterId, state.selectedUnitIds, state.selectedEmployeeTypeIds, Base.getToggledMultiSelectIds(props.jobTitles, state.selectedJobTitleIds, jobTitle, checked),\r\n state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, state.activeActivityFilterId, state.selectedUnitIds, state.selectedEmployeeTypeIds, state.selectedJobTitleIds, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n handleCancel = () => {\r\n this.props.onCancel();\r\n };\r\n\r\n handleToggleFiltersVisible = () => {\r\n this.setState({\r\n filtersVisible: !this.state.filtersVisible,\r\n });\r\n };\r\n\r\n handleOk = () => {\r\n const state = this.state;\r\n const ids = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n if (ids.length < 1) return;\r\n const items = state.items.filter(i => ids.indexOf(i.id) > -1);\r\n if (items.length < 1) return;\r\n this.props.onOk(items);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.intialized) return null;\r\n return (\r\n \r\n \r\n \r\n }\r\n rightItems={\r\n \r\n }\r\n />\r\n {\r\n return {\r\n columns: [\r\n { size: 4, column: \"unit\", content: item.unitCode },\r\n {\r\n size: 4,\r\n column: \"lastName\",\r\n content:\r\n \r\n \r\n {item.lastName}\r\n \r\n },\r\n { size: 4, column: \"firstName\", content: item.firstName },\r\n ],\r\n id: item.id,\r\n classes: item.archived ? \"disabled\" : \"\"\r\n };\r\n })\r\n }\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n />\r\n \r\n \r\n this.handleToggleActiveMenuItem(SelectRecordDialogMenuItem.ActivityFilter)}\r\n onSetActiveItem={(itemId: string) => this.changeaActivityFilter(itemId)}\r\n />\r\n this.handleToggleActiveMenuItem(SelectRecordDialogMenuItem.UnitFilter)}\r\n onSetActiveItemIds={(ids: string[]) => this.changeUnits(ids)}\r\n />\r\n this.handleToggleActiveMenuItem(SelectRecordDialogMenuItem.EmployeeTypeFilter)}\r\n onSetActiveItem={this.handleToggleEmployeeType}\r\n />\r\n this.handleToggleActiveMenuItem(SelectRecordDialogMenuItem.JobTitleFilter)}\r\n onSetActiveItem={this.handleToggleJobTitle}\r\n />\r\n \r\n \r\n }\r\n buttons={[\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: this.handleCancel },\r\n { title: Translations.Next, variant: \"confirmation\", onClick: this.handleOk },\r\n ]}\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","/* global JSX */\r\n// RecordList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Grid } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { IRecordEditItemFamiliarization, RecordEditItemFamiliarization, RecordEditItemFamiliarizationSave } from \"source/models/record/recordEditItemFamiliarization\";\r\nimport { IRecordFamiliarizationListItem } from \"source/models/recordFamiliarization/recordFamiliarizationListItem\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { ToolButtonDropdown } from \"ui/Scripts/source/components/framework/Button/ToolButtonDropdown\";\r\nimport { IRecordFurtherEducationGroupNode, RecordFurtherEducationGroupNode } from \"ui/Scripts/source/models/recordFurtherEducationGroup/recordFurtherEducationGroupNode\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { IIdTitleNode, IdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { RecordEmployeeType } from \"ui/Scripts/source/models/enums\";\r\nimport { ITaskDataRow, SaveTaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { infiniteListPageSize } from \"../../../models/common/webConsts\";\r\nimport { IRecordEditItemFurtherEducation, RecordEditItemFurtherEducationSave } from \"../../../models/record/recordEditItemFurtherEducation\";\r\nimport { IRecordEditItemTransferredProperty, RecordEditItemTransferredProperty, RecordEditItemTransferredPropertySave } from \"../../../models/record/recordEditItemTransferredProperty\";\r\nimport { IRecordListItem } from \"../../../models/record/recordListItem\";\r\nimport { IRecordListItems } from \"../../../models/record/recordListItems\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { AddButton } from \"../../framework/Button/AddButton\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { IListUsingComponentState, List } from \"../../framework/List/List\";\r\nimport { ListActionButtons } from \"../../framework/List/ListActionButtons\";\r\nimport { ListCardField } from \"../../framework/List/ListCardField\";\r\nimport { ListContainer } from \"../../framework/List/ListContainer\";\r\nimport { ListDetailsButton } from \"../../framework/List/ListDetailsButton\";\r\nimport { ListLinkValue } from \"../../framework/List/ListLinkValue\";\r\nimport { ListSearchContainer } from \"../../framework/List/ListSearchContainer\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { ListStateIconCertificate } from \"../../framework/List/ListStateIconCertificate\";\r\nimport { ListToggleButtons } from \"../../framework/List/ListToggleButtons\";\r\nimport { PageTitle } from \"../../framework/Page/PageTitle\";\r\nimport { RecordArchiveExpiredFamiliarizationsDialog } from \"../RecordArchiveExpiredFamiliarizationsDialog\";\r\nimport { RecordArchiveExpiredFurtherEducationsDialog } from \"../RecordArchiveExpiredFurtherEducationsDialog\";\r\nimport { RecordEditViewMode } from \"../RecordEdit\";\r\nimport { RecordEditDialog } from \"../RecordEditDialog\";\r\nimport { RecordEditFurtherEducationList } from \"../RecordEditFurtherEducationList/RecordEditFurtherEducationList\";\r\nimport { RecordEditNewRecordDialog } from \"../RecordEditNewRecordDialog/RecordEditNewRecordDialog\";\r\nimport { RecordEditSheetDataRowDialog } from \"../RecordEditSheetDataRowDialog/RecordEditSheetDataRowDialog\";\r\nimport { RecordEditSheetDataRowList } from \"../RecordEditSheetDataRowList\";\r\nimport { RecordUserFamiliarizationDialog } from \"../RecordUserFamiliarizationDialog\";\r\nimport { RecordUserFurtherEducationDialog } from \"../RecordUserFurtherEducationDialog\";\r\nimport { RecordUserTransferredPropertyDialog } from \"../RecordUserTransferredPropertyDialog\";\r\nimport { SelectRecordDialog } from \"../SelectRecordDialog\";\r\nimport { SelectQualificationDialog } from \"../SelectQualificationDialog\";\r\nimport { AppMoreIcon } from \"source/components/framework/Icon/AppMoreIcon\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nconst enum SelectRecordMode {\r\n FurtherEducation = \"0\",\r\n SalaryRow = \"1\",\r\n TransferredProperty = \"2\",\r\n Qualifification = \"3\",\r\n Familiarization = \"4\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n// RecordList\r\nexport interface IRecordListProp {\r\n sessionState: ISessionState;\r\n savedFilter: IListFilterItem;\r\n companyId: string;\r\n disableGlobalLoading?: boolean;\r\n preloaded?: boolean;\r\n waitingPreloadedData?: boolean;\r\n list?: IRecordListItems;\r\n listFilterIsSet: boolean;\r\n units: IIdTitleNode[];\r\n jobTitles: IIdTitle[];\r\n familiarizations?: IRecordFamiliarizationListItem[];\r\n furtherEducationGroups?: IRecordFurtherEducationGroupNode[];\r\n selectedEmployeeTypeIds?: string[];\r\n selectedJobTitleIds?: string[];\r\n selectedUnitIds?: string[];\r\n selectedActivityFilterId?: string;\r\n dataId?: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n startDateStr?: string;\r\n endDateStr?: string;\r\n sheetTaskType: ITaskEditTypeItem;\r\n titleSuffix?: JSX.Element;\r\n reportTabs: React.ReactNode;\r\n onRefreshSessionState: () => void;\r\n onSetSortData: (sortColumn: string, sortOrderIsAsc: boolean) => void;\r\n onEmploymentSaved: () => void;\r\n onOpenFiltersDialog: () => void;\r\n}\r\n\r\ninterface IRecordListState extends IListUsingComponentState {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n waitingPreloadedData: boolean;\r\n pageSize: number;\r\n page: number;\r\n filter: string;\r\n employeeTypes: number[];\r\n jobTitles: string[];\r\n unitIds: string[];\r\n activityState: number;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n listModeIsLine: boolean;\r\n checkedIds: string[];\r\n\r\n // New Dialog\r\n showNewRecordDialog: boolean;\r\n newRecordDialogUnitId: string;\r\n newRecordDialogUnitCode: string;\r\n newRecordDialogEmployeeType: RecordEmployeeType;\r\n\r\n // Dialog\r\n editDialogDefaultMenuItem: RecordEditViewMode;\r\n\r\n // Additional functions\r\n showSelectRecordDialog: boolean;\r\n selectRecordDialogMode: SelectRecordMode;\r\n additionalFunctionRecordIds: string[];\r\n\r\n // Additional functions: AddFurtherEducationToMultipleUserRecords\r\n showRecordUserFurtherEducationDialog: boolean;\r\n recordUserFurtherEducationDialogItem: IRecordEditItemFurtherEducation;\r\n furtherEducations: IIdTitleNode[];\r\n\r\n // Additional functions: AddSalaryRowToMultipleUserRecords\r\n transferredPropertyTypes: string[];\r\n showRecordEditSheetDataRowDialog: boolean;\r\n recordEditSheetDataRowDialogItem: ITaskDataRow;\r\n\r\n // Additional functions: AddTransferredPropertyToMultipleUserRecords\r\n showRecordUserTransferredPropertyDialog: boolean;\r\n recordUserTransferredPropertyDialogItem: IRecordEditItemTransferredProperty;\r\n\r\n // Additional functions: AddQualificationToMultipleUserRecords\r\n showSelectQualificationDialog: boolean;\r\n\r\n // Additional functions: AddFamiliarizationToMultipleUserRecords\r\n showRecordUserFamiliarizationDialog: boolean;\r\n recordUserFamiliarizationDialogItem: IRecordEditItemFamiliarization;\r\n familiarizationTrainers: string[];\r\n\r\n // Additional functions: ArchiveExpiredFamiliarizations\r\n showArchiveExpiredFamiliarizationsDialog: boolean;\r\n\r\n // Additional functions: ArchiveExpiredFurtherEducations\r\n showArchiveExpiredFurtherEducationsDialog: boolean;\r\n}\r\n\r\nexport class RecordList extends React.Component {\r\n constructor(props: IRecordListProp) {\r\n super(props);\r\n this.state = {\r\n intialized: props.list && !!props.preloaded,\r\n isLoading: false,\r\n waitingPreloadedData: !Base.isNullOrUndefined(props.waitingPreloadedData) ? props.waitingPreloadedData : (props.list ? false : props.preloaded),\r\n page: props.list ? props.list.page : 1,\r\n hasMore: props.list ? props.list.hasMore : true,\r\n filter: \"\",\r\n employeeTypes: props.selectedEmployeeTypeIds ? props.selectedEmployeeTypeIds.filter(i => !Base.isNullOrEmpty(i)).map(i => i.toInteger()) : [],\r\n jobTitles: props.selectedJobTitleIds ? props.selectedJobTitleIds.filter(i => !!i) : [],\r\n unitIds: props.selectedUnitIds ? props.selectedUnitIds.filter(i => i !== Base.emptyGuid) : [],\r\n activityState: props.selectedActivityFilterId ? parseInt(props.selectedActivityFilterId, 10) : 0,\r\n pageSize: props.list ? props.list.pageSize : infiniteListPageSize,\r\n sortColumn: props.sortColumn,\r\n sortOrderIsAsc: props.sortOrderIsAsc,\r\n listModeIsLine: true,\r\n items: props.list ? props.list.items : [],\r\n selectedId: null,\r\n checkedIds: [],\r\n // Details\r\n detailsItem: null,\r\n // New Dialog\r\n showNewRecordDialog: false,\r\n newRecordDialogUnitId: \"\",\r\n newRecordDialogUnitCode: \"\",\r\n newRecordDialogEmployeeType: RecordEmployeeType.Employee,\r\n // Dialog\r\n showEditDialog: false,\r\n editDialogId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false,\r\n editDialogDefaultMenuItem: RecordEditViewMode.General,\r\n // Additional functions\r\n showSelectRecordDialog: false,\r\n selectRecordDialogMode: SelectRecordMode.FurtherEducation,\r\n additionalFunctionRecordIds: [],\r\n // Additional functions: AddFurtherEducationToMultipleUserRecords\r\n showRecordUserFurtherEducationDialog: false,\r\n recordUserFurtherEducationDialogItem: null,\r\n furtherEducations: [],\r\n // Additional functions: AddSalaryRowToMultipleUserRecords\r\n showRecordEditSheetDataRowDialog: false,\r\n recordEditSheetDataRowDialogItem: null,\r\n // Additional functions: AddTransferredPropertyToMultipleUserRecords\r\n transferredPropertyTypes: [],\r\n showRecordUserTransferredPropertyDialog: false,\r\n recordUserTransferredPropertyDialogItem: null,\r\n // Additional functions: AddFamiliarizationToMultipleUserRecords\r\n showRecordUserFamiliarizationDialog: false,\r\n recordUserFamiliarizationDialogItem: null,\r\n familiarizationTrainers: [],\r\n // Additional functions: AddQualificationToMultipleUserRecords\r\n showSelectQualificationDialog: false,\r\n // Additional functions: ArchiveExpiredFamiliarizations\r\n showArchiveExpiredFamiliarizationsDialog: false,\r\n // Additional functions: ArchiveExpiredFurtherEducations\r\n showArchiveExpiredFurtherEducationsDialog: false\r\n };\r\n }\r\n\r\n searchItems = async (pageSize: number, page: number, filter: string, employeeTypes: number[], jobTitles: string[], unitIds: string[], activityState: number, sortColumn: string, sortOrderIsAsc: boolean,\r\n resetItems: boolean, refreshList: boolean, moveNext: boolean = false, setDialogData: boolean = true) => {\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => recordService.getRecordListItems(this.props.companyId, !refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1, filter, employeeTypes, jobTitles, unitIds, activityState, sortColumn, sortOrderIsAsc),\r\n false, this.props.disableGlobalLoading, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n result.initializeQualifications(this.props.furtherEducationGroups);\r\n const items = List.getListItems(this.state.items, this.state.selectedId, this.state.checkedIds, result.items, resetItems, refreshList);\r\n let selectedId = items.selectedId;\r\n let index = items.items.findIndex(i => i.id === selectedId);\r\n let detailsItem = index > -1 ? items.items[index] : null;\r\n if (moveNext && detailsItem && index < items.items.length - 1) {\r\n index = index + 1;\r\n detailsItem = items.items[index];\r\n selectedId = items.items[index].id;\r\n }\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n employeeTypes,\r\n jobTitles,\r\n unitIds,\r\n activityState,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n selectedId,\r\n checkedIds: items.checkedIds,\r\n detailsItem,\r\n editDialogDefaultMenuItem: setDialogData ? RecordEditViewMode.General : this.state.editDialogDefaultMenuItem,\r\n editDialogId: setDialogData ? (moveNext && detailsItem ? detailsItem.id : \"\") : this.state.editDialogId,\r\n editDialogHasPrevious: setDialogData ? index > 0 : this.state.editDialogHasPrevious,\r\n editDialogHasNext: setDialogData ? (index < items.items.length - 1 || result.hasMore) : this.state.editDialogHasNext,\r\n });\r\n this.props.onSetSortData(sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n refreshList = async (setDialogData: boolean = true) => {\r\n const state = this.state;\r\n await this.searchItems(state.pageSize, state.page, state.filter, state.employeeTypes, state.jobTitles, state.unitIds, state.activityState, state.sortColumn, state.sortOrderIsAsc, false, true, false, setDialogData);\r\n };\r\n\r\n componentDidMount(): void {\r\n const props = this.props;\r\n const state = this.state;\r\n if (props.preloaded && !props.savedFilter) return;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.employeeTypes, state.jobTitles, state.unitIds, state.activityState, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: IRecordListProp, prevState: IRecordListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.waitingPreloadedData) {\r\n //if (!props.list || (props.dataId ?? \"\") === (prevProps.dataId ?? \"\")) return;\r\n this.setState({\r\n intialized: true,\r\n waitingPreloadedData: false,\r\n page: props.list.page,\r\n hasMore: props.list.hasMore,\r\n items: props.list.items,\r\n pageSize: props.list.pageSize\r\n });\r\n } else {\r\n const prevDataId = prevProps.dataId ? prevProps.dataId : \"\";\r\n const dataId = props.dataId ? props.dataId : \"\";\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n const prevEmployeeTypes = prevProps.selectedEmployeeTypeIds ? prevProps.selectedEmployeeTypeIds.filter(i => !Base.isNullOrEmpty(i)).map(i => i.toInteger()) : [];\r\n const employeeTypes = props.selectedEmployeeTypeIds ? props.selectedEmployeeTypeIds.filter(i => !Base.isNullOrEmpty(i)).map(i => i.toInteger()) : [];\r\n const prevJobTitles = prevProps.selectedJobTitleIds ? prevProps.selectedJobTitleIds.filter(i => !!i) : [];\r\n const jobTitles = props.selectedJobTitleIds ? props.selectedJobTitleIds.filter(i => !!i) : [];\r\n const prevUnitIds = prevProps.selectedUnitIds ? prevProps.selectedUnitIds.filter(i => i !== Base.emptyGuid) : [];\r\n const unitIds = props.selectedUnitIds ? props.selectedUnitIds.filter(i => i !== Base.emptyGuid) : [];\r\n const prevActivityState = prevProps.selectedActivityFilterId ? parseInt(prevProps.selectedActivityFilterId, 10) : 0;\r\n const activityState = props.selectedActivityFilterId ? parseInt(props.selectedActivityFilterId, 10) : 0;\r\n const prevSortColumn = prevProps.sortColumn;\r\n const sortColumn = props.sortColumn;\r\n const prevSortOrderIsAsc = prevProps.sortOrderIsAsc;\r\n const sortOrderIsAsc = props.sortOrderIsAsc;\r\n if (dataId === prevDataId && companyId === prevCompanyId &&\r\n Base.equalArrays(prevEmployeeTypes, employeeTypes) &&\r\n Base.equalStrArrays(prevJobTitles, jobTitles) &&\r\n Base.equalStrArrays(prevUnitIds, unitIds) &&\r\n prevActivityState === activityState &&\r\n prevSortColumn === sortColumn && prevSortOrderIsAsc === sortOrderIsAsc) return;\r\n this.searchItems(state.pageSize, state.page, state.filter, employeeTypes, jobTitles, unitIds, activityState, sortColumn, sortOrderIsAsc, true, false);\r\n }\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, filter, state.employeeTypes, state.jobTitles, state.unitIds, state.activityState, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, state.employeeTypes, state.jobTitles, state.unitIds, state.activityState, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds,\r\n detailsItem: this.state.items.find(i => i.id === selectedId)\r\n });\r\n };\r\n \r\n handleListModeChange = (listModeIsLine: boolean) => {\r\n this.setState({\r\n listModeIsLine,\r\n });\r\n };\r\n\r\n handleListModeToggle = (_event: React.MouseEvent, listModeIsLine: boolean) => {\r\n this.setState({\r\n listModeIsLine,\r\n });\r\n };\r\n\r\n // #region Edit dialog\r\n handleOpenLine = (id: string) => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, id));\r\n };\r\n\r\n handleUserDialogOk = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n this.refreshList();\r\n };\r\n\r\n handleUserDialogCancel = (listRefreshNeeded: boolean) => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n if (!listRefreshNeeded) return;\r\n this.refreshList();\r\n };\r\n\r\n handleUserDialogNewSaved = (newRecordId: string) => {\r\n this.setState({\r\n showEditDialog: true,\r\n selectedId: newRecordId,\r\n editDialogId: newRecordId,\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false,\r\n editDialogDefaultMenuItem: RecordEditViewMode.Education\r\n });\r\n this.refreshList(false);\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n this.setState(List.getEditDialogItemByIndexStateChange(this.state, index, () => this.searchItems(state.pageSize, state.page + 1, state.filter, state.employeeTypes, state.jobTitles, state.unitIds, state.activityState, state.sortColumn, state.sortOrderIsAsc, false, false, true)));\r\n };\r\n // #endregion Edit dialog\r\n\r\n // #region Add dialog\r\n handleAdd = () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const units = props.units.filter(i => i.id !== Base.emptyGuid && i.id !== \"00000000-0000-0000-0000-000000000001\");\r\n let unit = state.unitIds.length > 0 ? IdTitleNode.getById(units, state.unitIds[0]) : null;\r\n if (!unit && !units[0]?.hasChildren()) {\r\n unit = units[0];\r\n }\r\n this.setState({\r\n showNewRecordDialog: true,\r\n newRecordDialogUnitId: unit ? unit.id : \"\",\r\n newRecordDialogUnitCode: unit ? unit.title : \"\",\r\n newRecordDialogEmployeeType: state.employeeTypes.length > 0 ? state.employeeTypes[0] : RecordEmployeeType.Employee,\r\n });\r\n };\r\n\r\n handleEditNewRecordDialogOk = (recordId: string) => {\r\n this.setState({\r\n showNewRecordDialog: false\r\n });\r\n this.refreshList();\r\n };\r\n\r\n handleEditNewRecordDialogCancel = () => {\r\n this.setState({\r\n showNewRecordDialog: false\r\n });\r\n };\r\n // #endregion Add dialog\r\n\r\n handlePrint = async () => {\r\n const state = this.state;\r\n if (!state.selectedId) return;\r\n const fileName = await AppUtils.callService(() => recordService.getRecordPrint(state.selectedId, this.props.companyId));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.AttachmentParameterDownloaded, fileName));\r\n };\r\n\r\n // #region Additional functions: SelectRecord\r\n handleSelectRecordDialogOk = async (records: IRecordListItem[]) => {\r\n const props = this.props;\r\n if (!records || records.length < 1) return;\r\n const state = this.state;\r\n const showRecordUserFurtherEducationDialog = state.selectRecordDialogMode === SelectRecordMode.FurtherEducation;\r\n const showRecordEditSheetDataRowDialog = state.selectRecordDialogMode === SelectRecordMode.SalaryRow;\r\n const showRecordUserTransferredPropertyDialog = state.selectRecordDialogMode === SelectRecordMode.TransferredProperty;\r\n const showSelectQualificationDialog = state.selectRecordDialogMode === SelectRecordMode.Qualifification;\r\n const showRecordUserFamiliarizationDialog = state.selectRecordDialogMode === SelectRecordMode.Familiarization;\r\n let transferredPropertyTypes: string[] = [];\r\n let familiarizationTrainers: string[] = [];\r\n if (showRecordUserTransferredPropertyDialog) {\r\n transferredPropertyTypes = await AppUtils.callService(() => recordService.getTransferredPropertyTypes(props.companyId));\r\n } else if (showRecordUserFamiliarizationDialog) {\r\n familiarizationTrainers = await AppUtils.callService(() => recordService.getFamiliarizationTrainers(props.companyId));\r\n }\r\n this.setState({\r\n showSelectRecordDialog: false,\r\n additionalFunctionRecordIds: records.map(i => i.id),\r\n transferredPropertyTypes,\r\n familiarizationTrainers,\r\n showRecordUserFurtherEducationDialog,\r\n showRecordEditSheetDataRowDialog,\r\n showRecordUserTransferredPropertyDialog,\r\n showSelectQualificationDialog,\r\n showRecordUserFamiliarizationDialog,\r\n furtherEducations: showSelectQualificationDialog\r\n ? RecordFurtherEducationGroupNode.getFurtherEducationsForQualification(props.furtherEducationGroups)\r\n : null,\r\n recordUserFurtherEducationDialogItem: showRecordUserFurtherEducationDialog\r\n ? RecordEditFurtherEducationList.createNewRecordEditItemFurtherEducation(props.furtherEducationGroups)\r\n : null,\r\n recordEditSheetDataRowDialogItem: showRecordEditSheetDataRowDialog\r\n ? RecordEditSheetDataRowList.createNewTaskDataRow(props.sheetTaskType)\r\n : null,\r\n recordUserTransferredPropertyDialogItem: showRecordUserTransferredPropertyDialog\r\n ? RecordEditItemTransferredProperty.createNewRecordEditItemTransferredProperty()\r\n : null,\r\n recordUserFamiliarizationDialogItem: showRecordUserFamiliarizationDialog\r\n ? RecordEditItemFamiliarization.createNewRecordEditItemFamiliarization(props.familiarizations)\r\n : null\r\n });\r\n };\r\n\r\n handleSelectRecordDialogCancel = () => {\r\n this.setState({\r\n showSelectRecordDialog: false\r\n });\r\n };\r\n // #endregion Additional functions: SelectRecord\r\n\r\n // #region Additional functions: AddFurtherEducationToMultipleUserRecords\r\n handleAddFurtherEducationToMultipleUserRecords = () => {\r\n this.setState({\r\n showSelectRecordDialog: true,\r\n selectRecordDialogMode: SelectRecordMode.FurtherEducation\r\n });\r\n };\r\n\r\n getAddFurtherEducationToMultipleUserRecordsSaveData = (props: IRecordListProp, recordIds: string[], recordFurtherEducation: RecordEditItemFurtherEducationSave): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"ids\", recordIds);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"furtherEducation\", recordFurtherEducation);\r\n return result;\r\n };\r\n\r\n handleRecordUserFurtherEducationDialogSave = async (saveItem: RecordEditItemFurtherEducationSave): Promise => {\r\n const state = this.state;\r\n const saveData = this.getAddFurtherEducationToMultipleUserRecordsSaveData(this.props, state.additionalFunctionRecordIds, saveItem);\r\n // Call server\r\n const result = await AppUtils.callService(() => recordService.addFurtherEducationToRecords(saveData.obj));\r\n if (!result) return null;\r\n return result;\r\n };\r\n\r\n handleRecordUserFurtherEducationDialogOk = (recordFurtherEducation: IRecordEditItemFurtherEducation, closeDialog: boolean) => {\r\n if (!recordFurtherEducation) return;\r\n this.setState({\r\n showRecordUserFurtherEducationDialog: false\r\n });\r\n this.refreshList(false);\r\n };\r\n\r\n handleRecordUserFurtherEducationDialogCancel = () => {\r\n this.setState({\r\n showRecordUserFurtherEducationDialog: false\r\n });\r\n };\r\n // #endregion Additional functions: AddFurtherEducationToMultipleUserRecords\r\n\r\n // #region Additional functions: AddSalaryRowToMultipleUserRecords\r\n handleAddSalaryRowToMultipleUserRecords = () => {\r\n if (!this.props.sheetTaskType) return;\r\n this.setState({\r\n showSelectRecordDialog: true,\r\n selectRecordDialogMode: SelectRecordMode.SalaryRow\r\n });\r\n };\r\n\r\n getAddSalaryRowToMultipleUserRecordsSaveData = (props: IRecordListProp, recordIds: string[], sheetDataRow: ITaskDataRow): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"ids\", recordIds);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"sheetDataRow\", SaveTaskDataRow.createSaveTaskDataRow(props.sheetTaskType.formCols, sheetDataRow, null));\r\n return result;\r\n };\r\n\r\n handleRecordEditSheetDataRowDialogSave = async (sheetDataRow: ITaskDataRow): Promise => {\r\n const state = this.state;\r\n const saveData = this.getAddSalaryRowToMultipleUserRecordsSaveData(this.props, state.additionalFunctionRecordIds, sheetDataRow);\r\n // Call server\r\n const result = await AppUtils.callService(() => recordService.addSheetDataRowToRecords(saveData.obj));\r\n if (!result) return null;\r\n return result;\r\n };\r\n\r\n handleRecordEditSheetDataRowDialogDialogOk = (salaryRow: ITaskDataRow, rowId: string, closeDialog: boolean) => {\r\n if (!salaryRow) return;\r\n this.setState({\r\n showRecordEditSheetDataRowDialog: false\r\n });\r\n this.refreshList(false);\r\n };\r\n\r\n handleRecordEditSheetDataRowDialogCancel = () => {\r\n this.setState({\r\n showRecordEditSheetDataRowDialog: false\r\n });\r\n };\r\n // #endregion Additional functions: AddSalaryRowToMultipleUserRecords\r\n\r\n // #region Additional functions: AddTransferredPropertyToMultipleUserRecords\r\n handleAddTransferredPropertyToMultipleUserRecords = () => {\r\n this.setState({\r\n showSelectRecordDialog: true,\r\n selectRecordDialogMode: SelectRecordMode.TransferredProperty\r\n });\r\n };\r\n\r\n getAddTransferredPropertyToMultipleUserRecordsSaveData = (props: IRecordListProp, recordIds: string[], transferredProperty: IRecordEditItemTransferredProperty): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"ids\", recordIds);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"transferredProperty\", new RecordEditItemTransferredPropertySave(transferredProperty));\r\n return result;\r\n };\r\n\r\n handleRecordUserTransferredPropertyDialogSave = async (transferredProperty: IRecordEditItemTransferredProperty): Promise => {\r\n const state = this.state;\r\n const saveData = this.getAddTransferredPropertyToMultipleUserRecordsSaveData(this.props, state.additionalFunctionRecordIds, transferredProperty);\r\n // Call server\r\n const result = await AppUtils.callService(() => recordService.addTransferredPropertyToToRecords(saveData.obj));\r\n if (!result) return null;\r\n return result;\r\n };\r\n\r\n handleRecordUserTransferredPropertyDialogOk = (transferredProperty: IRecordEditItemTransferredProperty, closeDialog: boolean) => {\r\n if (!transferredProperty) return;\r\n this.setState({\r\n showRecordUserTransferredPropertyDialog: false\r\n });\r\n this.refreshList(false);\r\n };\r\n\r\n handleRecordUserTransferredPropertyDialogCancel = () => {\r\n this.setState({\r\n showRecordUserTransferredPropertyDialog: false\r\n });\r\n };\r\n // #endregion Additional functions: AddTransferredPropertyToMultipleUserRecords\r\n \r\n // #region Additional functions: AddQualificationToMultipleUserRecords\r\n handleAddQualificationToMultipleUserRecords = () => {\r\n this.setState({\r\n showSelectRecordDialog: true,\r\n selectRecordDialogMode: SelectRecordMode.Qualifification\r\n });\r\n };\r\n\r\n getAddQualificationToMultipleUserRecordsSaveData = (props: IRecordListProp, recordIds: string[], furtherEducationId: string, furtherEducationGroupId: string): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"ids\", recordIds);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"furtherEducationId\", furtherEducationId);\r\n result.append(\"furtherEducationGroupId\", furtherEducationGroupId);\r\n return result;\r\n };\r\n\r\n handleRecordUserQualificationDialogSave = async (furtherEducationOrGroupId: string): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n const item = RecordFurtherEducationGroupNode.getItemById(props.furtherEducationGroups, furtherEducationOrGroupId);\r\n if (!item) return;\r\n const isGroup = RecordFurtherEducationGroupNode.isGroup(item);\r\n const saveData = this.getAddQualificationToMultipleUserRecordsSaveData(this.props, state.additionalFunctionRecordIds, !isGroup ? item.id : null, isGroup ? item.id : null);\r\n // Call server\r\n const result = await AppUtils.callService(() => recordService.addQualificationToToRecords(saveData.obj));\r\n if (!result) return null;\r\n return result;\r\n };\r\n\r\n onSelectQualificationDialogOk = async (selectedIds: string[]) => {\r\n if (!selectedIds || selectedIds.length < 1) return;\r\n await this.handleRecordUserQualificationDialogSave(selectedIds[0]);\r\n this.setState({\r\n showSelectQualificationDialog: false\r\n });\r\n this.refreshList(false);\r\n };\r\n\r\n onSelectQualificationDialogCancel = () => {\r\n this.setState({\r\n showSelectQualificationDialog: false\r\n });\r\n };\r\n // #endregion Additional functions: AddTransferredPropertyToMultipleUserRecords\r\n\r\n // #region Additional functions: AddFamiliarizationToMultipleUserRecords\r\n handleAddFamiliarizationToMultipleUserRecords = () => {\r\n this.setState({\r\n showSelectRecordDialog: true,\r\n selectRecordDialogMode: SelectRecordMode.Familiarization\r\n });\r\n };\r\n\r\n getAddFamiliarizationToMultipleUserRecordsSaveData = (props: IRecordListProp, recordIds: string[], recordFamiliarization: RecordEditItemFamiliarizationSave): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"ids\", recordIds);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"familiarization\", recordFamiliarization);\r\n return result;\r\n };\r\n\r\n handleRecordUserFamiliarizationDialogSave = async (recordFamiliarization: RecordEditItemFamiliarizationSave): Promise => {\r\n const state = this.state;\r\n const saveData = this.getAddFamiliarizationToMultipleUserRecordsSaveData(this.props, state.additionalFunctionRecordIds, recordFamiliarization);\r\n // Call server\r\n const result = await AppUtils.callService(() => recordService.addFamiliarizationToToRecords(saveData.obj));\r\n if (!result) return null;\r\n return result;\r\n };\r\n\r\n handleRecordUserFamiliarizationDialogOk = (recordFamiliarization: RecordEditItemFamiliarizationSave, closeDialog: boolean) => {\r\n if (!recordFamiliarization) return;\r\n this.setState({\r\n showRecordUserFamiliarizationDialog: false\r\n });\r\n this.refreshList(false);\r\n };\r\n\r\n handleRecordUserFamiliarizationDialogCancel = () => {\r\n this.setState({\r\n showRecordUserFamiliarizationDialog: false\r\n });\r\n };\r\n // #endregion Additional functions: AddTransferredPropertyToMultipleUserRecords\r\n \r\n // #region Additional functions: ArchiveExpiredFamiliarizations\r\n handleArchiveExpiredFamiliarizations = () => {\r\n this.setState({\r\n showArchiveExpiredFamiliarizationsDialog: true\r\n });\r\n };\r\n\r\n handleArchiveExpiredFamiliarizationsDialogOk = () => {\r\n this.setState({\r\n showArchiveExpiredFamiliarizationsDialog: false\r\n });\r\n this.refreshList(false);\r\n };\r\n\r\n handleArchiveExpiredFamiliarizationsDialogCancel = () => {\r\n this.setState({\r\n showArchiveExpiredFamiliarizationsDialog: false\r\n });\r\n };\r\n // #endregion Additional functions: ArchiveExpiredFurtherEducations\r\n\r\n // #region Additional functions: ArchiveExpiredFurtherEducations\r\n handleArchiveExpiredFurtherEducations = () => {\r\n this.setState({\r\n showArchiveExpiredFurtherEducationsDialog: true\r\n });\r\n };\r\n\r\n handleArchiveExpiredFurtherEducationsDialogOk = () => {\r\n this.setState({\r\n showArchiveExpiredFurtherEducationsDialog: false\r\n });\r\n this.refreshList(false);\r\n };\r\n\r\n handleArchiveExpiredFurtherEducationsDialogCancel = () => {\r\n this.setState({\r\n showArchiveExpiredFurtherEducationsDialog: false\r\n });\r\n };\r\n // #endregion Additional functions: ArchiveExpiredFurtherEducations\r\n\r\n getDetailsFamiliarizations = (): React.ReactNode => {\r\n const state = this.state;\r\n if (!state.detailsItem) return null;\r\n const familiarizations = state.detailsItem.familiarizations.filter(i => !i.archived).map(i => i.name + \" (\" + (i.validityEndDate ? Base.utcTimeToDateStr(i.validityEndDate) : \"-\") + \")\");\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n getDetailsFurtherEducations = (): React.ReactNode => {\r\n const state = this.state;\r\n if (!state.detailsItem) return null;\r\n const furtherEducations = state.detailsItem.furtherEducations.filter(i => !i.archived).map(i => i.furtherEducationCode + \" (\" + (i.validityEndDate ? Base.utcTimeToDateStr(i.validityEndDate) : \"-\") + \")\");\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n getDetailsQualifications = (): React.ReactNode => {\r\n const state = this.state;\r\n if (!state.detailsItem || !state.detailsItem.hasQualifications()) return null;\r\n const qualifications = state.detailsItem.getQualificationsForUi();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n \r\n {Translations.AddRecordUser}\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n tooltip={Translations.AdditionalFunctions}\r\n menuRight={true}\r\n />\r\n \r\n }\r\n />\r\n \r\n \r\n \r\n {\r\n return {\r\n columns: [\r\n { size: 2, column: \"unit\", content: item.unitCode },\r\n {\r\n size: 3,\r\n column: \"lastName\",\r\n content:\r\n \r\n \r\n \r\n this.handleOpenLine(item.id)}>{item.lastName}\r\n \r\n {item.hasQualifications() &&\r\n \r\n }\r\n \r\n },\r\n { size: 3, column: \"firstName\", content: item.firstName },\r\n { size: 2, column: \"birthDate\", content: Base.timeToDateStr(item.birthDate) },\r\n { size: 2, column: \"userCode\", content: item.userCode }\r\n ],\r\n id: item.id,\r\n classes: item.archived ? \"disabled\" : \"\"\r\n };\r\n })\r\n : null\r\n }\r\n cards={!state.listModeIsLine\r\n ? state.items.map((item) => {\r\n return {\r\n //classes: (item.archived ? \" disabled\" : \"\"),\r\n sm: 4,\r\n rows: [\r\n {\r\n cols: [\r\n {\r\n size: 6,\r\n title: Translations.Name,\r\n value:\r\n \r\n \r\n this.handleOpenLine(item.id)}>{item.getName()}\r\n \r\n },\r\n { size: 6, title: Translations.EmployeeType, value: item.employeeTypeStr }\r\n ]\r\n },\r\n {\r\n cols: [\r\n { size: 6, title: Translations.Phone, value: item.phone },\r\n { size: 6, title: Translations.EmailAddress, value: item.email }\r\n ]\r\n },\r\n {\r\n cols: [\r\n { size: 6, title: Translations.BirthDate, value: Base.timeToDateStr(item.birthDate) },\r\n { size: 6, disabled: item.userDisabled, title: Translations.UserName, value: item.userCode }\r\n ]\r\n }],\r\n id: item.id\r\n };\r\n })\r\n : null\r\n }\r\n lineDetails={state.detailsItem\r\n ? \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.getDetailsFamiliarizations()}\r\n \r\n \r\n \r\n \r\n \r\n {this.getDetailsFurtherEducations()}\r\n {this.getDetailsQualifications()}\r\n \r\n {!!state.detailsItem.userCode &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n i.name + (i.companyName ? ` (${i.companyName})` : \"\")), \", \")} />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {!state.detailsItem.userCode &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n this.handleOpenLine(state.selectedId)}\r\n />\r\n \r\n : null}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpenLine}\r\n />\r\n \r\n {state.showNewRecordDialog &&\r\n \r\n }\r\n {(state.showEditDialog && !!state.editDialogId) &&\r\n this.refreshList(false)}\r\n onPrevious={() => List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n onRefreshSessionState={props.onRefreshSessionState}\r\n onEmploymentSaved={props.onEmploymentSaved}\r\n />\r\n }\r\n {state.showSelectRecordDialog &&\r\n \r\n }\r\n {state.showRecordUserFurtherEducationDialog &&\r\n \r\n }\r\n {state.showRecordEditSheetDataRowDialog &&\r\n \r\n }\r\n {state.showRecordUserTransferredPropertyDialog &&\r\n \r\n }\r\n {state.showRecordUserFamiliarizationDialog &&\r\n \r\n }\r\n {state.showArchiveExpiredFamiliarizationsDialog &&\r\n \r\n }\r\n {state.showArchiveExpiredFurtherEducationsDialog &&\r\n \r\n }\r\n {state.showSelectQualificationDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","// RecordReportFilterSettings - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Grid, MenuItem, Select } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { CheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/CheckboxDropdown\";\r\nimport { TreeCheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/TreeCheckboxDropdown\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { ITaskDataRow, TaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskDataRowCol } from \"ui/Scripts/source/models/task/taskDataRowCol\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IReportItem } from \"../../../models/report/reportItem\";\r\nimport { FilterButtons } from \"../../framework/Filters/FilterButtons\";\r\nimport { FilterSearchField } from \"../../framework/Filters/FilterSearchField\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { TaskDynamicForm } from \"../../task/TaskDynamicForm/TaskDynamicForm\";\r\nimport { RecordFilterDrawer } from \"../RecordFilterDrawer/RecordFilterDrawer\";\r\nimport { ISaveReportFilters } from \"source/components/report/PageNavMenuItemReportList/SaveReportDialog\";\r\n\r\n//RecordReportFilterSettings\r\nexport interface IRecordReportFilterSettingsProp {\r\n classes?: string;\r\n report: IReportItem;\r\n units: IIdTitleNode[];\r\n activityFilters: IIdTitle[];\r\n jobTitles: IIdTitle[];\r\n employeeTypes: IIdTitle[];\r\n selectedActivityFilterId: string;\r\n selectedEmployeeTypeIds: string[];\r\n selectedJobTitleIds: string[];\r\n selectedUnitIds: string[];\r\n canRemoveSharedReports: boolean;\r\n onSaveReport: (saveAs: boolean, onGetReportSaveFilters: () => ISaveReportFilters) => void;\r\n onRemoveReport: (filterId: string) => void;\r\n onOk: (closeDialog: boolean, selectedActivityFilterId: string, selectedEmployeeTypeIds: string[], selectedJobTitleIds: string[], selectedUnitIds: string[], parameters: ITaskDataRow) => ISaveReportFilters;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IRecordReportFilterSettingsState {\r\n selectedEmployeeTypeIds: string[];\r\n selectedJobTitleIds: string[];\r\n selectedUnitIds: string[];\r\n selectedActivityFilterId: string;\r\n extraParameters: ITaskDataRow;\r\n}\r\n\r\nexport class RecordReportFilterSettings extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n getStateFromProps = (props: IRecordReportFilterSettingsProp): IRecordReportFilterSettingsState => {\r\n return {\r\n selectedActivityFilterId: props.selectedActivityFilterId,\r\n selectedEmployeeTypeIds: props.selectedEmployeeTypeIds.slice(0),\r\n selectedJobTitleIds: props.selectedJobTitleIds.slice(0),\r\n selectedUnitIds: props.selectedUnitIds.slice(0),\r\n extraParameters: props.report?.taskType && props.report?.taskDataRow ? new TaskDataRow(props.report.taskDataRow) : null\r\n };\r\n };\r\n\r\n constructor(props: IRecordReportFilterSettingsProp) {\r\n super(props);\r\n this.state = this.getStateFromProps(props);\r\n this.orgStateHash = this.getSaveDataFromState(props, this.state).hash;\r\n }\r\n\r\n componentDidUpdate(prevProps: IRecordReportFilterSettingsProp, prevState: IRecordReportFilterSettingsState): void {\r\n const props = this.props;\r\n if (!prevProps || prevProps.report?.getHash() === props.report?.getHash()) return;\r\n const state = this.getStateFromProps(props);\r\n this.setState(state);\r\n this.orgStateHash = this.getSaveDataFromState(props, state).hash;\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"activityFilterId\") {\r\n this.setState({ selectedActivityFilterId: value });\r\n }\r\n };\r\n\r\n handleChangeUnitIds = (selectedUnitIds: string[]) => {\r\n this.setState({\r\n selectedUnitIds\r\n });\r\n };\r\n\r\n handleChangeEmployeeTypeIds = (selectedEmployeeTypeIds: string[]) => {\r\n this.setState({\r\n selectedEmployeeTypeIds\r\n });\r\n };\r\n\r\n handleChangeJobTitleIds = (selectedJobTitleIds: string[]) => {\r\n this.setState({\r\n selectedJobTitleIds\r\n });\r\n };\r\n\r\n handleRefreshParameters = (taskDataRowCols: ITaskDataRowCol[]) => {\r\n const state = this.state;\r\n if (!state.extraParameters) return;\r\n const extraParameters = new TaskDataRow(state.extraParameters);\r\n extraParameters.cols = taskDataRowCols;\r\n this.setState({ extraParameters });\r\n };\r\n\r\n getSaveDataFromState = (props: IRecordReportFilterSettingsProp, state: IRecordReportFilterSettingsState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"selectedActivityFilterId\", state.selectedActivityFilterId ? state.selectedActivityFilterId : null);\r\n result.append(\"selectedEmployeeTypeIds\", state.selectedEmployeeTypeIds);\r\n result.append(\"selectedUnitIds\", state.selectedUnitIds);\r\n result.append(\"selectedJobTitleIds\", state.selectedJobTitleIds);\r\n if (props.report?.taskType && props.report?.taskDataRow) {\r\n result.append(\"parameters\", state.extraParameters.cols.map(i => state.extraParameters.getTaskDataRowColUiValue(i.field, props.report.taskType)));\r\n }\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n static filterIsSet = (activityFilters: IIdTitle[], employeeTypes: IIdTitle[], jobTitles: IIdTitle[], units: IIdTitleNode[],\r\n selectedActivityFilterId: string, selectedEmployeeTypeIds: string[], selectedJobTitleIds: string[], selectedUnitIds: string[],\r\n taskType: ITaskEditTypeItem, taskDataRow: ITaskDataRow): boolean => {\r\n return RecordFilterDrawer.filterIsSet(activityFilters, employeeTypes, jobTitles, units,\r\n selectedActivityFilterId, selectedEmployeeTypeIds, selectedJobTitleIds, selectedUnitIds) ||\r\n (taskDataRow && taskType ? !taskDataRow.hasDefaultValues(taskType) : false);\r\n };\r\n\r\n handleSaveReport = async (saveAs: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n if (!saveAs) {\r\n props.onOk(false, state.selectedActivityFilterId, state.selectedEmployeeTypeIds, state.selectedJobTitleIds, state.selectedUnitIds, this.state.extraParameters);\r\n await this.props.onSaveReport(false, null);\r\n } else {\r\n await this.props.onSaveReport(true, () => {\r\n return props.onOk(false, state.selectedActivityFilterId, state.selectedEmployeeTypeIds, state.selectedJobTitleIds, state.selectedUnitIds, this.state.extraParameters);\r\n });\r\n }\r\n };\r\n\r\n handleClear = () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const extraParameters = state.extraParameters ? new TaskDataRow(state.extraParameters) : null;\r\n if (extraParameters) {\r\n extraParameters.initializeToTaskType(props.report.taskType);\r\n }\r\n this.setState({\r\n selectedActivityFilterId: props.activityFilters[1].id,\r\n selectedEmployeeTypeIds: [props.employeeTypes[0].id],\r\n selectedJobTitleIds: [props.jobTitles[0].id],\r\n selectedUnitIds: [props.units[0].id],\r\n extraParameters\r\n });\r\n };\r\n\r\n handleSave = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n props.onOk(true, state.selectedActivityFilterId, state.selectedEmployeeTypeIds, state.selectedJobTitleIds, state.selectedUnitIds, this.state.extraParameters);\r\n };\r\n\r\n handleCancel = async (checkChanges: boolean) => {\r\n AppUtils.cancelEditDialog(checkChanges, this.getSaveDataFromState(this.props, this.state).hash, this.orgStateHash, this.handleSave, this.props.onCancel, Translations.YouHaveUnapprovedChangesDoYouWantApproveChanges);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!!state.extraParameters &&\r\n \r\n \r\n \r\n }\r\n \r\n this.handleCancel(false)}\r\n onClear={this.handleClear}\r\n onSave={this.handleSave}\r\n />\r\n \r\n );\r\n }\r\n}","// RecordReportListHtmlReport - MODULE\r\n// ***********************************************************************************************************************\r\nimport ArchiveOutlinedIcon from \"@mui/icons-material/ArchiveOutlined\";\r\nimport * as React from \"react\";\r\nimport { PageTitle } from \"source/components/framework/Page/PageTitle\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IReportItem } from \"../../../models/report/reportItem\";\r\nimport { ListContainer } from \"../../framework/List/ListContainer\";\r\nimport { RecordArchiveExpiredFamiliarizationsDialog } from \"../RecordArchiveExpiredFamiliarizationsDialog\";\r\nimport { RecordArchiveExpiredFurtherEducationsDialog } from \"../RecordArchiveExpiredFurtherEducationsDialog\";\r\nimport { RecordExpiredFamiliarizationsList } from \"../RecordExpiredFamiliarizationsList\";\r\nimport { RecordExpiredFurtherEducationsList } from \"../RecordExpiredFurtherEducationsList\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum HtmlReportId {\r\n ExpiredFamiliarizations = \"HtmlReportExpiredFamiliarizations\",\r\n ExpiredFurtherEducations = \"HtmlReportExpiredFurtherEducations\",\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n// RecordReportListHtmlReport\r\nexport interface IRecordReportListHtmlReportProp {\r\n companyId: string;\r\n employeeTypes: number[];\r\n jobTitles: string[];\r\n unitIds: string[];\r\n activityState: number;\r\n report: IReportItem;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n onSetSortData: (sortColumn: string, sortOrderIsAsc: boolean) => void;\r\n}\r\n\r\nexport interface IRecordReportListHtmlReportState {\r\n reportGenerated: boolean;\r\n selectedId: string;\r\n checkedIds: string[];\r\n dataId: string;\r\n showArchiveExpiredFamiliarizationsDialog: boolean;\r\n showArchiveExpiredFurtherEducationsDialog: boolean;\r\n}\r\n\r\nexport class RecordReportListHtmlReport extends React.Component<\r\n IRecordReportListHtmlReportProp,\r\n IRecordReportListHtmlReportState\r\n> {\r\n constructor(props: IRecordReportListHtmlReportProp) {\r\n super(props);\r\n this.state = {\r\n reportGenerated: false,\r\n selectedId: null,\r\n checkedIds: [],\r\n dataId: \"\",\r\n showArchiveExpiredFamiliarizationsDialog: false,\r\n showArchiveExpiredFurtherEducationsDialog: false,\r\n };\r\n }\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n reportGenerated: true,\r\n selectedId,\r\n checkedIds,\r\n });\r\n };\r\n\r\n // #region Additional functions: ArchiveExpiredFamiliarizations\r\n handleArchiveExpiredFamiliarizations = () => {\r\n this.setState({\r\n showArchiveExpiredFamiliarizationsDialog: true,\r\n });\r\n };\r\n\r\n handleArchiveExpiredFamiliarizationsDialogOk = () => {\r\n this.setState({\r\n showArchiveExpiredFamiliarizationsDialog: false,\r\n dataId: Base.getGuid(),\r\n });\r\n };\r\n\r\n handleArchiveExpiredFamiliarizationsDialogCancel = () => {\r\n this.setState({\r\n showArchiveExpiredFamiliarizationsDialog: false,\r\n });\r\n };\r\n // #endregion Additional functions: ArchiveExpiredFurtherEducations\r\n\r\n // #region Additional functions: ArchiveExpiredFurtherEducations\r\n handleArchiveExpiredFurtherEducations = () => {\r\n this.setState({\r\n showArchiveExpiredFurtherEducationsDialog: true,\r\n });\r\n };\r\n\r\n handleArchiveExpiredFurtherEducationsDialogOk = () => {\r\n this.setState({\r\n showArchiveExpiredFurtherEducationsDialog: false,\r\n dataId: Base.getGuid(),\r\n });\r\n };\r\n\r\n handleArchiveExpiredFurtherEducationsDialogCancel = () => {\r\n this.setState({\r\n showArchiveExpiredFurtherEducationsDialog: false,\r\n });\r\n };\r\n // #endregion Additional functions: ArchiveExpiredFurtherEducations\r\n\r\n render() {\r\n const props = this.props;\r\n if (!props.report) return null;\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n {props.report.reportId === HtmlReportId.ExpiredFamiliarizations && (\r\n }\r\n disabled={!state.reportGenerated}\r\n onClick={this.handleArchiveExpiredFamiliarizations}\r\n >\r\n {Translations.ArchiveExpiredFamiliarizations}\r\n \r\n )}\r\n {props.report.reportId === HtmlReportId.ExpiredFurtherEducations && (\r\n }\r\n disabled={!state.reportGenerated}\r\n onClick={this.handleArchiveExpiredFurtherEducations}\r\n >\r\n {Translations.ArchiveExpiredFurtherEducations}\r\n \r\n )}\r\n \r\n \r\n {props.report.reportId === HtmlReportId.ExpiredFamiliarizations && (\r\n \r\n )}\r\n {props.report.reportId === HtmlReportId.ExpiredFurtherEducations && (\r\n \r\n )}\r\n {state.showArchiveExpiredFamiliarizationsDialog && (\r\n \r\n )}\r\n {state.showArchiveExpiredFurtherEducationsDialog && (\r\n \r\n )}\r\n \r\n \r\n );\r\n }\r\n}\r\n","/* global JSX */\r\n// RecordReportList - MODULE\r\n// ***********************************************************************************************************************\r\nimport downloadjs from \"downloadjs\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { downloadMimeType } from \"ui/Scripts/source/models/consts\";\r\nimport { ReportType } from \"ui/Scripts/source/models/enums\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IReportGenerated2, ReportGenerated2 } from \"../../../models/report/reportGenerated2\";\r\nimport { IReportItem } from \"../../../models/report/reportItem\";\r\nimport { IReportParameterValue } from \"../../../models/report/reportParameterValue\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { PageReport } from \"../../framework/Report/PageReport\";\r\nimport { RecordReportListHtmlReport } from \"../RecordReportListHtmlReport\";\r\n\r\n// RecordReportList\r\nexport interface IRecordReportListProp {\r\n companyId: string;\r\n reports: IReportItem[];\r\n reportId: string;\r\n selectedEmployeeTypeIds: string[];\r\n selectedJobTitleIds: string[];\r\n selectedUnitIds: string[];\r\n selectedActivityFilterId: string;\r\n dataId?: string;\r\n titleSuffix?: JSX.Element;\r\n onSetSortData: (sortColumn: string, sortOrderIsAsc: boolean) => void;\r\n}\r\n\r\ninterface IRecordReportListState {\r\n isLoading: boolean;\r\n intialized: boolean;\r\n report: IReportItem;\r\n reportGenerated: IReportGenerated2;\r\n reportDataUri: string;\r\n employeeTypes: number[];\r\n jobTitles: string[];\r\n unitIds: string[];\r\n activityState: number;\r\n selectedId: string;\r\n checkedIds: string[];\r\n\r\n}\r\n\r\nexport class RecordReportList extends React.Component {\r\n parameterValues: IReportParameterValue[] = [];\r\n\r\n constructor(props: IRecordReportListProp) {\r\n super(props);\r\n const report = props.reportId ? props.reports.find(i => i.id === props.reportId) : null;\r\n this.parameterValues = report ? report.getReportParameterValues() : [];\r\n this.state = {\r\n isLoading: false,\r\n intialized: false,\r\n reportGenerated: null,\r\n reportDataUri: \"\",\r\n report: props.reportId ? props.reports.find(i => i.id === props.reportId) : null,\r\n employeeTypes: props.selectedEmployeeTypeIds ? props.selectedEmployeeTypeIds.filter(i => !Base.isNullOrEmpty(i)).map(i => i.toInteger()) : [],\r\n jobTitles: props.selectedJobTitleIds ? props.selectedJobTitleIds.filter(i => !!i) : [],\r\n unitIds: props.selectedUnitIds ? props.selectedUnitIds.filter(i => i !== Base.emptyGuid) : [],\r\n activityState: props.selectedActivityFilterId ? parseInt(props.selectedActivityFilterId, 10) : 0,\r\n selectedId: \"\",\r\n checkedIds: []\r\n };\r\n }\r\n\r\n createReport = async (report: IReportItem, employeeTypes: number[], jobTitles: string[], unitIds: string[], activityState: number) => {\r\n if (!report) return;\r\n const props = this.props;\r\n let reportGenerated: ReportGenerated2 = null;\r\n if (report.type !== ReportType.Html) {\r\n this.setState({ isLoading: true });\r\n reportGenerated = await AppUtils.callService(() => recordService.getReportGenerated(props.companyId, report.reportId, report.title, employeeTypes, jobTitles, unitIds, activityState, this.parameterValues),\r\n false, false, () => { this.setState({ isLoading: false }); });\r\n if (!reportGenerated) return;\r\n }\r\n const reportBlob = reportGenerated && reportGenerated.content ? Base.base64ToBlob(reportGenerated.content, reportGenerated.mediaType) : null;\r\n const reportDataUri = reportBlob ? await Base.blobToBase64(reportBlob) : \"\";\r\n this.setState({\r\n intialized: true,\r\n report,\r\n reportGenerated,\r\n reportDataUri,\r\n employeeTypes,\r\n jobTitles,\r\n unitIds,\r\n activityState\r\n });\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.createReport(state.report, state.employeeTypes, state.jobTitles, state.unitIds, state.activityState);\r\n }\r\n\r\n componentDidUpdate(prevProps: IRecordReportListProp, prevState: IRecordReportListState) {\r\n const props = this.props;\r\n const prevDataId = prevProps.dataId ? prevProps.dataId : \"\";\r\n const dataId = props.dataId ? props.dataId : \"\";\r\n const prevReportId = prevProps.reportId ? prevProps.reportId : \"\";\r\n const reportId = props.reportId ? props.reportId : \"\";\r\n const prevReportIds = prevProps.reports ? prevProps.reports.map(i => i.id) : [];\r\n const reportIds = props.reports ? props.reports.map(i => i.id) : [];\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n const prevEmployeeTypes = prevProps.selectedEmployeeTypeIds ? prevProps.selectedEmployeeTypeIds.filter(i => !Base.isNullOrEmpty(i)).map(i => i.toInteger()) : [];\r\n const employeeTypes = props.selectedEmployeeTypeIds ? props.selectedEmployeeTypeIds.filter(i => !Base.isNullOrEmpty(i)).map(i => i.toInteger()) : [];\r\n const prevJobTitles = prevProps.selectedJobTitleIds ? prevProps.selectedJobTitleIds.filter(i => !!i) : [];\r\n const jobTitles = props.selectedJobTitleIds ? props.selectedJobTitleIds.filter(i => !!i) : [];\r\n const prevUnitIds = prevProps.selectedUnitIds ? prevProps.selectedUnitIds.filter(i => i !== Base.emptyGuid) : [];\r\n const unitIds = props.selectedUnitIds ? props.selectedUnitIds.filter(i => i !== Base.emptyGuid) : [];\r\n const prevActivityState = prevProps.selectedActivityFilterId ? parseInt(prevProps.selectedActivityFilterId, 10) : 0;\r\n const activityState = props.selectedActivityFilterId ? parseInt(props.selectedActivityFilterId, 10) : 0;\r\n const report = props.reportId ? props.reports.find(i => i.id === props.reportId) : null;\r\n const parameterValues = report ? report.getReportParameterValues() : [];\r\n if (dataId === prevDataId && reportId === prevReportId && companyId === prevCompanyId &&\r\n Base.equalArrays(prevEmployeeTypes, employeeTypes) &&\r\n Base.equalStrArrays(prevJobTitles, jobTitles) &&\r\n Base.equalStrArrays(prevUnitIds, unitIds) &&\r\n Base.equalStrArrays(prevReportIds, reportIds) &&\r\n JSON.stringify(this.parameterValues) === JSON.stringify(parameterValues) && prevActivityState === activityState) return;\r\n this.parameterValues = parameterValues;\r\n this.setState({\r\n selectedId: \"\",\r\n checkedIds: []\r\n }, () => this.createReport(reportId ? props.reports.find(i => i.id === reportId) : null, employeeTypes, jobTitles, unitIds, activityState));\r\n }\r\n\r\n handleDownload = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const report = state.report;\r\n let reportGenerated = state.reportGenerated;\r\n if (!reportGenerated || !reportGenerated.content) return;\r\n const excelTable = reportGenerated.tables.length > 0 ? reportGenerated.tables[0] : null;\r\n if (!excelTable) return;\r\n if (report.type === ReportType.Excel && excelTable.taskType.lineMultiselect && state.checkedIds.length !== 0 && state.checkedIds.length !== excelTable.dataRows.length) {\r\n this.setState({ isLoading: true });\r\n const printRows = state.checkedIds.map(i => excelTable.dataRows.findIndex(j => j.id === i)).filter(i => i > -1);\r\n reportGenerated = await AppUtils.callService(() => recordService.getReportGenerated(props.companyId, report.reportId, report.title, state.employeeTypes, state.jobTitles, state.unitIds, state.activityState, this.parameterValues, printRows),\r\n false, false, () => { this.setState({ isLoading: false }); });\r\n if (!reportGenerated) return;\r\n }\r\n const blob = Base.base64ToBlob(reportGenerated.content, downloadMimeType);\r\n if (!blob) return;\r\n downloadjs(blob, reportGenerated.fileName);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n }\r\n hidePageTitle={state.report.type === ReportType.Html}\r\n sortingDisabled={true}\r\n multiSelect\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSetSortData={props.onSetSortData}\r\n onDownload={this.handleDownload}\r\n />\r\n );\r\n }\r\n}","// RecordEducationDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IRecordEducationEditItem } from \"../../../models/recordEducation/recordEducationEditItem\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogButtons } from \"../../framework/Dialog/DialogButtons\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { ModifyUserInfo } from \"../../framework/User/ModifyUserInfo\";\r\n\r\n//RecordEducationDialog\r\nexport interface IRecordEducationDialogProp {\r\n classes?: string;\r\n id: string;\r\n companyId: string;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onOk: () => void;\r\n onCancel: () => void;\r\n onRemove: (ids: string[]) => Promise;\r\n onRefreshList: () => Promise;\r\n}\r\n\r\nexport interface IRecordEducationDialogState {\r\n code: string;\r\n comment: string;\r\n education: IRecordEducationEditItem;\r\n rowId: string;\r\n}\r\n\r\nexport class RecordEducationDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IRecordEducationDialogProp) {\r\n super(props);\r\n this.state = {\r\n education: null,\r\n code: \"\",\r\n comment: \"\",\r\n rowId: \"\",\r\n };\r\n }\r\n\r\n loadEducation = async () => {\r\n const props = this.props;\r\n const result = await AppUtils.callService(() => recordService.getRecordBasicEducationEdit(props.companyId, props.id), false);\r\n if (!result) return;\r\n const education = result.education;\r\n const state = {\r\n ...this.state,\r\n education,\r\n code: education.code,\r\n comment: education.comment,\r\n rowId: education.rowId\r\n };\r\n this.setState(state);\r\n const saveData = this.getSaveDataFromState(this.props, state);\r\n this.orgStateHash = saveData.hash;\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadEducation();\r\n }\r\n\r\n async componentDidUpdate(prevProps: IRecordEducationDialogProp, prevState: IRecordEducationDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if (prevProps.companyId === props.companyId && prevProps.id === props.id) return;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb()) return;\r\n props.onRefreshList();\r\n }\r\n this.loadEducation();\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"code\") {\r\n this.setState({ code: value });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n }\r\n };\r\n\r\n getSaveDataFromState = (props: IRecordEducationDialogProp, state: IRecordEducationDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.education.id);\r\n result.append(\"companyId\", !props.companyId ? null : props.companyId);\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"code\", state.code);\r\n result.append(\"comment\", state.comment);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.code) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.NameMustBeDefined));\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n return !!(await AppUtils.callService(() => recordService.saveRecordBasicEducationEdit(saveData.obj)));\r\n };\r\n\r\n handleSave = async () => {\r\n if (!await this.saveToDb()) return;\r\n this.props.onOk();\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.education.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveRecordBasicEducationParameter, state.education.code), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await props.onRemove([state.education.id]);\r\n if (!result) return;\r\n props.onOk();\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut(this.getSaveDataFromState(props, this.state).hash, this.orgStateHash, this.saveToDb, props.onRefreshList);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.education) return null;\r\n const isNew = state.education.isNew();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!isNew &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}/>\r\n );\r\n }\r\n}","// RecordEducationList - MODULE\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { infiniteListPageSize } from \"../../../models/common/webConsts\";\r\nimport { IRecordEducationListItem } from \"../../../models/recordEducation/recordEducationListItem\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { DialogSettingsCard } from \"../../framework/Container/DialogSettingsCard\";\r\nimport { IListUsingComponentState, List } from \"../../framework/List/List\";\r\nimport { ListIconButtonsItem } from \"../../framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { ListLinkValue } from \"../../framework/List/ListLinkValue\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { RecordEducationDialog } from \"../RecordEducationDialog/RecordEducationDialog\";\r\n\r\n// RecordEducationList\r\nexport interface IRecordEducationListProp {\r\n companyId: string;\r\n}\r\n\r\ninterface IRecordEducationListState extends IListUsingComponentState {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n pageSize: number;\r\n page: number;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n checkedIds: string[];\r\n}\r\n\r\nexport class RecordEducationList extends React.Component {\r\n constructor(props: IRecordEducationListProp) {\r\n super(props);\r\n this.state = {\r\n intialized: false,\r\n isLoading: false,\r\n page: 1,\r\n hasMore: true,\r\n filter: \"\",\r\n pageSize: infiniteListPageSize,\r\n sortColumn: \"code\",\r\n sortOrderIsAsc: true,\r\n items: [],\r\n selectedId: null,\r\n checkedIds: [],\r\n detailsItem: null,\r\n showEditDialog: false,\r\n editDialogId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false\r\n };\r\n }\r\n\r\n searchItems = async (pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean, moveNext: boolean = false, setEducationDialogData: boolean = true) => {\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => recordService.getBasicEducationListItems(this.props.companyId, !refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1, filter, sortColumn, sortOrderIsAsc), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const state = this.state;\r\n const items = List.getListItems(state.items, state.selectedId, state.checkedIds, result.items, resetItems, refreshList);\r\n let selectedId = items.selectedId;\r\n let index = items.items.findIndex(i => i.id === selectedId);\r\n let detailsItem = index > -1 ? items.items[index] : null;\r\n if (moveNext && detailsItem && index < items.items.length - 1) {\r\n index = index + 1;\r\n detailsItem = items.items[index];\r\n selectedId = items.items[index].id;\r\n }\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n selectedId,\r\n checkedIds: items.checkedIds,\r\n detailsItem,\r\n editDialogId: setEducationDialogData ? (moveNext && detailsItem ? detailsItem.id : \"\") : state.editDialogId,\r\n editDialogHasPrevious: setEducationDialogData ? index > 0 : state.editDialogHasPrevious,\r\n editDialogHasNext: setEducationDialogData ? (index < items.items.length - 1 || result.hasMore) : state.editDialogHasNext,\r\n });\r\n };\r\n\r\n refreshList = async (setEducationDialogData: boolean = true) => {\r\n const state = this.state;\r\n await this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, true, false, setEducationDialogData);\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: IRecordEducationListProp, prevState: IRecordEducationListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n if (companyId === prevCompanyId) return;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds,\r\n detailsItem: this.state.items.find(i => i.id === selectedId)\r\n });\r\n };\r\n\r\n handleAdd = () => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, Base.emptyGuid));\r\n };\r\n\r\n handleOpenLine = (id: string) => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, id));\r\n };\r\n\r\n handleEducationDialogOk = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n this.refreshList();\r\n };\r\n\r\n handleEducationDialogCancel = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n };\r\n\r\n getRemoveSaveData = (props: IRecordEducationListProp, educationIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"companyId\", !props.companyId ? null : props.companyId);\r\n result.append(\"educationIds\", educationIds);\r\n return result;\r\n };\r\n\r\n remove = async (educationIds: string[]): Promise => {\r\n const props = this.props;\r\n if (educationIds.length < 1) return;\r\n const saveData = this.getRemoveSaveData(props, educationIds);\r\n // Call server\r\n const result = await AppUtils.callService(() => recordService.removeRecordBasicEducations(saveData.obj));\r\n if (!result) return null;\r\n this.refreshList();\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n const selectedItems = state.items.filter(i => selectedIds.indexOf(i.id) > -1);\r\n if (selectedItems.length < 1) return;\r\n if (await AppUtils.showConfirmationDialog(selectedItems.length > 1\r\n ? Translations.DoYouReallyWantToRemoveSelectedRecordBasicEducations\r\n : String.format(Translations.DoYouReallyWantToRemoveRecordBasicEducationParameter, selectedItems[0].code), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n this.remove(selectedIds);\r\n }\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n this.setState(List.getEditDialogItemByIndexStateChange(this.state, index, () => this.searchItems(state.pageSize, state.page + 1, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false, true)));\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n }\r\n rightItems={\r\n \r\n }\r\n />\r\n }\r\n content={\r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 4,\r\n column: \"code\",\r\n content: this.handleOpenLine(item.id)}>{item.code}\r\n },\r\n { size: 8, column: \"comments\", content: item.comment }\r\n ],\r\n id: item.id,\r\n };\r\n })}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpenLine}\r\n //onLongPress?: (id: string) => void;\r\n />\r\n } />\r\n {(state.showEditDialog && !!state.editDialogId) &&\r\n this.refreshList(false)}\r\n onPrevious={() => List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","// RecordFamiliarizationDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IRecordFamiliarizationEditItem } from \"../../../models/recordFamiliarization/recordFamiliarizationEditItem\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogButtons } from \"../../framework/Dialog/DialogButtons\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { ModifyUserInfo } from \"../../framework/User/ModifyUserInfo\";\r\n\r\n//RecordFamiliarizationDialog\r\nexport interface IRecordFamiliarizationDialogProp {\r\n classes?: string;\r\n id: string;\r\n companyId: string;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onOk: () => void;\r\n onCancel: () => void;\r\n onRemove: (ids: string[]) => Promise;\r\n onRefreshList: () => Promise;\r\n}\r\n\r\nexport interface IRecordFamiliarizationDialogState {\r\n code: string;\r\n comment: string;\r\n item: IRecordFamiliarizationEditItem;\r\n rowId: string;\r\n}\r\n\r\nexport class RecordFamiliarizationDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IRecordFamiliarizationDialogProp) {\r\n super(props);\r\n this.state = {\r\n item: null,\r\n code: \"\",\r\n comment: \"\",\r\n rowId: \"\",\r\n };\r\n }\r\n\r\n loadEducation = async () => {\r\n const props = this.props;\r\n const result = await AppUtils.callService(() => recordService.getRecordFamiliarizationEdit(props.companyId, props.id), false);\r\n if (!result) return;\r\n const item = result.familiarization;\r\n const state = {\r\n ...this.state,\r\n item,\r\n code: item.code,\r\n comment: item.comment,\r\n rowId: item.rowId\r\n };\r\n this.setState(state);\r\n const saveData = this.getSaveDataFromState(this.props, state);\r\n this.orgStateHash = saveData.hash;\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadEducation();\r\n }\r\n\r\n async componentDidUpdate(prevProps: IRecordFamiliarizationDialogProp, prevState: IRecordFamiliarizationDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if (prevProps.companyId === props.companyId && prevProps.id === props.id) return;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb()) return;\r\n props.onRefreshList();\r\n }\r\n this.loadEducation();\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"code\") {\r\n this.setState({ code: value });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n }\r\n };\r\n\r\n getSaveDataFromState = (props: IRecordFamiliarizationDialogProp, state: IRecordFamiliarizationDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.item.id);\r\n result.append(\"companyId\", !props.companyId ? null : props.companyId);\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"code\", state.code);\r\n result.append(\"comment\", state.comment);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.code) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.NameMustBeDefined));\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n return !!(await AppUtils.callService(() => recordService.saveRecordFamiliarizationEdit(saveData.obj)));\r\n };\r\n\r\n handleSave = async () => {\r\n if (!await this.saveToDb()) return;\r\n this.props.onOk();\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.item.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveRecordFamiliarizationParameter, state.item.code), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await props.onRemove([state.item.id]);\r\n if (!result) return;\r\n props.onOk();\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut(this.getSaveDataFromState(props, this.state).hash, this.orgStateHash, this.saveToDb, props.onRefreshList);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.item) return null;\r\n const isNew = state.item.isNew();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!isNew &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}/>\r\n );\r\n }\r\n}","// RecordFamiliarizationList - MODULE\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { infiniteListPageSize } from \"../../../models/common/webConsts\";\r\nimport { IRecordFamiliarizationListItem } from \"../../../models/recordFamiliarization/recordFamiliarizationListItem\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { IListUsingComponentState, List } from \"../../framework/List/List\";\r\nimport { ListIconButtonsItem } from \"../../framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { ListLinkValue } from \"../../framework/List/ListLinkValue\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { RecordFamiliarizationDialog } from \"../RecordFamiliarizationDialog/RecordFamiliarizationDialog\";\r\nimport { DialogSettingsCard } from \"source/components/framework/Container/DialogSettingsCard\";\r\n\r\n// RecordFamiliarizationList\r\nexport interface IRecordFamiliarizationListProp {\r\n companyId: string;\r\n}\r\n\r\ninterface IRecordFamiliarizationListState extends IListUsingComponentState {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n pageSize: number;\r\n page: number;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n checkedIds: string[];\r\n}\r\n\r\nexport class RecordFamiliarizationList extends React.Component {\r\n constructor(props: IRecordFamiliarizationListProp) {\r\n super(props);\r\n this.state = {\r\n intialized: false,\r\n isLoading: false,\r\n page: 1,\r\n hasMore: true,\r\n filter: \"\",\r\n pageSize: infiniteListPageSize,\r\n sortColumn: \"code\",\r\n sortOrderIsAsc: true,\r\n items: [],\r\n selectedId: null,\r\n checkedIds: [],\r\n detailsItem: null,\r\n showEditDialog: false,\r\n editDialogId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false\r\n };\r\n }\r\n\r\n searchItems = async (pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean, moveNext: boolean = false, setEditDialogData: boolean = true) => {\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => recordService.getRecordFamiliarizationListItems(this.props.companyId, !refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1, filter, sortColumn, sortOrderIsAsc), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const state = this.state;\r\n const items = List.getListItems(state.items, state.selectedId, state.checkedIds, result.items, resetItems, refreshList);\r\n let selectedId = items.selectedId;\r\n let index = items.items.findIndex(i => i.id === selectedId);\r\n let detailsItem = index > -1 ? items.items[index] : null;\r\n if (moveNext && detailsItem && index < items.items.length - 1) {\r\n index = index + 1;\r\n detailsItem = items.items[index];\r\n selectedId = items.items[index].id;\r\n }\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n selectedId,\r\n checkedIds: items.checkedIds,\r\n detailsItem,\r\n editDialogId: setEditDialogData ? (moveNext && detailsItem ? detailsItem.id : \"\") : state.editDialogId,\r\n editDialogHasPrevious: setEditDialogData ? index > 0 : state.editDialogHasPrevious,\r\n editDialogHasNext: setEditDialogData ? (index < items.items.length - 1 || result.hasMore) : state.editDialogHasNext,\r\n });\r\n };\r\n\r\n refreshList = async (setEducationDialogData: boolean = true) => {\r\n const state = this.state;\r\n await this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, true, false, setEducationDialogData);\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: IRecordFamiliarizationListProp, prevState: IRecordFamiliarizationListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n if (companyId === prevCompanyId) return;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds,\r\n detailsItem: this.state.items.find(i => i.id === selectedId)\r\n });\r\n };\r\n\r\n handleAdd = () => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, Base.emptyGuid));\r\n };\r\n\r\n handleOpenLine = (id: string) => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, id));\r\n };\r\n\r\n handleEditDialogOk = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n this.refreshList();\r\n };\r\n\r\n handleEditDialogCancel = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n };\r\n\r\n getRemoveSaveData = (props: IRecordFamiliarizationListProp, ids: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"companyId\", !props.companyId ? null : props.companyId);\r\n result.append(\"ids\", ids);\r\n return result;\r\n };\r\n\r\n remove = async (ids: string[]): Promise => {\r\n const props = this.props;\r\n if (ids.length < 1) return;\r\n const saveData = this.getRemoveSaveData(props, ids);\r\n // Call server\r\n const result = await AppUtils.callService(() => recordService.removeRecordFamiliarizations(saveData.obj));\r\n if (!result) return null;\r\n this.refreshList();\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n const selectedItems = state.items.filter(i => selectedIds.indexOf(i.id) > -1);\r\n if (selectedItems.length < 1) return;\r\n if (await AppUtils.showConfirmationDialog(selectedItems.length > 1\r\n ? Translations.DoYouReallyWantToRemoveSelectedRecordFamiliarizations\r\n : String.format(Translations.DoYouReallyWantToRemoveRecordFamiliarizationParameter, selectedItems[0].code), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n this.remove(selectedIds);\r\n }\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n this.setState(List.getEditDialogItemByIndexStateChange(state, index, () => this.searchItems(state.pageSize, state.page + 1, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false, true)));\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n }\r\n rightItems={\r\n \r\n }\r\n />\r\n }\r\n content={\r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 4,\r\n column: \"code\",\r\n content: this.handleOpenLine(item.id)}>{item.code}\r\n },\r\n { size: 8, column: \"comments\", content: item.comment }\r\n ],\r\n id: item.id,\r\n };\r\n })}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpenLine}\r\n />\r\n }\r\n />\r\n {(state.showEditDialog && !!state.editDialogId) &&\r\n this.refreshList(false)}\r\n onPrevious={() => List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","import React, { ReactNode } from \"react\";\r\nimport { MenuItem, Select } from \"@mui/material\";\r\n\r\ninterface IFormSelectItem {\r\n id?: string;\r\n value: string;\r\n title: ReactNode;\r\n}\r\n\r\ninterface IFormSelectProps {\r\n disabled?: boolean;\r\n value: string;\r\n tooltip: string;\r\n items: IFormSelectItem[];\r\n onChange: (value: string) => void;\r\n}\r\n\r\nexport const FormSelect = (props: IFormSelectProps) => {\r\n const handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n props.onChange(value);\r\n };\r\n\r\n return (\r\n \r\n );\r\n};","// RecordFurtherEducationDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { ConfirmationDialogResult, EnumHelper, RecordEducationScopeUnit } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IRecordFurtherEducationEditItem } from \"../../../models/recordFurtherEducation/recordFurtherEducationEditItem\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogButtons } from \"../../framework/Dialog/DialogButtons\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { ModifyUserInfo } from \"../../framework/User/ModifyUserInfo\";\r\nimport { FormSelect } from \"source/components/framework/FormSelect\";\r\n\r\n//RecordFurtherEducationDialog\r\nexport interface IRecordFurtherEducationDialogProp {\r\n classes?: string;\r\n id: string;\r\n companyId: string;\r\n groupId: string;\r\n canBeRemoved: boolean;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onOk: () => void;\r\n onCancel: () => void;\r\n onRemove: (id: string) => Promise;\r\n onRefreshList: () => Promise;\r\n}\r\n\r\nexport interface IRecordFurtherEducationDialogState {\r\n groups: IIdTitle[];\r\n groupId: string;\r\n code: string;\r\n comment: string;\r\n scopeUnit: number;\r\n scope: number;\r\n validity: number;\r\n education: IRecordFurtherEducationEditItem;\r\n rowId: string;\r\n}\r\n\r\nexport class RecordFurtherEducationDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IRecordFurtherEducationDialogProp) {\r\n super(props);\r\n this.state = {\r\n groups: [],\r\n education: null,\r\n groupId: props.groupId,\r\n code: \"\",\r\n comment: \"\",\r\n scopeUnit: 99,\r\n scope: 0,\r\n validity: 0,\r\n rowId: \"\",\r\n };\r\n }\r\n\r\n loadEducation = async () => {\r\n const props = this.props;\r\n const result = await AppUtils.callService(() => recordService.getRecordFurtherEducationEdit(props.companyId, props.id), false);\r\n if (!result) return;\r\n const education = result.education;\r\n const state = {\r\n ...this.state,\r\n groups: result.furtherEducationGroups,\r\n education,\r\n groupId: education.isNew() ? props.groupId : education.groupId,\r\n code: education.code,\r\n comment: education.comment,\r\n scopeUnit: education.scopeUnit,\r\n scope: education.scope,\r\n validity: education.validity,\r\n rowId: education.rowId\r\n };\r\n this.setState(state);\r\n const saveData = this.getSaveDataFromState(this.props, state);\r\n this.orgStateHash = saveData.hash;\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadEducation();\r\n }\r\n\r\n async componentDidUpdate(prevProps: IRecordFurtherEducationDialogProp, prevState: IRecordFurtherEducationDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if (prevProps.companyId === props.companyId && prevProps.id === props.id) return;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb()) return;\r\n props.onRefreshList();\r\n }\r\n this.loadEducation();\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"code\") {\r\n this.setState({ code: value });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n } else if (name === \"scope\") {\r\n this.setState({ scope: value.toInteger() });\r\n }\r\n };\r\n\r\n getSaveDataFromState = (props: IRecordFurtherEducationDialogProp, state: IRecordFurtherEducationDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.education.id);\r\n result.append(\"companyId\", !props.companyId ? null : props.companyId);\r\n result.append(\"groupId\", state.groupId);\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"code\", state.code);\r\n result.append(\"comment\", state.comment);\r\n result.append(\"scopeUnit\", state.scopeUnit ?? null);\r\n result.append(\"scope\", state.scope ?? null);\r\n result.append(\"validity\", state.validity ?? null);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.code) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.NameMustBeDefined));\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n return !!(await AppUtils.callService(() => recordService.saveRecordFurtherEducationEdit(saveData.obj)));\r\n };\r\n\r\n handleSave = async () => {\r\n if (!await this.saveToDb()) return;\r\n this.props.onOk();\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.education.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveRecordFurtherEducationParameter, state.education.code), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await props.onRemove(state.education.id);\r\n if (!result) return;\r\n props.onOk();\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut(this.getSaveDataFromState(props, this.state).hash, this.orgStateHash, this.saveToDb, props.onRefreshList);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.education) return null;\r\n const isNew = state.education.isNew();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ({ value: group.id, title: group.title }))}\r\n onChange={(groupId) => this.setState({ groupId })}\r\n />\r\n \r\n \r\n \r\n \r\n this.setState({ scopeUnit: scopeUnit.toInteger() })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {state.scope === 1\r\n ? EnumHelper.RecordEducationScopeUnitToStr(state.scopeUnit)\r\n : EnumHelper.RecordEducationScopeUnitToStrPlural(state.scopeUnit)\r\n }\r\n \r\n : null\r\n }} />\r\n \r\n \r\n \r\n \r\n ({ value: i.toString(10), title: `${i} ${Translations.Years}` })))}\r\n onChange={(validity) => this.setState({ validity: validity.toInteger() })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!isNew &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","// RecordFurtherEducationGroupDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { IRecordFurtherEducationGroupEditItem } from \"source/models/recordFurtherEducationGroup/recordFurtherEducationGroupEditItem\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogButtons } from \"../../framework/Dialog/DialogButtons\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { ModifyUserInfo } from \"../../framework/User/ModifyUserInfo\";\r\nimport { FormSelect } from \"source/components/framework/FormSelect\";\r\n\r\n//RecordFurtherEducationGroupDialog\r\nexport interface IRecordFurtherEducationGroupDialogProp {\r\n classes?: string;\r\n id: string;\r\n companyId: string;\r\n canBeRemoved: boolean;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onOk: () => void;\r\n onCancel: () => void;\r\n onRemove: (id: string) => Promise;\r\n onRefreshList: () => Promise;\r\n}\r\n\r\nexport interface IRecordFurtherEducationGroupDialogState {\r\n educationGroup: IRecordFurtherEducationGroupEditItem;\r\n code: string;\r\n comment: string;\r\n requiredQualificationCount: number;\r\n rowId: string;\r\n}\r\n\r\nexport class RecordFurtherEducationGroupDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IRecordFurtherEducationGroupDialogProp) {\r\n super(props);\r\n this.state = {\r\n educationGroup: null,\r\n code: \"\",\r\n comment: \"\",\r\n requiredQualificationCount: 0,\r\n rowId: \"\",\r\n };\r\n }\r\n\r\n loadEducation = async () => {\r\n const props = this.props;\r\n const result = await AppUtils.callService(() => recordService.getRecordFurtherEducationGroupEdit(props.companyId, props.id), false);\r\n if (!result) return;\r\n const educationGroup = result.educationGroup;\r\n const state = {\r\n ...this.state,\r\n educationGroup,\r\n code: educationGroup.code,\r\n comment: educationGroup.comment,\r\n requiredQualificationCount: educationGroup.requiredQualificationCount,\r\n rowId: educationGroup.rowId\r\n };\r\n this.setState(state);\r\n const saveData = this.getSaveDataFromState(this.props, state);\r\n this.orgStateHash = saveData.hash;\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadEducation();\r\n }\r\n\r\n async componentDidUpdate(prevProps: IRecordFurtherEducationGroupDialogProp, prevState: IRecordFurtherEducationGroupDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if (prevProps.companyId === props.companyId && prevProps.id === props.id) return;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb()) return;\r\n props.onRefreshList();\r\n }\r\n this.loadEducation();\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"code\") {\r\n this.setState({ code: value });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n }\r\n };\r\n\r\n getSaveDataFromState = (props: IRecordFurtherEducationGroupDialogProp, state: IRecordFurtherEducationGroupDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.educationGroup.id);\r\n result.append(\"companyId\", !props.companyId ? null : props.companyId);\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"code\", state.code);\r\n result.append(\"comment\", state.comment);\r\n result.append(\"requiredQualificationCount\", state.requiredQualificationCount ?? 0);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.code) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.NameMustBeDefined));\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n return !!(await AppUtils.callService(() => recordService.saveRecordFurtherEducationGroupEdit(saveData.obj)));\r\n };\r\n\r\n handleSave = async () => {\r\n if (!await this.saveToDb()) return;\r\n this.props.onOk();\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.educationGroup.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveRecordFurtherEducationGroupParameter, state.educationGroup.code), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await props.onRemove(state.educationGroup.id);\r\n if (!result) return;\r\n props.onOk();\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut(this.getSaveDataFromState(props, this.state).hash, this.orgStateHash, this.saveToDb, props.onRefreshList);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.educationGroup) return null;\r\n const isNew = state.educationGroup.isNew();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ({ value: i, title: i })))}\r\n onChange={(requiredQualificationCount) => this.setState({ requiredQualificationCount: requiredQualificationCount.toInteger() })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!isNew &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}/>\r\n );\r\n }\r\n}","// EventTypeTreeNode\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport WidgetsIcon from \"@mui/icons-material/Widgets\";\r\nimport { IRecordFurtherEducationGroupNode, RecordFurtherEducationGroupNode } from \"ui/Scripts/source/models/recordFurtherEducationGroup/recordFurtherEducationGroupNode\";\r\nimport { IRecordFurtherEducationNode } from \"ui/Scripts/source/models/recordFurtherEducation/recordFurtherEducationNode\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Grid, Tooltip, Typography, alpha } from \"@mui/material\";\r\nimport { ListLinkValue } from \"source/components/framework/List/ListLinkValue\";\r\n\r\nexport interface IRecordFurtherEducationTreeNodeProp {\r\n classes?: string;\r\n level: number;\r\n item: IRecordFurtherEducationGroupNode | IRecordFurtherEducationNode;\r\n selectedId?: string;\r\n onClick: (id: string) => void;\r\n onDoubleClick: (id: string) => void;\r\n onSetCollapsed: (id: string, value: boolean) => void;\r\n}\r\n\r\nexport class RecordFurtherEducationTreeNode extends React.Component {\r\n handleNodeClick = (e) => {\r\n const props = this.props;\r\n e.stopPropagation();\r\n props.onClick(props.item.id);\r\n };\r\n \r\n handleNodeDoubleClick = (e) => {\r\n const props = this.props;\r\n e.stopPropagation();\r\n props.onDoubleClick(props.item.id);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const item = props.item;\r\n const isGroup = RecordFurtherEducationGroupNode.isGroup(item);\r\n if (!item || (!isGroup && item.parentIsCollapsed())) return null;\r\n return (\r\n <>\r\n ({\r\n \"paddingY\": \"11px\",\r\n \"borderBottom\": \"1px solid\",\r\n \"borderColor\": \"divider\",\r\n \"cursor\": \"pointer\",\r\n \"backgroundColor\": props.selectedId === item.id\r\n ? alpha(\r\n theme.palette.primary.main,\r\n theme.palette.action.selectedOpacity\r\n )\r\n : undefined,\r\n \"&:hover\": {\r\n background: props.selectedId === item.id\r\n ? alpha(\r\n theme.palette.primary.main,\r\n theme.palette.action.selectedOpacity +\r\n theme.palette.action.hoverOpacity\r\n )\r\n : theme.palette.action.hover\r\n }\r\n })}\r\n >\r\n \r\n {isGroup &&\r\n \r\n \r\n \r\n }\r\n {item.code}\r\n \r\n {item.comment}\r\n \r\n {isGroup && item.requiredQualificationCount > 0 &&\r\n {item.requiredQualificationCount.toString(10)}\r\n }\r\n {isGroup && item.requiredQualificationCount === 0 &&\r\n {Translations.NotInUse}\r\n }\r\n \r\n \r\n {isGroup && item.children.map((childItem) =>\r\n \r\n )}\r\n \r\n );\r\n }\r\n}","// EventTypeTree\r\n// ***********************************************************************************************************************\r\nimport PlaylistAddIcon from \"@mui/icons-material/PlaylistAdd\";\r\nimport { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { SaveDataObj } from \"source/framework/saveData\";\r\nimport { ToolButton } from \"ui/Scripts/source/components/framework/Button/ToolButton\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { IRecordFurtherEducationNode } from \"ui/Scripts/source/models/recordFurtherEducation/recordFurtherEducationNode\";\r\nimport { IRecordFurtherEducationGroupNode, RecordFurtherEducationGroupNode } from \"ui/Scripts/source/models/recordFurtherEducationGroup/recordFurtherEducationGroupNode\";\r\nimport { IRecordFurtherEducationGroupNodes } from \"ui/Scripts/source/models/recordFurtherEducationGroup/recordFurtherEducationGroupNodes\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { DialogSettingsCard } from \"../../framework/Container/DialogSettingsCard\";\r\nimport { ListHeaderLine } from \"../../framework/List/ListLine\";\r\nimport { RecordFurtherEducationDialog } from \"../RecordFurtherEducationDialog\";\r\nimport { RecordFurtherEducationGroupDialog } from \"../RecordFurtherEducationGroupDialog/RecordFurtherEducationGroupDialog\";\r\nimport { RecordFurtherEducationTreeNode } from \"../RecordFurtherEducationTreeNode/RecordFurtherEducationTreeNode\";\r\nimport { RemoveToolButton } from \"source/components/framework/Button/RemoveToolButton\";\r\nimport { AddToolButton } from \"source/components/framework/Button/AddToolButton\";\r\n\r\nexport interface IRecordFurtherEducationTreeProp {\r\n classes?: string;\r\n companyId: string;\r\n selectedId?: string;\r\n recordFurtherEducationGroupNodes: IRecordFurtherEducationGroupNodes;\r\n getRecordFurtherEducationGroupNodes: () => Promise;\r\n}\r\n\r\nexport interface IRecordFurtherEducationTreeState {\r\n // Tree\r\n items: IRecordFurtherEducationGroupNode[];\r\n selectedId: string;\r\n selectedCanBeRemoved: boolean;\r\n\r\n // Dialog\r\n showEditDialog: boolean;\r\n showEditGroupDialog: boolean;\r\n editDialogId: string;\r\n editDialogParentId: string;\r\n editDialogHasPrevious: boolean;\r\n editDialogHasNext: boolean;\r\n}\r\n\r\nexport class RecordFurtherEducationTree extends React.Component {\r\n static getSelectedGroupOrItem = (items: IRecordFurtherEducationGroupNode[], id: string): IRecordFurtherEducationGroupNode | IRecordFurtherEducationNode => {\r\n if (!id) return null;\r\n const selectedGroup = items.find(i => i.id === id);\r\n if (selectedGroup) return selectedGroup;\r\n return RecordFurtherEducationGroupNode.getRecordFurtherEducationById(items, id);\r\n };\r\n\r\n static itemCanBeRemoved = (item: IRecordFurtherEducationGroupNode | IRecordFurtherEducationNode): boolean => {\r\n return item\r\n ? (RecordFurtherEducationGroupNode.isGroup(item) && item.children.length < 1) || !RecordFurtherEducationGroupNode.isGroup(item)\r\n : false;\r\n };\r\n\r\n getStateFromRecordFurtherEducationGroupNodes = (state: IRecordFurtherEducationTreeState, recordFurtherEducationGroupNodes: IRecordFurtherEducationGroupNodes, moveNext: boolean = false, setEditDialogData: boolean = true) => {\r\n let selected = RecordFurtherEducationTree.getSelectedGroupOrItem(recordFurtherEducationGroupNodes.items, state.selectedId);\r\n let selectedId = selected ? state.selectedId : \"\";\r\n const list = RecordFurtherEducationGroupNode.getAsList(state.items);\r\n let index = list.findIndex(i => i.id === selectedId);\r\n if (selected && moveNext && index < list.length - 1) {\r\n index = index + 1;\r\n selected = list[index];\r\n selectedId = selected.id;\r\n }\r\n return {\r\n items: recordFurtherEducationGroupNodes.items,\r\n selectedId,\r\n selectedCanBeRemoved: RecordFurtherEducationTree.itemCanBeRemoved(selected),\r\n editDialogId: setEditDialogData ? (moveNext && selected ? selected.id : \"\") : state.editDialogId,\r\n editDialogHasPrevious: setEditDialogData ? index > 0 : state.editDialogHasPrevious,\r\n editDialogHasNext: setEditDialogData ? index < list.length - 1 : state.editDialogHasNext,\r\n editDialogParentId: \"\"\r\n };\r\n };\r\n\r\n constructor(props: IRecordFurtherEducationTreeProp) {\r\n super(props);\r\n const state = {\r\n items: [],\r\n selectedId: props.selectedId ?? \"\",\r\n selectedCanBeRemoved: false,\r\n showEditDialog: false,\r\n showEditGroupDialog: false,\r\n editDialogId: \"\",\r\n editDialogParentId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false\r\n };\r\n const newState = this.getStateFromRecordFurtherEducationGroupNodes(state, props.recordFurtherEducationGroupNodes);\r\n this.state = {\r\n ...state,\r\n ...newState\r\n };\r\n }\r\n\r\n searchItems = async (moveNext: boolean = false, setEditDialogData: boolean = true) => {\r\n const props = this.props;\r\n const result = await props.getRecordFurtherEducationGroupNodes();\r\n if (!result) return;\r\n this.setState(this.getStateFromRecordFurtherEducationGroupNodes(this.state, result, moveNext, setEditDialogData));\r\n };\r\n\r\n refreshTree = async (setDialogData: boolean = true) => {\r\n await this.searchItems(false, setDialogData);\r\n };\r\n\r\n componentDidUpdate(prevProps: IRecordFurtherEducationTreeProp, prevState: IRecordFurtherEducationTreeState) {\r\n const props = this.props;\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n if (companyId === prevCompanyId) return;\r\n this.searchItems();\r\n }\r\n\r\n handleNodeClick = (id: string) => {\r\n const state = this.state;\r\n if (!id) return;\r\n const items = state.items.map(i => new RecordFurtherEducationGroupNode(i));\r\n const selected = RecordFurtherEducationTree.getSelectedGroupOrItem(items, id);\r\n if (!selected) return;\r\n this.setState({\r\n selectedId: selected.id,\r\n selectedCanBeRemoved: RecordFurtherEducationTree.itemCanBeRemoved(selected)\r\n });\r\n };\r\n\r\n handleSetCollapsed = (id: string, value: boolean) => {\r\n const state = this.state;\r\n if (!id) return;\r\n const items = state.items.map(i => new RecordFurtherEducationGroupNode(i));\r\n const selectedGroup = items.find(i => i.id === id);\r\n if (!selectedGroup) return;\r\n selectedGroup.collapsed = value;\r\n this.setState({\r\n items,\r\n selectedId: selectedGroup.id\r\n });\r\n };\r\n\r\n removeGroup = async (id: string): Promise => {\r\n if (!id) return;\r\n // Call server\r\n const result = await AppUtils.callService(() => recordService.removeRecordFurtherEducationGroup(this.props.companyId, id));\r\n if (!result) return null;\r\n this.refreshTree();\r\n return result;\r\n };\r\n\r\n getRemoveSaveData = (props: IRecordFurtherEducationTreeProp, educationIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"companyId\", !props.companyId ? null : props.companyId);\r\n result.append(\"educationIds\", educationIds);\r\n return result;\r\n };\r\n\r\n remove = async (id: string): Promise => {\r\n const props = this.props;\r\n if (!id) return;\r\n const saveData = this.getRemoveSaveData(props, [id]);\r\n // Call server\r\n const result = await AppUtils.callService(() => recordService.removeRecordFurtherEducations(saveData.obj));\r\n if (!result) return null;\r\n this.refreshTree();\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const state = this.state;\r\n if (!state.selectedId) return;\r\n const selected = RecordFurtherEducationTree.getSelectedGroupOrItem(state.items, state.selectedId);\r\n if (!selected) return;\r\n const confirmationText = RecordFurtherEducationGroupNode.isGroup(selected)\r\n ? Translations.DoYouReallyWantToRemoveRecordFurtherEducationGroupParameter\r\n : Translations.DoYouReallyWantToRemoveRecordFurtherEducationParameter;\r\n if (await AppUtils.showConfirmationDialog(String.format(confirmationText, selected.code), false) === ConfirmationDialogResult.Yes) {\r\n if (RecordFurtherEducationGroupNode.isGroup(selected)) {\r\n await this.removeGroup(selected.id);\r\n } else {\r\n await this.remove(selected.id);\r\n }\r\n }\r\n };\r\n\r\n handleShowEditDialog = (id: string, groupId: string, isGroup: boolean) => {\r\n const state = this.state;\r\n const isNew = id === Base.emptyGuid;\r\n let list = RecordFurtherEducationGroupNode.getAsList(state.items);\r\n if (!isGroup) {\r\n list = list.filter(i => !RecordFurtherEducationGroupNode.isGroup(i));\r\n } else {\r\n list = list.filter(i => RecordFurtherEducationGroupNode.isGroup(i));\r\n }\r\n const index = isNew ? 0 : list.findIndex(i => i.id === id);\r\n if (index < 0) return;\r\n this.setState({\r\n showEditDialog: !isGroup,\r\n showEditGroupDialog: isGroup,\r\n selectedId: id,\r\n editDialogId: id,\r\n editDialogParentId: isNew ? groupId : \"\",\r\n editDialogHasPrevious: index > 0,\r\n editDialogHasNext: isNew ? false : index < list.length - 1\r\n });\r\n };\r\n\r\n handleEditDialogOk = () => {\r\n this.setState({\r\n showEditDialog: false,\r\n showEditGroupDialog: false\r\n });\r\n this.refreshTree();\r\n };\r\n\r\n handleEditDialogCancel = () => {\r\n this.setState({\r\n showEditDialog: false,\r\n showEditGroupDialog: false\r\n });\r\n };\r\n\r\n handleAddGroup = () => {\r\n this.handleShowEditDialog(Base.emptyGuid, \"\", true);\r\n };\r\n\r\n handleAddSub = () => {\r\n const state = this.state;\r\n if (!state.selectedId) return;\r\n const selected = RecordFurtherEducationTree.getSelectedGroupOrItem(state.items, state.selectedId);\r\n if (!selected) return;\r\n const groupId = RecordFurtherEducationGroupNode.isGroup(selected)\r\n ? selected.id\r\n : selected.groupId;\r\n this.handleShowEditDialog(Base.emptyGuid, groupId, false);\r\n };\r\n \r\n handleOpen = (id: string) => {\r\n const state = this.state;\r\n if (!id) return;\r\n const selected = RecordFurtherEducationTree.getSelectedGroupOrItem(state.items, id);\r\n if (!selected) return;\r\n this.handleShowEditDialog(id, \"\", RecordFurtherEducationGroupNode.isGroup(selected));\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number, list: (IRecordFurtherEducationGroupNode | IRecordFurtherEducationNode)[]) => {\r\n if (index < 0 || index >= list.length) return;\r\n this.setState({\r\n selectedId: list[index].id,\r\n editDialogId: list[index].id,\r\n editDialogHasPrevious: index > 0,\r\n editDialogHasNext: index < list.length - 1,\r\n selectedCanBeRemoved: RecordFurtherEducationTree.itemCanBeRemoved(list[index])\r\n });\r\n };\r\n\r\n handleMoveToPrevious = () => {\r\n const state = this.state;\r\n if (!state.selectedId) return;\r\n const selected = RecordFurtherEducationTree.getSelectedGroupOrItem(state.items, state.selectedId);\r\n if (!selected) return;\r\n let list = RecordFurtherEducationGroupNode.getAsList(state.items);\r\n if (state.showEditDialog) {\r\n list = list.filter(i => !RecordFurtherEducationGroupNode.isGroup(i));\r\n } else {\r\n list = list.filter(i => RecordFurtherEducationGroupNode.isGroup(i));\r\n }\r\n const index = list.findIndex(i => i.id === selected.id);\r\n if (index < 0) return;\r\n this.setEditDialogItemByIndex(index - 1, list);\r\n };\r\n\r\n handleMoveToNext = () => {\r\n const state = this.state;\r\n if (!state.selectedId) return;\r\n const selected = RecordFurtherEducationTree.getSelectedGroupOrItem(state.items, state.selectedId);\r\n if (!selected) return;\r\n let list = RecordFurtherEducationGroupNode.getAsList(state.items);\r\n if (state.showEditDialog) {\r\n list = list.filter(i => !RecordFurtherEducationGroupNode.isGroup(i));\r\n } else {\r\n list = list.filter(i => RecordFurtherEducationGroupNode.isGroup(i));\r\n }\r\n const index = list.findIndex(i => i.id === selected.id);\r\n if (index < 0) return;\r\n this.setEditDialogItemByIndex(index + 1, list);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const items = state.items;\r\n return (\r\n <>\r\n \r\n }\r\n rightItems={\r\n \r\n \r\n }\r\n onClick={this.handleAddSub}\r\n />\r\n \r\n \r\n }\r\n />\r\n }\r\n content={\r\n <>\r\n \r\n \r\n {items.map((item) =>\r\n \r\n )}\r\n \r\n \r\n } />\r\n {state.showEditDialog &&\r\n \r\n }\r\n {state.showEditGroupDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","// RecordFurtherEducationList - MODULE\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { RecordFurtherEducationGroupNodes } from \"ui/Scripts/source/models/recordFurtherEducationGroup/recordFurtherEducationGroupNodes\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { RecordFurtherEducationTree } from \"../RecordFurtherEducationTree\";\r\n\r\n//RecordFurtherEducationList\r\nexport interface IRecordFurtherEducationListProp {\r\n companyId: string;\r\n}\r\n\r\nexport interface IRecordFurtherEducationListState {\r\n recordFurtherEducationGroupNodes: RecordFurtherEducationGroupNodes;\r\n}\r\n\r\nexport class RecordFurtherEducationList extends React.Component {\r\n constructor(props: IRecordFurtherEducationListProp) {\r\n super(props);\r\n this.state = {\r\n recordFurtherEducationGroupNodes: null\r\n };\r\n }\r\n \r\n getRecordFurtherEducationGroupNodes = async (): Promise => {\r\n return AppUtils.callService(() => recordService.getRecordFurtherEducationGroupNodes(this.props.companyId), false);\r\n };\r\n\r\n componentDidMount(): void {\r\n this.getRecordFurtherEducationGroupNodes()\r\n .then(recordFurtherEducationGroupNodes => {\r\n if (!recordFurtherEducationGroupNodes) return;\r\n this.setState({ recordFurtherEducationGroupNodes });\r\n });\r\n }\r\n \r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.recordFurtherEducationGroupNodes) return null;\r\n return (\r\n \r\n );\r\n }\r\n}","import { Grid } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { ApplicationPermissionType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { IUnitModuleNode } from \"../../../models/unit/unitModuleNode\";\r\nimport { IUnitNodePermissions } from \"../../../models/unit/unitNodePermissions\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { IPageNavMenuItem, PageNavMenuItems } from \"../../framework/PageNav/PageNavMenuItems\";\r\nimport { UnitModuleSettings } from \"../../unit/Unit/UnitModuleSettings\";\r\nimport { UnitPermissionSettings } from \"../../unit/Unit/UnitPermissionSettings\";\r\nimport { RecordEducationList } from \"../RecordEducationList\";\r\nimport { RecordFamiliarizationList } from \"../RecordFamiliarizationList\";\r\nimport { RecordFurtherEducationList } from \"../RecordFurtherEducationList\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum RecordSettingsDialogMenuItem {\r\n Units = \"1\",\r\n Permissions = \"2\",\r\n Familiarizations = \"3\",\r\n BasicEducations = \"4\",\r\n FurtherEducations = \"5\",\r\n DefaultFamiliarizations = \"6\",\r\n DefaultBasicEducations = \"7\",\r\n DefaultFurtherEducations = \"8\",\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\nexport interface IRecordSettingsDialogProp {\r\n sessionState: ISessionState;\r\n companyId: string;\r\n classes?: string;\r\n settingsActions: IPageNavMenuItem[];\r\n validAdditionalPermissions?: number[]\r\n onClose: () => void;\r\n}\r\n\r\nexport interface IRecordSettingsDialogState {\r\n // Units\r\n unitModuleNode: IUnitModuleNode;\r\n // Permissions\r\n unitNodePermissions: IUnitNodePermissions;\r\n activeMenuItem: RecordSettingsDialogMenuItem;\r\n}\r\n\r\nexport default class RecordSettingsDialog extends React.Component {\r\n private unitsRef = React.createRef();\r\n private permissionsRef = React.createRef();\r\n\r\n unitsPageAllowed = (props: IRecordSettingsDialogProp) => !!props.settingsActions.find(i => i.id === RecordSettingsDialogMenuItem.Units);\r\n\r\n constructor(props: IRecordSettingsDialogProp) {\r\n super(props);\r\n this.state = {\r\n unitModuleNode: null,\r\n unitNodePermissions: null,\r\n activeMenuItem: this.unitsPageAllowed(props)\r\n ? RecordSettingsDialogMenuItem.Units\r\n : RecordSettingsDialogMenuItem.Familiarizations\r\n };\r\n }\r\n\r\n async componentDidMount(): Promise {\r\n if (this.unitsPageAllowed(this.props)) {\r\n await this.loadUnits();\r\n }\r\n }\r\n\r\n // #region Units\r\n onUnitModuleSettingsCancel = async (): Promise => {\r\n return await this.unitsRef.current.handleCancel(false);\r\n };\r\n\r\n loadUnits = async () => {\r\n const result = await AppUtils.callService(() => recordService.getUnits(this.props.companyId), false);\r\n if (!result) return;\r\n this.setState({\r\n unitModuleNode: result.unitModuleNode\r\n });\r\n };\r\n\r\n handleUnitModuleSettingsSave = async (obj: any) => {\r\n return await recordService.saveUnits(obj);\r\n };\r\n // #endregion Units\r\n \r\n // #region Permissions\r\n onUnitPermissionSettingsCancel = async (): Promise => {\r\n return await this.permissionsRef.current.handleCancel(false);\r\n };\r\n\r\n loadPermissions = async () => {\r\n const result = await AppUtils.callService(() => recordService.getUnitNodePermissions(this.props.companyId), false);\r\n if (!result) return;\r\n this.setState({\r\n unitNodePermissions: result\r\n });\r\n };\r\n\r\n handleUnitPermissionSettingsSave = async (obj: any) => {\r\n const result = await recordService.saveUnitNodePermissions(obj);\r\n this.loadPermissions();\r\n return result;\r\n };\r\n // #endregion Permissions\r\n\r\n handleToggleActiveMenuItem = async (menuItem: RecordSettingsDialogMenuItem) => {\r\n const state = this.state;\r\n if (state.activeMenuItem === menuItem) return;\r\n //Check current tab cancel\r\n if (state.activeMenuItem === RecordSettingsDialogMenuItem.Units) {\r\n if (!await this.onUnitModuleSettingsCancel()) return;\r\n } else if (state.activeMenuItem === RecordSettingsDialogMenuItem.Permissions) {\r\n if (!await this.onUnitPermissionSettingsCancel()) return;\r\n }\r\n //Load new tab data\r\n if (menuItem === RecordSettingsDialogMenuItem.Units) {\r\n await this.loadUnits();\r\n } else if (menuItem === RecordSettingsDialogMenuItem.Permissions) {\r\n await this.loadPermissions();\r\n }\r\n //Set new tab active\r\n this.setState({\r\n activeMenuItem: menuItem\r\n });\r\n };\r\n\r\n handleCancel = async (closeDialog: boolean) => {\r\n if (!closeDialog) return;\r\n this.props.onClose();\r\n };\r\n\r\n handleSubViewOk = (_closeDialog: boolean) => {\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n this.handleCancel(true)}\r\n body={\r\n \r\n \r\n \r\n \r\n \r\n {(state.activeMenuItem === RecordSettingsDialogMenuItem.Units) && (\r\n \r\n )}\r\n {state.activeMenuItem === RecordSettingsDialogMenuItem.Permissions && (\r\n \r\n )}\r\n {state.activeMenuItem === RecordSettingsDialogMenuItem.Familiarizations && (\r\n \r\n )}\r\n {state.activeMenuItem === RecordSettingsDialogMenuItem.BasicEducations && (\r\n \r\n )}\r\n {state.activeMenuItem === RecordSettingsDialogMenuItem.FurtherEducations && (\r\n \r\n )}\r\n {state.activeMenuItem === RecordSettingsDialogMenuItem.DefaultFamiliarizations && (\r\n \r\n )}\r\n {state.activeMenuItem === RecordSettingsDialogMenuItem.DefaultBasicEducations && (\r\n \r\n )}\r\n {state.activeMenuItem === RecordSettingsDialogMenuItem.DefaultFurtherEducations && (\r\n \r\n )}\r\n \r\n \r\n }\r\n buttons={\r\n state.activeMenuItem !== RecordSettingsDialogMenuItem.Units && state.activeMenuItem !== RecordSettingsDialogMenuItem.Permissions\r\n ? [{ title: Translations.Close, variant: \"outlined\", onClick: () => this.handleCancel(true) }]\r\n : null\r\n }\r\n />\r\n );\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport { ToolButton } from \"ui/Scripts/source/components/framework/toolButton\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IIdTitle, IdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { IIdTitleNode, IdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { ApplicationPermissionType, EnumHelper, RecordEmployeeType, ReportSharingType, ReportType } from \"ui/Scripts/source/models/enums\";\r\nimport { IRecordFurtherEducationGroupNode, RecordFurtherEducationGroupNode } from \"ui/Scripts/source/models/recordFurtherEducationGroup/recordFurtherEducationGroupNode\";\r\nimport { ITaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IIdTitleClass, IdTitleClass } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/idTitleClass\";\r\nimport { IChartItem } from \"../../../models/chart/chartItem\";\r\nimport { IListFilterItem, ListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { IPagePanel } from \"../../../models/common/pagePanel\";\r\nimport { ISavedListFilter } from \"../../../models/common/savedListFilter\";\r\nimport { ITypedOption } from \"../../../models/common/typedOption\";\r\nimport { IRecordEditItemQualification } from \"../../../models/record/recordEditItemQualification\";\r\nimport { IRecordPageList } from \"../../../models/record/recordPageList\";\r\nimport { IRecordFamiliarizationListItem } from \"../../../models/recordFamiliarization/recordFamiliarizationListItem\";\r\nimport { IReportItem, ReportItem } from \"../../../models/report/reportItem\";\r\nimport { ReportItems } from \"../../../models/report/reportItems\";\r\nimport { ISavedReport } from \"../../../models/report/savedReport\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { IAppSessionState } from \"../../../models/store/storeTypes\";\r\nimport { IUnitModuleNode } from \"../../../models/unit/unitModuleNode\";\r\nimport { IUnitNodePermissions } from \"../../../models/unit/unitNodePermissions\";\r\nimport { DashboardPanelList } from \"../../app/DashboardPanelList\";\r\nimport { HeaderMenuItem, NavigationMenu } from \"../../app/NavigationMenu\";\r\nimport { UserMenu } from \"../../app/UserMenu\";\r\nimport { ListFilterSaveDialog } from \"../../framework/Filters/ListFilterSaveDialog\";\r\nimport { PageContainer } from \"../../framework/Page/PageContainer\";\r\nimport { PageContent } from \"../../framework/Page/PageContent\";\r\nimport { PageDashboard } from \"../../framework/Page/PageDashboard\";\r\nimport { PageListAndReportsContainer } from \"../../framework/Page/PageListAndReportsContainer\";\r\nimport { PageReportsContainer } from \"../../framework/Page/PageReportsContainer\";\r\nimport { PageTabs } from \"../../framework/Page/PageTabs\";\r\nimport { PageTopBar } from \"../../framework/Page/PageTopBar\";\r\nimport { IPageNavMenuItem } from \"../../framework/PageNav/PageNavMenuItems\";\r\nimport { FilterTabs } from \"../../framework/PageNavMenuItem/FilterTabs\";\r\nimport { ReportSettings } from \"../../framework/ReportSettings\";\r\nimport { PageNavMenuReportList } from \"../../report/PageNavMenuItemReportList/PageNavMenuItemReportList\";\r\nimport { ISaveReportFilters, SaveReportDialog } from \"../../report/PageNavMenuItemReportList/SaveReportDialog\";\r\nimport { RecordFilterDrawer } from \"../RecordFilterDrawer\";\r\nimport { RecordList } from \"../RecordList\";\r\nimport { RecordReportFilterSettings } from \"../RecordReportFilterSettings\";\r\nimport { RecordReportList } from \"../RecordReportList\";\r\nimport RecordSettingsDialog, { RecordSettingsDialogMenuItem } from \"../RecordSettingsDialog/RecordSettingsDialog\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum RecordPageListViewTypeId {\r\n Records = \"0\",\r\n Reports = \"1\",\r\n Dashboard = \"2\",\r\n}\r\n\r\nexport const enum RecordPageListMenuItem {\r\n None = \"\",\r\n CompanyFilter = \"1\",\r\n RecordsFilter = \"2\",\r\n Filters = \"3\",\r\n Settings = \"4\",\r\n Reports = \"5\",\r\n ReportsFilter = \"6\"\r\n}\r\n\r\nexport const enum RecordPageListActivityFilterId {\r\n None = \"0\",\r\n Active = \"1\",\r\n Archived = \"2\",\r\n UserConnected = \"3\",\r\n UserNotConnected = \"4\",\r\n}\r\n\r\nconst enum HtmlReportId {\r\n ExpiredFamiliarizations = \"HtmlReportExpiredFamiliarizations\",\r\n ExpiredFurtherEducations = \"HtmlReportExpiredFurtherEducations\",\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n// RecordPageList\r\nexport interface IRecordPageListProps {\r\n appState: IAppSessionState;\r\n dataId: number;\r\n pageList: IRecordPageList;\r\n onGetRecordsPage: () => void;\r\n onLogout: () => void;\r\n onSetCulture: (culture: string) => void;\r\n onSaveUserParameters: (parameters: ITypedOption[]) => void;\r\n onRefreshSessionState: () => void;\r\n}\r\n\r\ninterface IRecordPageListState {\r\n initialized: boolean;\r\n showDashBoardNavPanel: boolean;\r\n dashBoardPanels: IPagePanel[];\r\n listDataPreloaded: boolean;\r\n viewTypes: IIdTitleClass[];\r\n units: IIdTitleNode[];\r\n furtherEducationGroups: IRecordFurtherEducationGroupNode[];\r\n recordQualifications: IRecordEditItemQualification[];\r\n familiarizations: IRecordFamiliarizationListItem[];\r\n activityFilters: IIdTitle[];\r\n jobTitles: IIdTitle[];\r\n employeeTypes: IIdTitle[];\r\n sheetTaskType: ITaskEditTypeItem;\r\n showNavPanel: boolean;\r\n activeMenuItem: RecordPageListMenuItem;\r\n activeViewTypeId: string;\r\n activeCompanyId: string;\r\n selectedActivityFilterId: string;\r\n selectedUnitIds: string[];\r\n selectedJobTitleIds: string[];\r\n selectedEmployeeTypeIds: string[];\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n settingsActions: IPageNavMenuItem[];\r\n // Filters\r\n recordFilterIsSet: boolean;\r\n showRecordFilterDialog: boolean;\r\n recordFilterDialogFilter: IListFilterItem;\r\n filters: IListFilterItem[];\r\n savedFilters: IListFilterItem[];\r\n activeFilterId: string;\r\n activeSavedFilterId: string;\r\n showListFilterSaveDialog: boolean;\r\n listFilterSaveDialogFilter: IListFilterItem;\r\n listFilterSaveDialogGeneralFilter: any;\r\n listFilterSaveDialogReservedNames: string[];\r\n listFilterSaveDialogOnGetGeneralFilter: () => any;\r\n // Properties\r\n showSettingsDialog: boolean;\r\n dataId: number;\r\n unitNodePermissions: IUnitNodePermissions;\r\n familiarizationsDialogCompanyId: string;\r\n educationsDialogCompanyId: string;\r\n unitModuleDialogNode: IUnitModuleNode;\r\n // Reports\r\n reportFilterIsSet: boolean;\r\n loadingReports: boolean;\r\n reports: IReportItem[];\r\n savedReports: IReportItem[];\r\n chartItems: IChartItem[]; //Not in use\r\n activeReportId: string;\r\n activeSavedReportId: string;\r\n recordReportFilterDialogReport: IReportItem;\r\n showReportSaveDialog: boolean;\r\n reportSaveDialogReport: IReportItem;\r\n reportSaveDialogGeneralFilter: any;\r\n reportSaveDialogReservedNames: string[];\r\n reportSaveDialogOnGetReportSaveFilters: () => ISaveReportFilters;\r\n}\r\n\r\nexport class RecordPageList extends React.Component {\r\n _isMounted: boolean;\r\n\r\n static getViewTypes = (): IIdTitleClass[] => {\r\n const result: IIdTitleClass[] = [];\r\n result.push(IdTitleClass.createIdTitleClass(RecordPageListViewTypeId.Dashboard, Translations.FrontPage, \"home\"));\r\n result.push(IdTitleClass.createIdTitleClass(RecordPageListViewTypeId.Records, Translations.Resources, \"list2\"));\r\n result.push(IdTitleClass.createIdTitleClass(RecordPageListViewTypeId.Reports, Translations.Reports, \"report\"));\r\n return result;\r\n };\r\n\r\n static getActivityFilters = (): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(RecordPageListActivityFilterId.None, \"'\" + Translations.All + \"'\"));\r\n result.push(IdTitle.createIdTitle(RecordPageListActivityFilterId.Active, Translations.InUse));\r\n result.push(IdTitle.createIdTitle(RecordPageListActivityFilterId.Archived, Translations.Archived));\r\n result.push(IdTitle.createIdTitle(RecordPageListActivityFilterId.UserConnected, Translations.UserAccountConnected));\r\n result.push(IdTitle.createIdTitle(RecordPageListActivityFilterId.UserNotConnected, Translations.UserAccountNotConnected));\r\n return result;\r\n };\r\n\r\n static getEmployeeTypes = (): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(\"\", \"'\" + Translations.All + \"'\"));\r\n result.push(IdTitle.createIdTitle(RecordEmployeeType.Intern.toString(10), EnumHelper.RecordEmployeeTypeToStr(RecordEmployeeType.Intern)));\r\n result.push(IdTitle.createIdTitle(RecordEmployeeType.Employee.toString(10), EnumHelper.RecordEmployeeTypeToStr(RecordEmployeeType.Employee)));\r\n result.push(IdTitle.createIdTitle(RecordEmployeeType.AgencyWorker.toString(10), EnumHelper.RecordEmployeeTypeToStr(RecordEmployeeType.AgencyWorker)));\r\n result.push(IdTitle.createIdTitle(RecordEmployeeType.SeasonalWorker.toString(10), EnumHelper.RecordEmployeeTypeToStr(RecordEmployeeType.SeasonalWorker)));\r\n result.push(IdTitle.createIdTitle(RecordEmployeeType.Entrepreneur.toString(10), EnumHelper.RecordEmployeeTypeToStr(RecordEmployeeType.Entrepreneur)));\r\n result.push(IdTitle.createIdTitle(RecordEmployeeType.Other.toString(10), EnumHelper.RecordEmployeeTypeToStr(RecordEmployeeType.Other)));\r\n return result;\r\n };\r\n\r\n getSettingsActions = (sessionState: ISessionState, activeCompanyId: string): IPageNavMenuItem[] => {\r\n const result: IPageNavMenuItem[] = [];\r\n if (sessionState.isCompanyAdmin) {\r\n result.push({ id: RecordSettingsDialogMenuItem.Units, title: Translations.Units });\r\n result.push({ id: RecordSettingsDialogMenuItem.Permissions, title: Translations.Permissions });\r\n }\r\n result.push({ id: RecordSettingsDialogMenuItem.Familiarizations, title: Translations.Familiarizations });\r\n result.push({ id: RecordSettingsDialogMenuItem.BasicEducations, title: Translations.BasicEducations });\r\n result.push({ id: RecordSettingsDialogMenuItem.FurtherEducations, title: Translations.FurtherEducations + \" / \" + Translations.Competencies });\r\n if (sessionState.isSuperAdmin && sessionState.companyId === activeCompanyId) {\r\n result.push({ id: RecordSettingsDialogMenuItem.DefaultFamiliarizations, title: Translations.DefaultFamiliarizations });\r\n result.push({ id: RecordSettingsDialogMenuItem.DefaultBasicEducations, title: Translations.DefaultBasicEducations });\r\n result.push({ id: RecordSettingsDialogMenuItem.DefaultFurtherEducations, title: Translations.DefaultFurtherEducations + \" / \" + Translations.Competencies });\r\n }\r\n return result;\r\n };\r\n\r\n getIdTitleNodes = (units: IIdTitleNode[]): IIdTitleNode[] => {\r\n const result: IIdTitleNode[] = [];\r\n result.push(IdTitleNode.createIdTitleNode(Base.emptyGuid, \"'\" + Translations.All + \"'\", []));\r\n result.push(IdTitleNode.createIdTitleNode(\"00000000-0000-0000-0000-000000000001\", \"'\" + Translations.NotSet + \"'\", []));\r\n return result.concat(units);\r\n };\r\n\r\n getJobTitles = (jobTitles: string[]): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(\"\", \"'\" + Translations.All + \"'\"));\r\n return result.concat(jobTitles.map(i => IdTitle.createIdTitle(i, i)));\r\n };\r\n\r\n getHtlmlReportItems = (): IReportItem[] => {\r\n const result: IReportItem[] = [];\r\n result.push(ReportItem.createReportItem(HtmlReportId.ExpiredFamiliarizations, Translations.ExpiredFamiliarizations, ReportType.Html, null));\r\n result.push(ReportItem.createReportItem(HtmlReportId.ExpiredFurtherEducations, Translations.ExpiredFurtherEducations, ReportType.Html, null));\r\n return ReportItem.sortReportItems(result);\r\n };\r\n\r\n getRecordFilterIsSet = (state: IRecordPageListState): boolean => {\r\n return RecordFilterDrawer.filterIsSet(state.activityFilters, state.employeeTypes, state.jobTitles, state.units,\r\n state.selectedActivityFilterId, state.selectedEmployeeTypeIds, state.selectedJobTitleIds, state.selectedUnitIds);\r\n };\r\n\r\n getReportFilterIsSet = (state: IRecordPageListState): boolean => {\r\n let taskType = null;\r\n let taskDataRow = null;\r\n if (state.activeReportId) {\r\n const report = state.reports.find(i => i.id === state.activeReportId);\r\n if (report && report.taskType && report.taskDataRow && report.taskDataRow.cols.length > 0) {\r\n taskType = report.taskType;\r\n taskDataRow = report.taskDataRow;\r\n }\r\n } else {\r\n const savedReport = state.savedReports.find(i => i.id === state.activeSavedReportId);\r\n if (savedReport && savedReport.taskType && savedReport.taskDataRow && savedReport.taskDataRow.cols.length > 0) {\r\n taskType = savedReport.taskType;\r\n taskDataRow = savedReport.taskDataRow;\r\n }\r\n }\r\n return RecordReportFilterSettings.filterIsSet(state.activityFilters, state.employeeTypes, state.jobTitles, state.units,\r\n state.selectedActivityFilterId, state.selectedEmployeeTypeIds, state.selectedJobTitleIds, state.selectedUnitIds,\r\n taskType, taskDataRow);\r\n };\r\n\r\n getFilters = (): IListFilterItem[] => {\r\n const result: IListFilterItem[] = [];\r\n result.push(ListFilterItem.createListFilterItem(Translations.UserRecords, Translations.UserRecords, {\r\n activityFilterId: RecordPageListActivityFilterId.Active,\r\n employeeTypeIds: [],\r\n jobTitleIds: [],\r\n unitIds: []\r\n }, \"lastName\", true));\r\n ListFilterItem.sortListFilterItems(result);\r\n return result;\r\n };\r\n\r\n getSavedFilters = (props: IRecordPageListProps): IListFilterItem[] => {\r\n const result: IListFilterItem[] = [];\r\n if (!props || !props.pageList) return result;\r\n for (const companyFilter of props.pageList.companyFilters) {\r\n result.push(ListFilterItem.createListFilterItemFromSavedListFilter(companyFilter, true));\r\n }\r\n for (const userFilter of props.pageList.userFilters) {\r\n result.push(ListFilterItem.createListFilterItemFromSavedListFilter(userFilter, false));\r\n }\r\n ListFilterItem.sortListFilterItems(result);\r\n return result;\r\n };\r\n\r\n constructor(props: IRecordPageListProps) {\r\n super(props);\r\n const sessionState = props.appState.state;\r\n const filters = this.getFilters();\r\n const filterProps = ListFilterItem.getFilterProps(filters[0], \"\", true, this.getStateFilterPropsFromGeneralFilter);\r\n const state = {\r\n ...filterProps,\r\n initialized: !!props.pageList,\r\n dashBoardPanels: props.pageList ? props.pageList.panels : [],\r\n showDashBoardNavPanel: false,\r\n listDataPreloaded: true,\r\n viewTypes: RecordPageList.getViewTypes(),\r\n activityFilters: RecordPageList.getActivityFilters(),\r\n units: this.getIdTitleNodes(props.pageList ? props.pageList.units : []),\r\n furtherEducationGroups: props.pageList ? props.pageList.furtherEducationGroups : [],\r\n familiarizations: props.pageList ? props.pageList.familiarizations : [],\r\n employeeTypes: RecordPageList.getEmployeeTypes(),\r\n jobTitles: this.getJobTitles(props.pageList ? props.pageList.jobTitles : []),\r\n sheetTaskType: props.pageList ? props.pageList.sheetTaskType : null,\r\n showNavPanel: sessionState.getShowPageNavigation(),\r\n activeMenuItem: props.pageList ? (props.pageList.companies.length > 1 ? RecordPageListMenuItem.CompanyFilter : RecordPageListMenuItem.RecordsFilter) : RecordPageListMenuItem.None,\r\n activeViewTypeId: RecordPageListViewTypeId.Dashboard,\r\n activeCompanyId: sessionState.companyId,\r\n // Filters\r\n activeFilterId: filters[0].id,\r\n activeSavedFilterId: \"\",\r\n filters,\r\n savedFilters: this.getSavedFilters(props),\r\n showRecordFilterDialog: false,\r\n recordFilterDialogFilter: null,\r\n showListFilterSaveDialog: false,\r\n listFilterSaveDialogFilter: null,\r\n listFilterSaveDialogGeneralFilter: null,\r\n listFilterSaveDialogReservedNames: [],\r\n listFilterSaveDialogOnGetGeneralFilter: null,\r\n settingsActions: this.getSettingsActions(sessionState, sessionState.companyId),\r\n // Properties\r\n showSettingsDialog: false,\r\n dataId: 0,\r\n unitNodePermissions: null,\r\n familiarizationsDialogCompanyId: sessionState.companyId,\r\n educationsDialogCompanyId: sessionState.companyId,\r\n unitModuleDialogNode: null,\r\n // Statistics\r\n loadingStatistics: true,\r\n statistics: null,\r\n // Reports\r\n loadingReports: true,\r\n reports: this.getHtlmlReportItems(),\r\n savedReports: [],\r\n chartItems: [], //Not in use\r\n activeReportId: HtmlReportId.ExpiredFurtherEducations,\r\n activeSavedReportId: \"\",\r\n recordReportFilterDialogReport: null,\r\n showReportSaveDialog: false,\r\n reportSaveDialogReport: null,\r\n reportSaveDialogGeneralFilter: null,\r\n reportSaveDialogReservedNames: [],\r\n reportSaveDialogOnGetReportSaveFilters: null\r\n };\r\n this.state = {\r\n ...state,\r\n recordFilterIsSet: this.getRecordFilterIsSet(state),\r\n reportFilterIsSet: this.getReportFilterIsSet(state)\r\n };\r\n }\r\n\r\n getReportRecords = async (companyId: string) => {\r\n const state = this.state;\r\n const newState = await ReportItems.getReportsState(companyId, state.activeReportId, this.getHtlmlReportItems(), recordService.getRecordPageReportItems,\r\n () => {\r\n if (!this._isMounted) return;\r\n this.setState({ loadingReports: true });\r\n },\r\n () => {\r\n if (!this._isMounted) return;\r\n this.setState({ loadingReports: false });\r\n });\r\n if (!this._isMounted || !newState) return;\r\n this.setState(newState);\r\n };\r\n\r\n async componentDidMount(): Promise {\r\n await this.props.onGetRecordsPage();\r\n this.getReportRecords(null);\r\n this._isMounted = true;\r\n }\r\n\r\n componentDidUpdate(prevProps: IRecordPageListProps, prevState: IRecordPageListState): void {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n const prevCompanyIds = (prevProps.pageList ? prevProps.pageList.companies.map(i => i.id) : []).join(\",\");\r\n const companyIds = (props.pageList ? props.pageList.companies.map(i => i.id) : []).join(\",\");\r\n const prevCompanyId = prevProps.pageList && prevProps.pageList.companies.length > 0 ? prevProps.pageList.companies[0].id : Base.emptyGuid;\r\n const companyId = props.pageList && props.pageList.companies.length > 0 ? props.pageList.companies[0].id : Base.emptyGuid;\r\n const prevUnitsData = prevProps.pageList ? prevProps.pageList.units : [];\r\n const unitsData = props.pageList ? props.pageList.units : [];\r\n const equalUnits = IdTitleNode.equalIdsInArrays(prevUnitsData, unitsData);\r\n const units = this.getIdTitleNodes(unitsData);\r\n const prevFurtherEducationGroups = prevProps.pageList ? prevProps.pageList.furtherEducationGroups : [];\r\n const furtherEducationGroups = props.pageList ? props.pageList.furtherEducationGroups : [];\r\n const equalFurtherEducationGroups = RecordFurtherEducationGroupNode.equalIdsInArrays(prevFurtherEducationGroups, furtherEducationGroups);\r\n const familiarizations = props.pageList ? props.pageList.familiarizations : [];\r\n const equalFamiliarizations = Base.equalStrArrays(prevProps.pageList ? prevProps.pageList.familiarizations.map(i => i.id) : [], familiarizations.map(i => i.id));\r\n const jobTitlesData = props.pageList ? props.pageList.jobTitles : [];\r\n const jobTitles = this.getJobTitles(jobTitlesData);\r\n const equalJobTitles = Base.equalStrArrays(prevProps.pageList?.jobTitles, jobTitlesData);\r\n const prevHasSheet = !!prevProps.pageList?.sheetTaskType?.id;\r\n const sheetTaskType = props.pageList ? props.pageList.sheetTaskType : null;\r\n const hasSheet = !!sheetTaskType?.id;\r\n if (prevProps.dataId === props.dataId && prevCompanyId === companyId && prevCompanyIds === companyIds && equalUnits &&\r\n equalFurtherEducationGroups && equalFamiliarizations && equalJobTitles && prevHasSheet === hasSheet) return;\r\n const activeMenuItem = state.initialized || !props.pageList\r\n ? state.activeMenuItem\r\n : props.pageList.companies.length > 1 ? RecordPageListMenuItem.CompanyFilter : RecordPageListMenuItem.Filters;\r\n const selectedUnitIds = equalUnits ? state.selectedUnitIds : [Base.emptyGuid];\r\n const selectedJobTitleIds = equalJobTitles ? state.selectedJobTitleIds : [\"\"];\r\n const savedFilters = this.getSavedFilters(props);\r\n const activeSavedFilterId = savedFilters.find(i => i.id === state.activeSavedFilterId)\r\n ? state.activeSavedFilterId\r\n : \"\";\r\n const stateChange = {\r\n initialized: !!props.pageList,\r\n dataId: props.dataId,\r\n dashBoardPanels: props.pageList ? props.pageList.panels : [],\r\n showNavPanel: state.initialized ? state.showNavPanel : sessionState.getShowPageNavigation(),\r\n activeMenuItem,\r\n activeCompanyId: companyId,\r\n units,\r\n furtherEducationGroups,\r\n familiarizations,\r\n jobTitles,\r\n sheetTaskType,\r\n selectedUnitIds,\r\n selectedJobTitleIds,\r\n savedFilters,\r\n activeSavedFilterId,\r\n settingsActions: this.getSettingsActions(sessionState, companyId),\r\n };\r\n const newState = { ...state, ...stateChange };\r\n this.setState({\r\n ...stateChange,\r\n recordFilterIsSet: this.getRecordFilterIsSet(newState),\r\n reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n });\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this._isMounted = false;\r\n }\r\n \r\n handleToggleShowNavPanel = () => {\r\n this.setState({ showNavPanel: !this.state.showNavPanel });\r\n };\r\n\r\n handleToggleActiveMenuItem = (userPageMenuItem: RecordPageListMenuItem) => {\r\n this.setState({ activeMenuItem: this.state.activeMenuItem !== userPageMenuItem ? userPageMenuItem : RecordPageListMenuItem.None });\r\n };\r\n \r\n handleChangeActiveCompanyId = async (companyId: string) => {\r\n const state = this.state;\r\n if (state.activeCompanyId === companyId) return;\r\n const sessionState = this.props.appState.state;\r\n const recordPageData = await recordService.getRecordPageUnitsAndJobTitles(companyId);\r\n const stateChange = {\r\n activeCompanyId: companyId,\r\n units: this.getIdTitleNodes(recordPageData.units),\r\n furtherEducationGroups: recordPageData.furtherEducationGroups,\r\n familiarizations: recordPageData.familiarizations,\r\n selectedUnitIds: [Base.emptyGuid],\r\n jobTitles: this.getJobTitles(recordPageData.jobTitles),\r\n sheetTaskType: recordPageData.sheetTaskType,\r\n selectedJobTitleIds: [\"\"],\r\n settingsActions: this.getSettingsActions(sessionState, companyId),\r\n };\r\n const newState = { ...state, ...stateChange };\r\n this.setState({\r\n ...stateChange,\r\n recordFilterIsSet: this.getRecordFilterIsSet(newState),\r\n reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n });\r\n this.getReportRecords(companyId);\r\n };\r\n \r\n updateFurtherEducationsFamiliarizationsAndJobTitles = async (companyId: string) => {\r\n if (!companyId) return;\r\n const recordPageData = await recordService.getRecordPageUnitsAndJobTitles(companyId);\r\n this.setState({\r\n units: this.getIdTitleNodes(recordPageData.units),\r\n furtherEducationGroups: recordPageData.furtherEducationGroups,\r\n familiarizations: recordPageData.familiarizations,\r\n jobTitles: this.getJobTitles(recordPageData.jobTitles),\r\n sheetTaskType: recordPageData.sheetTaskType\r\n });\r\n };\r\n\r\n handleSetSelectedActivityFilterId = (selectedActivityFilterId: string) => {\r\n const newState = { ...this.state, selectedActivityFilterId };\r\n this.setState({\r\n selectedActivityFilterId,\r\n recordFilterIsSet: this.getRecordFilterIsSet(newState),\r\n reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n });\r\n };\r\n\r\n handleSetSelectedUnitIds = (selectedUnitIds: string[]) => {\r\n const newState = { ...this.state, selectedUnitIds };\r\n this.setState({\r\n selectedUnitIds,\r\n recordFilterIsSet: this.getRecordFilterIsSet(newState),\r\n reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n });\r\n };\r\n\r\n handleToggleEmployeeType = (employeeType: string, checked: boolean) => {\r\n const state = this.state;\r\n const selectedEmployeeTypeIds = Base.getToggledMultiSelectIds(state.employeeTypes, state.selectedEmployeeTypeIds, employeeType, checked);\r\n const newState = { ...state, selectedEmployeeTypeIds };\r\n this.setState({\r\n selectedEmployeeTypeIds,\r\n recordFilterIsSet: this.getRecordFilterIsSet(newState),\r\n reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n });\r\n };\r\n\r\n handleToggleJobTitle = (jobTitle: string, checked: boolean) => {\r\n const state = this.state;\r\n const selectedJobTitleIds = Base.getToggledMultiSelectIds(state.jobTitles, state.selectedJobTitleIds, jobTitle, checked);\r\n const newState = { ...state, selectedJobTitleIds };\r\n this.setState({\r\n selectedJobTitleIds,\r\n recordFilterIsSet: this.getRecordFilterIsSet(newState),\r\n reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n });\r\n };\r\n\r\n // #region Saved Filter\r\n getGeneralFilterFromState = (state: IRecordPageListState): any => {\r\n return {\r\n activityFilterId: state.selectedActivityFilterId ? parseInt(state.selectedActivityFilterId, 10) : 0,\r\n employeeTypeIds: state.selectedEmployeeTypeIds ? state.selectedEmployeeTypeIds.filter(i => !Base.isNullOrEmpty(i)) : [],\r\n jobTitleIds: state.selectedJobTitleIds ? state.selectedJobTitleIds.filter(i => !!i) : [],\r\n unitIds: state.selectedUnitIds ? state.selectedUnitIds.filter(i => i !== Base.emptyGuid) : []\r\n };\r\n };\r\n\r\n getStateFilterPropsFromGeneralFilter = (generalFilter: any): any => {\r\n return {\r\n selectedActivityFilterId: generalFilter && !Base.isNullOrUndefined(generalFilter.activityFilterId) ? generalFilter.activityFilterId.toString(10) : RecordPageListActivityFilterId.Active,\r\n selectedEmployeeTypeIds: generalFilter && generalFilter.employeeTypeIds && generalFilter.employeeTypeIds.length > 0 ? generalFilter.employeeTypeIds : [\"\"],\r\n selectedJobTitleIds: generalFilter && generalFilter.jobTitleIds && generalFilter.jobTitleIds.length > 0 ? generalFilter.jobTitleIds : [\"\"],\r\n selectedUnitIds: generalFilter && generalFilter.unitIds && generalFilter.unitIds.length > 0 ? generalFilter.unitIds : [Base.emptyGuid]\r\n };\r\n };\r\n \r\n getFilterPropsWithState = (listItemFilter: IListFilterItem) => {\r\n const state = this.state;\r\n let result = {\r\n selectedActivityFilterId: state.selectedActivityFilterId,\r\n selectedEmployeeTypeIds: state.selectedEmployeeTypeIds,\r\n selectedJobTitleIds: state.selectedJobTitleIds,\r\n selectedUnitIds: state.selectedUnitIds,\r\n sortColumn: state.sortColumn,\r\n sortOrderIsAsc: state.sortOrderIsAsc\r\n };\r\n if (listItemFilter) {\r\n result = ListFilterItem.getFilterProps(listItemFilter, result.sortColumn, result.sortOrderIsAsc, this.getStateFilterPropsFromGeneralFilter);\r\n }\r\n return result;\r\n };\r\n\r\n getStateChangeAfterChangeActiveFilter = (activeFilterId: string): any => {\r\n const state = this.state;\r\n const filter = state.filters.find(i => i.id === activeFilterId);\r\n if (!filter) return;\r\n const filterProps = this.getFilterPropsWithState(filter);\r\n const activeSavedFilterId = \"\";\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId };\r\n return {\r\n ...filterProps,\r\n activeFilterId,\r\n activeSavedFilterId: \"\",\r\n recordFilterIsSet: this.getRecordFilterIsSet(newState),\r\n reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n };\r\n };\r\n\r\n handleChangeActiveFilter = (activeFilterId: string) => {\r\n this.setState(this.getStateChangeAfterChangeActiveFilter(activeFilterId));\r\n };\r\n\r\n getStateChangeAfterChangeActiveSavedFilter = (activeSavedFilterId: string): any => {\r\n const state = this.state;\r\n const savedFilter = state.savedFilters.find(i => i.id === activeSavedFilterId);\r\n if (!savedFilter) return;\r\n const filterProps = this.getFilterPropsWithState(savedFilter);\r\n const activeFilterId = \"\";\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId };\r\n return {\r\n ...filterProps,\r\n activeFilterId,\r\n activeSavedFilterId,\r\n recordFilterIsSet: this.getRecordFilterIsSet(newState),\r\n reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n };\r\n };\r\n\r\n handleChangeActiveSavedFilter = (activeSavedFilterId: string) => {\r\n this.setState(this.getStateChangeAfterChangeActiveSavedFilter(activeSavedFilterId));\r\n };\r\n\r\n handleRemoveSavedFilter = async (savedFilterId: string) => {\r\n const state = this.state;\r\n const savedFilter = state.savedFilters.find(i => i.id === savedFilterId);\r\n if (!savedFilter) return;\r\n const result = await ListFilterSaveDialog.removeListFilterFromDb(state.savedFilters, state.activeCompanyId, savedFilterId, savedFilter.isShared, ApplicationPermissionType.Record);\r\n if (!result) return;\r\n const savedFilters = state.savedFilters.filter(i => i.id !== savedFilterId);\r\n let activeFilterId = \"\";\r\n let activeSavedFilterId = \"\";\r\n let newfilter: IListFilterItem = null;\r\n if (savedFilters.length > 0) {\r\n newfilter = savedFilters[0];\r\n activeSavedFilterId = newfilter.id;\r\n } else if (state.filters.length > 0) {\r\n newfilter = state.filters[0];\r\n activeFilterId = newfilter.id;\r\n }\r\n const filterProps = this.getFilterPropsWithState(newfilter);\r\n const activeMenuItem = activeSavedFilterId ? RecordPageListMenuItem.Filters : RecordPageListMenuItem.None;\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId, activeMenuItem, savedFilters };\r\n this.setState({\r\n ...filterProps,\r\n showRecordFilterDialog: false,\r\n activeFilterId,\r\n activeSavedFilterId,\r\n activeMenuItem,\r\n savedFilters,\r\n recordFilterIsSet: this.getRecordFilterIsSet(newState),\r\n reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n });\r\n };\r\n\r\n handleFilterSortData = (sortColumn: string, sortOrderIsAsc: boolean) => {\r\n this.setState({\r\n sortColumn,\r\n sortOrderIsAsc,\r\n });\r\n };\r\n\r\n handleEmploymentSaved = () => {\r\n this.updateFurtherEducationsFamiliarizationsAndJobTitles(this.state.activeCompanyId);\r\n };\r\n\r\n updateFiltersAfterSave = (orgFilterId: string, savedListFilter: ISavedListFilter, isShared: boolean) => {\r\n if (!savedListFilter) return;\r\n const state = this.state;\r\n const savedFilters = state.savedFilters.filter(i => i.id !== orgFilterId || i.isShared !== isShared);\r\n const filter = ListFilterItem.createListFilterItemFromSavedListFilter(savedListFilter, isShared);\r\n savedFilters.push(filter);\r\n ListFilterItem.sortListFilterItems(savedFilters);\r\n this.setState({\r\n showListFilterSaveDialog: false,\r\n savedFilters,\r\n activeFilterId: \"\",\r\n activeSavedFilterId: savedListFilter.id,\r\n activeMenuItem: RecordPageListMenuItem.Filters,\r\n recordFilterDialogFilter: filter\r\n });\r\n };\r\n\r\n getActiveFilter = (): IListFilterItem => {\r\n const state = this.state;\r\n return state.activeFilterId\r\n ? state.filters.find(i => i.id === state.activeFilterId)\r\n : state.savedFilters.find(i => i.id === state.activeSavedFilterId);\r\n };\r\n\r\n handleSaveListFilter = async (saveAs: boolean, onGetGeneralFilter: () => any) => {\r\n const state = this.state;\r\n const filter = this.getActiveFilter();\r\n if (!filter) return;\r\n if (!saveAs) {\r\n const savedListFilter = await ListFilterSaveDialog.saveListFilterToDb(filter, this.getGeneralFilterFromState(state), state.sortColumn, state.sortOrderIsAsc, state.activeCompanyId, ApplicationPermissionType.Record);\r\n this.updateFiltersAfterSave(filter.id, savedListFilter, filter.isShared);\r\n } else {\r\n this.setState({\r\n showListFilterSaveDialog: true,\r\n listFilterSaveDialogFilter: filter,\r\n listFilterSaveDialogReservedNames: state.savedFilters.map(i => i.id).concat(state.filters.map(i => i.title)),\r\n listFilterSaveDialogGeneralFilter: this.getGeneralFilterFromState(state),\r\n listFilterSaveDialogOnGetGeneralFilter: onGetGeneralFilter\r\n });\r\n }\r\n };\r\n\r\n handleSaveListFilterDialogOk = (savedListFilter: ISavedListFilter, isShared: boolean) => {\r\n this.updateFiltersAfterSave(\"\", savedListFilter, isShared);\r\n };\r\n\r\n handleSaveListFilterDialogCancel = () => {\r\n this.setState({\r\n showListFilterSaveDialog: false\r\n });\r\n };\r\n // #endregion Saved Filter\r\n\r\n // #region Record Filter\r\n handleOpenRecordFilterDialog = () => {\r\n const filter = this.getActiveFilter();\r\n if (!filter) return;\r\n this.setState({\r\n showRecordFilterDialog: true,\r\n recordFilterDialogFilter: filter\r\n });\r\n };\r\n\r\n onRecordFilterDialogOk = (closeDialog: boolean, selectedActivityFilterId: string, selectedEmployeeTypeIds: string[], selectedJobTitleIds: string[], selectedUnitIds: string[]): any => {\r\n const newState = { ...this.state, selectedActivityFilterId, selectedEmployeeTypeIds, selectedJobTitleIds, selectedUnitIds };\r\n this.setState({\r\n showRecordFilterDialog: !closeDialog,\r\n selectedActivityFilterId,\r\n selectedEmployeeTypeIds,\r\n selectedJobTitleIds,\r\n selectedUnitIds,\r\n recordFilterIsSet: this.getRecordFilterIsSet(newState),\r\n reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n });\r\n return this.getGeneralFilterFromState(newState);\r\n };\r\n \r\n onRecordFilterDialogCancel = () => {\r\n this.setState({ showRecordFilterDialog: false });\r\n };\r\n // #endregion Record Filter\r\n\r\n // #region Report Filter\r\n getStateChangeAfterChangeActiveReport = (activeReportId: string): any => {\r\n const state = this.state;\r\n const reports = state.reports.slice(0);\r\n const report = reports.find(i => i.id === activeReportId);\r\n if (!report) return;\r\n report.resetTaskDataRowToOrg();\r\n const activeSavedReportId = \"\";\r\n const reportFilterProps = this.getStateFilterPropsFromGeneralFilter(report.generalFilter); //Reset filter parameters\r\n const updatedState = {\r\n ...reportFilterProps,\r\n reports,\r\n activeReportId,\r\n activeSavedReportId,\r\n recordReportFilterDialogReport: report\r\n };\r\n return {\r\n ...updatedState,\r\n recordFilterIsSet: this.getRecordFilterIsSet({ ...state, ...updatedState }),\r\n reportFilterIsSet: this.getReportFilterIsSet({ ...state, ...updatedState })\r\n };\r\n };\r\n\r\n handleChangeActiveReport = (activeReportId: string) => {\r\n this.setState(this.getStateChangeAfterChangeActiveReport(activeReportId));\r\n };\r\n\r\n getStateChangeAfterChangeActiveSavedReport = (activeSavedReportId: string): any => {\r\n const state = this.state;\r\n const savedReports = state.savedReports.slice(0);\r\n const savedReport = savedReports.find(i => i.id === activeSavedReportId);\r\n if (!savedReport) return;\r\n savedReport.resetTaskDataRowToOrg();\r\n const activeReportId = \"\";\r\n const reportFilterProps = this.getStateFilterPropsFromGeneralFilter(savedReport.generalFilter);\r\n const updatedState = {\r\n ...reportFilterProps,\r\n savedReports,\r\n activeReportId,\r\n activeSavedReportId,\r\n recordReportFilterDialogReport: savedReport\r\n };\r\n return {\r\n ...updatedState,\r\n recordFilterIsSet: this.getRecordFilterIsSet({ ...state, ...updatedState }),\r\n reportFilterIsSet: this.getReportFilterIsSet({ ...state, ...updatedState })\r\n };\r\n };\r\n\r\n handleChangeActiveSavedReport = (activeSavedReportId: string) => {\r\n this.setState(this.getStateChangeAfterChangeActiveSavedReport(activeSavedReportId));\r\n };\r\n\r\n handleRemoveSavedReport = async (reportId: string) => {\r\n const state = this.state;\r\n const savedReport = state.savedReports.find(i => i.id === reportId);\r\n if (!savedReport) return;\r\n const result = await SaveReportDialog.removeReportFromDb(state.savedReports, state.activeCompanyId, reportId, savedReport.reportSharingType, ApplicationPermissionType.Record);\r\n if (!result) return;\r\n const savedReports = state.savedReports.filter(i => i.id !== reportId);\r\n let activeReportId = \"\";\r\n let activeSavedReportId = \"\";\r\n let newReport: IReportItem = null;\r\n if (savedReports.length > 0) {\r\n newReport = savedReports[0];\r\n activeSavedReportId = newReport.id;\r\n } else if (state.reports.length > 0) {\r\n newReport = state.reports[0];\r\n activeReportId = newReport.id;\r\n }\r\n const reportFilterProps = this.getStateFilterPropsFromGeneralFilter(newReport?.generalFilter);\r\n const activeMenuItem = activeSavedReportId ? RecordPageListMenuItem.Reports : RecordPageListMenuItem.ReportsFilter;\r\n const newState = { ...state, ...reportFilterProps, activeReportId, activeSavedReportId, activeMenuItem, savedReports };\r\n this.setState({\r\n ...reportFilterProps,\r\n activeReportId,\r\n activeSavedReportId,\r\n activeMenuItem,\r\n savedReports,\r\n recordFilterIsSet: this.getRecordFilterIsSet(newState),\r\n reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n });\r\n };\r\n // #endregion Report\r\n\r\n // #region Settings\r\n handleOpenSettingsDialog = () => {\r\n this.setState({\r\n showSettingsDialog: true\r\n });\r\n };\r\n\r\n handleSettingsDialogOk = async () => {\r\n this.setState({\r\n showSettingsDialog: false,\r\n dataId: this.state.dataId + 1\r\n });\r\n await this.updateFurtherEducationsFamiliarizationsAndJobTitles(this.state.activeCompanyId);\r\n };\r\n // #endregion Settings\r\n\r\n handleSetActiveViewType = (itemId: RecordPageListViewTypeId) => {\r\n const state = this.state;\r\n //To reset filter when filter/report is activated\r\n let newState = {};\r\n if (itemId === RecordPageListViewTypeId.Reports) {\r\n if (state.activeReportId) {\r\n newState = this.getStateChangeAfterChangeActiveReport(state.activeReportId);\r\n } else if (state.activeSavedReportId) {\r\n newState = this.getStateChangeAfterChangeActiveSavedReport(state.activeSavedReportId);\r\n }\r\n } else if (itemId === RecordPageListViewTypeId.Records) {\r\n if (state.activeFilterId) {\r\n newState = this.getStateChangeAfterChangeActiveFilter(state.activeFilterId);\r\n } else if (state.activeSavedFilterId) {\r\n newState = this.getStateChangeAfterChangeActiveSavedFilter(state.activeSavedFilterId);\r\n }\r\n }\r\n this.setState({\r\n ...newState,\r\n activeViewTypeId: itemId,\r\n listDataPreloaded: false,\r\n activeMenuItem: RecordPageListMenuItem.None\r\n });\r\n };\r\n\r\n // #region Report Filter\r\n getActiveReport = (): IReportItem => {\r\n const state = this.state;\r\n return state.activeReportId\r\n ? state.reports.find(i => i.id === state.activeReportId)\r\n : state.savedReports.find(i => i.id === state.activeSavedReportId);\r\n };\r\n\r\n handleOpenReportFilterDialog = () => {\r\n const report = this.getActiveReport();\r\n if (!report) return;\r\n this.setState({\r\n recordReportFilterDialogReport: report,\r\n });\r\n };\r\n\r\n onRecordReportFilterDialogOk = (closeDialog: boolean, selectedActivityFilterId: string, selectedEmployeeTypeIds: string[], selectedJobTitleIds: string[], selectedUnitIds: string[], parameters: ITaskDataRow): ISaveReportFilters => {\r\n const state = this.state;\r\n const reports = state.reports.slice(0);\r\n const savedReports = state.savedReports.slice(0);\r\n const index = state.activeReportId\r\n ? reports.findIndex(i => i.id === state.activeReportId)\r\n : savedReports.findIndex(i => i.id === state.activeSavedReportId);\r\n if (index < 0) return;\r\n let reportFilter = null;\r\n if (state.activeReportId) {\r\n const report = new ReportItem(reports[index]);\r\n report.taskDataRow = parameters;\r\n report.reportFilter = SaveReportDialog.getReportFilter(report);\r\n reportFilter = report.reportFilter;\r\n reports[index] = report;\r\n } else {\r\n const savedReport = new ReportItem(savedReports[index]);\r\n savedReport.taskDataRow = parameters;\r\n savedReport.reportFilter = SaveReportDialog.getReportFilter(savedReport);\r\n reportFilter = savedReport.reportFilter;\r\n savedReports[index] = savedReport;\r\n }\r\n const newState = { ...this.state, selectedActivityFilterId, selectedEmployeeTypeIds, selectedJobTitleIds, selectedUnitIds, reports, savedReports, };\r\n this.setState({\r\n selectedActivityFilterId,\r\n selectedEmployeeTypeIds,\r\n selectedJobTitleIds,\r\n selectedUnitIds,\r\n reports,\r\n savedReports,\r\n recordFilterIsSet: this.getRecordFilterIsSet(newState),\r\n reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n });\r\n return {\r\n generalFilter: this.getGeneralFilterFromState(newState),\r\n reportFilter,\r\n showInFrontPage: false\r\n };\r\n };\r\n \r\n onRecordReportFilterDialogCancel = () => {\r\n // this.setState({ showRecordReportFilterDialog: false });\r\n };\r\n // #endregion Report Filter\r\n\r\n // #region Report Save\r\n handleSetSortData = (sortColumn: string, sortOrderIsAsc: boolean) => {\r\n const state = this.state;\r\n if (state.activeReportId) {\r\n const reports = state.reports.slice(0);\r\n const index = reports.findIndex(i => i.id === state.activeReportId);\r\n if (index < 0) return;\r\n const report = new ReportItem(reports[index]);\r\n report.sortColumn = sortColumn;\r\n report.sortOrderIsAsc = sortOrderIsAsc;\r\n reports[index] = report;\r\n const newState = { ...this.state, reports };\r\n this.setState({\r\n reports,\r\n recordFilterIsSet: this.getRecordFilterIsSet(newState),\r\n reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n });\r\n } else if (state.activeSavedReportId) {\r\n const savedReports = state.savedReports.slice(0);\r\n const index = savedReports.findIndex(i => i.id === state.activeSavedReportId);\r\n if (index < 0) return;\r\n const savedReport = new ReportItem(savedReports[index]);\r\n savedReport.sortColumn = sortColumn;\r\n savedReport.sortOrderIsAsc = sortOrderIsAsc;\r\n savedReports[index] = savedReport;\r\n const newState = { ...this.state, savedReports };\r\n this.setState({\r\n savedReports,\r\n recordFilterIsSet: this.getRecordFilterIsSet(newState),\r\n reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n });\r\n }\r\n };\r\n\r\n updateReportsAfterSave = (orgReportId: string, savedReport: ISavedReport, reportSharingType: ReportSharingType) => {\r\n if (!savedReport) return;\r\n const state = this.state;\r\n const savedReports = state.savedReports.filter(i => i.id !== orgReportId || i.reportSharingType !== reportSharingType);\r\n const report = state.reports.find(i => i.id === savedReport.reportId);\r\n if (!report) return;\r\n const newReport = ReportItem.createReportItemFromSavedReport(report, savedReport, reportSharingType);\r\n savedReports.push(newReport);\r\n ReportItem.sortReportItems(savedReports);\r\n this.setState({\r\n showReportSaveDialog: false,\r\n savedReports,\r\n activeReportId: \"\",\r\n activeSavedReportId: savedReport.id,\r\n activeMenuItem: RecordPageListMenuItem.ReportsFilter,\r\n recordReportFilterDialogReport: newReport\r\n });\r\n };\r\n\r\n handleSaveAsReportsModifiedReport = async (saveAs: boolean, onGetReportSaveFilters: () => ISaveReportFilters) => {\r\n const state = this.state;\r\n const report = this.getActiveReport();\r\n if (!report) return;\r\n if (!saveAs) {\r\n const savedReport = await SaveReportDialog.saveReportToDb(report, this.getGeneralFilterFromState(state), state.activeCompanyId, ApplicationPermissionType.Record);\r\n this.updateReportsAfterSave(report.id, savedReport, report.reportSharingType);\r\n } else {\r\n this.setState({\r\n showReportSaveDialog: true,\r\n reportSaveDialogReport: report,\r\n reportSaveDialogReservedNames: state.savedReports.map(i => i.id).concat(state.reports.map(i => i.title)),\r\n reportSaveDialogGeneralFilter: this.getGeneralFilterFromState(state),\r\n reportSaveDialogOnGetReportSaveFilters: onGetReportSaveFilters\r\n });\r\n }\r\n };\r\n\r\n handleReportSaveDialogOk = (savedReport: ISavedReport, reportSharingType: ReportSharingType) => {\r\n this.updateReportsAfterSave(\"\", savedReport, reportSharingType);\r\n };\r\n\r\n handleReportSaveDialogCancel = () => {\r\n this.setState({\r\n showReportSaveDialog: false\r\n });\r\n };\r\n // #endregion Report Save\r\n\r\n // #region Dashboard\r\n handleToggleShowDashboardNavPanel = () => {\r\n this.setState({ showDashBoardNavPanel: !this.state.showDashBoardNavPanel });\r\n };\r\n\r\n handleUpdateDashBoardPanels = async (panels: IPagePanel[]) => {\r\n this.setState({\r\n dashBoardPanels: panels\r\n });\r\n };\r\n\r\n handleSaveDashBoardPanels = async (panels: IPagePanel[]) => {\r\n await recordService.saveRecordPanels(panels);\r\n this.setState({\r\n dashBoardPanels: panels\r\n });\r\n };\r\n\r\n getDashboardActiveFilterMenuItem = (): RecordPageListMenuItem => {\r\n const props = this.props;\r\n return props.pageList ? (props.pageList.companies.length > 1 ? RecordPageListMenuItem.CompanyFilter : RecordPageListMenuItem.Filters) : RecordPageListMenuItem.Filters;\r\n };\r\n\r\n getDashboardActiveReportMenuItem = (): RecordPageListMenuItem => {\r\n const props = this.props;\r\n return props.pageList ? (props.pageList.companies.length > 1 ? RecordPageListMenuItem.CompanyFilter : RecordPageListMenuItem.Reports) : RecordPageListMenuItem.Reports;\r\n };\r\n\r\n handleDashboardSavedFilterClick = (filterId: string) => {\r\n this.handleChangeActiveSavedFilter(filterId);\r\n this.setState({\r\n activeViewTypeId: RecordPageListViewTypeId.Records,\r\n activeMenuItem: this.getDashboardActiveFilterMenuItem(),\r\n listDataPreloaded: false\r\n });\r\n };\r\n\r\n handleDashboardFilterClick = (filterId: string) => {\r\n this.handleChangeActiveFilter(filterId);\r\n this.setState({\r\n activeViewTypeId: RecordPageListViewTypeId.Records,\r\n activeMenuItem: this.getDashboardActiveFilterMenuItem(),\r\n listDataPreloaded: false\r\n });\r\n };\r\n\r\n handleDashboardSavedReportClick = (reportId: string) => {\r\n this.handleChangeActiveSavedReport(reportId);\r\n this.setState({\r\n activeViewTypeId: RecordPageListViewTypeId.Reports,\r\n activeMenuItem: this.getDashboardActiveReportMenuItem(),\r\n listDataPreloaded: false\r\n });\r\n };\r\n\r\n handleDashboardReportClick = (reportId: string) => {\r\n this.handleChangeActiveReport(reportId);\r\n this.setState({\r\n activeViewTypeId: RecordPageListViewTypeId.Reports,\r\n activeMenuItem: this.getDashboardActiveReportMenuItem(),\r\n listDataPreloaded: false\r\n });\r\n };\r\n // #endregion Dashboard\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = this.props.appState.state;\r\n const companies = props.pageList ? props.pageList.companies : [];\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {state.activeViewTypeId !== RecordPageListViewTypeId.Dashboard &&\r\n \r\n {state.activeViewTypeId === RecordPageListViewTypeId.Records &&\r\n i.id === state.activeSavedFilterId) : null}\r\n sessionState={sessionState}\r\n dataId={state.dataId.toString(10)}\r\n companyId={state.activeCompanyId}\r\n preloaded={state.listDataPreloaded}\r\n waitingPreloadedData={state.listDataPreloaded}\r\n units={state.units}\r\n jobTitles={state.jobTitles}\r\n list={props.pageList?.list}\r\n listFilterIsSet={state.recordFilterIsSet}\r\n familiarizations={state.familiarizations}\r\n furtherEducationGroups={state.furtherEducationGroups}\r\n selectedEmployeeTypeIds={state.selectedEmployeeTypeIds}\r\n selectedJobTitleIds={state.selectedJobTitleIds}\r\n selectedUnitIds={state.selectedUnitIds}\r\n selectedActivityFilterId={state.selectedActivityFilterId}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n sheetTaskType={state.sheetTaskType}\r\n onRefreshSessionState={props.onRefreshSessionState}\r\n onSetSortData={this.handleFilterSortData}\r\n onEmploymentSaved={this.handleEmploymentSaved}\r\n reportTabs={(\r\n \r\n )}\r\n onOpenFiltersDialog={this.handleOpenRecordFilterDialog}\r\n />\r\n }\r\n {state.activeViewTypeId === RecordPageListViewTypeId.Reports &&\r\n \r\n \r\n }\r\n />\r\n \r\n }\r\n reports={\r\n \r\n } />\r\n \r\n }\r\n \r\n }\r\n {state.activeViewTypeId === RecordPageListViewTypeId.Dashboard &&\r\n \r\n \r\n {state.showListFilterSaveDialog &&\r\n \r\n }\r\n {state.showReportSaveDialog &&\r\n \r\n }\r\n {state.showSettingsDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","import { Box, CardActions, CardContent } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { ITypedOption } from \"../../../models/common/typedOption\";\r\nimport { IRecordPageEdit } from \"../../../models/record/recordPageEdit\";\r\nimport * as recordService from \"../../../models/services/recordService\";\r\nimport { IAppSessionState } from \"../../../models/store/storeTypes\";\r\nimport { IUnitNodePermissions } from \"../../../models/unit/unitNodePermissions\";\r\nimport { HeaderMenuItem, NavigationMenu } from \"../../app/NavigationMenu\";\r\nimport { UserMenu } from \"../../app/UserMenu\";\r\nimport { ConfirmationButton } from \"../../framework/Button/ConfirmationButton\";\r\nimport { ListContainer } from \"../../framework/List/ListContainer\";\r\nimport { PageContainer } from \"../../framework/Page/PageContainer\";\r\nimport { PageContent } from \"../../framework/Page/PageContent\";\r\nimport { PageTabs } from \"../../framework/Page/PageTabs\";\r\nimport { PageTitle } from \"../../framework/Page/PageTitle\";\r\nimport { PageTopBar } from \"../../framework/Page/PageTopBar\";\r\nimport { RecordEdit as RecordEditView, RecordEditViewMode } from \"../RecordEdit/RecordEdit\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\n// RecordPageEdit\r\nexport interface IRecordPageEditProps {\r\n appState: IAppSessionState;\r\n dataId: number;\r\n pageEdit: IRecordPageEdit;\r\n onGetRecordsPage: () => void;\r\n onLogout: () => void;\r\n onSetCulture: (culture: string) => void;\r\n onSaveUserParameters: (parameters: ITypedOption[]) => void;\r\n onRefreshSessionState: () => void;\r\n}\r\n\r\ninterface IRecordPageEditState {\r\n showNavPanel: boolean;\r\n activeMenuItem: RecordEditViewMode;\r\n settingsActive: boolean;\r\n // Properties\r\n showUnitNodePermissionsDialog: boolean;\r\n unitNodePermissions: IUnitNodePermissions;\r\n}\r\n\r\nexport class RecordPageEdit extends React.Component {\r\n private recordEditViewRef = React.createRef();\r\n\r\n constructor(props: IRecordPageEditProps) {\r\n super(props);\r\n this.state = {\r\n showNavPanel: true, //props.sessionState.getShowPageNavigation(),\r\n activeMenuItem: RecordEditViewMode.General,\r\n settingsActive: false,\r\n showUnitNodePermissionsDialog: false,\r\n unitNodePermissions: null\r\n };\r\n }\r\n\r\n componentDidMount(): void {\r\n this.props.onGetRecordsPage();\r\n }\r\n\r\n handleToggleShowNavPanel = () => {\r\n this.setState({ showNavPanel: !this.state.showNavPanel });\r\n };\r\n\r\n handleToggleActiveMenuItem = (userPageMenuItem: RecordEditViewMode) => {\r\n this.setState({\r\n activeMenuItem: this.state.activeMenuItem !== userPageMenuItem ? userPageMenuItem : RecordEditViewMode.None,\r\n settingsActive: false\r\n });\r\n };\r\n\r\n handleSave = async () => {\r\n if (this.recordEditViewRef && this.recordEditViewRef.current) {\r\n this.recordEditViewRef.current.save();\r\n }\r\n };\r\n\r\n handlePrint = async () => {\r\n const fileName = await AppUtils.callService(() => recordService.getRecordPrint(\"\", this.props.appState.state.companyId));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.AttachmentParameterDownloaded, fileName));\r\n };\r\n\r\n handleNavigateOutCheck = async (): Promise => {\r\n if (this.recordEditViewRef && this.recordEditViewRef.current) {\r\n return await this.recordEditViewRef.current.canNavigateOut();\r\n } else {\r\n return true;\r\n }\r\n };\r\n\r\n getAttahmentsCount = (): number => {\r\n if (this.recordEditViewRef && this.recordEditViewRef.current) {\r\n return this.recordEditViewRef.current.getAttahmentsCount();\r\n } else {\r\n return 0;\r\n }\r\n };\r\n\r\n getRecordName = (): string => {\r\n if (this.recordEditViewRef && this.recordEditViewRef.current) {\r\n return this.recordEditViewRef.current.getRecordName();\r\n } else {\r\n return \"\";\r\n }\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n const attachmentsCount = this.getAttahmentsCount();\r\n const recordName = this.getRecordName();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n <>\r\n \r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {Translations.Print}\r\n \r\n \r\n {Translations.Save}\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { ITypedOption } from \"../../../models/common/typedOption\";\r\nimport { RecordPageList } from \"../RecordPageList/RecordPageList\";\r\nimport { IRecordPage } from \"../../../models/record/recordPage\";\r\nimport { RecordPageEdit } from \"../RecordPageEdit/RecordPageEdit\";\r\nimport { IAppSessionState } from \"../../../models/store/storeTypes\";\r\nimport { recordLockManager } from \"../../../models/services/recordLockService\";\r\nimport { abortManager } from \"source/models/services/tokenService\";\r\n\r\n// RecordPage\r\nexport interface IRecordPageOwnProps {\r\n}\r\n\r\nexport interface IRecordPageStateProps {\r\n appState: IAppSessionState;\r\n dataId: number;\r\n recordPage: IRecordPage;\r\n}\r\n\r\nexport interface IRecordPageDispatchProps {\r\n onGetRecordsPage: () => void;\r\n onLogout: () => void;\r\n onSetCulture: (culture: string) => void;\r\n onSaveUserParameters: (parameters: ITypedOption[]) => void;\r\n onRefreshSessionState: () => void;\r\n}\r\n\r\ntype RecordPageProp = IRecordPageOwnProps & IRecordPageStateProps & IRecordPageDispatchProps;\r\n\r\nexport class RecordPage extends React.Component {\r\n constructor(props: RecordPageProp) {\r\n super(props);\r\n abortManager.abortAll(); //Abort all abortable calls regardless of module\r\n }\r\n \r\n componentDidMount(): void {\r\n const sessionState = this.props.appState.state;\r\n recordLockManager.unlockAll(sessionState?.companyId, sessionState?.code);\r\n }\r\n \r\n render() {\r\n const props = this.props;\r\n if (props.appState.state.canUseRecords) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n }\r\n}","/* eslint-disable no-unused-vars */\r\nimport * as React from \"react\";\r\n/* eslint-enable no-unused-vars */\r\nimport { connect } from \"react-redux\";\r\nimport { IApplicationState } from \"../../models/store/storeTypes\";\r\nimport * as storeEffects from \"../../models/store/storeEffects\";\r\nimport { IRecordPageOwnProps, IRecordPageStateProps, IRecordPageDispatchProps, RecordPage } from \"../../components/record/RecordPage\";\r\nimport { ITypedOption } from \"../../models/common/typedOption\";\r\n\r\nexport function mapStateToProps(applicationState: IApplicationState, ownProps: IRecordPageOwnProps): IRecordPageStateProps {\r\n if (!applicationState || !applicationState.front) {\r\n return {\r\n appState: null,\r\n dataId: -1,\r\n recordPage: null\r\n };\r\n }\r\n const records = applicationState.records;\r\n return {\r\n appState: applicationState.session,\r\n dataId: records.dataId,\r\n recordPage: records.recordPage\r\n };\r\n}\r\n\r\nexport function mapDispatchToProps(dispatch: storeEffects.LogThunkDispatch): IRecordPageDispatchProps {\r\n return {\r\n onGetRecordsPage: () => dispatch(storeEffects.getRecordsPage()),\r\n onLogout: () => dispatch(storeEffects.logout()),\r\n onSetCulture: (culture: string) => dispatch(storeEffects.setCulture(culture)),\r\n onSaveUserParameters: (parameters: ITypedOption[]) => dispatch(storeEffects.saveUserParameters(parameters)),\r\n onRefreshSessionState: () => dispatch(storeEffects.refreshSessionState()),\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(RecordPage);","import { Box, BoxProps } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\nexport const TaskDynamicFormContainer = (props: BoxProps) => (\r\n \r\n {props.children}\r\n \r\n);\r\n","import * as React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { TaskDynamicForm } from \"../TaskDynamicForm/TaskDynamicForm\";\r\nimport { ITaskEditTypeItem, TaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { ITaskDataRow, TaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskDataRowCol, TaskDataRowCol } from \"ui/Scripts/source/models/task/taskDataRowCol\";\r\nimport { ITaskTypeCol, TaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\nimport { TaskDataRowDataType } from \"ui/Scripts/source/models/enums\";\r\nimport { TaskDynamicFormContainer } from \"../TaskDynamicFormContainer\";\r\nimport { IdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\n\r\nexport interface ITaskFilterDrawerProp {\r\n taskTypes: ITaskEditTypeItem[];\r\n taskType: ITaskEditTypeItem;\r\n headerParameters: ITaskDataRow;\r\n formParameters: ITaskDataRow;\r\n onSetHeaderParameters: (taskDataRowCols: ITaskDataRowCol[]) => void;\r\n onSetFormParameters: (taskDataRowCols: ITaskDataRowCol[]) => void;\r\n}\r\n\r\nexport class TaskFilterDrawerTaskTypeParameters extends React.Component {\r\n static getNewTaskTypeCol = (typeCol: ITaskTypeCol, fieldSuffix: string, titleSuffix: string) => {\r\n const result = new TaskTypeCol(typeCol);\r\n result.field = typeCol.field + fieldSuffix;\r\n result.title = typeCol.title + titleSuffix;\r\n result.required = false;\r\n result.class = \"col col-6\";\r\n if (result.dataType === TaskDataRowDataType.String && (result.options && result.options.length > 0 || result.idOptions && result.idOptions.length > 0)) {\r\n result.defaultStr = \"\";\r\n result.dataType = TaskDataRowDataType.StringArray;\r\n if (result.options && result.options.length > 0) {\r\n result.idOptions = result.options.map(i => IdTitle.createIdTitle(i, i));\r\n result.options = [];\r\n }\r\n result.idOptions.unshift(IdTitle.createIdTitle(\"\", `'${Translations.All}'`));\r\n } else if (result.dataType === TaskDataRowDataType.Boolean) {\r\n result.defaultStr = \"\";\r\n result.dataType = TaskDataRowDataType.String;\r\n result.idOptions.push(IdTitle.createIdTitle(\"\", `'${Translations.All}'`));\r\n result.idOptions.push(IdTitle.createIdTitle(\"0\", Translations.FormFalse));\r\n result.idOptions.push(IdTitle.createIdTitle(\"1\", Translations.FormTrue));\r\n }\r\n return result;\r\n };\r\n\r\n static addTaskTypeColToFilterCols = (filterCols: ITaskTypeCol[], typeCol: ITaskTypeCol) => {\r\n if (!typeCol || !typeCol.useInFilter || !typeCol.isSaveDataType() || !typeCol.isSavedTaskDataField() || !TaskTypeCol.colCanBeUsedInFilter(typeCol)) return;\r\n if (typeCol.dataType === TaskDataRowDataType.Date || typeCol.dataType === TaskDataRowDataType.Time) {\r\n filterCols.push(TaskFilterDrawerTaskTypeParameters.getNewTaskTypeCol(typeCol, \"_Start\", \" - \" + Translations.Start));\r\n filterCols.push(TaskFilterDrawerTaskTypeParameters.getNewTaskTypeCol(typeCol, \"_End\", \" - \" + Translations.End));\r\n } else if (typeCol.dataType === TaskDataRowDataType.TimeSpan || typeCol.dataType === TaskDataRowDataType.Integer || typeCol.dataType === TaskDataRowDataType.Number) {\r\n filterCols.push(TaskFilterDrawerTaskTypeParameters.getNewTaskTypeCol(typeCol, \"_Min\", \" - \" + Translations.Min));\r\n filterCols.push(TaskFilterDrawerTaskTypeParameters.getNewTaskTypeCol(typeCol, \"_Max\", \" - \" + Translations.Max));\r\n } else {\r\n filterCols.push(TaskFilterDrawerTaskTypeParameters.getNewTaskTypeCol(typeCol, \"\", \"\"));\r\n }\r\n };\r\n\r\n static getNewTaskType = (taskTypes: ITaskEditTypeItem[], selectedTaskTypeIds: string[]): ITaskEditTypeItem => {\r\n if (selectedTaskTypeIds.length !== 1 || selectedTaskTypeIds[0] === taskTypes[0].id) return null;\r\n const taskType = taskTypes.find(i => i.id === selectedTaskTypeIds[0]);\r\n if (!taskType) return null;\r\n const result = new TaskEditTypeItem();\r\n for (const typeCol of taskType.headerCols) {\r\n this.addTaskTypeColToFilterCols(result.headerCols, typeCol);\r\n }\r\n for (const typeCol of taskType.formCols) {\r\n this.addTaskTypeColToFilterCols(result.formCols, typeCol);\r\n }\r\n return result;\r\n };\r\n\r\n static getNewTaskDataRowCol = (typeCol: ITaskTypeCol, dataCol: ITaskDataRowCol, fieldsObj: any) => {\r\n const result = new TaskDataRowCol(dataCol);\r\n if (fieldsObj) {\r\n result.setTaskDataRowColValueFromDbValue(typeCol, fieldsObj[dataCol.field]);\r\n }\r\n result.valueStr = TaskDataRowCol.getTaskDataRowColUiValue(typeCol, result.valueStr, result.valueNbr);\r\n return result;\r\n };\r\n\r\n static getTaskDataRow = (taskTypeCols: ITaskTypeCol[], serializedFields: string): ITaskDataRow => {\r\n const result = new TaskDataRow();\r\n result.id = Base.getGuid();\r\n const fieldsObj = serializedFields ? JSON.parse(serializedFields) : null;\r\n for (const typeCol of taskTypeCols) {\r\n const dataCol = TaskDataRowCol.getDefaultValueTaskDataRowCol(typeCol);\r\n result.cols.push(TaskFilterDrawerTaskTypeParameters.getNewTaskDataRowCol(typeCol, dataCol, fieldsObj));\r\n }\r\n return result.cols.length > 0\r\n ? result\r\n : null;\r\n };\r\n\r\n static getSerializedFields(taskTypeCols: ITaskTypeCol[], taskDataRow: ITaskDataRow): string {\r\n if (!taskDataRow) return \"\";\r\n const fieldsObj = {};\r\n for (const col of taskDataRow.cols) {\r\n const typeCol = taskTypeCols.find(i => i.field === col.field);\r\n if (!typeCol) continue;\r\n if (typeCol.dataType === TaskDataRowDataType.Date ||\r\n typeCol.dataType === TaskDataRowDataType.Time ||\r\n typeCol.dataType === TaskDataRowDataType.TimeSpan ||\r\n typeCol.dataType === TaskDataRowDataType.Integer ||\r\n typeCol.dataType === TaskDataRowDataType.Number ||\r\n typeCol.dataType === TaskDataRowDataType.Boolean) {\r\n fieldsObj[col.field] = col.valueNbr ? col.valueNbr : null;\r\n } else {\r\n fieldsObj[col.field] = col.valueStr;\r\n }\r\n }\r\n return JSON.stringify(fieldsObj);\r\n }\r\n\r\n static getStateChangeFromTaskType = (taskType: ITaskEditTypeItem, selectedTaskTypeHeaderFields: string, selectedTaskTypeFields: string): any => {\r\n if (!taskType) {\r\n return {\r\n taskType: null,\r\n headerParameters: null,\r\n formParameters: null,\r\n selectedTaskTypeHeaderFields: null,\r\n selectedTaskTypeFields: null\r\n };\r\n }\r\n const headerParameters = TaskFilterDrawerTaskTypeParameters.getTaskDataRow(taskType.headerCols, selectedTaskTypeHeaderFields);\r\n const formParameters = TaskFilterDrawerTaskTypeParameters.getTaskDataRow(taskType.formCols, selectedTaskTypeFields);\r\n return {\r\n taskType,\r\n headerParameters,\r\n formParameters,\r\n selectedTaskTypeHeaderFields: TaskFilterDrawerTaskTypeParameters.getSerializedFields(taskType.headerCols, headerParameters),\r\n selectedTaskTypeFields: TaskFilterDrawerTaskTypeParameters.getSerializedFields(taskType.formCols, formParameters)\r\n };\r\n };\r\n\r\n static getFormParametersState = (state: { taskType: ITaskEditTypeItem, formParameters: ITaskDataRow }, taskDataRowCols: ITaskDataRowCol[]) => {\r\n if (!state.formParameters) return null;\r\n const formParameters = new TaskDataRow(state.formParameters);\r\n formParameters.cols = taskDataRowCols;\r\n return {\r\n formParameters,\r\n selectedTaskTypeFields: TaskFilterDrawerTaskTypeParameters.getSerializedFields(state.taskType.formCols, formParameters)\r\n };\r\n };\r\n\r\n static getExtraHeaderParametersState = (state: { taskType: ITaskEditTypeItem, headerParameters: ITaskDataRow }, taskDataRowCols: ITaskDataRowCol[]) => {\r\n if (!state.headerParameters) return null;\r\n const headerParameters = new TaskDataRow(state.headerParameters);\r\n headerParameters.cols = taskDataRowCols;\r\n return {\r\n headerParameters,\r\n selectedTaskTypeHeaderFields: TaskFilterDrawerTaskTypeParameters.getSerializedFields(state.taskType.headerCols, headerParameters),\r\n };\r\n };\r\n\r\n static getChangedStateAdterChangeTaskTypeIds = (props: { taskTypes: ITaskEditTypeItem[], selectedTaskTypeHeaderFields: string, selectedTaskTypeFields: string }, selectedTaskTypeIds: string[]) => {\r\n return {\r\n selectedTaskTypeIds,\r\n ...TaskFilterDrawerTaskTypeParameters.getStateChangeFromTaskType(TaskFilterDrawerTaskTypeParameters.getNewTaskType(props.taskTypes, selectedTaskTypeIds), props.selectedTaskTypeHeaderFields, props.selectedTaskTypeFields)\r\n };\r\n };\r\n\r\n static getClearedParametersState = (taskTypes: ITaskEditTypeItem[]) => {\r\n return TaskFilterDrawerTaskTypeParameters.getStateChangeFromTaskType(TaskFilterDrawerTaskTypeParameters.getNewTaskType(taskTypes, [taskTypes[0].id]), \"\", \"\");\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n if (!props.taskType || (!props.headerParameters && !props.formParameters)) return null;\r\n return (\r\n
    \r\n {!!props.headerParameters &&\r\n \r\n \r\n \r\n }\r\n {!!props.formParameters &&\r\n \r\n \r\n \r\n }\r\n
    \r\n );\r\n }\r\n}\r\n","// TaskFilterDrawer - MODULE\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { IListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { ITaskPageFilterLists, ITaskPageFilterState } from \"../TaskPageDashboardChart\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Grid } from \"@mui/material\";\r\nimport { FilterSearchField } from \"source/components/framework/Filters/FilterSearchField\";\r\nimport { SaveDataObj } from \"source/framework/saveData\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { FormField } from \"source/components/framework/FormField\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { CheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/CheckboxDropdown\";\r\nimport { TreeCheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/TreeCheckboxDropdown\";\r\nimport { FilterButtons } from \"source/components/framework/Filters/FilterButtons\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { ITaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskDataRowCol } from \"ui/Scripts/source/models/task/taskDataRowCol\";\r\nimport { DrawerContent } from \"source/components/framework/Drawer/DrawerContent\";\r\nimport { PageFilterConditionDrawer } from \"source/components/framework/Page/PageFilterConditionDrawer\";\r\nimport { TaskFilterDrawerTaskTypeParameters } from \"./TaskFilterDrawerTaskTypeParameters\";\r\n\r\n//TaskFilterDrawer\r\nexport interface ITaskFilterDrawerProp extends ITaskPageFilterLists, ITaskPageFilterState {\r\n open: boolean;\r\n filter: IListFilterItem;\r\n canRemoveSharedFilters: boolean;\r\n stateIsReadOnly?: boolean;\r\n onSaveFilter: (saveAs: boolean, onGetGeneralFilter: () => any) => void;\r\n onRemoveFilter: (filterId: string) => void;\r\n onOk: (closeDialog: boolean, filterState: ITaskPageFilterState) => any;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface ITaskFilterDrawerState extends ITaskPageFilterState {\r\n taskType: ITaskEditTypeItem;\r\n headerParameters: ITaskDataRow;\r\n formParameters: ITaskDataRow;\r\n}\r\n\r\nexport class TaskFilterDrawer extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n getStateFromProps = (props: ITaskFilterDrawerProp): ITaskFilterDrawerState => {\r\n return {\r\n ...props,\r\n ...TaskFilterDrawerTaskTypeParameters.getStateChangeFromTaskType(TaskFilterDrawerTaskTypeParameters.getNewTaskType(props.taskTypes, props.selectedTaskTypeIds), props.selectedTaskTypeHeaderFields, props.selectedTaskTypeFields)\r\n };\r\n };\r\n\r\n constructor(props: ITaskFilterDrawerProp) {\r\n super(props);\r\n this.state = this.getStateFromProps(props);\r\n this.orgStateHash = this.getSaveDataFromState(props, this.state).hash;\r\n }\r\n\r\n componentDidUpdate(prevProps: ITaskFilterDrawerProp, prevState: ITaskFilterDrawerState): void {\r\n const props = this.props;\r\n const filterChanged = prevProps.filter?.getHash() !== props.filter?.getHash();\r\n const opened = !prevProps.open && props.open;\r\n if (!filterChanged && !opened) return;\r\n const state = this.getStateFromProps(props);\r\n this.setState(state);\r\n this.orgStateHash = this.getSaveDataFromState(props, state).hash;\r\n }\r\n\r\n handleChangeUnitIds = (selectedUnitIds: string[]) => {\r\n this.setState({\r\n selectedUnitIds\r\n });\r\n };\r\n\r\n handleChangeStateIds = (selectedStateIds: string[]) => {\r\n this.setState({\r\n selectedStateIds\r\n });\r\n };\r\n\r\n handleChangePriorityIds = (selectedPriorityIds: string[]) => {\r\n this.setState({\r\n selectedPriorityIds\r\n });\r\n };\r\n\r\n handleChangeTaskTypeIds = (selectedTaskTypeIds: string[]) => {\r\n const props = this.props;\r\n this.setState({\r\n ...TaskFilterDrawerTaskTypeParameters.getChangedStateAdterChangeTaskTypeIds(props, selectedTaskTypeIds)\r\n });\r\n };\r\n\r\n handleChangeHandlerUserCodes = (selectedHandlerUserCodes: string[]) => {\r\n this.setState({\r\n selectedHandlerUserCodes\r\n });\r\n };\r\n\r\n handleSetFormParameters = (taskDataRowCols: ITaskDataRowCol[]) => {\r\n const stateChange = TaskFilterDrawerTaskTypeParameters.getFormParametersState(this.state, taskDataRowCols);\r\n if (!stateChange) return;\r\n this.setState(stateChange);\r\n };\r\n\r\n handleSetHeaderParameters = (taskDataRowCols: ITaskDataRowCol[]) => {\r\n const stateChange = TaskFilterDrawerTaskTypeParameters.getExtraHeaderParametersState(this.state, taskDataRowCols);\r\n if (!stateChange) return;\r\n this.setState(stateChange);\r\n };\r\n\r\n getSaveDataFromState = (_props: ITaskFilterDrawerProp, state: ITaskFilterDrawerState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"selectedTaskTypeFields\", state.selectedTaskTypeFields ? state.selectedTaskTypeFields : null);\r\n result.append(\"selectedTaskTypeHeaderFields\", state.selectedTaskTypeHeaderFields ? state.selectedTaskTypeHeaderFields : null);\r\n result.append(\"selectedUnitIds\", state.selectedUnitIds);\r\n result.append(\"selectedStateIds\", state.selectedStateIds);\r\n result.append(\"selectedPriorityIds\", state.selectedPriorityIds);\r\n result.append(\"selectedTaskTypeIds\", state.selectedTaskTypeIds);\r\n result.append(\"selectedHandlerUserCodes\", state.selectedHandlerUserCodes);\r\n return result;\r\n };\r\n\r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n static filterIsSet = (filterLists: ITaskPageFilterLists, filterState: ITaskPageFilterState): boolean => {\r\n return !(\r\n (filterState.selectedTaskTypeFields ?? \"\") === \"\" &&\r\n (filterState.selectedTaskTypeHeaderFields ?? \"\") === \"\" &&\r\n Base.equalStrArrays(filterState.selectedUnitIds, [filterLists.units[0].id]) &&\r\n Base.equalStrArrays(filterState.selectedStateIds, [filterLists.states[0].id]) &&\r\n Base.equalStrArrays(filterState.selectedPriorityIds, [filterLists.priorities[0].id]) &&\r\n Base.equalStrArrays(filterState.selectedTaskTypeIds, [filterLists.taskTypes[0].id]) &&\r\n Base.equalStrArrays(filterState.selectedHandlerUserCodes, [filterLists.handlers[0].id]));\r\n };\r\n\r\n handleSaveFilter = async (saveAs: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n if (!saveAs) {\r\n props.onOk(false, state);\r\n await this.props.onSaveFilter(false, null);\r\n } else {\r\n await this.props.onSaveFilter(true, () => {\r\n return props.onOk(false, state);\r\n });\r\n }\r\n };\r\n\r\n static getClearedParametersState = (props: ITaskPageFilterLists) => {\r\n const selectedTaskTypeIds = [props.taskTypes[0].id];\r\n return {\r\n selectedUnitIds: [props.units[0].id],\r\n selectedStateIds: [props.states[0].id],\r\n selectedPriorityIds: [props.priorities[0].id],\r\n selectedTaskTypeIds,\r\n selectedHandlerUserCodes: [props.handlers[0].id],\r\n ...TaskFilterDrawerTaskTypeParameters.getClearedParametersState(props.taskTypes)\r\n };\r\n };\r\n\r\n handleClear = () => {\r\n const props = this.props;\r\n this.setState(\r\n TaskFilterDrawer.getClearedParametersState(props)\r\n );\r\n };\r\n\r\n handleSave = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n props.onOk(true, state);\r\n };\r\n\r\n handleCancel = async (checkChanges: boolean) => {\r\n AppUtils.cancelEditDialog(checkChanges, this.getSaveDataFromState(this.props, this.state).hash, this.orgStateHash, this.handleSave, this.props.onCancel, Translations.YouHaveUnapprovedChangesDoYouWantApproveChanges);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n this.handleCancel(false)}\r\n >\r\n \r\n {!!props.onSaveFilter && !!props.onRemoveFilter &&\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n actions={\r\n \r\n }\r\n />\r\n \r\n );\r\n }\r\n}\r\n","import { Box, Checkbox, FormControlLabel, Grid, MenuItem, Select } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { GridRow } from \"../../Grid/GridRow\";\r\nimport { FormField } from \"../../FormField\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\n\r\ninterface IReportFilterPanelChartPropertiesProps {\r\n show: boolean;\r\n charts: IIdTitle[];\r\n chartId: string;\r\n panelSize: string;\r\n panelVisible: boolean;\r\n onTogglePanelVisible: () => void;\r\n onSetChartId: (id: string) => void;\r\n onSetPanelSize: (panelSize: string) => void;\r\n}\r\n\r\nexport const ReportFilterPanelChartProperties = (props: IReportFilterPanelChartPropertiesProps) => {\r\n const handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"selectedChartId\") {\r\n props.onSetChartId(value);\r\n } else if (name === \"panelSize\") {\r\n props.onSetPanelSize(value);\r\n }\r\n };\r\n\r\n if (!props.show) return null;\r\n return (\r\n <>\r\n \r\n \r\n } />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import React from \"react\";\r\nimport { ITaskDataRow, TaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { TaskDynamicFormContainer } from \"source/components/task/TaskDynamicFormContainer\";\r\nimport { IReportItem } from \"source/models/report/reportItem\";\r\nimport { ITaskDataRowCol } from \"ui/Scripts/source/models/task/taskDataRowCol\";\r\nimport { TaskDynamicForm } from \"source/components/task/TaskDynamicForm/TaskDynamicForm\";\r\n\r\ninterface IReportFilterPanelExtraParametersProps {\r\n report: IReportItem;\r\n extraParameters: ITaskDataRow;\r\n onChange: (extraParameters: ITaskDataRow) => void;\r\n}\r\n\r\nexport const ReportFilterPanelExtraParameters = (props: IReportFilterPanelExtraParametersProps) => {\r\n const handleRefreshParameters = (taskDataRowCols: ITaskDataRowCol[]) => {\r\n if (!props.extraParameters) return;\r\n const extraParameters = new TaskDataRow(props.extraParameters);\r\n extraParameters.cols = taskDataRowCols;\r\n props.onChange(extraParameters);\r\n };\r\n\r\n if (!props.extraParameters) return null;\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Grid, Switch, Typography } from \"@mui/material\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { FormField } from \"source/components/framework/FormField\";\r\n\r\nexport interface IReportFilterPanelShowInFrontPageProp {\r\n showInFrontPage: boolean;\r\n onChangeShowInFrontPage: (showInFrontPage: boolean) => void;\r\n}\r\n\r\nexport const ReportFilterPanelShowInFrontPage = (props: IReportFilterPanelShowInFrontPageProp) => {\r\n return (\r\n
    \r\n {Translations.FrontPage}\r\n
    \r\n \r\n \r\n \r\n props.onChangeShowInFrontPage(e.target.checked)}\r\n />\r\n \r\n \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n","// TaskReportFilterPanel - MODULE\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { ITaskDataRow, TaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { IReportItem } from \"../../../models/report/reportItem\";\r\nimport { ITaskPageFilterLists, ITaskPageFilterState } from \"../TaskPageDashboardChart\";\r\nimport { ITaskFilterDrawerState, TaskFilterDrawer } from \"../TaskFilterDrawer\";\r\nimport { FrontPagePanelSize } from \"ui/Scripts/source/models/enums\";\r\nimport { SaveDataObj } from \"source/framework/saveData\";\r\nimport { ITaskDataRowCol } from \"ui/Scripts/source/models/task/taskDataRowCol\";\r\nimport { TaskFilterDrawerTaskTypeParameters } from \"../TaskFilterDrawer/TaskFilterDrawerTaskTypeParameters\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { DrawerContent } from \"source/components/framework/Drawer/DrawerContent\";\r\nimport { ReportFilterPanelChartProperties } from \"source/components/framework/Report/ReportFilterPanelChartProperties\";\r\nimport { FilterSearchField } from \"source/components/framework/Filters/FilterSearchField\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { Grid } from \"@mui/material\";\r\nimport { FormField } from \"source/components/framework/FormField\";\r\nimport { CheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/CheckboxDropdown\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { TreeCheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/TreeCheckboxDropdown\";\r\nimport { FilterButtons } from \"source/components/framework/Filters/FilterButtons\";\r\nimport { ReportFilterPanelExtraParameters } from \"source/components/framework/Report/ReportFilterPanelExtraParameters\";\r\nimport { ReportFilterPanelShowInFrontPage } from \"source/components/framework/Report/ReportFilterPanelShowInFrontPage\";\r\nimport { ISaveReportFilters } from \"source/components/report/PageNavMenuItemReportList/SaveReportDialog\";\r\nimport { IdTitleDropdown } from \"ui/Scripts/source/components/framework/Dropdown/IdTitleDropdown\";\r\n\r\n//TaskReportFilterPanel\r\nexport interface ITaskReportFilterPanelProp extends ITaskPageFilterState, ITaskPageFilterLists {\r\n classes?: string;\r\n chartPanelPropertiesMode?: boolean;\r\n report: IReportItem;\r\n charts?: IIdTitle[];\r\n panelSize?: number;\r\n panelVisible?: boolean;\r\n selectedChartId?: string;\r\n\r\n canRemoveSharedReports: boolean;\r\n onSaveReport: (saveAs: boolean, onGetReportSaveFilters: () => ISaveReportFilters) => void;\r\n onRemoveReport: (filterId: string) => void;\r\n onOk: (filterState: ITaskPageFilterState, parameters: ITaskDataRow, showInFrontPage: boolean) => ISaveReportFilters;\r\n onOkChart?: (filterState: ITaskPageFilterState, parameters: ITaskDataRow, selectedChartId: string, panelSize: number, panelVisible: boolean) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface ITaskReportFilterPanelState extends ITaskFilterDrawerState {\r\n panelSize: string;\r\n panelVisible: boolean;\r\n selectedChartId: string;\r\n extraParameters: ITaskDataRow;\r\n showInFrontPage: boolean;\r\n}\r\n\r\nexport class TaskReportFilterPanel extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n getStateFromProps = (props: ITaskReportFilterPanelProp): ITaskReportFilterPanelState => {\r\n return {\r\n ...props,\r\n ...TaskFilterDrawerTaskTypeParameters.getStateChangeFromTaskType(TaskFilterDrawerTaskTypeParameters.getNewTaskType(props.taskTypes, props.selectedTaskTypeIds), props.selectedTaskTypeHeaderFields, props.selectedTaskTypeFields),\r\n panelSize: ((props.chartPanelPropertiesMode ? props.panelSize : null) ?? FrontPagePanelSize.OneXOne).toString(10),\r\n panelVisible: (props.chartPanelPropertiesMode ? props.panelVisible : null) ?? false,\r\n selectedChartId: props.chartPanelPropertiesMode ? props.selectedChartId : \"\",\r\n extraParameters: props.report.taskType && props.report.taskDataRow ? new TaskDataRow(props.report.taskDataRow) : null,\r\n showInFrontPage: !props.chartPanelPropertiesMode ? props.report.showInFrontPage : false,\r\n };\r\n };\r\n\r\n constructor(props: ITaskReportFilterPanelProp) {\r\n super(props);\r\n this.state = this.getStateFromProps(props);\r\n this.orgStateHash = this.getSaveDataFromState(props, this.state).hash;\r\n }\r\n\r\n componentDidUpdate(prevProps: ITaskReportFilterPanelProp, prevState: ITaskReportFilterPanelState): void {\r\n const props = this.props;\r\n if (!prevProps || prevProps.report.getHash() === props.report.getHash()) return;\r\n const state = this.getStateFromProps(props);\r\n this.setState(state);\r\n this.orgStateHash = this.getSaveDataFromState(props, state).hash;\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"selectedChartId\") {\r\n this.setState({ selectedChartId: value });\r\n } else if (name === \"panelSize\") {\r\n this.setState({ panelSize: value });\r\n }\r\n };\r\n\r\n handleTogglePanelVisible = () => {\r\n this.setState({ panelVisible: !this.state.panelVisible });\r\n };\r\n\r\n handleChangeUnitIds = (selectedUnitIds: string[]) => {\r\n this.setState({\r\n selectedUnitIds\r\n });\r\n };\r\n\r\n handleChangeStateIds = (selectedStateIds: string[]) => {\r\n this.setState({\r\n selectedStateIds\r\n });\r\n };\r\n\r\n handleChangePriorityIds = (selectedPriorityIds: string[]) => {\r\n this.setState({\r\n selectedPriorityIds\r\n });\r\n };\r\n\r\n handleChangeTaskTypeIds = (selectedTaskTypeIds: string[]) => {\r\n const props = this.props;\r\n this.setState({\r\n ...TaskFilterDrawerTaskTypeParameters.getChangedStateAdterChangeTaskTypeIds(props, selectedTaskTypeIds)\r\n });\r\n };\r\n\r\n handleChangeHandlerUserCodes = (selectedHandlerUserCodes: string[]) => {\r\n this.setState({\r\n selectedHandlerUserCodes\r\n });\r\n };\r\n\r\n handleSetFormParameters = (taskDataRowCols: ITaskDataRowCol[]) => {\r\n const stateChange = TaskFilterDrawerTaskTypeParameters.getFormParametersState(this.state, taskDataRowCols);\r\n if (!stateChange) return;\r\n this.setState(stateChange);\r\n };\r\n\r\n handleSetHeaderParameters = (taskDataRowCols: ITaskDataRowCol[]) => {\r\n const stateChange = TaskFilterDrawerTaskTypeParameters.getExtraHeaderParametersState(this.state, taskDataRowCols);\r\n if (!stateChange) return;\r\n this.setState(stateChange);\r\n };\r\n\r\n handleRefreshParameters = (taskDataRowCols: ITaskDataRowCol[]) => {\r\n const state = this.state;\r\n if (!state.extraParameters) return;\r\n const extraParameters = new TaskDataRow(state.extraParameters);\r\n extraParameters.cols = taskDataRowCols;\r\n this.setState({ extraParameters });\r\n };\r\n\r\n getSaveDataFromState = (props: ITaskReportFilterPanelProp, state: ITaskReportFilterPanelState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"panelSize\", state.panelSize);\r\n result.append(\"panelVisible\", state.panelVisible);\r\n result.append(\"selectedChartId\", state.selectedChartId ? state.selectedChartId : null);\r\n result.append(\"selectedTaskTypeFields\", state.selectedTaskTypeFields ? state.selectedTaskTypeFields : null);\r\n result.append(\"selectedTaskTypeHeaderFields\", state.selectedTaskTypeHeaderFields ? state.selectedTaskTypeHeaderFields : null);\r\n result.append(\"selectedUnitIds\", state.selectedUnitIds);\r\n result.append(\"selectedStateIds\", state.selectedStateIds);\r\n result.append(\"selectedPriorityIds\", state.selectedPriorityIds);\r\n result.append(\"selectedTaskTypeIds\", state.selectedTaskTypeIds);\r\n result.append(\"selectedHandlerUserCodes\", state.selectedHandlerUserCodes);\r\n if (props.report.taskType && props.report.taskDataRow) {\r\n result.append(\"parameters\", state.extraParameters.cols.map(i => state.extraParameters.getTaskDataRowColUiValue(i.field, props.report.taskType)));\r\n }\r\n result.append(\"showInFrontPage\", state.showInFrontPage);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n static filterIsSet = (ilterLists: ITaskPageFilterLists, filterState: ITaskPageFilterState, taskType: ITaskEditTypeItem, taskDataRow: ITaskDataRow): boolean => {\r\n return TaskFilterDrawer.filterIsSet(ilterLists, filterState) ||\r\n (taskDataRow && taskType ? !taskDataRow.hasDefaultValues(taskType) : false);\r\n };\r\n\r\n handleSaveReport = async (saveAs: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n if (!saveAs) {\r\n props.onOk(state, state.extraParameters, state.showInFrontPage);\r\n await this.props.onSaveReport(false, null);\r\n } else {\r\n await this.props.onSaveReport(true, () => {\r\n return props.onOk(state, state.extraParameters, state.showInFrontPage);\r\n });\r\n }\r\n };\r\n\r\n handleClear = () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const extraParameters = state.extraParameters ? new TaskDataRow(state.extraParameters) : null;\r\n if (extraParameters) {\r\n extraParameters.initializeToTaskType(props.report.taskType);\r\n }\r\n this.setState({\r\n ...TaskFilterDrawer.getClearedParametersState(props),\r\n selectedChartId: props.chartPanelPropertiesMode ? props.charts[0].id : \"\",\r\n extraParameters\r\n });\r\n };\r\n\r\n handleSave = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n if (props.onOk) {\r\n props.onOk(state, state.extraParameters, state.showInFrontPage);\r\n } else if (props.onOkChart) {\r\n props.onOkChart(state, state.extraParameters, state.selectedChartId, state.panelSize.toInteger(), state.panelVisible);\r\n }\r\n };\r\n\r\n handleCancel = async (checkChanges: boolean) => {\r\n AppUtils.cancelEditDialog(checkChanges, this.getSaveDataFromState(this.props, this.state).hash, this.orgStateHash, this.handleSave, this.props.onCancel, Translations.YouHaveUnapprovedChangesDoYouWantApproveChanges);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n {!!props.onSaveReport && !!props.onRemoveReport &&\r\n \r\n }\r\n this.setState({ selectedChartId })}\r\n onSetPanelSize={(panelSize: string) => this.setState({ panelSize })}\r\n />\r\n \r\n \r\n \r\n 0 ? state.selectedTaskTypeIds[0] : \"\"}\r\n items={props.taskTypes.filter(i => i.id !== Base.emptyGuid).map(i => { return { id: i.id, title: i.code }; })}\r\n onChange={(id) => this.handleChangeTaskTypeIds([id])}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ extraParameters })}\r\n />\r\n {(!props.chartPanelPropertiesMode && !!state.taskType) &&\r\n this.setState({ showInFrontPage })}\r\n />\r\n }\r\n \r\n }\r\n actions={\r\n \r\n }\r\n />\r\n );\r\n }\r\n}","import React, { ReactNode } from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { PageDrawer } from \"../PageDrawer\";\r\nimport { AppChartIcon } from \"../../Icon/AppChartIcon\";\r\n\r\ninterface IPageChartFilterDrawerProps {\r\n open: boolean;\r\n children: ReactNode;\r\n title: string;\r\n onClose: () => void;\r\n}\r\n\r\nexport const PageChartFilterDrawer = (props: IPageChartFilterDrawerProps) => (\r\n }\r\n onClose={props.onClose}\r\n >\r\n {props.children}\r\n \r\n);\r\n","import * as React from \"react\";\r\nimport { ITaskReportFilterPanelProp, TaskReportFilterPanel } from \"../TaskReportFilterPanel\";\r\nimport { PageChartFilterDrawer } from \"source/components/framework/Page/PageChartFilterDrawer\";\r\n\r\nexport interface ITaskChartFilterDrawerProps extends ITaskReportFilterPanelProp {\r\n open: boolean;\r\n}\r\n\r\nexport class TaskChartFilterDrawer extends React.Component {\r\n render() {\r\n const props = this.props;\r\n return (\r\n props.onCancel}\r\n >\r\n \r\n \r\n );\r\n }\r\n}\r\n","// WhistleBlowPageDashboardChart - MODULE\r\n// ***********************************************************************************************************************\r\n/// \r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IChartItem } from \"../../../models/chart/chartItem\";\r\nimport { ISavedChartPanel } from \"../../../models/chart/savedChartPanel\";\r\nimport { IReportParameterValue } from \"../../../models/report/reportParameterValue\";\r\nimport { DashboardChart } from \"source/components/framework/DashboardChart\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { IIdColorTitle } from \"ui/Scripts/source/models/common/idColorTitle\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { IReportChartData } from \"source/models/report/reportChartData\";\r\n\r\nexport interface ITaskPageFilterLists {\r\n units: IIdTitleNode[];\r\n states: IIdColorTitle[];\r\n priorities: IIdTitle[];\r\n taskTypes: ITaskEditTypeItem[];\r\n handlers: IIdTitle[];\r\n}\r\n\r\nexport interface ITaskPageFilterState {\r\n selectedUnitIds: string[];\r\n selectedStateIds: string[];\r\n selectedPriorityIds: string[];\r\n selectedTaskTypeIds: string[];\r\n selectedHandlerUserCodes: string[];\r\n selectedTaskTypeHeaderFields: string;\r\n selectedTaskTypeFields: string;\r\n}\r\n\r\nexport interface ITaskGeneralFilter {\r\n unitIds: string[];\r\n stateIds: string[];\r\n priorityIds: string[];\r\n taskTypeIds: string[];\r\n handlerUserCodes: string[];\r\n taskTypeHeaderFields: string;\r\n taskTypeFields: string;\r\n}\r\n\r\nexport interface ITaskGeneralFilterChange extends ITaskGeneralFilter {\r\n notChanged: boolean;\r\n}\r\n\r\n// TaskPageDashboardChart\r\nexport interface ITaskPageDashboardChartProp {\r\n chartPanel: ISavedChartPanel;\r\n chartItems: IChartItem[];\r\n onShowChartPanelPropertiesDialog: (panelId: string) => void;\r\n}\r\n\r\nexport interface ITaskPageDashboardChartState extends ITaskGeneralFilter {\r\n isLoading: boolean;\r\n chartData: IReportChartData;\r\n chartId: string;\r\n parameterValues: IReportParameterValue[]\r\n}\r\n\r\nexport class TaskPageDashboardChart extends React.Component {\r\n static getGeneralFilterFromState = (state: ITaskPageFilterState): ITaskGeneralFilter => {\r\n return {\r\n unitIds: state.selectedUnitIds ? state.selectedUnitIds.filter(i => i !== Base.emptyGuid) : [],\r\n stateIds: state.selectedStateIds ? state.selectedStateIds.filter(i => i !== Base.emptyGuid) : [],\r\n priorityIds: state.selectedPriorityIds ? state.selectedPriorityIds.filter(i => i !== Base.emptyGuid) : [],\r\n taskTypeIds: state.selectedTaskTypeIds ? state.selectedTaskTypeIds.filter(i => i !== Base.emptyGuid) : [],\r\n handlerUserCodes: state.selectedHandlerUserCodes ? state.selectedHandlerUserCodes.filter(i => !!i) : [],\r\n taskTypeHeaderFields: state.selectedTaskTypeHeaderFields ? state.selectedTaskTypeHeaderFields : null,\r\n taskTypeFields: state.selectedTaskTypeFields ? state.selectedTaskTypeFields : null\r\n };\r\n };\r\n\r\n static getStateFilterPropsFromGeneralFilter = (generalFilter: any): ITaskPageFilterState => {\r\n return {\r\n selectedUnitIds: generalFilter && generalFilter.unitIds && generalFilter.unitIds.length > 0 ? generalFilter.unitIds : [Base.emptyGuid],\r\n selectedStateIds: generalFilter && generalFilter.stateIds && generalFilter.stateIds.length > 0 ? generalFilter.stateIds : [Base.emptyGuid],\r\n selectedPriorityIds: generalFilter && generalFilter.priorityIds && generalFilter.priorityIds.length > 0 ? generalFilter.priorityIds : [Base.emptyGuid],\r\n selectedTaskTypeIds: generalFilter && generalFilter.taskTypeIds && generalFilter.taskTypeIds.length > 0 ? generalFilter.taskTypeIds : [Base.emptyGuid],\r\n selectedHandlerUserCodes: generalFilter && generalFilter.handlerUserCodes && generalFilter.handlerUserCodes.length > 0 ? generalFilter.handlerUserCodes : [\"\"],\r\n selectedTaskTypeHeaderFields: generalFilter && generalFilter.taskTypeHeaderFields ? generalFilter.taskTypeHeaderFields : \"\",\r\n selectedTaskTypeFields: generalFilter && generalFilter.taskTypeFields ? generalFilter.taskTypeFields : \"\",\r\n };\r\n };\r\n\r\n static getGeneralFilterNotChanged = (prevFilter: ITaskGeneralFilter, filter: ITaskGeneralFilter): boolean => {\r\n return Base.equalStrArrays(prevFilter.unitIds, filter.unitIds) &&\r\n Base.equalStrArrays(prevFilter.stateIds, filter.stateIds) &&\r\n Base.equalStrArrays(prevFilter.priorityIds, filter.priorityIds) &&\r\n Base.equalStrArrays(prevFilter.taskTypeIds, filter.taskTypeIds) &&\r\n Base.equalStrArrays(prevFilter.handlerUserCodes, filter.handlerUserCodes) &&\r\n (prevFilter.taskTypeHeaderFields ?? \"\") === (filter.taskTypeHeaderFields ?? \"\") &&\r\n (prevFilter.taskTypeFields ?? \"\") === (filter.taskTypeFields ?? \"\");\r\n };\r\n\r\n static getTaskPageDashboardChartStateNotChanged = (prevState: ITaskPageDashboardChartState, state: ITaskPageDashboardChartState): boolean => {\r\n return prevState.chartId === state.chartId &&\r\n TaskPageDashboardChart.getGeneralFilterNotChanged(prevState, state) &&\r\n JSON.stringify(prevState.parameterValues) === JSON.stringify(state.parameterValues);\r\n };\r\n\r\n static getTaskGeneralFilterChange(prevProps: ITaskPageFilterState, props: ITaskPageFilterState): ITaskGeneralFilterChange {\r\n const prevFilter = TaskPageDashboardChart.getGeneralFilterFromState(prevProps);\r\n const filter = TaskPageDashboardChart.getGeneralFilterFromState(props);\r\n return {\r\n ...filter,\r\n notChanged: TaskPageDashboardChart.getGeneralFilterNotChanged(prevFilter, filter)\r\n };\r\n }\r\n\r\n getStateChangeFromProps = (props: ITaskPageDashboardChartProp): any => {\r\n const chartItem = props.chartPanel && props.chartItems\r\n ? props.chartItems.find(i => i.reportName === props.chartPanel.reportId)\r\n : null;\r\n const reportFilterProps = TaskPageDashboardChart.getStateFilterPropsFromGeneralFilter(props.chartPanel?.generalFilter);\r\n const result = {\r\n unitIds: reportFilterProps.selectedUnitIds ? reportFilterProps.selectedUnitIds.filter(i => i !== Base.emptyGuid) : [],\r\n stateIds: reportFilterProps.selectedStateIds ? reportFilterProps.selectedStateIds.filter(i => i !== Base.emptyGuid) : [],\r\n priorityIds: reportFilterProps.selectedPriorityIds ? reportFilterProps.selectedPriorityIds.filter(i => i !== Base.emptyGuid) : [],\r\n taskTypeIds: reportFilterProps.selectedTaskTypeIds ? reportFilterProps.selectedTaskTypeIds.filter(i => i !== Base.emptyGuid) : [],\r\n handlerUserCodes: reportFilterProps.selectedHandlerUserCodes ? reportFilterProps.selectedHandlerUserCodes.filter(i => !!i) : [],\r\n taskTypeHeaderFields: reportFilterProps.selectedTaskTypeHeaderFields ?? \"\",\r\n taskTypeFields: reportFilterProps.selectedTaskTypeFields ?? \"\",\r\n chartId: props.chartPanel?.chartId ?? \"\",\r\n parameterValues: props.chartPanel && chartItem ? props.chartPanel.getReportParameterValues(chartItem) : []\r\n };\r\n return result;\r\n };\r\n\r\n constructor(props: ITaskPageDashboardChartProp) {\r\n super(props);\r\n this.state = {\r\n ...this.getStateChangeFromProps(props),\r\n chart: \"\",\r\n isLoading: true\r\n };\r\n }\r\n\r\n createChart = async () => {\r\n //const props = this.props;\r\n //const state = this.state;\r\n //if (!props.chartPanel || !props.chartItems || state.parameterValues.length < 1) return;\r\n // this.setState({ isLoading: true });\r\n // const chart = await AppUtils.callService(() => taskService.getChart(props.chartPanel.reportId, props.chartPanel.chartId,\r\n // state.startDate, state.endDate, state.dynamicTime, state.unitIds, state.categoryIds, state.handlerUserCodes, state.state, state.severity, state.resolution,\r\n // state.source, state.anonymity, state.parameterValues), false, true, () => { this.setState({ isLoading: false }); });\r\n // this.setState({\r\n // chart\r\n // });\r\n };\r\n\r\n componentDidUpdate(prevProps: ITaskPageDashboardChartProp) {\r\n const state = this.state;\r\n const newState = this.getStateChangeFromProps(this.props);\r\n if (TaskPageDashboardChart.getTaskPageDashboardChartStateNotChanged(state, newState)) return;\r\n this.setState({\r\n ...newState\r\n }, this.createChart);\r\n }\r\n\r\n componentDidMount(): void {\r\n this.createChart();\r\n }\r\n \r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const chartPanel = props.chartPanel;\r\n if (!chartPanel) return null;\r\n return (\r\n \r\n\r\n );\r\n }\r\n}","import SyncOutlined from \"@mui/icons-material/SyncOutlined\";\r\nimport React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ListStateIcon } from \"../ListStateIcon/ListStateIcon\";\r\n\r\ninterface IListStateIconFreshProps {\r\n date: number\r\n}\r\n\r\nexport const ListStateIconFresh = (props: IListStateIconFreshProps) => {\r\n if ((Date.now() - props.date) > Base.oneHourInMs) return null;\r\n return (\r\n \r\n );\r\n};\r\n","import NewReleasesIcon from \"@mui/icons-material/NewReleases\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ListStateIcon } from \"../ListStateIcon\";\r\n\r\ninterface IListStateIconUnreadProps {\r\n unread: boolean\r\n}\r\n\r\nexport const ListStateIconUnread = (props: IListStateIconUnreadProps) => {\r\n if (!props.unread) return null;\r\n return (\r\n \r\n );\r\n};\r\n","import NotificationsNoneIcon from \"@mui/icons-material/NotificationsNone\";\r\nimport React from \"react\";\r\nimport { ListStateIcon } from \"../ListStateIcon/ListStateIcon\";\r\n\r\ninterface IListStateIconNotificationProps {\r\n noMargin?: boolean;\r\n tooltip: string;\r\n}\r\n\r\nexport const ListStateIconNotification = (props: IListStateIconNotificationProps) => {\r\n return (\r\n \r\n );\r\n};\r\n","import { Stack } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { ITaskListItem } from \"source/models/task\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ListStateIconFresh } from \"source/components/framework/List/ListStateIconFresh\";\r\nimport { ListStateIconLocked } from \"source/components/framework/List/ListStateIconLocked\";\r\nimport { TaskStateListChip } from \"../TaskStateListChip\";\r\nimport { ListStateIconUnread } from \"source/components/framework/List/ListStateIconUnread\";\r\nimport { ListStateIconNotification } from \"source/components/framework/List/ListStateIconNotification\";\r\nimport { ListStateIconPrivate } from \"source/components/framework/List/ListStateIconPrivate\";\r\n\r\ninterface ITaskListStateColProps {\r\n item: ITaskListItem\r\n}\r\n\r\nexport const TaskListStateCol = (props: ITaskListStateColProps) => (\r\n \r\n \r\n \r\n \r\n {!props.item.unitCode &&\r\n \r\n }\r\n {props.item.calendarTaskCount > 0 &&\r\n \r\n }\r\n \r\n \r\n);\r\n","import { Box, Chip, Tooltip, Typography } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { IModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\n\r\ninterface ITaskListHandlersColProps {\r\n handlers: IModifyUser[];\r\n}\r\n\r\nexport const TaskListHandlersCol = (props: ITaskListHandlersColProps) => {\r\n const otherHandlers = props.handlers.length > 1 ? props.handlers.slice(1) : [];\r\n\r\n return (\r\n i.name).join(\", \")}>\r\n \r\n {props.handlers.length > 0 &&\r\n {props.handlers[0].name}\r\n }\r\n {otherHandlers.length > 0 &&\r\n \r\n }\r\n \r\n \r\n );\r\n};\r\n","import { ToggleButton, ToggleButtonGroup } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\nexport interface IToggleButtonOption {\r\n id: string;\r\n title: string;\r\n}\r\n\r\ninterface IToggleButtonsProps {\r\n value: string;\r\n options: IToggleButtonOption[];\r\n onChange: (id: string) => void;\r\n}\r\n\r\nexport const ToggleButtons = (props: IToggleButtonsProps) => {\r\n const handleChange = (_: React.MouseEvent, value: any) => {\r\n if (value === null) return;\r\n props.onChange(value);\r\n };\r\n\r\n return (\r\n \r\n {props.options.map(i =>\r\n {i.title}\r\n )}\r\n \r\n );\r\n};\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Box, Grid, TextField } from \"@mui/material\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { FormField } from \"source/components/framework/FormField\";\r\nimport * as taskService from \"../../../../models/services/taskService\";\r\nimport { ISessionState } from \"../../../../models/session/sessionState\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ITaskEditTypeItem, TaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { Dropdown } from \"ui/Scripts/source/components/framework/Dropdown/Dropdown\";\r\nimport { TaskStateListChip } from \"../../TaskStateListChip\";\r\nimport { IIdTitleNode, IdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { ITaskEditItemTaskState } from \"source/models/task/taskEditItemTaskState\";\r\nimport { ITaskEditItemTaskPriority } from \"source/models/task/taskEditItemTaskPriority\";\r\nimport { ITaskDataRowCol } from \"ui/Scripts/source/models/task/taskDataRowCol\";\r\nimport { TaskDynamicFormContainer } from \"../../TaskDynamicFormContainer\";\r\nimport { TaskDynamicForm } from \"../../TaskDynamicForm/TaskDynamicForm\";\r\nimport { TreeCheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/TreeCheckboxDropdown\";\r\nimport { UserBlocks } from \"source/components/user/UserBlocks/UserBlocks\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { UserListItems } from \"source/models/user/userListItems\";\r\nimport { ToggleButtons } from \"source/components/framework/ToggleButtons\";\r\n\r\ninterface ITaskEditDialogGeneraViewProps {\r\n sessionState: ISessionState;\r\n isNew: boolean;\r\n isLocked: boolean;\r\n isLockedToOtherUser: boolean;\r\n companyId: string;\r\n taskId: string;\r\n code: string;\r\n name: string;\r\n taskTypeId: string;\r\n taskStateId: string;\r\n taskPriorityId: string;\r\n unitId: string;\r\n handlers: IModifyUser[];\r\n taskType: ITaskEditTypeItem;\r\n taskHeaderDataCols: ITaskDataRowCol[];\r\n canHandleTask: boolean;\r\n canChangeTaskState: boolean;\r\n taskTypes: ITaskEditTypeItem[];\r\n taskStates: ITaskEditItemTaskState[];\r\n taskPriorities: ITaskEditItemTaskPriority[];\r\n units: IIdTitleNode[];\r\n onChangeName: (name: string) => void;\r\n onChangeHandlers: (handlers: IModifyUser[]) => void;\r\n onChangeUnit: (unitId: string) => void;\r\n onChangeTaskType: (taskTypeId: string) => void;\r\n onChangeTaskState: (taskStateId: string) => void;\r\n onChangeTaskPriority: (taskPriorityId: string) => void;\r\n onChangeTaskHeaderDataCols: (taskHeaderDataCols: ITaskDataRowCol[]) => void;\r\n}\r\n\r\nexport const TaskEditDialogGeneraView = (props: ITaskEditDialogGeneraViewProps) => {\r\n const [taskTypes, setTaskTypes] = useState([]);\r\n const [taskState, setTaskState] = useState(null);\r\n const [taskPriority, setTaskPriority] = useState(null);\r\n const [unit, setUnit] = useState(null);\r\n\r\n useEffect(() => {\r\n setTaskTypes(TaskEditTypeItem.getTaskTypesByVisibility(props.taskTypes, !!props.unitId));\r\n setTaskState(props.taskStates.find(i => i.id === props.taskStateId) ?? props.taskStates[0]);\r\n setTaskPriority(props.taskPriorities.find(i => i.id === props.taskPriorityId) ?? props.taskPriorities[0]);\r\n setUnit(props.unitId ? IdTitleNode.getById(props.units, props.unitId) : null);\r\n }, [props.taskStateId, props.taskPriorityId, props.unitId]);\r\n\r\n // #region Handlers\r\n const addHandlers = async (users: IModifyUser[], showSuccessMessage: boolean): Promise => {\r\n if (!users || users.length < 1) return null;\r\n if (!props.isNew) {\r\n const result = await AppUtils.callService(() => taskService.taskEditAddHandlers(props.companyId, props.taskId, users.map(i => i.code)), showSuccessMessage);\r\n if (!result) return null;\r\n }\r\n props.onChangeHandlers(ModifyUser.sortModifyUsers(props.handlers.concat(users)));\r\n return new ApiSuccess();\r\n };\r\n\r\n const handleAddHandlers = async (users: IModifyUser[]): Promise => {\r\n return addHandlers(users, true);\r\n };\r\n\r\n const handleRemoveHandlers = async (userCodes: string[]): Promise => {\r\n if (!userCodes || userCodes.length < 1) return null;\r\n if (!props.isNew) {\r\n const result = await AppUtils.callService(() => taskService.taskEditRemoveHandlers(props.companyId, props.taskId, userCodes));\r\n if (!result) return null;\r\n }\r\n props.onChangeHandlers(ModifyUser.sortModifyUsers(props.handlers.filter(i => userCodes.indexOf(i.code) < 0)));\r\n return new ApiSuccess();\r\n };\r\n \r\n const handleGetHandlersSelectListItems = (companyId: string, pageSize: number, page: number, filter: string,\r\n ignoreUserIds: string[], ignoreUserCodes: string[], activityState: number, ignoreRecordUserConnected: boolean,\r\n doNotIgnoreRecordUserConnectedUserCode: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return taskService.getHandlersSelectUserListItems(props.companyId, props.taskId, props.unitId, pageSize, page, filter,\r\n ignoreUserIds, ignoreUserCodes, activityState, ignoreRecordUserConnected, doNotIgnoreRecordUserConnectedUserCode,\r\n sortColumn, sortOrderIsAsc);\r\n };\r\n // #endregion Handlers\r\n\r\n const handleChangePublic = (isPublic: boolean) => {\r\n const newTaskTypes = TaskEditTypeItem.getTaskTypesByVisibility(props.taskTypes, isPublic);\r\n const taskType = newTaskTypes.find(i => i.id === props.taskTypeId);\r\n if (!taskType) {\r\n props.onChangeTaskType(newTaskTypes[0].id);\r\n }\r\n if (!isPublic) {\r\n props.onChangeUnit(\"\");\r\n } else {\r\n const newUnit = IdTitleNode.getFirstActiveNode(props.units);\r\n if (newUnit) {\r\n props.onChangeUnit(newUnit.id);\r\n }\r\n }\r\n setTaskTypes(newTaskTypes);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {!props.isNew &&\r\n \r\n }\r\n {props.isNew &&\r\n {\r\n return {\r\n title: item.code,\r\n selected: props.taskTypeId === item.id,\r\n onClick: () => props.onChangeTaskType(item.id)\r\n };\r\n })}\r\n />\r\n }\r\n \r\n \r\n \r\n \r\n }\r\n selectMode={true}\r\n disabled={props.isLockedToOtherUser || (!props.canHandleTask && !props.canChangeTaskState)}\r\n actions={props.taskStates.map(item => {\r\n return {\r\n title: ,\r\n selected: props.taskStateId === item.id,\r\n onClick: () => props.onChangeTaskState(item.id)\r\n };\r\n })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n return {\r\n title: item.code,\r\n selected: props.taskPriorityId === item.id,\r\n onClick: () => props.onChangeTaskPriority(item.id)\r\n };\r\n })}\r\n />\r\n \r\n \r\n \r\n {!unit && !props.isNew &&\r\n \r\n \r\n \r\n }\r\n {!!unit &&\r\n \r\n props.onChangeUnit(unitIds[0])}\r\n />\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n props.onChangeName(event.target.value)} size=\"small\" fullWidth />\r\n \r\n \r\n \r\n \r\n \r\n {props.isNew &&\r\n \r\n handleChangePublic(value === \"1\")}\r\n />\r\n \r\n }\r\n {!!unit &&\r\n \r\n }\r\n \r\n \r\n {props.taskHeaderDataCols.length > 0 &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n );\r\n};\r\n","import { Alert, Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult, DatabaseRecordType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as attachmentService from \"../../../models/services/attachmentService\";\r\nimport * as taskService from \"../../../models/services/taskService\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { TaskDynamicFormContainer } from \"../TaskDynamicFormContainer\";\r\nimport { TaskDynamicForm } from \"../TaskDynamicForm/TaskDynamicForm\";\r\nimport { AttachmentList } from \"source/components/attachments/AttachmentList/AttachmentList\";\r\nimport { ITaskDataRowCol } from \"ui/Scripts/source/models/task/taskDataRowCol\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { FileAttachment, IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { ITaskDataRow, SaveTaskDataRow, TaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport downloadjs from \"downloadjs\";\r\nimport { SaveAttachmentBase64 } from \"ui/Scripts/source/models/common/saveAttachmentBase64\";\r\nimport { EditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { LockedRecord } from \"ui/Scripts/source/models/common/lockedRecord\";\r\nimport { recordLockManager } from \"source/models/services/recordLockService\";\r\nimport { StoreUtils } from \"source/models/store/storeUtils\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { DialogButtons } from \"source/components/framework/Dialog/DialogButtons\";\r\nimport { ITaskTypeCol, TaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\n\r\nexport interface ITaskDataRowDialogProp {\r\n sessionState: ISessionState;\r\n isReadOnly: boolean;\r\n companyId: string;\r\n taskId: string;\r\n id: string;\r\n taskType: ITaskEditTypeItem;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onOk: () => void;\r\n onCancel: () => void;\r\n onRemove: (id: string) => Promise;\r\n onPrint: () => void;\r\n onRefreshList: () => Promise;\r\n}\r\n\r\nexport interface ITaskDataRowDialogState {\r\n item: ITaskDataRow;\r\n cols: ITaskDataRowCol[];\r\n attachments: IFileAttachment[];\r\n lockedUser: IModifyUser;\r\n modifyUser: IModifyUser;\r\n isLockedToOtherUser: boolean;\r\n}\r\n\r\nexport class TaskDataRowDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: ITaskDataRowDialogProp) {\r\n super(props);\r\n this.state = {\r\n item: null,\r\n cols: [],\r\n attachments: [],\r\n lockedUser: null,\r\n modifyUser: null,\r\n isLockedToOtherUser: false,\r\n };\r\n }\r\n\r\n loadData = async () => {\r\n const props = this.props;\r\n //Unlock current task\r\n if (this.state.item && LockedRecord.isLockedToUser(this.state.lockedUser, props.sessionState.code)) {\r\n await recordLockManager.unlock(props.companyId, this.state.item.id, DatabaseRecordType.TaskDataRow);\r\n }\r\n //Load and lock task\r\n const isNew = props.id === Base.emptyGuid;\r\n let taskDataRow: ITaskDataRow = null;\r\n if (!isNew) {\r\n const result = await AppUtils.callService(() => taskService.getTaskDataRowEdit(props.companyId, props.taskId, props.id), false);\r\n if (!result) return;\r\n taskDataRow = result.item;\r\n taskDataRow.initializeCols(props.taskType);\r\n } else {\r\n const result = await AppUtils.callService(() => taskService.getTaskDataRowDefaultValues(props.companyId, props.taskId), false);\r\n if (!result) return;\r\n taskDataRow = new TaskDataRow();\r\n taskDataRow.id = Base.getGuid();\r\n taskDataRow.initializeToTaskType(props.taskType, result.cols);\r\n }\r\n const state = {\r\n ...this.state,\r\n item: taskDataRow,\r\n cols: taskDataRow.cols,\r\n attachments: taskDataRow.attachments,\r\n lockedUser: taskDataRow.lockedUserCode\r\n ? ModifyUser.createModifyUser(taskDataRow.lockedUserCode, taskDataRow.lockedUserName, taskDataRow.lockedDate, taskDataRow.lockedUserPicture)\r\n : null,\r\n modifyUser: ModifyUser.createModifyUser(taskDataRow.modifyUserCode, taskDataRow.modifyUserName, taskDataRow.modifyDate, taskDataRow.modifyUserPicture),\r\n isLockedToOtherUser: taskDataRow.isLockedToOtherUser(props.sessionState.code),\r\n };\r\n this.setState(state);\r\n const saveData = this.getSaveDataFromState(this.props, state);\r\n this.orgStateHash = saveData.hash;\r\n //Add locked record to idb\r\n if (!isNew && LockedRecord.isLockedToUser(state.lockedUser, props.sessionState.code)) {\r\n recordLockManager.addLock(LockedRecord.createLockedRecord(props.companyId, state.item.id, props.sessionState.code, DatabaseRecordType.TaskDataRow));\r\n }\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadData();\r\n }\r\n\r\n async componentWillUnmount(): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.item) return;\r\n if (!state.item.isNew() && LockedRecord.isLockedToUser(state.lockedUser, props.sessionState.code)) {\r\n await recordLockManager.unlock(props.companyId, state.item.id, DatabaseRecordType.TaskDataRow);\r\n }\r\n }\r\n\r\n async componentDidUpdate(prevProps: ITaskDataRowDialogProp, prevState: ITaskDataRowDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if (prevProps.companyId === props.companyId && prevProps.id === props.id) return;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb()) return;\r\n props.onRefreshList();\r\n }\r\n this.loadData();\r\n }\r\n\r\n // #region Attachments\r\n handleAttachmentDownload = async (id: string) => {\r\n if (!id) return;\r\n const attachment = this.state.attachments.find(i => i.id === id);\r\n if (!attachment) return;\r\n if (attachment.file) {\r\n downloadjs(attachment.file, attachment.name);\r\n return;\r\n }\r\n if (attachment.isNew()) return;\r\n const fileName = await AppUtils.callService(() => attachmentService.getAttachment(id));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.AttachmentParameterDownloaded, fileName));\r\n };\r\n\r\n getRemoveAttachmentsSaveData = (attachmentIds: string[]): SaveDataObj => {\r\n const props = this.props;\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.taskId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"ids\", attachmentIds);\r\n return result;\r\n };\r\n\r\n handleAttachmentRemove = async (id: string) => {\r\n const state = this.state;\r\n if (!id) return;\r\n const saveData = this.getRemoveAttachmentsSaveData([id]);\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveAttachmentParameter, state.attachments.find(x => x.id === id)?.name), false) === ConfirmationDialogResult.No) return;\r\n const result = AppUtils.callService(() => taskService.taskEditRemoveAttachments(saveData.obj));\r\n if (!result) return;\r\n this.setState({ attachments: state.attachments.filter(i => i.id !== id) });\r\n };\r\n\r\n getAddAttachmentsSaveData = async (attachments: IFileAttachment[]): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.taskId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"subOwnerId\", state.item.id);\r\n result.append(\"attachments\", await SaveAttachmentBase64.fromFileAttachments(attachments));\r\n return result;\r\n };\r\n \r\n handleAttachmentsAdd = async (fileList: FileList) => {\r\n const state = this.state;\r\n const attachments = await FileAttachment.addFileListToFileAttachments([], fileList, 0);\r\n if (attachments.length < 1) return;\r\n const saveData = await this.getAddAttachmentsSaveData(attachments);\r\n const result = await AppUtils.callService(() => taskService.taskEditAddAttachments(saveData.obj));\r\n if (!result) return;\r\n EditItem.setItemIdsFromIds(attachments, result.ids);\r\n this.setState({ attachments: state.attachments.concat(attachments) });\r\n };\r\n // #endregion Attachments\r\n\r\n // #region Locking\r\n handleUnlockAndLockToMe = async () => {\r\n const props = this.props;\r\n if (await AppUtils.showConfirmationDialog(Translations.DoYouReallyWantToUnlockTaskDataRow, false) !== ConfirmationDialogResult.Yes) {\r\n return;\r\n }\r\n const result = await recordLockManager.lock(props.companyId, props.id, props.sessionState.code, DatabaseRecordType.TaskDataRow);\r\n if (!result || result.items.length < 1) return;\r\n this.setState({\r\n lockedUser: StoreUtils.getNowModifyUser(result.items[0].lockedDate),\r\n isLockedToOtherUser: false\r\n });\r\n };\r\n // #endregion Locking\r\n \r\n getSaveDataFromState = (props: ITaskDataRowDialogProp, state: ITaskDataRowDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.item.id);\r\n result.append(\"taskId\", props.taskId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"taskDataRow\", JSON.stringify(SaveTaskDataRow.createSaveTaskDataRow(props.taskType.formCols, state.item, state.cols)));\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n TaskTypeCol.validateInputOfRequiredTaskTypeCols(props.taskType.formCols, state.cols, null,\r\n (typeCol: ITaskTypeCol) => {\r\n AppUtils.showErrorMessage(String.format(Translations.FieldParameterValueMustBeDefined, typeCol.title));\r\n return resolve(false);\r\n });\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n return !!(await AppUtils.callService(() => taskService.saveTaskDataRowEdit(saveData.obj)));\r\n };\r\n\r\n handleSave = async () => {\r\n if (!await this.saveToDb()) return;\r\n this.props.onOk();\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.item.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(Translations.DoYouReallyWantToRemoveTaskDataRow, false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await props.onRemove(state.item.id);\r\n if (!result) return;\r\n props.onOk();\r\n }\r\n };\r\n\r\n handlePrint = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.item.isNew()) return;\r\n props.onPrint();\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut(this.getSaveDataFromState(props, this.state).hash, this.orgStateHash, this.saveToDb, props.onRefreshList);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.item) return null;\r\n const isNew = state.item.isNew();\r\n const isReadOnly = props.isReadOnly || state.isLockedToOtherUser;\r\n return (\r\n \r\n \r\n this.setState({ cols })}\r\n />\r\n \r\n {!isNew && (!isReadOnly || state.attachments.length > 0) &&\r\n {Translations.Attachments}}\r\n attachments={state.attachments}\r\n margin={\"0.5rem 0 0 0\"}\r\n onRemoveAttachment={this.handleAttachmentRemove}\r\n onDownloadAttachment={this.handleAttachmentDownload}\r\n onAddAttachments={this.handleAttachmentsAdd}\r\n />\r\n }\r\n {isNew &&\r\n {Translations.TaskDataRowMustBeSavedBeforeAttachmentsCanBeAdded}\r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport * as taskService from \"../../../models/services/taskService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { ITaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ActionContainer } from \"source/components/framework/ActionContainer\";\r\nimport { ListIconButtonsItem } from \"source/components/framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { DialogListContainer } from \"source/components/framework/Dialog/DialogListContainer\";\r\nimport { TaskDataRowDialog } from \"../TaskDataRowDialog/TaskDataRowDialog\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { infiniteListDetailsViewPageSize, infiniteListPageSize } from \"source/models/common/webConsts\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { Stack } from \"@mui/material\";\r\nimport { ListStateIconLocked } from \"source/components/framework/List/ListStateIconLocked\";\r\nimport { ListStateIconAttachment } from \"source/components/framework/List/ListStateIconAttachment\";\r\nimport { ConfirmationDialogResult, TaskTypeClassHidden } from \"ui/Scripts/source/models/enums\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\nexport interface ITaskDataRowListProp {\r\n sessionState: ISessionState;\r\n isReadOnly: boolean;\r\n companyId: string;\r\n taskId: string;\r\n dataId: string;\r\n taskType: ITaskEditTypeItem;\r\n filterFields?: string;\r\n detailsViewMode?: boolean;\r\n height?: string;\r\n onSetToolButtons?: (buttons: React.ReactNode) => void;\r\n}\r\n\r\nexport interface ITaskDataRowListState {\r\n items: ITaskDataRow[];\r\n hasMore: boolean;\r\n page: number;\r\n intialized: boolean;\r\n selectedId: string;\r\n iconsCol: number;\r\n showTaskDataRowDialog: boolean;\r\n editDialogId: string;\r\n editDialogHasPrevious: boolean;\r\n editDialogHasNext: boolean;\r\n}\r\n\r\nexport const TaskDataRowList = (props: ITaskDataRowListProp) => {\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [state, setState] = useState({\r\n items: [],\r\n hasMore: false,\r\n page: 1,\r\n intialized: false,\r\n selectedId: \"\",\r\n iconsCol: 0,\r\n showTaskDataRowDialog: false,\r\n editDialogId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false\r\n });\r\n\r\n const searchItems = async (page: number, resetItems: boolean, refreshList: boolean, moveNext: boolean = false, setEditDialogData: boolean = true) => {\r\n const isNewTask = props.taskId === Base.emptyGuid;\r\n if (isNewTask) {\r\n setState(old => ({\r\n ...old,\r\n intialized: true\r\n }));\r\n return;\r\n }\r\n const pageSize = !props.detailsViewMode ? infiniteListPageSize : infiniteListDetailsViewPageSize;\r\n setIsLoading(true);\r\n const result = await AppUtils.callService(() => taskService.getTaskDataRowListItems(props.companyId, props.taskId, !refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1, props.filterFields), false, true, () => setIsLoading(false));\r\n if (!result) return;\r\n const items = List.getListItems(state.items, state.selectedId, [], result.items, resetItems, refreshList);\r\n for (const item of items.items) {\r\n item.initializeCols(props.taskType);\r\n }\r\n let selectedId = items.selectedId;\r\n let index = items.items.findIndex(i => i.id === selectedId);\r\n if (moveNext && index < items.items.length - 1) {\r\n index = index + 1;\r\n selectedId = items.items[index].id;\r\n }\r\n setState(old => ({\r\n ...old,\r\n intialized: true,\r\n items: items.items,\r\n hasMore: result.hasMore,\r\n page: !refreshList ? result.page : page,\r\n selectedId,\r\n editDialogId: setEditDialogData ? (moveNext && selectedId ? selectedId : \"\") : state.editDialogId,\r\n editDialogHasPrevious: setEditDialogData ? index > 0 : state.editDialogHasPrevious,\r\n editDialogHasNext: setEditDialogData ? (index < items.items.length - 1 || result.hasMore) : state.editDialogHasNext\r\n }));\r\n };\r\n\r\n useEffect(() => {\r\n searchItems(1, true, false);\r\n }, [props.taskId, props.dataId, props.filterFields]);\r\n\r\n useEffect(() => {\r\n if (!props.taskType?.id) return;\r\n let iconsCol = 0;\r\n for (let i = 0; i < props.taskType.lineCols.length; i++) {\r\n if (props.taskType.lineCols[i].class && props.taskType.lineCols[i].class.indexOf(TaskTypeClassHidden.Web) > -1) continue;\r\n iconsCol = i;\r\n }\r\n setState(old => ({\r\n ...old,\r\n items: [],\r\n iconsCol,\r\n }));\r\n }, [props.taskType?.id ?? \"\"]);\r\n\r\n const createListIconButtons = () => {\r\n return ();\r\n };\r\n\r\n useEffect(() => {\r\n if (props.onSetToolButtons) {\r\n props.onSetToolButtons(createListIconButtons());\r\n }\r\n }, [props.isReadOnly, props.companyId, props.taskId, state.selectedId]);\r\n\r\n const refreshList = async (setDialogData: boolean = true) => {\r\n await searchItems(state.page, false, true, false, setDialogData);\r\n };\r\n\r\n const remove = async (id: string): Promise => {\r\n if (!id) return;\r\n // Call server\r\n const result = await AppUtils.callService(() => taskService.removeTaskDataRow(props.companyId, props.taskId, id));\r\n if (!result) return null;\r\n refreshList();\r\n return result;\r\n };\r\n\r\n const handleRemove = async (e) => {\r\n e.stopPropagation();\r\n if (await AppUtils.showConfirmationDialog(Translations.DoYouReallyWantToRemoveTaskDataRow, false) === ConfirmationDialogResult.Yes) {\r\n remove(state.selectedId);\r\n }\r\n };\r\n\r\n const handlePrint = async (e) => {\r\n if (e) {\r\n e.stopPropagation();\r\n }\r\n if (!state.selectedId) return;\r\n const fileName = await AppUtils.callService(() => taskService.getTaskDataRowPrint(props.companyId, props.taskId, state.selectedId));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.PrintParameterDownloaded, fileName));\r\n };\r\n\r\n // #region Edit dialog\r\n const showEditDialog = (id: string) => {\r\n const isNew = id === Base.emptyGuid;\r\n const index = isNew ? 0 : state.items.findIndex(i => i.id === id);\r\n if (index < 0) return;\r\n setState(old => ({\r\n ...old,\r\n showTaskDataRowDialog: true,\r\n selectedId: id,\r\n editDialogId: id,\r\n editDialogHasPrevious: index > 0,\r\n editDialogHasNext: isNew ? false : index < state.items.length - 1 || state.hasMore\r\n }));\r\n };\r\n\r\n const setEditDialogItemByIndex = (index: number) => {\r\n if (index < 0) return;\r\n if (index >= state.items.length) {\r\n if (!state.hasMore) return;\r\n searchItems(state.page + 1, false, false, true);\r\n } else {\r\n setState(old => ({\r\n ...old,\r\n selectedId: state.items[index].id,\r\n editDialogId: state.items[index].id,\r\n editDialogHasPrevious: index > 0,\r\n editDialogHasNext: index < state.items.length - 1 || state.hasMore\r\n }));\r\n }\r\n };\r\n\r\n const handleSetSelectedIds = (selectedId: string, _checkedIds: string[]) => {\r\n setState(old => ({\r\n ...old,\r\n selectedId\r\n }));\r\n };\r\n\r\n const handleEditDialogOk = () => {\r\n setState(old => ({\r\n ...old,\r\n showTaskDataRowDialog: false\r\n }));\r\n refreshList(false);\r\n };\r\n\r\n const handleEditDialogCancel = () => {\r\n setState(old => ({\r\n ...old,\r\n showTaskDataRowDialog: false\r\n }));\r\n };\r\n // #endregion Edit dialog \r\n\r\n const handleAdd = (e) => {\r\n e.stopPropagation();\r\n showEditDialog(Base.emptyGuid);\r\n };\r\n\r\n const handleEdit = (e) => {\r\n e.stopPropagation();\r\n showEditDialog(state.selectedId);\r\n };\r\n\r\n const handleOpenLine = (id: string) => {\r\n if (!id) return;\r\n setState(old => ({\r\n ...old,\r\n selectedId: id\r\n }));\r\n showEditDialog(id);\r\n };\r\n\r\n return (\r\n \r\n {!props.onSetToolButtons &&\r\n \r\n }\r\n
    \r\n {\r\n return { styleClass: i.class, column: i.field, content: i.title };\r\n })\r\n }}\r\n lines={state.items.map((taskDataRow) => {\r\n return {\r\n columns: props.taskType.lineCols.map((i, index) => {\r\n const text = taskDataRow.getTaskDataRowColListUiValue(i.field, props.taskType);\r\n const isLockedToOtherUser = taskDataRow.isLockedToOtherUser(props.sessionState.code);\r\n return {\r\n id: i.field,\r\n styleClass: i.class,\r\n column: i.field,\r\n content: index !== state.iconsCol\r\n ? text\r\n : \r\n
    {text}
    \r\n \r\n \r\n
    \r\n };\r\n }),\r\n id: taskDataRow.id\r\n };\r\n })}\r\n sortColumn={\"\"}\r\n sortOrderIsAsc={true}\r\n selectedId={state.selectedId}\r\n checkedIds={[]}\r\n onSetSelectedIds={handleSetSelectedIds}\r\n onSearchLines={(_sortColumn: string, _sortOrderIsAsc: boolean, nextPage: boolean) => searchItems(!nextPage ? 1 : state.page + 1, !nextPage, false)}\r\n onOpenLine={handleOpenLine}\r\n />\r\n
    \r\n {state.showTaskDataRowDialog &&\r\n List.moveToPrevious(state, setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, setEditDialogItemByIndex)}\r\n onOk={handleEditDialogOk}\r\n onCancel={handleEditDialogCancel}\r\n onRemove={remove}\r\n onPrint={() => handlePrint(null)}\r\n onRefreshList={() => refreshList(false)}\r\n />\r\n }\r\n
    \r\n );\r\n};\r\n","import React from \"react\";\r\nimport * as attachmentService from \"../../../../models/services/attachmentService\";\r\nimport * as taskService from \"../../../../models/services/taskService\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { ITaskDataRowCol } from \"ui/Scripts/source/models/task/taskDataRowCol\";\r\nimport { TaskDynamicFormContainer } from \"../../TaskDynamicFormContainer\";\r\nimport { TaskDynamicForm } from \"../../TaskDynamicForm/TaskDynamicForm\";\r\nimport { ConfirmationDialogResult, TaskRepetitionType } from \"ui/Scripts/source/models/enums\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { ITaskDataRow, TaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { AttachmentList } from \"source/components/attachments/AttachmentList/AttachmentList\";\r\nimport { FileAttachment, IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport downloadjs from \"downloadjs\";\r\nimport { SaveDataObj } from \"source/framework/saveData\";\r\nimport { SaveAttachmentBase64 } from \"ui/Scripts/source/models/common/saveAttachmentBase64\";\r\nimport { EditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { Alert, Box } from \"@mui/material\";\r\n\r\ninterface ITaskEditDialogFormViewProps {\r\n isNew: boolean;\r\n isLockedToOtherUser: boolean;\r\n isReadOnly: boolean;\r\n companyId: string;\r\n maxHeight?: string | number;\r\n taskId: string;\r\n taskType: ITaskEditTypeItem;\r\n taskDataRows: ITaskDataRow[];\r\n onChangeTaskDataRows: (taskDataRows: ITaskDataRow[]) => void;\r\n}\r\n\r\nexport const TaskEditDialogFormView = (props: ITaskEditDialogFormViewProps) => {\r\n // #region Attachments\r\n const getAttachments = (): IFileAttachment[] => {\r\n return props.taskType.taskRepetitionType === TaskRepetitionType.NotRepeated && props.taskDataRows.length > 0 && props.taskDataRows[0].cols.length > 0 && props.taskDataRows[0].attachments.length > 0\r\n ? props.taskDataRows[0].attachments\r\n : [];\r\n };\r\n\r\n const handleAttachmentDownload = async (id: string) => {\r\n if (!id) return;\r\n const attachment = getAttachments().find(i => i.id === id);\r\n if (!attachment) return;\r\n if (attachment.file) {\r\n downloadjs(attachment.file, attachment.name);\r\n return;\r\n }\r\n if (attachment.isNew()) return;\r\n const fileName = await AppUtils.callService(() => attachmentService.getAttachment(id));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.AttachmentParameterDownloaded, fileName));\r\n };\r\n\r\n const getRemoveAttachmentsSaveData = (attachmentIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.taskId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"ids\", attachmentIds);\r\n return result;\r\n };\r\n\r\n const handleAttachmentRemove = async (id: string) => {\r\n if (!id) return;\r\n const saveData = getRemoveAttachmentsSaveData([id]);\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveAttachmentParameter, getAttachments().find(x => x.id === id)?.name), false) === ConfirmationDialogResult.No) return;\r\n const result = AppUtils.callService(() => taskService.taskEditRemoveAttachments(saveData.obj));\r\n if (!result) return;\r\n const taskDataRow = new TaskDataRow(props.taskDataRows[0]);\r\n taskDataRow.attachments = getAttachments().filter(i => i.id !== id);\r\n props.onChangeTaskDataRows([taskDataRow]);\r\n };\r\n\r\n const getAddAttachmentsSaveData = async (attachments: IFileAttachment[]): Promise => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.taskId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"subOwnerId\", props.taskDataRows[0].id);\r\n result.append(\"attachments\", await SaveAttachmentBase64.fromFileAttachments(attachments));\r\n return result;\r\n };\r\n \r\n const handleAttachmentsAdd = async (fileList: FileList) => {\r\n const attachments = await FileAttachment.addFileListToFileAttachments([], fileList, 0);\r\n if (attachments.length < 1) return;\r\n const saveData = await getAddAttachmentsSaveData(attachments);\r\n const result = await AppUtils.callService(() => taskService.taskEditAddAttachments(saveData.obj));\r\n if (!result) return;\r\n EditItem.setItemIdsFromIds(attachments, result.ids);\r\n const taskDataRow = new TaskDataRow(props.taskDataRows[0]);\r\n taskDataRow.attachments = getAttachments().concat(attachments);\r\n props.onChangeTaskDataRows([taskDataRow]);\r\n };\r\n // #endregion Attachments\r\n\r\n const handleChangeTaskFromtDataCols = (dataCols: ITaskDataRowCol[]) => {\r\n const result = new TaskDataRow(props.taskDataRows[0]);\r\n result.cols = dataCols;\r\n props.onChangeTaskDataRows([result]);\r\n };\r\n\r\n return (\r\n <>\r\n {props.taskDataRows.length > 0 && props.taskDataRows[0].cols.length > 0 &&\r\n \r\n \r\n \r\n \r\n {props.isNew &&\r\n {Translations.TaskMustBeSavedBeforeAttachmentsCanBeAdded}\r\n }\r\n {!props.isNew &&\r\n {Translations.Attachments}}\r\n attachments={getAttachments()}\r\n margin={\"0.5rem 0 0 0\"}\r\n onRemoveAttachment={(id) => handleAttachmentRemove(id)}\r\n onDownloadAttachment={handleAttachmentDownload}\r\n onAddAttachments={(fileList) => handleAttachmentsAdd(fileList)}\r\n />\r\n }\r\n \r\n }\r\n \r\n );\r\n};\r\n","import { Box, Grid } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { ConfirmationButton } from \"../../framework/Button/ConfirmationButton\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { TreeCheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/TreeCheckboxDropdown\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { ITaskEditTypeItem, TaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { ITaskEditItemTaskPriority } from \"source/models/task/taskEditItemTaskPriority\";\r\nimport { Dropdown } from \"ui/Scripts/source/components/framework/Dropdown/Dropdown/Dropdown\";\r\nimport { TaskVisibility } from \"ui/Scripts/source/models/enums\";\r\nimport { IToggleButtonOption, ToggleButtons } from \"source/components/framework/ToggleButtons\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\nimport { IdTitleDropdown, IIdTitleDropdownItem } from \"ui/Scripts/source/components/framework/Dropdown/IdTitleDropdown\";\r\n\r\nexport interface ITaskNewDialogProp {\r\n units: IIdTitleNode[];\r\n taskTypes: ITaskEditTypeItem[];\r\n taskPriorities: ITaskEditItemTaskPriority[];\r\n unitId: string;\r\n taskTypeId: string;\r\n taskPriorityId: string;\r\n onOk: (unitId: string, taskTypeId: string, taskPriorityId: string) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface ITaskNewDialogState {\r\n visibilityOptions: IToggleButtonOption[];\r\n dropdownItems: IIdTitleDropdownItem[];\r\n isPublic: boolean;\r\n unitId: string;\r\n taskTypeId: string;\r\n taskPriorityId: string;\r\n}\r\n\r\nexport class TaskNewDialog extends React.Component {\r\n constructor(props: ITaskNewDialogProp) {\r\n super(props);\r\n const isPublic = !!props.unitId;\r\n const visibilityOptions: IToggleButtonOption[] = [];\r\n if (props.units.length > 0 && !!props.taskTypes.find(i => i.visibility === TaskVisibility.Public || i.visibility === TaskVisibility.PrivateAndPublic)) {\r\n visibilityOptions.push({ id: \"1\", title: Translations.Public });\r\n }\r\n if (props.taskTypes.find(i => i.visibility === TaskVisibility.Private || i.visibility === TaskVisibility.PrivateAndPublic)) {\r\n visibilityOptions.push({ id: \"0\", title: Translations.Private });\r\n }\r\n this.state = {\r\n isPublic,\r\n visibilityOptions,\r\n unitId: props.unitId,\r\n taskTypeId: props.taskTypeId,\r\n taskPriorityId: props.taskPriorityId,\r\n dropdownItems: TaskEditTypeItem.getTaskTypesForUiSelect(props.taskTypes, isPublic)\r\n };\r\n }\r\n\r\n handleChangePublic = (isPublic: boolean) => {\r\n const state = this.state;\r\n const taskTypes = TaskEditTypeItem.getTaskTypesByVisibility(this.props.taskTypes, isPublic);\r\n const taskType = taskTypes.find(i => i.id === state.taskTypeId);\r\n this.setState({\r\n taskTypeId: taskType ? state.taskTypeId : taskTypes[0].id,\r\n isPublic,\r\n dropdownItems: TaskEditTypeItem.getTaskTypesForUiSelect(this.props.taskTypes, isPublic)\r\n });\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n handleSave = async () => {\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n this.props.onOk(state.isPublic ? state.unitId : \"\", state.taskTypeId, state.taskPriorityId);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const taskPriority = props.taskPriorities.find(i => i.id === state.taskPriorityId);\r\n return (\r\n \r\n \r\n \r\n \r\n this.handleChangePublic(value === \"1\")}\r\n />\r\n \r\n \r\n \r\n {state.isPublic &&\r\n \r\n \r\n \r\n this.setState({ unitId: unitIds[0] })}\r\n />\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n this.setState({ taskTypeId })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n return {\r\n title: item.code,\r\n selected: state.taskPriorityId === item.id,\r\n onClick: () => this.setState({ taskPriorityId: item.id })\r\n };\r\n })}\r\n />\r\n \r\n \r\n \r\n \r\n }\r\n actions={\r\n \r\n \r\n {Translations.Cancel}\r\n {Translations.Next}\r\n \r\n \r\n }\r\n onClose={props.onCancel}\r\n />\r\n );\r\n }\r\n}","import React, { useEffect, useState } from \"react\";\r\nimport { Box, Grid } from \"@mui/material\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { FormField } from \"source/components/framework/FormField\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ISessionState } from \"../../../../models/session/sessionState\";\r\nimport { IIdTitleNode, IdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { IModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { ITaskEditItemTaskState } from \"source/models/task/taskEditItemTaskState\";\r\nimport { ITaskEditItemTaskPriority } from \"source/models/task/taskEditItemTaskPriority\";\r\nimport { TaskDynamicFormContainer } from \"../../TaskDynamicFormContainer\";\r\nimport { TaskDynamicForm } from \"../../TaskDynamicForm/TaskDynamicForm\";\r\nimport { UserBlocks } from \"source/components/user/UserBlocks/UserBlocks\";\r\nimport { ITaskDataRowCol } from \"ui/Scripts/source/models/task/taskDataRowCol\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { TaskStateListChip } from \"../../TaskStateListChip\";\r\n\r\ninterface ITaskEditDialogGeneralViewReadOnlyProps {\r\n sessionState: ISessionState;\r\n isLockedToOtherUser: boolean;\r\n canHandleTask: boolean;\r\n canChangeTaskState: boolean;\r\n companyId: string;\r\n taskId: string;\r\n code: string;\r\n name: string;\r\n taskTypeId: string;\r\n taskStateId: string;\r\n taskPriorityId: string;\r\n unitId: string;\r\n handlers: IModifyUser[];\r\n taskType: ITaskEditTypeItem;\r\n taskHeaderDataCols: ITaskDataRowCol[];\r\n taskStates: ITaskEditItemTaskState[];\r\n taskPriorities: ITaskEditItemTaskPriority[];\r\n units: IIdTitleNode[];\r\n}\r\n\r\nexport const TaskEditDialogGeneralViewReadOnly = (props: ITaskEditDialogGeneralViewReadOnlyProps) => {\r\n const [taskState, setTaskState] = useState(null);\r\n const [taskPriority, setTaskPriority] = useState(null);\r\n const [unit, setUnit] = useState(null);\r\n\r\n useEffect(() => {\r\n setTaskState(props.taskStates.find(i => i.id === props.taskStateId) ?? props.taskStates[0]);\r\n setTaskPriority(props.taskPriorities.find(i => i.id === props.taskPriorityId) ?? props.taskPriorities[0]);\r\n setUnit(props.unitId ? IdTitleNode.getById(props.units, props.unitId) : null);\r\n }, [props.taskStateId, props.taskPriorityId, props.unitId]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {props.taskType?.code}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {taskPriority?.code}\r\n \r\n \r\n \r\n \r\n {unit ? unit.title : Translations.Private}\r\n \r\n \r\n \r\n \r\n {props.code}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.name}\r\n \r\n \r\n {!!unit &&\r\n \r\n \r\n \r\n }\r\n \r\n {props.taskHeaderDataCols.length > 0 &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n );\r\n};\r\n","import React, { useEffect, useState, MouseEvent } from \"react\";\r\nimport * as calendarTaskService from \"source/models/services/calendarTaskService\";\r\nimport { ISessionState } from \"source/models/session/sessionState\";\r\nimport { ICalendarTaskItem } from \"ui/Scripts/source/models/calendarTask/calendarTaskItem\";\r\nimport { CalendarTaskState, ConfirmationDialogResult, DatabaseRecordType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { getEventsByDate, getEventsByDay } from \"../CalendarTaskList/ICalendarTaskListUtils\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { DialogListContainer } from \"source/components/framework/Dialog/DialogListContainer\";\r\nimport { ActionContainer } from \"source/components/framework/ActionContainer\";\r\nimport { ListIconButtonsItem } from \"source/components/framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { CalendarTaskEditDialog } from \"../CalendarTaskEditDialog\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { infiniteListDetailsViewPageSize, infiniteListPageSize } from \"source/models/common/webConsts\";\r\nimport { List } from \"source/components/framework/List/List\";\r\nimport { CalendarTaskListItem, ICalendarTaskDayItem } from \"../CalendarTaskList/CalendarTaskListItem\";\r\nimport { ToolButtonDropdownMenu } from \"ui/Scripts/source/components/framework/Button/ToolButtonDropdownMenu\";\r\nimport { removeConfirmationWord } from \"ui/Scripts/source/models/consts\";\r\n\r\ninterface ICalendarTaskListOfRecordProps {\r\n sessionState: ISessionState;\r\n databaseRecordType: DatabaseRecordType;\r\n isReadOnly: boolean;\r\n ownerRecordTitle: string;\r\n companyId: string;\r\n recordId: string;\r\n dataId: string;\r\n detailsViewMode?: boolean;\r\n noDataMessage?: string;\r\n onSetOpenCalendarTaskAmount?: (amount: number) => void;\r\n}\r\n\r\ninterface ICalendarTaskListOfRecordListState {\r\n intialized: boolean;\r\n isLoading: boolean;\r\n page: number;\r\n hasMore: boolean;\r\n stateFilter: CalendarTaskState[];\r\n items: ICalendarTaskItem[];\r\n groupedItems: ICalendarTaskDayItem[];\r\n selectedId: string;\r\n checkedIds: string[];\r\n\r\n showEditDialog: boolean;\r\n editDialogId: string;\r\n editDialogHasPrevious: boolean;\r\n editDialogHasNext: boolean;\r\n}\r\n\r\nexport const getOpenCalendarTaskAmount = async (companyId: string, databaseRecordType: DatabaseRecordType, recordId: string) => {\r\n if (!recordId || recordId === Base.emptyGuid) return 0;\r\n const result = await AppUtils.callService(() => calendarTaskService.getCalendarTaskAmount(companyId, databaseRecordType, recordId, [CalendarTaskState.NotStarted, CalendarTaskState.Started]), false, true);\r\n if (!result) return 0;\r\n return result.amount;\r\n};\r\n\r\nexport const CalendarTaskListOfRecord = (props: ICalendarTaskListOfRecordProps) => {\r\n const [state, setState] = useState({\r\n intialized: false,\r\n isLoading: false,\r\n page: 1,\r\n hasMore: true,\r\n stateFilter: [CalendarTaskState.NotStarted, CalendarTaskState.Started, CalendarTaskState.Finished],\r\n items: [],\r\n groupedItems: [],\r\n selectedId: \"\",\r\n checkedIds: [],\r\n showEditDialog: false,\r\n editDialogId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false\r\n });\r\n\r\n const setOpenCalendarTaskAmount = async () => {\r\n if (!props.onSetOpenCalendarTaskAmount) return;\r\n const amount = await getOpenCalendarTaskAmount(props.companyId, props.databaseRecordType, props.recordId);\r\n props.onSetOpenCalendarTaskAmount(amount);\r\n };\r\n\r\n const searchItems = async (page: number, resetItems: boolean, refreshList: boolean, moveNext: boolean = false, setEditDialogData: boolean = true) => {\r\n const isNewRecord = props.recordId === Base.emptyGuid;\r\n if (isNewRecord) {\r\n setState((old) => ({ ...old, intialized: true }));\r\n return;\r\n }\r\n const pageSize = !props.detailsViewMode ? infiniteListPageSize : infiniteListDetailsViewPageSize;\r\n setState((old) => ({ ...old, isLoading: true }));\r\n const result = await AppUtils.callService(() => calendarTaskService.getCalendarTaskListItems(props.companyId, props.databaseRecordType, props.recordId, !refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1), false, true, () => setState((old) => ({ ...old, isLoading: false })));\r\n if (!result) return;\r\n const items = List.getListItems(state.items, state.selectedId, state.checkedIds, result.items, resetItems, refreshList);\r\n let selectedId = items.selectedId;\r\n let index = items.items.findIndex(i => i.id === selectedId);\r\n let selectedItem = index > -1 ? items.items[index] : null;\r\n if (moveNext && selectedItem && index < items.items.length - 1) {\r\n index = index + 1;\r\n selectedItem = items.items[index];\r\n selectedId = items.items[index].id;\r\n }\r\n const eventsByDay = getEventsByDay(items.items)\r\n .filter((item) => state.stateFilter.includes(item.state))\r\n .sort((a, b) => a.startDate - b.startDate);\r\n const groupedItems = getEventsByDate(\r\n eventsByDay\r\n );\r\n setState((old) => ({\r\n ...old,\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n items: items.items,\r\n groupedItems,\r\n selectedId,\r\n checkedIds: items.checkedIds,\r\n editDialogId: setEditDialogData ? (moveNext && selectedItem ? selectedItem.id : \"\") : state.editDialogId,\r\n editDialogHasPrevious: setEditDialogData ? index > 0 : state.editDialogHasPrevious,\r\n editDialogHasNext: setEditDialogData ? (index < items.items.length - 1 || result.hasMore) : state.editDialogHasNext,\r\n }));\r\n setOpenCalendarTaskAmount();\r\n };\r\n\r\n useEffect(() => {\r\n searchItems(1, true, false);\r\n }, [state.stateFilter, props.recordId]);\r\n\r\n // const handleFilterChange = (_event: React.MouseEvent, value: any) => {\r\n // setStateFitler(value);\r\n // };\r\n\r\n const refreshList = async (setEditDialogData: boolean = true): Promise => {\r\n await searchItems(state.page, false, true, false, setEditDialogData);\r\n };\r\n\r\n // #region Edit dialog\r\n const showEditDialog = (calendarTaskId: string, isSeries: boolean) => {\r\n const isNew = calendarTaskId === Base.emptyGuid;\r\n const index = isNew ? 0 : state.items.findIndex(i => i.id === calendarTaskId);\r\n if (!isSeries && index < 0) return;\r\n setState((old) => ({\r\n ...old,\r\n showEditDialog: true,\r\n editDialogId: calendarTaskId,\r\n editDialogHasPrevious: !isSeries && index > 0,\r\n editDialogHasNext: isSeries || isNew ? false : index < state.items.length - 1 || state.hasMore\r\n }));\r\n };\r\n\r\n const handleAddCalendarTask = () => {\r\n showEditDialog(Base.emptyGuid, false);\r\n };\r\n\r\n const handleOpenCalendarTask = (id: string, isSeries: boolean) => {\r\n showEditDialog(id, isSeries);\r\n };\r\n\r\n const handleCloseEditDialog = () => {\r\n setState((old) => ({\r\n ...old,\r\n showEditDialog: false,\r\n }));\r\n refreshList();\r\n };\r\n\r\n const setEditDialogItemByIndex = (index: number) => {\r\n if (index < 0) return;\r\n if (index >= state.items.length) {\r\n if (!state.hasMore) return;\r\n searchItems(state.page + 1, false, false, true);\r\n } else {\r\n setState((old) => ({\r\n ...old,\r\n selectedId: state.items[index].id,\r\n editDialogId: state.items[index].id,\r\n editDialogHasPrevious: index > 0,\r\n editDialogHasNext: index < state.items.length - 1 || state.hasMore,\r\n }));\r\n }\r\n };\r\n // #endregion Edit dialog\r\n\r\n //# region Remove\r\n const [removeMenuAnchorEl, setRemoveMenuAnchorEl] = useState(null);\r\n\r\n const remove = async (id: string, _isSeries: boolean) => {\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveCalendarTaskParameter, state.items?.find(item => item.id === id)?.title), false, removeConfirmationWord) === ConfirmationDialogResult.Yes) {\r\n const result = await AppUtils.callService(() => calendarTaskService.removeCalendarTask(props.companyId, id));\r\n if (!result) return;\r\n }\r\n refreshList();\r\n };\r\n\r\n const getRemoveActions = () => {\r\n if (!state.selectedId) return [];\r\n const item = state.items.find(i => i.id === state.selectedId);\r\n if (!item) return [];\r\n return [\r\n { title: Translations.CalendarTaskRemoveOccurrence, onClick: () => { remove(item.id, false); } },\r\n { title: Translations.CalendarTaskRemoveSeries, onClick: () => { remove(item.parentId, true); } },\r\n ];\r\n };\r\n\r\n const handleRemove = async (event: MouseEvent) => {\r\n if (!state.selectedId) return;\r\n const item = state.items.find(i => i.id === state.selectedId);\r\n if (!item) return;\r\n if (item.parentId) {\r\n setRemoveMenuAnchorEl(event.currentTarget);\r\n } else {\r\n remove(item.id, false);\r\n }\r\n };\r\n //# endregion Remove\r\n \r\n const handleSetSelectedId = (selectedId: string) => {\r\n setState((old) => ({\r\n ...old,\r\n selectedId\r\n }));\r\n };\r\n\r\n const handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n searchItems(!nextPage ? 1 : state.page + 1, !nextPage, false);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n setRemoveMenuAnchorEl(null)}\r\n />\r\n \r\n }\r\n />\r\n (\r\n \r\n ))}\r\n sortColumn={\"\"}\r\n sortOrderIsAsc={true}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={null}\r\n onSearchLines={handleSearchLines}\r\n />\r\n {state.showEditDialog &&\r\n List.moveToPrevious(state, setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, setEditDialogItemByIndex)}\r\n onClose={handleCloseEditDialog}\r\n />\r\n }\r\n \r\n );\r\n};\r\n","import React, { ReactNode } from \"react\";\r\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\r\nimport { Accordion, AccordionDetails, AccordionSummary, Box, Typography } from \"@mui/material\";\r\n\r\ninterface ITFormAccordionProps {\r\n defaultExpanded?: boolean;\r\n detailsPadding?: string;\r\n title: string | ReactNode;\r\n subTitle?: string;\r\n buttons?: ReactNode;\r\n buttonsOnExpanded?: ReactNode;\r\n children: ReactNode;\r\n expanendedMargin?: string;\r\n onExpandedChange?: (expanded: boolean) => void;\r\n}\r\n\r\nexport const FormAccordion = (props: ITFormAccordionProps) => {\r\n const [expanded, setExpanded] = React.useState(props.defaultExpanded ?? false);\r\n\r\n const handleChange = (event: React.SyntheticEvent, isExpanded: boolean) => {\r\n setExpanded(isExpanded);\r\n if (props.onExpandedChange) {\r\n props.onExpandedChange(isExpanded);\r\n }\r\n };\r\n\r\n return (\r\n \r\n }\r\n sx={{\r\n \"borderLeft\": \"none\",\r\n \"borderRight\": \"none\",\r\n \"minHeight\": \"auto\",\r\n \"& .MuiAccordionSummary-content\": {\r\n margin: \"8px 0\",\r\n },\r\n \"&.Mui-expanded\": {\r\n \"minHeight\": \"auto\",\r\n \"& .MuiAccordionSummary-content.Mui-expanded\": {\r\n margin: \"12px 0\",\r\n }\r\n }\r\n }}\r\n >\r\n \r\n \r\n {props.title}\r\n {props.subTitle &&\r\n {props.subTitle}\r\n }\r\n \r\n {(props.buttons || expanded && !!props.buttonsOnExpanded) &&\r\n \r\n {props.buttons}\r\n {expanded ? props.buttonsOnExpanded : null}\r\n \r\n }\r\n \r\n \r\n \r\n {props.children}\r\n \r\n \r\n );\r\n};\r\n","import { ToggleButtonProps } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppEditIcon } from \"../../Icon/AppEditIcon\";\r\nimport { AppToggleButton } from \"../AppToggleButton\";\r\n\r\nexport const EditToggleButton = (props: ToggleButtonProps) => (\r\n \r\n {props.selected ? Translations.EditMode : Translations.ReadMode}\r\n \r\n);\r\n","import { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { ConfirmationDialogResult, DatabaseRecordType, TaskRepetitionType, TaskStateEditabilityType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as taskService from \"../../../models/services/taskService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { DialogTabs } from \"../../framework/Dialog/DialogTabs\";\r\nimport { TaskEditDialogGeneraView } from \"./TaskEditDialogGeneraView\";\r\nimport { IModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { ITaskDataRow, SaveTaskDataRow, TaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskEditItem } from \"source/models/task/taskEditItem\";\r\nimport { ITaskEditItemTaskState } from \"source/models/task/taskEditItemTaskState\";\r\nimport { ITaskEditItemTaskPriority } from \"source/models/task/taskEditItemTaskPriority\";\r\nimport { ITaskDataRowCol, SaveTaskDataRowCol, TaskDataRowCol } from \"ui/Scripts/source/models/task/taskDataRowCol\";\r\nimport { LockedRecord } from \"ui/Scripts/source/models/common/lockedRecord\";\r\nimport { recordLockManager } from \"source/models/services/recordLockService\";\r\nimport { StoreUtils } from \"source/models/store/storeUtils\";\r\nimport { TaskDataRowList } from \"../TaskDataRowList/TaskDataRowList\";\r\nimport { TaskEditDialogFormView } from \"./TaskEditDialogFormView\";\r\nimport { DialogButtons } from \"source/components/framework/Dialog/DialogButtons\";\r\nimport { removeConfirmationWord } from \"ui/Scripts/source/models/consts\";\r\nimport { ITaskTypeCol, TaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { TaskNewDialog } from \"../TaskNewDialog\";\r\nimport { TaskEditDialogGeneralViewReadOnly } from \"./TaskEditDialogGeneralViewReadOnly\";\r\nimport { CalendarTaskListOfRecord, getOpenCalendarTaskAmount } from \"source/components/calendarTask/CalendarTaskListOfRecord\";\r\nimport { FormAccordion } from \"source/components/framework/FormAccordion\";\r\nimport { EditToggleButton } from \"source/components/framework/Button/EditToggleButton\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum TaskEditDialogMenuItem {\r\n General = \"1\",\r\n Remainders = \"2\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\nexport interface ITaskEditDialogProp {\r\n sessionState: ISessionState;\r\n companyId: string;\r\n taskId: string;\r\n classes?: string;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onOk: () => void;\r\n onCancel: (taskDataWasModified: boolean) => void;\r\n onPrint: () => void;\r\n //onNewSaved: (userGroupId: string) => void;\r\n onRefreshList: () => Promise;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n //onRefreshSessionState: () => void;\r\n}\r\n\r\nexport interface ITaskEditDialogState {\r\n activeMenuItem: TaskEditDialogMenuItem;\r\n isLoading: boolean;\r\n taskDataWasModified: boolean;\r\n isLocked: boolean;\r\n generalViewEditMode: boolean;\r\n task: ITaskEditItem;\r\n id: string;\r\n rowId: string;\r\n code: string;\r\n name: string;\r\n taskTypeId: string;\r\n taskStateId: string;\r\n taskPriorityId: string;\r\n unitId: string;\r\n taskHeaderDataCols: ITaskDataRowCol[];\r\n taskDataRows: ITaskDataRow[];\r\n handlers: IModifyUser[];\r\n taskType: ITaskEditTypeItem;\r\n canHandleTask: boolean;\r\n canRemoveTask: boolean;\r\n canChangeTaskState: boolean;\r\n taskTypes: ITaskEditTypeItem[];\r\n taskStates: ITaskEditItemTaskState[];\r\n taskPriorities: ITaskEditItemTaskPriority[];\r\n units: IIdTitleNode[];\r\n lockedUser: IModifyUser;\r\n isLockedToOtherUser: boolean;\r\n showNewTaskDialog: boolean;\r\n listHeight: string;\r\n openCalendarTaskAmount: number;\r\n rowToolButtons: React.ReactNode;\r\n}\r\n\r\nexport class TaskEditDialog extends React.Component {\r\n private _isMounted: boolean;\r\n private generalViewContainerDiv: HTMLDivElement;\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: ITaskEditDialogProp) {\r\n super(props);\r\n this.state = {\r\n activeMenuItem: TaskEditDialogMenuItem.General,\r\n isLoading: false,\r\n taskDataWasModified: false,\r\n isLocked: false,\r\n generalViewEditMode: props.taskId !== Base.emptyGuid,\r\n task: null,\r\n id: props.taskId,\r\n rowId: \"\",\r\n code: \"\",\r\n name: \"\",\r\n taskStateId: \"\",\r\n taskTypeId: \"\",\r\n taskPriorityId: \"\",\r\n unitId: \"\",\r\n taskHeaderDataCols: [],\r\n taskDataRows: [],\r\n handlers: [],\r\n taskType: null,\r\n canHandleTask: false,\r\n canRemoveTask: false,\r\n canChangeTaskState: false,\r\n taskTypes: [],\r\n taskStates: [],\r\n taskPriorities: [],\r\n units: [],\r\n lockedUser: null,\r\n isLockedToOtherUser: false,\r\n showNewTaskDialog: false,\r\n listHeight: null,\r\n openCalendarTaskAmount: 0,\r\n rowToolButtons: null\r\n };\r\n }\r\n\r\n setOpenTaskAmount = async (id: string) => {\r\n const props = this.props;\r\n const result = await AppUtils.callService(() => getOpenCalendarTaskAmount(props.companyId, DatabaseRecordType.Task, id), false, true);\r\n this.setState({ openCalendarTaskAmount: result });\r\n };\r\n\r\n loadTask = async (id: string) => {\r\n const props = this.props;\r\n //Unlock current task\r\n if (LockedRecord.isLockedToUser(this.state.lockedUser, props.sessionState.code)) {\r\n await recordLockManager.unlock(props.companyId, this.state.id, DatabaseRecordType.Task);\r\n }\r\n //Load and lock task\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => taskService.getTaskEdit(props.companyId, id, true), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const task = result.item;\r\n const isNew = task.id === Base.emptyGuid;\r\n const taskType = result.taskTypes.find(i => i.id === task.taskTypeId);\r\n const taskState = result.taskStates.find(i => i.id === task.taskStateId);\r\n const state = {\r\n ...this.state,\r\n isLocked: taskState?.editabilityType === TaskStateEditabilityType.Locked,\r\n task,\r\n id: task.id,\r\n rowId: task.rowId,\r\n code: task.code,\r\n name: task.name,\r\n taskStateId: task.taskStateId,\r\n taskTypeId: task.taskTypeId,\r\n taskPriorityId: task.taskPriorityId,\r\n unitId: task.unitId,\r\n taskHeaderDataCols: task.taskHeaderDataCols,\r\n taskDataRows: task.taskDataRows,\r\n handlers: task.handlers,\r\n taskType,\r\n canHandleTask: result.canHandleTask,\r\n canRemoveTask: result.canRemoveTask,\r\n canChangeTaskState: result.canChangeTaskState,\r\n taskTypes: result.taskTypes,\r\n taskStates: result.taskStates,\r\n taskPriorities: result.taskPriorities,\r\n units: result.units,\r\n lockedUser: task.lockedUser,\r\n isLockedToOtherUser: task.isLockedToOtherUser(props.sessionState.code),\r\n showNewTaskDialog: isNew,\r\n activeMenuItem: isNew\r\n ? TaskEditDialogMenuItem.General\r\n : this.state.activeMenuItem,\r\n generalViewEditMode: isNew\r\n };\r\n this.setState(state);\r\n const saveData = this.getSaveDataFromState(props, state);\r\n this.orgStateHash = saveData.hash;\r\n //Calendar task amount\r\n if (!isNew) {\r\n this.setOpenTaskAmount(id);\r\n }\r\n //Add locked record to idb\r\n if (!isNew && LockedRecord.isLockedToUser(task.lockedUser, props.sessionState.code)) {\r\n recordLockManager.addLock(LockedRecord.createLockedRecord(props.companyId, state.id, props.sessionState.code, DatabaseRecordType.Task));\r\n }\r\n //Send read receipt for task\r\n if (!isNew) {\r\n const userIsCreator = task.createUser.code === props.sessionState.code;\r\n if (!userIsCreator && !task.isRead) {\r\n AppUtils.callService(() => taskService.sendTaskReadReceipt(props.companyId, state.id), false, true);\r\n }\r\n }\r\n };\r\n\r\n getMaxListHeight = (): string => {\r\n if (!this.generalViewContainerDiv) return \"calc(100vh - 330px)\";\r\n const viewportHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\r\n const height = this.generalViewContainerDiv.getBoundingClientRect().height;\r\n return viewportHeight - 330 - height > 100\r\n ? \"calc(100vh - \" + (330 + height).toString(10) + \"px)\"\r\n : \"calc(100vh - 330px)\";\r\n };\r\n \r\n getMaxListHeightExpanded = (): string => {\r\n return \"calc(100vh - 180px)\";\r\n };\r\n\r\n private observer: ResizeObserver;\r\n\r\n createObserver = () => {\r\n this.observer = new ResizeObserver((entries) => {\r\n if (!this._isMounted) return;\r\n this.setState({\r\n listHeight: this.getMaxListHeight()\r\n });\r\n });\r\n };\r\n\r\n setObserver = () => {\r\n if (this.state.activeMenuItem === TaskEditDialogMenuItem.General && this.generalViewContainerDiv) {\r\n this.observer.observe(this.generalViewContainerDiv);\r\n }\r\n };\r\n\r\n removeObserver = () => {\r\n if (!this.observer) return;\r\n this.observer.disconnect();\r\n };\r\n\r\n componentDidMount(): void {\r\n this._isMounted = true;\r\n this.loadTask(this.props.taskId);\r\n this.createObserver();\r\n this.setObserver();\r\n }\r\n\r\n async componentWillUnmount(): Promise {\r\n this._isMounted = false;\r\n const props = this.props;\r\n const state = this.state;\r\n const isNew = state.id === Base.emptyGuid;\r\n if (!isNew && LockedRecord.isLockedToUser(this.state.lockedUser, props.sessionState.code)) {\r\n await recordLockManager.unlock(props.companyId, state.id, DatabaseRecordType.Task);\r\n }\r\n this.removeObserver();\r\n }\r\n\r\n async componentDidUpdate(prevProps: ITaskEditDialogProp, prevState: ITaskEditDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if (prevProps.companyId === props.companyId && prevProps.taskId === props.taskId) {\r\n if (state.listHeight !== this.getMaxListHeight()) {\r\n this.removeObserver();\r\n this.setObserver();\r\n }\r\n return;\r\n }\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb()) return;\r\n props.onRefreshList();\r\n }\r\n await this.loadTask(props.taskId);\r\n }\r\n\r\n handleToggleActiveMenuItem = (activeMenuItem: TaskEditDialogMenuItem) => {\r\n this.setState({ activeMenuItem });\r\n };\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"xts\") {\r\n this.setState({ code: value });\r\n } else if (name === \"name\") {\r\n this.setState({ name: value });\r\n }\r\n };\r\n\r\n getChangeTaskTypeStateChange = (taskTypeId: string) => {\r\n const state = this.state;\r\n const taskType = state.taskTypes.find(i => i.id === taskTypeId);\r\n if (!taskType) return null;\r\n const taskHeaderDataCols = TaskDataRowCol.initializeValuesByType(taskType.headerCols, []);\r\n const taskDataRows: ITaskDataRow[] = [];\r\n if (taskType.taskRepetitionType === TaskRepetitionType.NotRepeated) {\r\n const taskDataRow = new TaskDataRow();\r\n taskDataRow.id = Base.getGuid();\r\n taskDataRow.initializeToTaskType(taskType);\r\n taskDataRows.push(taskDataRow);\r\n }\r\n return {\r\n taskTypeId,\r\n taskType,\r\n taskHeaderDataCols,\r\n taskDataRows,\r\n };\r\n };\r\n\r\n handleChangeTaskType = (taskTypeId: string) => {\r\n const stateChange = this.getChangeTaskTypeStateChange(taskTypeId);\r\n if (!stateChange) return;\r\n this.setState(stateChange);\r\n };\r\n\r\n // #region Locking\r\n handleUnlockAndLockToMe = async () => {\r\n const props = this.props;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToUnlockTask, this.state.task.name), false) !== ConfirmationDialogResult.Yes) {\r\n return;\r\n }\r\n const result = await recordLockManager.lock(props.companyId, this.state.id, props.sessionState.code, DatabaseRecordType.Task);\r\n if (!result || result.items.length < 1) return;\r\n this.setState({\r\n lockedUser: StoreUtils.getNowModifyUser(result.items[0].lockedDate),\r\n isLockedToOtherUser: false\r\n });\r\n };\r\n // #endregion Locking\r\n\r\n // #region TaskNewDialog\r\n handleTaskNewDialogOk = (unitId: string, taskTypeId: string, taskPriorityId: string) => {\r\n const stateChange = this.getChangeTaskTypeStateChange(taskTypeId);\r\n if (!stateChange) return;\r\n this.setState({\r\n ...stateChange,\r\n unitId,\r\n taskPriorityId,\r\n showNewTaskDialog: false\r\n });\r\n };\r\n \r\n handleTaskNewDialogCancel = () => {\r\n this.props.onCancel(false);\r\n };\r\n // #endregion TaskNewDialog\r\n\r\n getSaveDataFromState = (props: ITaskEditDialogProp, state: ITaskEditDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"id\", state.id);\r\n result.append(\"code\", state.code);\r\n result.append(\"name\", state.name);\r\n result.append(\"taskPriorityId\", state.taskPriorityId);\r\n result.append(\"taskStateId\", state.taskStateId);\r\n result.append(\"taskTypeId\", state.taskTypeId);\r\n result.append(\"unitId\", state.unitId ? state.unitId : null);\r\n result.append(\"taskHeaderDataCols\", state.taskType.headerCols && state.taskType.headerCols.length\r\n ? JSON.stringify(TaskDataRowCol.getToBeSavedTaskDataRowCols(state.taskType.headerCols, state.taskHeaderDataCols).map(i => new SaveTaskDataRowCol(i)))\r\n : null);\r\n result.append(\"taskDataRow\", state.taskType.taskRepetitionType === TaskRepetitionType.NotRepeated && state.taskDataRows.length > 0\r\n ? JSON.stringify(SaveTaskDataRow.createSaveTaskDataRow(state.taskType.formCols, state.taskDataRows[0], null))\r\n : null\r\n );\r\n result.append(\"taskHandlerUserCodes\", state.task.isNew()\r\n ? state.handlers.map(i => i.code)\r\n : null\r\n );\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.name) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.TitleMustBeDefined));\r\n return resolve(false);\r\n }\r\n if (state.taskType.headerCols && state.taskType.headerCols.length) {\r\n TaskTypeCol.validateInputOfRequiredTaskTypeCols(state.taskType.headerCols, state.taskHeaderDataCols, null,\r\n (typeCol: ITaskTypeCol) => {\r\n AppUtils.showErrorMessage(String.format(Translations.FieldParameterValueMustBeDefined, typeCol.title));\r\n return resolve(false);\r\n });\r\n }\r\n if (state.taskType.taskRepetitionType === TaskRepetitionType.NotRepeated) {\r\n for (let i = 0; i < state.taskDataRows.length; i++) {\r\n TaskTypeCol.validateInputOfRequiredTaskTypeCols(state.taskType.formCols, state.taskDataRows[i].cols, null,\r\n (typeCol: ITaskTypeCol) => {\r\n AppUtils.showErrorMessage(String.format(Translations.FieldParameterValueMustBeDefined, typeCol.title));\r\n return resolve(false);\r\n });\r\n }\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = await AppUtils.callService(() => taskService.saveTaskEdit(saveData.obj));\r\n if (!result) return null;\r\n return result;\r\n };\r\n\r\n handleSave = async () => {\r\n const props = this.props;\r\n const result = await this.saveToDb();\r\n if (!result) return;\r\n this.loadTask(result.id);\r\n props.onOk();\r\n };\r\n\r\n handleMoveToTrashBin = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.isLockedToOtherUser || state.isLocked || state.task.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToMoveTaskParameterToTrashBin, state.task.name), false, removeConfirmationWord) === ConfirmationDialogResult.Yes) {\r\n const result = await AppUtils.callService(() => taskService.moveTaskToTrashBin(props.companyId, state.task.id));\r\n if (!result) return;\r\n props.onCancel(true);\r\n }\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.isLockedToOtherUser || state.isLocked || state.task.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveTaskParameterPermanenty, state.task.name), false, removeConfirmationWord) === ConfirmationDialogResult.Yes) {\r\n const result = await AppUtils.callService(() => taskService.removeTask(props.companyId, state.task.id));\r\n if (!result) return;\r\n this.setState({ lockedUser: null }, () => props.onCancel(true));\r\n }\r\n };\r\n\r\n handlePrint = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.task.isNew()) return;\r\n props.onPrint();\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel(state.taskDataWasModified);\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut(this.getSaveDataFromState(props, this.state).hash, this.orgStateHash, async () => !!await this.saveToDb(), props.onRefreshList);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.task) return null;\r\n //New dialog\r\n if (state.showNewTaskDialog) {\r\n return (\r\n \r\n );\r\n }\r\n //Edit dialog\r\n const isNew = state.task.isNew();\r\n const isRepeated = state.taskType.taskRepetitionType === TaskRepetitionType.Repeated;\r\n return (\r\n \r\n }\r\n body={\r\n <>\r\n {state.activeMenuItem === TaskEditDialogMenuItem.General &&\r\n <>\r\n
    { this.generalViewContainerDiv = elem; }}>\r\n {\r\n e.stopPropagation();\r\n this.setState({ generalViewEditMode: !state.generalViewEditMode });\r\n }}\r\n selected={state.generalViewEditMode}\r\n />\r\n : null\r\n }\r\n detailsPadding=\"8px 0 8px\"\r\n defaultExpanded={true}\r\n onExpandedChange={() => {\r\n this.setState({\r\n listHeight: this.getMaxListHeight()\r\n });\r\n }}\r\n >\r\n {(state.generalViewEditMode\r\n ? this.setState({ name })}\r\n onChangeHandlers={(handlers: IModifyUser[]) => this.setState({ handlers })}\r\n onChangeUnit={(unitId: string) => this.setState({ unitId })}\r\n onChangeTaskType={this.handleChangeTaskType}\r\n onChangeTaskState={(taskStateId: string) => this.setState({ taskStateId })}\r\n onChangeTaskPriority={(taskPriorityId: string) => this.setState({ taskPriorityId })}\r\n onChangeTaskHeaderDataCols={(taskHeaderDataCols: ITaskDataRowCol[]) => this.setState({ taskHeaderDataCols })}\r\n />\r\n : \r\n )}\r\n \r\n
    \r\n \r\n {isRepeated &&\r\n this.setState({ rowToolButtons })}\r\n />\r\n }\r\n {!isRepeated &&\r\n this.setState({ taskDataRows })}\r\n />\r\n }\r\n \r\n \r\n }\r\n {state.activeMenuItem === TaskEditDialogMenuItem.Remainders &&\r\n this.setState({ openCalendarTaskAmount })}\r\n />\r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}/>\r\n );\r\n }\r\n}","import React from \"react\";\r\nimport { AppRemoveIcon } from \"../../Icon/AppRemoveIcon\";\r\nimport { AppButton, IAppButtonProps } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\nexport const TrashBinButton = (props: IAppButtonProps) => (\r\n }\r\n sx={{ marginRight: \"24px\" }}\r\n {...props}>\r\n {props.children}\r\n \r\n);\r\n","import RestoreFromTrashIcon from \"@mui/icons-material/RestoreFromTrash\";\r\nimport React from \"react\";\r\nimport { AppButton, IAppButtonProps } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\nexport const RestoreFromTrashBinButton = (props: IAppButtonProps) => (\r\n }\r\n {...props}>\r\n {props.children}\r\n \r\n);\r\n","import DeleteForeverIcon from \"@mui/icons-material/DeleteForever\";\r\nimport React from \"react\";\r\nimport { AppButton, IAppButtonProps } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\nexport const EmptyTrashBinButton = (props: IAppButtonProps) => (\r\n }\r\n {...props}>\r\n {props.children}\r\n \r\n);\r\n","import React, { useEffect, useState } from \"react\";\r\nimport * as attachmentService from \"../../../models/services/attachmentService\";\r\nimport * as taskService from \"../../../models/services/taskService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { ListDetailsPanel } from \"source/components/framework/List/ListDetailsPanel\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { ITaskEditItemTaskState } from \"source/models/task/taskEditItemTaskState\";\r\nimport { ITaskEditItemTaskPriority } from \"source/models/task/taskEditItemTaskPriority\";\r\nimport { IIdTitleNode, IdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { ITaskEditItem } from \"source/models/task/taskEditItem\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { Alert, Grid } from \"@mui/material\";\r\nimport { FormField } from \"source/components/framework/FormField\";\r\nimport { ModifyUserInfo } from \"source/components/framework/User/ModifyUserInfo\";\r\nimport { ListDetailsPanelAccordion } from \"source/components/framework/List/ListDetailsPanel/ListDetailsPanelAccordion\";\r\nimport { TaskDynamicFormContainer } from \"../TaskDynamicFormContainer\";\r\nimport { TaskDynamicForm } from \"../TaskDynamicForm/TaskDynamicForm\";\r\nimport { DatabaseRecordType, TaskRepetitionType, TaskStateEditabilityType } from \"ui/Scripts/source/models/enums\";\r\nimport { AttachmentList } from \"source/components/attachments/AttachmentList/AttachmentList\";\r\nimport downloadjs from \"downloadjs\";\r\nimport { TaskDataRowList } from \"../TaskDataRowList\";\r\nimport { UserBlocks } from \"source/components/user/UserBlocks/UserBlocks\";\r\nimport { LocalLoading } from \"source/components/framework/Loading/LocalLoading\";\r\nimport { FormFieldLockedToUser } from \"source/components/framework/FormFieldLockedToUser\";\r\nimport { CalendarTaskListOfRecord } from \"source/components/calendarTask/CalendarTaskListOfRecord\";\r\n\r\ninterface ITaskListDetailsPanelProps {\r\n sessionState: ISessionState;\r\n companyId: string;\r\n taskId: string;\r\n dataId: string;\r\n editDialogVisible: boolean;\r\n filterTaskTypeFields: string;\r\n onClose: () => void;\r\n}\r\n\r\ninterface ITaskListDetailsPanelState {\r\n task: ITaskEditItem;\r\n taskType: ITaskEditTypeItem;\r\n taskState: ITaskEditItemTaskState;\r\n taskPriority: ITaskEditItemTaskPriority;\r\n unit: IIdTitleNode;\r\n isLockedToOtherUser: boolean;\r\n}\r\n\r\nexport const TaskListDetailsPanel = (props: ITaskListDetailsPanelProps) => {\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [state, setState] = useState({ task: null, taskType: null, taskState: null, taskPriority: null, unit: null, isLockedToOtherUser: false });\r\n\r\n const changeState = (obj: any) => {\r\n setState(prevState => ({\r\n ...prevState,\r\n ...obj\r\n }));\r\n };\r\n\r\n const loadTask = async () => {\r\n if (!props.taskId) return;\r\n setIsLoading(true);\r\n const result = await AppUtils.callService(() => taskService.getTaskEdit(props.companyId, props.taskId, false), false, true, () => setIsLoading(false));\r\n if (!result) return;\r\n const task = result.item;\r\n changeState({\r\n task,\r\n taskType: result.taskTypes.find(i => i.id === task.taskTypeId),\r\n taskState: result.taskStates.find(i => i.id === task.taskStateId),\r\n taskPriority: result.taskPriorities.find(i => i.id === task.taskPriorityId),\r\n unit: task.unitId ? IdTitleNode.getById(result.units, task.unitId) : null,\r\n isLockedToOtherUser: task.isLockedToOtherUser(props.sessionState.code)\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (props.editDialogVisible) return;\r\n loadTask();\r\n }, [props.companyId, props.taskId, props.dataId, props.filterTaskTypeFields, props.editDialogVisible]);\r\n\r\n const handleAttachmentDownload = async (id: string) => {\r\n if (!id) return;\r\n const attachment = state.task.taskDataRows[0].attachments.find(i => i.id === id);\r\n if (!attachment) return;\r\n if (attachment.file) {\r\n downloadjs(attachment.file, attachment.name);\r\n return;\r\n }\r\n if (attachment.isNew()) return;\r\n const fileName = await AppUtils.callService(() => attachmentService.getAttachment(id));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.AttachmentParameterDownloaded, fileName));\r\n };\r\n\r\n return (\r\n \r\n {(!props.taskId || (!state.task && isLoading)) &&\r\n {Translations.SelectTaskInListToSeeThePreview}\r\n }\r\n {!state.task && isLoading &&\r\n
    \r\n \r\n
    \r\n }\r\n {!!state.task &&\r\n <>\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {state.isLockedToOtherUser &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {state.task.deleteUser &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n
    \r\n \r\n <>\r\n {isLoading &&\r\n \r\n }\r\n \r\n \r\n \r\n {state.taskType.code}\r\n \r\n \r\n \r\n \r\n {state.taskState.code}\r\n \r\n \r\n \r\n \r\n {state.taskPriority.code}\r\n \r\n \r\n \r\n \r\n {state.task.code}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {state.unit ? state.unit.title : Translations.Private}\r\n \r\n \r\n \r\n \r\n {state.task.name}\r\n \r\n \r\n \r\n {!!state.unit &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {state.task.taskHeaderDataCols.length > 0 &&\r\n
    \r\n \r\n \r\n \r\n
    \r\n }\r\n \r\n \r\n {state.taskType.taskRepetitionType === TaskRepetitionType.NotRepeated && state.task.taskDataRows.length > 0 &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {state.taskType.taskRepetitionType === TaskRepetitionType.Repeated &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n {state.taskType.taskRepetitionType === TaskRepetitionType.NotRepeated && state.task.taskDataRows.length > 0 && state.task.taskDataRows[0].attachments.length > 0 &&\r\n \r\n \r\n \r\n }\r\n \r\n }\r\n \r\n );\r\n};\r\n","import { Box, Grid } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { FormField } from \"source/components/framework/FormField\";\r\nimport { IdTitleDropdown } from \"ui/Scripts/source/components/framework/Dropdown/IdTitleDropdown\";\r\nimport { DialogButtons } from \"source/components/framework/Dialog/DialogButtons\";\r\n\r\nexport interface ITaskTrashBinDialogProp {\r\n onOk: (rowAmount: number) => void;\r\n onClose: () => void;\r\n}\r\n\r\nexport const TaskPrintDialog = (props: ITaskTrashBinDialogProp) => {\r\n const [rowAmount, setRowAmount] = React.useState(10);\r\n\r\n return (\r\n \r\n \r\n \r\n setRowAmount(Number(id))}\r\n />\r\n \r\n \r\n \r\n }\r\n actions={\r\n \r\n props.onOk(rowAmount)}\r\n />\r\n \r\n }\r\n onClose={props.onClose}/>\r\n );\r\n};","/* global JSX */\r\n// TaskList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Grid } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ModifyUser } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/user/modifyUser\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { infiniteListPageSize } from \"../../../models/common/webConsts\";\r\nimport * as taskService from \"../../../models/services/taskService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { AddButton } from \"../../framework/Button/AddButton\";\r\nimport { IListUsingComponentState, List } from \"../../framework/List/List\";\r\nimport { ListActionButtons } from \"../../framework/List/ListActionButtons\";\r\nimport { ListCardField } from \"../../framework/List/ListCardField\";\r\nimport { ListContainer } from \"../../framework/List/ListContainer\";\r\nimport { ListLinkValue } from \"../../framework/List/ListLinkValue\";\r\nimport { ListToggleButtons } from \"../../framework/List/ListToggleButtons\";\r\nimport { PageTitle } from \"../../framework/Page/PageTitle\";\r\nimport { ITaskGeneralFilter, ITaskPageFilterState, TaskPageDashboardChart } from \"../TaskPageDashboardChart\";\r\nimport { ListSearchContainer } from \"source/components/framework/List/ListSearchContainer\";\r\nimport { ListSearchFilter } from \"source/components/framework/List/ListSearchFilter\";\r\nimport { ITaskListItem, ITaskListItems } from \"source/models/task\";\r\nimport { TaskListStateCol } from \"./TaskListStateCol\";\r\nimport { TaskListHandlersCol } from \"./TaskListHandlersCol\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { ListDetailsButton } from \"source/components/framework/List/ListDetailsButton\";\r\nimport { PageListActionContainer } from \"source/components/framework/List/PageListActionContainer\";\r\nimport { TaskEditDialog } from \"../TaskEditDialog\";\r\nimport { TrashBinButton } from \"source/components/framework/Button/TrashBinButton\";\r\nimport { DialogListContainer } from \"source/components/framework/Dialog/DialogListContainer\";\r\nimport { ActionContainer } from \"source/components/framework/ActionContainer\";\r\nimport { RestoreFromTrashBinButton } from \"source/components/framework/Button/RestoreFromTrashBinButton/RestoreFromTrashBinButton\";\r\nimport { EmptyTrashBinButton } from \"source/components/framework/Button/EmptyTrashBinButton\";\r\nimport { ConfirmationDialogResult, TaskRepetitionType } from \"ui/Scripts/source/models/enums\";\r\nimport { TaskListDetailsPanel } from \"../TaskListDetailsPanel\";\r\nimport { PreviewToggleButton } from \"source/components/framework/Button/PreviewToggleButton\";\r\nimport { TaskPrintDialog } from \"../taskPrintDialog\";\r\n\r\n// TaskList\r\nexport interface ITaskListProp extends ITaskPageFilterState {\r\n sessionState: ISessionState;\r\n savedFilter: IListFilterItem;\r\n companyId: string;\r\n preloaded?: boolean;\r\n addRecord?: boolean;\r\n canCreateTasks: boolean;\r\n list?: ITaskListItems;\r\n listFilterIsSet: boolean;\r\n units: IIdTitleNode[];\r\n dataId?: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n thrashBin: boolean;\r\n titleSuffix?: JSX.Element;\r\n reportTabs?: React.ReactNode;\r\n showDocumentPreview?: boolean;\r\n onSetSortData: (sortColumn: string, sortOrderIsAsc: boolean) => void;\r\n onLoadPageData: () => void;\r\n onOpenFiltersDialog: () => void;\r\n onOpenTrashBinDialog: () => void;\r\n onChangeShowDocumentPreview?: (showDocumentPreview: boolean) => void;\r\n}\r\n\r\ninterface ITaskListSearchFilter extends ITaskGeneralFilter {\r\n pageSize: number;\r\n page: number;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n}\r\n\r\ninterface ITaskListState extends IListUsingComponentState, ITaskListSearchFilter {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n waitingPreloadedData: boolean;\r\n\r\n listModeIsLine: boolean;\r\n checkedIds: string[];\r\n\r\n // Details\r\n detailsDataId: string;\r\n\r\n // Dialog\r\n showTaskPrintDialog: boolean;\r\n}\r\n\r\nexport class TaskList extends React.Component {\r\n sendReadReceipts: string[] = [];\r\n\r\n sortHandlers = (items: ITaskListItem[]): ITaskListItem[] => {\r\n for (const item of items) {\r\n item.handlers = ModifyUser.sortModifyUsers(item.handlers, { currentUserCode: this.props.sessionState.code });\r\n }\r\n return items;\r\n };\r\n\r\n constructor(props: ITaskListProp) {\r\n super(props);\r\n const generalFilterValues = TaskPageDashboardChart.getGeneralFilterFromState(props);\r\n this.state = {\r\n ...generalFilterValues,\r\n intialized: props.list && !!props.preloaded,\r\n isLoading: false,\r\n waitingPreloadedData: props.preloaded,\r\n page: props.list ? props.list.page : 1,\r\n hasMore: props.list ? props.list.hasMore : true,\r\n filter: \"\",\r\n pageSize: props.list ? props.list.pageSize : infiniteListPageSize,\r\n sortColumn: props.sortColumn,\r\n sortOrderIsAsc: props.sortOrderIsAsc,\r\n listModeIsLine: true,\r\n items: this.sortHandlers(props.list ? props.list.items : []),\r\n selectedId: null,\r\n checkedIds: [],\r\n // Details\r\n detailsDataId: \"\",\r\n detailsItem: null,\r\n // Dialog\r\n showEditDialog: false,\r\n editDialogId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false,\r\n showTaskPrintDialog: false,\r\n };\r\n }\r\n\r\n setReadReceipt = (detailsItem: ITaskListItem) => {\r\n const props = this.props;\r\n if (!detailsItem || detailsItem.isRead) return;\r\n const userIsCreator = detailsItem.createUser.code === props.sessionState.code;\r\n if (userIsCreator || this.sendReadReceipts.indexOf(detailsItem.id) > -1) return;\r\n const result = AppUtils.callService(() => taskService.sendTaskReadReceipt(props.companyId, detailsItem.id), false, true);\r\n if (!result) return;\r\n this.sendReadReceipts.push(detailsItem.id);\r\n const items = this.state.items.slice(0);\r\n const item = items.find(i => i.id === detailsItem.id);\r\n if (!item) return;\r\n item.isRead = true;\r\n this.setState({\r\n items\r\n });\r\n };\r\n\r\n searchItems = async (searchFilter: ITaskListSearchFilter, resetItems: boolean, refreshList: boolean, moveNext: boolean = false, setDialogData: boolean = true, addRecord: boolean = false) => {\r\n const props = this.props;\r\n this.setState({ isLoading: true });\r\n const oneTaskType = searchFilter.taskTypeIds.length === 1;\r\n const result = await AppUtils.callService(() => taskService.getTaskListItems(props.companyId, !refreshList ? searchFilter.pageSize : (searchFilter.page * searchFilter.pageSize), !refreshList ? searchFilter.page : 1,\r\n props.thrashBin, searchFilter.filter, searchFilter.unitIds, searchFilter.stateIds, searchFilter.priorityIds, searchFilter.taskTypeIds, searchFilter.handlerUserCodes,\r\n oneTaskType ? searchFilter.taskTypeHeaderFields : null, oneTaskType ? searchFilter.taskTypeFields : null,\r\n searchFilter.sortColumn, searchFilter.sortOrderIsAsc), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const items = List.getListItems(this.state.items, this.state.selectedId, this.state.checkedIds, this.sortHandlers(result.items), resetItems, refreshList);\r\n let selectedId = items.selectedId;\r\n let index = items.items.findIndex(i => i.id === selectedId);\r\n let detailsItem = index > -1 ? items.items[index] : null;\r\n if (moveNext && detailsItem && index < items.items.length - 1) {\r\n index = index + 1;\r\n detailsItem = items.items[index];\r\n selectedId = items.items[index].id;\r\n }\r\n this.setState({\r\n ...searchFilter,\r\n intialized: true,\r\n page: !refreshList ? result.page : searchFilter.page,\r\n hasMore: result.hasMore,\r\n items: items.items,\r\n selectedId,\r\n checkedIds: items.checkedIds,\r\n detailsItem,\r\n editDialogId: setDialogData ? (moveNext && detailsItem ? detailsItem.id : \"\") : this.state.editDialogId,\r\n editDialogHasPrevious: setDialogData ? index > 0 : this.state.editDialogHasPrevious,\r\n editDialogHasNext: setDialogData ? (index < items.items.length - 1 || result.hasMore) : this.state.editDialogHasNext,\r\n }, () => {\r\n if (!addRecord) return;\r\n this.handleAdd();\r\n });\r\n this.props.onSetSortData(searchFilter.sortColumn, searchFilter.sortOrderIsAsc);\r\n this.setReadReceipt(detailsItem);\r\n };\r\n\r\n refreshList = async (setDialogData: boolean = true) => {\r\n const state = this.state;\r\n await this.searchItems(state, false, true, false, setDialogData);\r\n this.setState({ detailsDataId: Base.getGuid() });\r\n };\r\n\r\n componentDidMount(): void {\r\n const props = this.props;\r\n const state = this.state;\r\n if (props.preloaded && !props.savedFilter) return;\r\n this.searchItems(state, true, false, false, false, !!props.addRecord);\r\n }\r\n\r\n componentDidUpdate(prevProps: ITaskListProp, prevState: ITaskListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.waitingPreloadedData) {\r\n if (!props.list || (props.dataId ?? \"\") === (prevProps.dataId ?? \"\")) return;\r\n this.setState({\r\n intialized: true,\r\n waitingPreloadedData: false,\r\n page: props.list.page,\r\n hasMore: props.list.hasMore,\r\n items: props.list.items,\r\n pageSize: props.list.pageSize\r\n });\r\n } else {\r\n const prevDataId = prevProps.dataId ? prevProps.dataId : \"\";\r\n const dataId = props.dataId ? props.dataId : \"\";\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n const filterStateChange = TaskPageDashboardChart.getTaskGeneralFilterChange(prevProps, props);\r\n const prevSortColumn = prevProps.sortColumn;\r\n const sortColumn = props.sortColumn;\r\n const prevSortOrderIsAsc = prevProps.sortOrderIsAsc;\r\n const sortOrderIsAsc = props.sortOrderIsAsc;\r\n if (dataId === prevDataId && companyId === prevCompanyId &&\r\n filterStateChange.notChanged &&\r\n prevSortColumn === sortColumn && prevSortOrderIsAsc === sortOrderIsAsc) return;\r\n this.searchItems({ ...filterStateChange, pageSize: state.pageSize, page: state.page, filter: state.filter, sortColumn, sortOrderIsAsc }, true, false);\r\n }\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems({ ...state, filter }, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems({ ...state, page: !nextPage ? 1 : state.page + 1, sortColumn, sortOrderIsAsc }, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n const detailsItem = this.state.items.find(i => i.id === selectedId);\r\n this.setState({\r\n selectedId,\r\n checkedIds,\r\n detailsItem,\r\n });\r\n this.setReadReceipt(detailsItem);\r\n };\r\n \r\n handleListModeChange = (listModeIsLine: boolean) => {\r\n this.setState({\r\n listModeIsLine,\r\n });\r\n };\r\n\r\n handleListModeToggle = (_event: React.MouseEvent, listModeIsLine: boolean) => {\r\n this.setState({\r\n listModeIsLine,\r\n });\r\n };\r\n\r\n // #region Edit dialog\r\n handleOpenLine = (id: string) => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, id));\r\n };\r\n\r\n handleAdd = () => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, Base.emptyGuid));\r\n };\r\n \r\n handleEditDialogOk = () => {\r\n //this.setState({\r\n // showEditDialog: false\r\n //});\r\n this.refreshList(false);\r\n this.props.onLoadPageData();\r\n };\r\n\r\n handleEditDialogCancel = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n this.refreshList();\r\n this.props.onLoadPageData();\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n this.setState(List.getEditDialogItemByIndexStateChange(this.state, index, () => this.searchItems({ ...this.state, page: this.state.page + 1 }, false, false, true)));\r\n };\r\n // #endregion Edit dialog\r\n\r\n printTask = async (id: string, rowAmount: number) => {\r\n const fileName = await AppUtils.callService(() => taskService.getTaskPrint(this.props.companyId, id, rowAmount));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.PrintParameterDownloaded, fileName));\r\n this.setState({ showTaskPrintDialog: false });\r\n };\r\n\r\n handlePrint = async () => {\r\n const state = this.state;\r\n if (!state.selectedId) return;\r\n const item = this.state.items.find(i => i.id === state.selectedId);\r\n if (!item) return;\r\n if (item.taskRepetitionType === TaskRepetitionType.Repeated) {\r\n this.setState({ showTaskPrintDialog: true });\r\n } else {\r\n this.printTask(state.selectedId, 0);\r\n }\r\n };\r\n\r\n handleEmptyTrashBin = async () => {\r\n const props = this.props;\r\n if (await AppUtils.showConfirmationDialog(Translations.EmptyTaskTrashBinConfirmation, false) === ConfirmationDialogResult.Yes) {\r\n const result = await AppUtils.callService(() => taskService.emptyTrashBin(props.companyId));\r\n if (!result) return;\r\n this.refreshList();\r\n }\r\n };\r\n\r\n handleRestoreFromTrashBin = async () => {\r\n const state = this.state;\r\n if (!state.selectedId) return;\r\n const result = await AppUtils.callService(() => taskService.restoreTaskFromTrashBin(this.props.companyId, state.selectedId));\r\n if (!result) return;\r\n this.refreshList(false);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const MyListContainer: React.ElementType = !props.thrashBin\r\n ? ListContainer\r\n : DialogListContainer;\r\n return (\r\n <>\r\n
    \r\n {!props.thrashBin &&\r\n \r\n \r\n {Translations.TrashBin}\r\n \r\n {props.canCreateTasks &&\r\n \r\n {Translations.AddTask}\r\n \r\n }\r\n props.onChangeShowDocumentPreview(!props.showDocumentPreview)} style={{ marginLeft: \"24px\", padding: \"7px\" }} />\r\n \r\n }\r\n \r\n {!props.thrashBin &&\r\n <>\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n }\r\n {props.thrashBin &&\r\n \r\n }\r\n rightItems={\r\n <>\r\n \r\n {props.sessionState.isCompanyAdmin &&\r\n \r\n {Translations.EmptyTaskTrashBin}\r\n \r\n }\r\n \r\n {Translations.RestoreTaskFromTrashBin}\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n }\r\n {\r\n return {\r\n columns: [\r\n { size: 2, content: this.handleOpenLine(item.id)}>{item.unitCode ? item.unitCode : Translations.Private} },\r\n { size: 1, content: Base.timeToDateStr(item.modifyUser.date), hidden: props.showDocumentPreview },\r\n { size: !props.showDocumentPreview ? 1 : 2, content: item.typeCode },\r\n { size: !props.showDocumentPreview ? 2 : 3, content: },\r\n { size: !props.showDocumentPreview ? 1 : 2, content: item.priorityCode },\r\n { size: 3, content: item.name },\r\n { size: 2, content: , hidden: props.showDocumentPreview }\r\n ],\r\n id: item.id\r\n };\r\n })\r\n : null\r\n }\r\n cards={!state.listModeIsLine\r\n ? state.items.map((item) => {\r\n return {\r\n sm: 4,\r\n rows: [\r\n {\r\n cols: [\r\n {\r\n size: 6,\r\n title: Translations.Code,\r\n value:
    this.handleOpenLine(item.id)}>{item.unitCode}
    \r\n },\r\n { size: 6, title: Translations.ModifyDate, value: Base.timeToDateStr(item.modifyUser.date) }\r\n ]\r\n },\r\n {\r\n cols: [\r\n { title: Translations.Title, value: item.name },\r\n ]\r\n },\r\n {\r\n cols: [\r\n { size: 6, title: Translations.State, value: },\r\n { size: 6, title: Translations.Unit, value: item.unitCode ? item.unitCode : Translations.Private }\r\n ]\r\n },\r\n {\r\n cols: [\r\n { size: 6, title: Translations.Form, value: item.typeCode },\r\n { size: 6, title: Translations.Priority, value: item.priorityCode },\r\n ]\r\n }],\r\n id: item.id\r\n };\r\n })\r\n : null\r\n }\r\n lineDetails={state.detailsItem && !props.showDocumentPreview\r\n ? \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n i.code), \", \")} />\r\n \r\n \r\n \r\n \r\n this.handleOpenLine(state.selectedId)}\r\n />\r\n \r\n : null}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpenLine}\r\n />\r\n {(state.showEditDialog && !!state.editDialogId) &&\r\n this.refreshList(false)}\r\n onPrevious={() => List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n />\r\n }\r\n {state.showTaskPrintDialog &&\r\n this.printTask(state.selectedId, rowAmount)}\r\n onClose={() => this.setState({ showTaskPrintDialog: false })}\r\n />\r\n }\r\n
    \r\n
    \r\n {props.showDocumentPreview &&\r\n props.onChangeShowDocumentPreview(false)}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","// TaskReportList - MODULE\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ReportType } from \"ui/Scripts/source/models/enums\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IReportItem } from \"../../../models/report/reportItem\";\r\nimport { IReportParameterValue } from \"../../../models/report/reportParameterValue\";\r\nimport * as taskService from \"../../../models/services/taskService\";\r\nimport { ITaskGeneralFilter, ITaskPageFilterState, TaskPageDashboardChart } from \"../TaskPageDashboardChart\";\r\nimport { IReportGenerated2, ReportGenerated2 } from \"source/models/report/reportGenerated2\";\r\nimport { PageReport } from \"source/components/framework/Report/PageReport\";\r\n\r\n// TaskPageReport\r\nexport interface ITaskPageReportProp extends ITaskPageFilterState {\r\n companyId: string;\r\n reports: IReportItem[];\r\n reportId: string;\r\n dataId?: string;\r\n onSetSortData: (sortColumn: string, sortOrderIsAsc: boolean) => void;\r\n}\r\n\r\ninterface ITaskPageReportSearchFilter extends ITaskGeneralFilter {\r\n report: IReportItem;\r\n}\r\n\r\ninterface ITaskPageReportState extends ITaskPageReportSearchFilter {\r\n isLoading: boolean;\r\n intialized: boolean;\r\n report: IReportItem;\r\n reportGenerated: IReportGenerated2;\r\n reportDataUri: string;\r\n}\r\n\r\nexport class TaskPageReport extends React.Component {\r\n parameterValues: IReportParameterValue[] = [];\r\n\r\n constructor(props: ITaskPageReportProp) {\r\n super(props);\r\n const report = props.reportId ? props.reports.find(i => i.id === props.reportId) : null;\r\n this.parameterValues = report ? report.getReportParameterValues() : [];\r\n const generalFilterValues = TaskPageDashboardChart.getGeneralFilterFromState(props);\r\n this.state = {\r\n ...generalFilterValues,\r\n isLoading: false,\r\n intialized: false,\r\n reportGenerated: null,\r\n reportDataUri: \"\",\r\n report: props.reportId ? props.reports.find(i => i.id === props.reportId) : null,\r\n };\r\n }\r\n\r\n createReport = async (searchFilter: ITaskPageReportSearchFilter) => {\r\n const props = this.props;\r\n if (!searchFilter.report) return;\r\n let reportGenerated: ReportGenerated2 = null;\r\n if (searchFilter.report.type !== ReportType.Html) {\r\n this.setState({ isLoading: true });\r\n reportGenerated = await AppUtils.callService(() => taskService.getReportGenerated(props.companyId, searchFilter.report.reportId, searchFilter.report.title, false,\r\n searchFilter.unitIds, searchFilter.stateIds, searchFilter.priorityIds, searchFilter.taskTypeIds, searchFilter.handlerUserCodes,\r\n searchFilter.taskTypeHeaderFields, searchFilter.taskTypeFields, this.parameterValues), false, false, () => { this.setState({ isLoading: false }); });\r\n if (!reportGenerated) return;\r\n }\r\n const reportBlob = searchFilter.report.type === ReportType.Pdf && reportGenerated && reportGenerated.content\r\n ? Base.base64ToBlob(reportGenerated.content, reportGenerated.mediaType)\r\n : null;\r\n const reportDataUri = reportBlob\r\n ? await Base.blobToBase64(reportBlob)\r\n : \"\";\r\n this.setState({\r\n ...searchFilter,\r\n intialized: true,\r\n reportGenerated,\r\n reportDataUri\r\n });\r\n };\r\n\r\n componentDidMount(): void {\r\n this.createReport(this.state);\r\n }\r\n\r\n componentDidUpdate(prevProps: ITaskPageReportProp, prevState: ITaskPageReportState) {\r\n const props = this.props;\r\n const prevDataId = prevProps.dataId ? prevProps.dataId : \"\";\r\n const dataId = props.dataId ? props.dataId : \"\";\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n const prevReportId = prevProps.reportId ? prevProps.reportId : \"\";\r\n const reportId = props.reportId ? props.reportId : \"\";\r\n const filterStateChange = TaskPageDashboardChart.getTaskGeneralFilterChange(prevProps, props);\r\n const report = props.reportId ? props.reports.find(i => i.id === props.reportId) : null;\r\n const parameterValues = report ? report.getReportParameterValues() : [];\r\n if (dataId === prevDataId && companyId === prevCompanyId && reportId === prevReportId &&\r\n filterStateChange.notChanged &&\r\n Base.equalStrArrays(prevProps.reports ? prevProps.reports.map(i => i.id) : [], props.reports ? props.reports.map(i => i.id) : []) &&\r\n JSON.stringify(this.parameterValues) === JSON.stringify(parameterValues)) return;\r\n this.parameterValues = parameterValues;\r\n this.createReport({ ...filterStateChange, report: reportId ? props.reports.find(i => i.id === reportId) : null });\r\n }\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n );\r\n }\r\n}","import { Box, Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../../../framework/appUtils\";\r\nimport * as store from \"../../../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../../../framework/saveData\";\r\nimport * as taskService from \"../../../../../models/services/taskService\";\r\nimport * as storeActions from \"../../../../../models/store/storeActions\";\r\nimport { Dialog } from \"../../../../framework/Dialog/Dialog\";\r\nimport { DialogItemsNav } from \"../../../../framework/Dialog/DialogItemsNav\";\r\nimport { FormField } from \"../../../../framework/FormField\";\r\nimport { GridRow } from \"../../../../framework/Grid/GridRow\";\r\nimport { ModifyUserInfo } from \"../../../../framework/User/ModifyUserInfo\";\r\nimport { FormCheckBox } from \"source/components/framework/FormCheckBox\";\r\nimport { ITaskPriorityEditItem } from \"source/models/taskPriority/taskPriorityEditItem\";\r\nimport { DialogButtons } from \"source/components/framework/Dialog/DialogButtons\";\r\n\r\nexport interface ITaskPriorityDialogProp {\r\n classes?: string;\r\n id: string;\r\n companyId: string;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onOk: () => void;\r\n onCancel: () => void;\r\n onRemove: (ids: string[]) => Promise;\r\n onRefreshList: () => Promise;\r\n}\r\n\r\nexport interface ITaskPriorityDialogState {\r\n code: string;\r\n comment: string;\r\n sortOrder: string;\r\n activeState: number;\r\n \r\n item: ITaskPriorityEditItem;\r\n rowId: string;\r\n}\r\n\r\nexport class TaskPriorityDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: ITaskPriorityDialogProp) {\r\n super(props);\r\n this.state = {\r\n item: null,\r\n code: \"\",\r\n comment: \"\",\r\n sortOrder: \"0\",\r\n activeState: 0,\r\n rowId: \"\",\r\n };\r\n }\r\n\r\n loadData = async () => {\r\n const props = this.props;\r\n const result = await AppUtils.callService(() => taskService.getTaskPriorityEdit(props.companyId, props.id), false);\r\n if (!result) return;\r\n const item = result.item;\r\n const state = {\r\n ...this.state,\r\n item,\r\n code: item.code,\r\n comment: item.comment,\r\n sortOrder: item.sortOrder.toString(10),\r\n activeState: item.activeState,\r\n rowId: item.rowId\r\n };\r\n this.setState(state);\r\n const saveData = this.getSaveDataFromState(this.props, state);\r\n this.orgStateHash = saveData.hash;\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadData();\r\n }\r\n\r\n async componentDidUpdate(prevProps: ITaskPriorityDialogProp, prevState: ITaskPriorityDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if (prevProps.companyId === props.companyId && prevProps.id === props.id) return;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb()) return;\r\n props.onRefreshList();\r\n }\r\n this.loadData();\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"code\") {\r\n this.setState({ code: value });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n } else if (name === \"sortOrder\") {\r\n this.setState({ sortOrder: value });\r\n }\r\n };\r\n\r\n getSaveDataFromState = (props: ITaskPriorityDialogProp, state: ITaskPriorityDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.item.id);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"code\", state.code);\r\n result.append(\"comment\", state.comment);\r\n result.append(\"sortOrder\", state.sortOrder.toInteger());\r\n result.append(\"activeState\", state.activeState);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.code) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.NameMustBeDefined));\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n return !!(await AppUtils.callService(() => taskService.saveTaskPriorityEdit(saveData.obj)));\r\n };\r\n\r\n handleSave = async () => {\r\n if (!await this.saveToDb()) return;\r\n this.props.onOk();\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.item.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveTaskPriorityParameter, state.item.code), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await props.onRemove([state.item.id]);\r\n if (!result) return;\r\n props.onOk();\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut(this.getSaveDataFromState(props, this.state).hash, this.orgStateHash, this.saveToDb, props.onRefreshList);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.item) return null;\r\n const isNew = state.item.isNew();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n  } fullWidth>\r\n 0}\r\n onChange={(checked: boolean) => { this.setState({ activeState: checked ? 1 : 0 }); }}\r\n />\r\n \r\n \r\n \r\n {!isNew &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { infiniteListPageSize } from \"../../../../models/common/webConsts\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport * as taskService from \"../../../../models/services/taskService\";\r\nimport { IListUsingComponentState, List } from \"../../../framework/List/List\";\r\nimport { SaveDataObj } from \"source/framework/saveData\";\r\nimport { DialogSettingsCard } from \"source/components/framework/Container/DialogSettingsCard\";\r\nimport { ActionContainer } from \"source/components/framework/ActionContainer\";\r\nimport { ListSearchFilter } from \"source/components/framework/List/ListSearchFilter\";\r\nimport { ListIconButtonsItem } from \"source/components/framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { ITaskPriorityListItem } from \"source/models/taskPriority/taskPriorityListItem\";\r\nimport { TaskPriorityDialog } from \"./TaskPriorityDialog\";\r\nimport { ListLinkValue } from \"source/components/framework/List/ListLinkValue\";\r\nimport { ListStateIconSuccess } from \"source/components/framework/List/ListStateIconSuccess\";\r\n\r\nexport interface ITaskPriorityListProp {\r\n companyId: string;\r\n}\r\n\r\ninterface ITaskPriorityListState extends IListUsingComponentState {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n pageSize: number;\r\n page: number;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n checkedIds: string[];\r\n}\r\n\r\nexport class TaskPriorityList extends React.Component {\r\n constructor(props: ITaskPriorityListProp) {\r\n super(props);\r\n this.state = {\r\n intialized: false,\r\n isLoading: false,\r\n page: 1,\r\n hasMore: true,\r\n filter: \"\",\r\n pageSize: infiniteListPageSize,\r\n sortColumn: \"activeState\",\r\n sortOrderIsAsc: false,\r\n items: [],\r\n selectedId: null,\r\n checkedIds: [],\r\n showEditDialog: false,\r\n editDialogId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false,\r\n detailsItem: null\r\n };\r\n }\r\n\r\n searchItems = async (pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean, moveNext: boolean = false, setEditDialogData: boolean = true) => {\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => taskService.getTaskPriorityListItems(this.props.companyId, !refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1, filter, sortColumn, sortOrderIsAsc), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const state = this.state;\r\n const items = List.getListItems(state.items, state.selectedId, state.checkedIds, result.items, resetItems, refreshList);\r\n let selectedId = items.selectedId;\r\n let index = items.items.findIndex(i => i.id === selectedId);\r\n let selectedItem = index > -1 ? items.items[index] : null;\r\n if (moveNext && selectedItem && index < items.items.length - 1) {\r\n index = index + 1;\r\n selectedItem = items.items[index];\r\n selectedId = items.items[index].id;\r\n }\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n selectedId,\r\n checkedIds: items.checkedIds,\r\n editDialogId: setEditDialogData ? (moveNext && selectedItem ? selectedItem.id : \"\") : state.editDialogId,\r\n editDialogHasPrevious: setEditDialogData ? index > 0 : state.editDialogHasPrevious,\r\n editDialogHasNext: setEditDialogData ? (index < items.items.length - 1 || result.hasMore) : state.editDialogHasNext,\r\n });\r\n };\r\n\r\n refreshList = async (setEducationDialogData: boolean = true) => {\r\n const state = this.state;\r\n await this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, true, false, setEducationDialogData);\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: ITaskPriorityListProp, prevState: ITaskPriorityListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n if (companyId === prevCompanyId) return;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n handleAdd = () => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, Base.emptyGuid));\r\n };\r\n\r\n handleOpenLine = (id: string) => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, id));\r\n };\r\n\r\n handleEditDialogOk = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n this.refreshList();\r\n };\r\n\r\n handleEditDialogCancel = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n };\r\n\r\n getRemoveSaveData = (props: ITaskPriorityListProp, ids: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"ids\", ids);\r\n return result;\r\n };\r\n\r\n remove = async (ids: string[]): Promise => {\r\n const props = this.props;\r\n if (ids.length < 1) return;\r\n const saveData = this.getRemoveSaveData(props, ids);\r\n // Call server\r\n const result = await AppUtils.callService(() => taskService.removeTaskPriorities(saveData.obj));\r\n if (!result) return null;\r\n this.refreshList();\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n const selectedItems = state.items.filter(i => selectedIds.indexOf(i.id) > -1);\r\n if (selectedItems.length < 1) return;\r\n if (await AppUtils.showConfirmationDialog(selectedItems.length > 1\r\n ? Translations.DoYouReallyWantToRemoveSelectedTaskPriorities\r\n : String.format(Translations.DoYouReallyWantToRemoveTaskPriorityParameter, selectedItems[0].code), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n this.remove(selectedIds);\r\n }\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n this.setState(List.getEditDialogItemByIndexStateChange(state, index, () => this.searchItems(state.pageSize, state.page + 1, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false, true)));\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n }\r\n rightItems={\r\n this.handleOpenLine(state.selectedId)}\r\n onRemove={this.handleRemove}\r\n />\r\n }\r\n />\r\n }\r\n content={\r\n {\r\n return {\r\n columns: [\r\n { size: 5, content: this.handleOpenLine(item.id)}>{item.code} },\r\n { size: 5, content: item.comment },\r\n { size: 2, content: item.activeState < 1 ? null : }\r\n ],\r\n id: item.id,\r\n classes: item.activeState < 1 ? \"disabled\" : \"\"\r\n };\r\n })}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpenLine}\r\n />\r\n } />\r\n {(state.showEditDialog && !!state.editDialogId) &&\r\n this.refreshList(false)}\r\n onPrevious={() => List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","import { Box, Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult, TaskStateEditabilityType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../../../framework/appUtils\";\r\nimport * as store from \"../../../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../../../framework/saveData\";\r\nimport * as taskService from \"../../../../../models/services/taskService\";\r\nimport * as storeActions from \"../../../../../models/store/storeActions\";\r\nimport { Dialog } from \"../../../../framework/Dialog/Dialog\";\r\nimport { DialogItemsNav } from \"../../../../framework/Dialog/DialogItemsNav\";\r\nimport { FormField } from \"../../../../framework/FormField\";\r\nimport { GridRow } from \"../../../../framework/Grid/GridRow\";\r\nimport { ModifyUserInfo } from \"../../../../framework/User/ModifyUserInfo\";\r\nimport { ITaskStateEditItem } from \"source/models/taskState/taskStateEditItem\";\r\nimport { FormCheckBox } from \"source/components/framework/FormCheckBox\";\r\nimport { ColorPicker } from \"source/components/framework/ColorPicker/ColorPicker\";\r\nimport { DialogButtons } from \"source/components/framework/Dialog/DialogButtons\";\r\n\r\nexport interface ITaskStateDialogProp {\r\n classes?: string;\r\n id: string;\r\n companyId: string;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onOk: () => void;\r\n onCancel: () => void;\r\n onRemove: (ids: string[]) => Promise;\r\n onRefreshList: () => Promise;\r\n}\r\n\r\nexport interface ITaskStateDialogState {\r\n code: string;\r\n comment: string;\r\n color: string;\r\n sortOrder: string;\r\n editabilityType: TaskStateEditabilityType;\r\n activeState: number;\r\n \r\n item: ITaskStateEditItem;\r\n rowId: string;\r\n}\r\n\r\nexport class TaskStateDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: ITaskStateDialogProp) {\r\n super(props);\r\n this.state = {\r\n item: null,\r\n code: \"\",\r\n comment: \"\",\r\n color: \"\",\r\n sortOrder: \"0\",\r\n editabilityType: TaskStateEditabilityType.Editable,\r\n activeState: 0,\r\n rowId: \"\",\r\n };\r\n }\r\n\r\n loadData = async () => {\r\n const props = this.props;\r\n const result = await AppUtils.callService(() => taskService.getTaskStateEdit(props.companyId, props.id), false);\r\n if (!result) return;\r\n const item = result.item;\r\n const state = {\r\n ...this.state,\r\n item,\r\n code: item.code,\r\n comment: item.comment,\r\n color: item.color,\r\n sortOrder: item.sortOrder.toString(10),\r\n editabilityType: item.editabilityType,\r\n activeState: item.activeState,\r\n rowId: item.rowId\r\n };\r\n this.setState(state);\r\n const saveData = this.getSaveDataFromState(this.props, state);\r\n this.orgStateHash = saveData.hash;\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadData();\r\n }\r\n\r\n async componentDidUpdate(prevProps: ITaskStateDialogProp, prevState: ITaskStateDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if (prevProps.companyId === props.companyId && prevProps.id === props.id) return;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb()) return;\r\n props.onRefreshList();\r\n }\r\n this.loadData();\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"code\") {\r\n this.setState({ code: value });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n } else if (name === \"sortOrder\") {\r\n this.setState({ sortOrder: value });\r\n }\r\n };\r\n\r\n getSaveDataFromState = (props: ITaskStateDialogProp, state: ITaskStateDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.item.id);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"code\", state.code);\r\n result.append(\"comment\", state.comment);\r\n result.append(\"color\", state.color);\r\n result.append(\"sortOrder\", state.sortOrder.toInteger());\r\n result.append(\"editabilityType\", state.editabilityType);\r\n result.append(\"activeState\", state.activeState);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.code) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.NameMustBeDefined));\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n return !!(await AppUtils.callService(() => taskService.saveTaskStateEdit(saveData.obj)));\r\n };\r\n\r\n handleSave = async () => {\r\n if (!await this.saveToDb()) return;\r\n this.props.onOk();\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.item.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveTaskStateParameter, state.item.code), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await props.onRemove([state.item.id]);\r\n if (!result) return;\r\n props.onOk();\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut(this.getSaveDataFromState(props, this.state).hash, this.orgStateHash, this.saveToDb, props.onRefreshList);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.item) return null;\r\n const isNew = state.item.isNew();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ color })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n  } fullWidth>\r\n TaskStateEditabilityType.Editable}\r\n onChange={(checked: boolean) => { this.setState({ editabilityType: checked ? TaskStateEditabilityType.Locked : TaskStateEditabilityType.Editable }); }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n 0}\r\n onChange={(checked: boolean) => { this.setState({ activeState: checked ? 1 : 0 }); }}\r\n />\r\n \r\n \r\n \r\n {!isNew &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { infiniteListPageSize } from \"../../../../models/common/webConsts\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport * as taskService from \"../../../../models/services/taskService\";\r\nimport { IListUsingComponentState, List } from \"../../../framework/List/List\";\r\nimport { SaveDataObj } from \"source/framework/saveData\";\r\nimport { DialogSettingsCard } from \"source/components/framework/Container/DialogSettingsCard\";\r\nimport { ActionContainer } from \"source/components/framework/ActionContainer\";\r\nimport { ListSearchFilter } from \"source/components/framework/List/ListSearchFilter\";\r\nimport { ListIconButtonsItem } from \"source/components/framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { TaskStateListChip } from \"../../TaskStateListChip\";\r\nimport { ITaskStateListItem } from \"source/models/taskState/taskStateListItem\";\r\nimport { TaskStateDialog } from \"./TaskStateDialog\";\r\nimport { ListStateIconSuccess } from \"source/components/framework/List/ListStateIconSuccess\";\r\n\r\nexport interface ITaskStateListProp {\r\n companyId: string;\r\n}\r\n\r\ninterface ITaskStateListState extends IListUsingComponentState {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n pageSize: number;\r\n page: number;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n checkedIds: string[];\r\n}\r\n\r\nexport class TaskStateList extends React.Component {\r\n constructor(props: ITaskStateListProp) {\r\n super(props);\r\n this.state = {\r\n intialized: false,\r\n isLoading: false,\r\n page: 1,\r\n hasMore: true,\r\n filter: \"\",\r\n pageSize: infiniteListPageSize,\r\n sortColumn: \"activeState\",\r\n sortOrderIsAsc: false,\r\n items: [],\r\n selectedId: null,\r\n checkedIds: [],\r\n showEditDialog: false,\r\n editDialogId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false,\r\n detailsItem: null\r\n };\r\n }\r\n\r\n searchItems = async (pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean, moveNext: boolean = false, setEditDialogData: boolean = true) => {\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => taskService.getTaskStateListItems(this.props.companyId, !refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1, filter, sortColumn, sortOrderIsAsc), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const state = this.state;\r\n const items = List.getListItems(state.items, state.selectedId, state.checkedIds, result.items, resetItems, refreshList);\r\n let selectedId = items.selectedId;\r\n let index = items.items.findIndex(i => i.id === selectedId);\r\n let selectedItem = index > -1 ? items.items[index] : null;\r\n if (moveNext && selectedItem && index < items.items.length - 1) {\r\n index = index + 1;\r\n selectedItem = items.items[index];\r\n selectedId = items.items[index].id;\r\n }\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n selectedId,\r\n checkedIds: items.checkedIds,\r\n editDialogId: setEditDialogData ? (moveNext && selectedItem ? selectedItem.id : \"\") : state.editDialogId,\r\n editDialogHasPrevious: setEditDialogData ? index > 0 : state.editDialogHasPrevious,\r\n editDialogHasNext: setEditDialogData ? (index < items.items.length - 1 || result.hasMore) : state.editDialogHasNext,\r\n });\r\n };\r\n\r\n refreshList = async (setEducationDialogData: boolean = true) => {\r\n const state = this.state;\r\n await this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, true, false, setEducationDialogData);\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: ITaskStateListProp, prevState: ITaskStateListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n if (companyId === prevCompanyId) return;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n handleAdd = () => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, Base.emptyGuid));\r\n };\r\n\r\n handleOpenLine = (id: string) => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, id));\r\n };\r\n\r\n handleEditDialogOk = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n this.refreshList();\r\n };\r\n\r\n handleEditDialogCancel = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n };\r\n\r\n getRemoveSaveData = (props: ITaskStateListProp, ids: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"ids\", ids);\r\n return result;\r\n };\r\n\r\n remove = async (ids: string[]): Promise => {\r\n const props = this.props;\r\n if (ids.length < 1) return;\r\n const saveData = this.getRemoveSaveData(props, ids);\r\n // Call server\r\n const result = await AppUtils.callService(() => taskService.removeTaskStates(saveData.obj));\r\n if (!result) return null;\r\n this.refreshList();\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n const selectedItems = state.items.filter(i => selectedIds.indexOf(i.id) > -1);\r\n if (selectedItems.length < 1) return;\r\n if (await AppUtils.showConfirmationDialog(selectedItems.length > 1\r\n ? Translations.DoYouReallyWantToRemoveSelectedTaskStates\r\n : String.format(Translations.DoYouReallyWantToRemoveTaskStateParameter, selectedItems[0].code), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n this.remove(selectedIds);\r\n }\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n this.setState(List.getEditDialogItemByIndexStateChange(state, index, () => this.searchItems(state.pageSize, state.page + 1, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false, true)));\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n }\r\n rightItems={\r\n this.handleOpenLine(state.selectedId)}\r\n onRemove={this.handleRemove}\r\n />\r\n }\r\n />\r\n }\r\n content={\r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 5,\r\n content: this.handleOpenLine(item.id)}\r\n />\r\n },\r\n { size: 5, content: item.comment },\r\n { size: 2, content: item.activeState < 1 ? null : }\r\n ],\r\n id: item.id,\r\n classes: item.activeState < 1 ? \"disabled\" : \"\"\r\n };\r\n })}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpenLine}\r\n />\r\n } />\r\n {(state.showEditDialog && !!state.editDialogId) &&\r\n this.refreshList(false)}\r\n onPrevious={() => List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","import { Box, ListItemButton, ListItemIcon, ListItemText } from \"@mui/material\";\r\nimport React, { ReactNode } from \"react\";\r\nimport { Draggable } from \"react-beautiful-dnd\";\r\nimport { TaskDataRowDataType } from \"ui/Scripts/source/models/enums\";\r\nimport { ITaskTypeCol, TaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum TaskFormDesignerComponentType {\r\n Title1 = \"title1\",\r\n Title2 = \"title2\",\r\n Title3 = \"title3\",\r\n Title4 = \"title4\",\r\n NormalText = \"title5\",\r\n TextInput = \"textInput\",\r\n TextArea = \"textArea\",\r\n Date = \"date\",\r\n Time = \"time\",\r\n TimeSpan = \"timeSpan\",\r\n // DateTime = \"dateTime\",\r\n Checkbox = \"checkbox\",\r\n // Radio = \"radio\",\r\n Dropdown = \"dropdown\",\r\n Decimal = \"decimal\",\r\n Integer = \"integer\",\r\n NumberCalculated = \"numberCalculated\",\r\n IntegerCalculated = \"integerCalculated\",\r\n // Attachment = \"attachment\",\r\n LineBreak = \"lineBreak\",\r\n EmptyArea = \"emptyArea\",\r\n // PageBreak = \"pageBreak\",\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum TaskFormDesignerSectionType {\r\n Title = \"title\",\r\n TextInput = \"textInput\",\r\n DateAndTime = \"dateAndTime\",\r\n Boolean = \"boolean\",\r\n Dropdown = \"dropdown\",\r\n Number = \"number\",\r\n Calculated = \"calculated\",\r\n Break = \"break\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\nconst ListItemButtonContent = ({\r\n componentType,\r\n title,\r\n icon,\r\n classes\r\n}: TaskFormDesignComponentPickerItemProps) => {\r\n const isLabel = componentType === TaskFormDesignerComponentType.Title1 ||\r\n componentType === TaskFormDesignerComponentType.Title2 ||\r\n componentType === TaskFormDesignerComponentType.Title3 ||\r\n componentType === TaskFormDesignerComponentType.Title4 ||\r\n componentType === TaskFormDesignerComponentType.NormalText;\r\n return (\r\n <>\r\n {icon}\r\n {isLabel\r\n ? (
    \r\n {title}\r\n
    )\r\n : ({title})\r\n }\r\n \r\n );\r\n};\r\n\r\nexport interface TaskFormDesignComponentPickerItemProps {\r\n componentType: TaskFormDesignerComponentType;\r\n index: number;\r\n title: string;\r\n icon: ReactNode;\r\n classes?: string;\r\n section: TaskFormDesignerSectionType;\r\n}\r\n\r\nexport const getRenderItem =\r\n (items: TaskFormDesignComponentPickerItemProps[]) =>\r\n // eslint-disable-next-line react/display-name\r\n (provided, _snapshot, rubric) =>\r\n (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\nexport const TaskFormDesignComponentPickerItem = (props: TaskFormDesignComponentPickerItemProps) => {\r\n const renderItem = getRenderItem([props]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {renderItem}\r\n \r\n \r\n );\r\n};\r\n\r\nexport const getTaskFormDesignerComponentType = (taskTypeCol: ITaskTypeCol): TaskFormDesignerComponentType => {\r\n const classes = taskTypeCol.class;\r\n const isTextAreaComponent = taskTypeCol.dataType === TaskDataRowDataType.String && taskTypeCol?.maxLength > 499;\r\n const isDropdown = taskTypeCol.options?.length > 0 || taskTypeCol?.idOptions?.length > 0;\r\n const isCalulatedField = TaskTypeCol.isCalculatedField(taskTypeCol);\r\n if (taskTypeCol.dataType === TaskDataRowDataType.Label) {\r\n return classes.includes(\"eLabel\")\r\n ? TaskFormDesignerComponentType.Title1\r\n : (classes.includes(\"lLabel\")\r\n ? TaskFormDesignerComponentType.Title2\r\n : (classes.includes(\"mLabel\")\r\n ? TaskFormDesignerComponentType.Title3\r\n : (classes.includes(\"sLabel\")\r\n ? TaskFormDesignerComponentType.Title4\r\n : (taskTypeCol.title\r\n ? TaskFormDesignerComponentType.NormalText\r\n : TaskFormDesignerComponentType.EmptyArea\r\n ))));\r\n }\r\n if (taskTypeCol.dataType === TaskDataRowDataType.String) {\r\n return !isDropdown\r\n ? (isTextAreaComponent\r\n ? TaskFormDesignerComponentType.TextArea\r\n : TaskFormDesignerComponentType.TextInput)\r\n : TaskFormDesignerComponentType.Dropdown;\r\n }\r\n if (taskTypeCol.dataType === TaskDataRowDataType.Number) {\r\n return !isCalulatedField\r\n ? TaskFormDesignerComponentType.Decimal\r\n : TaskFormDesignerComponentType.NumberCalculated;\r\n }\r\n if (taskTypeCol.dataType === TaskDataRowDataType.Integer) {\r\n return !isCalulatedField\r\n ? TaskFormDesignerComponentType.Integer\r\n : TaskFormDesignerComponentType.IntegerCalculated;\r\n }\r\n if (taskTypeCol.dataType === TaskDataRowDataType.Date) {\r\n return TaskFormDesignerComponentType.Date;\r\n }\r\n if (taskTypeCol.dataType === TaskDataRowDataType.Time) {\r\n return TaskFormDesignerComponentType.Time;\r\n }\r\n if (taskTypeCol.dataType === TaskDataRowDataType.TimeSpan) {\r\n return TaskFormDesignerComponentType.TimeSpan;\r\n }\r\n if (taskTypeCol.dataType === TaskDataRowDataType.Boolean) {\r\n return TaskFormDesignerComponentType.Checkbox;\r\n }\r\n if (taskTypeCol.dataType === TaskDataRowDataType.LineBreak) {\r\n return TaskFormDesignerComponentType.LineBreak;\r\n }\r\n return TaskFormDesignerComponentType.TextInput;\r\n};\r\n\r\nexport const getTaskFormDesignerComponentTitle = (taskTypeCol: ITaskTypeCol) => {\r\n const designerComponentType = getTaskFormDesignerComponentType(taskTypeCol);\r\n switch (designerComponentType) {\r\n case TaskFormDesignerComponentType.Title1:\r\n return Translations.FormTitle1;\r\n case TaskFormDesignerComponentType.Title2:\r\n return Translations.FormTitle2;\r\n case TaskFormDesignerComponentType.Title3:\r\n return Translations.FormTitle3;\r\n case TaskFormDesignerComponentType.Title4:\r\n return Translations.FormTitle4;\r\n case TaskFormDesignerComponentType.NormalText:\r\n return Translations.FormNormalText;\r\n case TaskFormDesignerComponentType.TextArea:\r\n return Translations.FormTextArea;\r\n case TaskFormDesignerComponentType.TextInput:\r\n return Translations.FormTextInput;\r\n case TaskFormDesignerComponentType.Dropdown:\r\n return Translations.FormDropdown;\r\n case TaskFormDesignerComponentType.Decimal:\r\n return Translations.FormDecimalNumber;\r\n case TaskFormDesignerComponentType.Integer:\r\n return Translations.FormIntegerNumber;\r\n case TaskFormDesignerComponentType.NumberCalculated:\r\n return Translations.FormCalculatedDecimalNumber;\r\n case TaskFormDesignerComponentType.IntegerCalculated:\r\n return Translations.FormCalculatedIntegerNumber;\r\n case TaskFormDesignerComponentType.Date:\r\n return Translations.FormDate;\r\n case TaskFormDesignerComponentType.Time:\r\n return Translations.FormTime;\r\n case TaskFormDesignerComponentType.TimeSpan:\r\n return Translations.FormTimeSpan;\r\n case TaskFormDesignerComponentType.Checkbox:\r\n return Translations.FormCheckbox;\r\n case TaskFormDesignerComponentType.LineBreak:\r\n return Translations.FormLineBreak;\r\n case TaskFormDesignerComponentType.EmptyArea:\r\n return Translations.FormEmptyArea;\r\n default:\r\n return \"\";\r\n }\r\n};","import AccessTimeIcon from \"@mui/icons-material/AccessTime\";\r\nimport CalculateIcon from \"@mui/icons-material/Calculate\";\r\nimport InsertInvitationIcon from \"@mui/icons-material/InsertInvitation\";\r\nimport CheckBoxIcon from \"@mui/icons-material/CheckBox\";\r\nimport FontDownloadIcon from \"@mui/icons-material/FontDownload\";\r\nimport FormatListBulletedIcon from \"@mui/icons-material/FormatListBulleted\";\r\nimport NumbersIcon from \"@mui/icons-material/Numbers\";\r\nimport TitleOutlinedIcon from \"@mui/icons-material/TitleOutlined\";\r\nimport TimelapseIcon from \"@mui/icons-material/Timelapse\";\r\nimport DensityLargeIcon from \"@mui/icons-material/DensityLarge\";\r\nimport { Box, List, Typography } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Droppable } from \"react-beautiful-dnd\";\r\nimport { TaskDataRowDataType } from \"ui/Scripts/source/models/enums\";\r\nimport { TaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\nimport { getRenderItem, TaskFormDesignComponentPickerItem, TaskFormDesignComponentPickerItemProps, TaskFormDesignerComponentType, TaskFormDesignerSectionType } from \"./TaskFormDesignerComponentPickerItem\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { DialogSectionCard } from \"source/components/framework/Dialog/DialogSectionCard\";\r\nimport { IdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\n\r\nconst baseTaskType = {\r\n class: \"\",\r\n dataType: 0,\r\n decimals: 0,\r\n defaultNbr: null,\r\n defaultSortField: false,\r\n defaultSortOrderAsc: false,\r\n defaultStr: \"\",\r\n defaultExpression: \"\",\r\n expression: \"\",\r\n expressionFormat: \"\",\r\n expressionIndex: 0,\r\n field: \"\",\r\n idNodeOptions: [],\r\n idOptions: null,\r\n maxLength: null,\r\n maximum: null,\r\n minimum: null,\r\n options: [],\r\n placeholder: \"\",\r\n readOnly: false,\r\n readOnlyExpression: \"\",\r\n required: false,\r\n title: \"Tila\",\r\n unitTitle: \"\",\r\n useInFilter: false,\r\n};\r\n\r\ntype ComponentDefaultProp = {\r\n defaultProps: Partial;\r\n defaultValueStr?: string;\r\n}\r\n\r\ntype ComponentDefaultValue = {\r\n // eslint-disable-next-line no-unused-vars\r\n [key in TaskFormDesignerComponentType]: ComponentDefaultProp;\r\n}\r\n\r\nexport const componentDefaultValues: ComponentDefaultValue = {\r\n title1: {\r\n defaultProps: {\r\n dataType: TaskDataRowDataType.Label,\r\n class: \"col-md-12 col-12 fontBold eLabel\",\r\n title: Translations.FormTitle1\r\n }\r\n },\r\n title2: {\r\n defaultProps: {\r\n dataType: TaskDataRowDataType.Label,\r\n class: \"col-md-12 col-12 fontBold lLabel\",\r\n title: Translations.FormTitle2\r\n }\r\n },\r\n title3: {\r\n defaultProps: {\r\n dataType: TaskDataRowDataType.Label,\r\n class: \"col-md-12 col-12 fontBold mLabel\",\r\n title: Translations.FormTitle3\r\n }\r\n },\r\n title4: {\r\n defaultProps: {\r\n dataType: TaskDataRowDataType.Label,\r\n class: \"col-md-12 col-12 fontBold sLabel\",\r\n title: Translations.FormTitle4\r\n }\r\n },\r\n title5: {\r\n defaultProps: {\r\n dataType: TaskDataRowDataType.Label,\r\n class: \"col-md-12 col-12 fontNormal\",\r\n title: Translations.FormNormalText\r\n }\r\n },\r\n textInput: {\r\n defaultProps: {\r\n dataType: TaskDataRowDataType.String,\r\n class: \"col-md-6 col-6\",\r\n maxLength: 100,\r\n title: Translations.FormTextInput\r\n }\r\n },\r\n textArea: {\r\n defaultProps: {\r\n dataType: TaskDataRowDataType.String,\r\n class: \"col-md-12 col-12 sTextArea\",\r\n maxLength: 1000,\r\n title: Translations.FormTextArea\r\n }\r\n },\r\n date: {\r\n defaultProps: {\r\n dataType: TaskDataRowDataType.Date,\r\n class: \"col-md-6 col-6\",\r\n title: Translations.FormDate\r\n }\r\n },\r\n time: {\r\n defaultProps: {\r\n dataType: TaskDataRowDataType.Time,\r\n class: \"col-md-6 col-6\",\r\n title: Translations.FormTime\r\n }\r\n },\r\n timeSpan: {\r\n defaultProps: {\r\n dataType: TaskDataRowDataType.TimeSpan,\r\n class: \"col-md-6 col-6\",\r\n title: Translations.FormTimeSpan\r\n }\r\n },\r\n // dateTime: {\r\n // defaultProps: {\r\n // dataType: TaskDataRowDataType.DateTime,\r\n // class: \"col-md-3 col-6\",\r\n // }\r\n // },\r\n checkbox: {\r\n defaultProps: {\r\n dataType: TaskDataRowDataType.Boolean,\r\n class: \"col-md-6 col-6\",\r\n title: Translations.FormCheckbox\r\n }\r\n },\r\n dropdown: {\r\n defaultProps: {\r\n dataType: TaskDataRowDataType.String,\r\n class: \"col-md-6 col-6\",\r\n idOptions: [IdTitle.createIdTitleSimple(Translations.FormDropdownOption + \" 1\")],\r\n title: Translations.FormDropdown\r\n },\r\n defaultValueStr: Translations.FormDropdownOption + \" 1\",\r\n },\r\n decimal: {\r\n defaultProps: {\r\n dataType: TaskDataRowDataType.Number,\r\n class: \"col-md-6 col-6\",\r\n title: Translations.FormDecimalNumber,\r\n decimals: 2\r\n },\r\n },\r\n integer: {\r\n defaultProps: {\r\n dataType: TaskDataRowDataType.Integer,\r\n class: \"col-md-6 col-6\",\r\n title: Translations.FormIntegerNumber\r\n },\r\n },\r\n numberCalculated: {\r\n defaultProps: {\r\n dataType: TaskDataRowDataType.Number,\r\n class: \"col-md-6 col-6\",\r\n title: Translations.FormCalculatedDecimalNumber,\r\n readOnly: true,\r\n expression: \"1+1\"\r\n },\r\n },\r\n integerCalculated: {\r\n defaultProps: {\r\n dataType: TaskDataRowDataType.Integer,\r\n class: \"col-md-6 col-6\",\r\n title: Translations.FormCalculatedIntegerNumber,\r\n readOnly: true,\r\n expression: \"1+1\",\r\n //expressionFormat: \"minutesToDateStr(fieldValue)\"\r\n },\r\n },\r\n // attachment: {\r\n // defaultProps: {\r\n // dataType: TaskDataRowDataType.Attachment,\r\n // class: \"col-md-12 col-12\",\r\n // }\r\n // },\r\n lineBreak: {\r\n defaultProps: {\r\n dataType: TaskDataRowDataType.LineBreak,\r\n class: \"col-md-12 col-12\",\r\n }\r\n },\r\n emptyArea: {\r\n defaultProps: {\r\n dataType: TaskDataRowDataType.Label,\r\n class: \"col-md-6 col-6 fontNormal emptyLabel\"\r\n }\r\n },\r\n // pageBreak: {\r\n // defaultProps: {\r\n // dataType: TaskDataRowDataType.PageBreak,\r\n // class: \"col-md-12 col-12\",\r\n // }\r\n // },\r\n};\r\n\r\nexport const getComponentNameForNewIntance = (names: string[], componentType: TaskFormDesignerComponentType) => {\r\n const nameBase = TaskDataRowDataType[componentDefaultValues[componentType].defaultProps.dataType];\r\n let index = 1;\r\n while (names.find(item => item === nameBase + index) !== undefined) {\r\n index += 1;\r\n }\r\n return nameBase + index;\r\n};\r\n\r\nexport const getComponentTitleForNewIntance = (titles: string[], componentType: TaskFormDesignerComponentType) => {\r\n if (componentType === TaskFormDesignerComponentType.EmptyArea) return \"\";\r\n const defaultValues = componentDefaultValues[componentType];\r\n const titleBase = defaultValues.defaultProps.title ?? TaskDataRowDataType[defaultValues.defaultProps.dataType];\r\n let index = 1;\r\n while (titles.find(item => item === titleBase + \" \" + index) !== undefined) {\r\n index += 1;\r\n }\r\n return titleBase + \" \" + index;\r\n};\r\n\r\nexport const getComponentDefaultValueForNewIntance = (componentType: TaskFormDesignerComponentType): string => {\r\n const defaultValues = componentDefaultValues[componentType];\r\n return defaultValues.defaultValueStr ?? \"\";\r\n};\r\n\r\nexport const getTaskTypeCol = (componentType: TaskFormDesignerComponentType): TaskTypeCol => {\r\n const item = { ...baseTaskType, ...componentDefaultValues[componentType].defaultProps };\r\n return new TaskTypeCol({\r\n ...item,\r\n isSaveDataType: () => false,\r\n isSavedTaskDataField: () => false,\r\n canBeFiltered: () => false,\r\n });\r\n};\r\n\r\nconst pickerItems: TaskFormDesignComponentPickerItemProps[] = [\r\n {\r\n componentType: TaskFormDesignerComponentType.Title1,\r\n title: Translations.FormTitle1,\r\n icon: ,\r\n classes: \"eLabel\",\r\n index: 0,\r\n section: TaskFormDesignerSectionType.Title,\r\n },\r\n {\r\n componentType: TaskFormDesignerComponentType.Title2,\r\n title: Translations.FormTitle2,\r\n icon: ,\r\n classes: \"lLabel\",\r\n index: 1,\r\n section: TaskFormDesignerSectionType.Title,\r\n },\r\n {\r\n componentType: TaskFormDesignerComponentType.Title3,\r\n title: Translations.FormTitle3,\r\n icon: ,\r\n classes: \"mLabel\",\r\n index: 2,\r\n section: TaskFormDesignerSectionType.Title,\r\n },\r\n {\r\n componentType: TaskFormDesignerComponentType.Title4,\r\n title: Translations.FormTitle4,\r\n icon: ,\r\n classes: \"sLabel\",\r\n index: 3,\r\n section: TaskFormDesignerSectionType.Title,\r\n },\r\n {\r\n componentType: TaskFormDesignerComponentType.NormalText,\r\n title: Translations.FormNormalText,\r\n icon: ,\r\n classes: \"fontNormal\",\r\n index: 4,\r\n section: TaskFormDesignerSectionType.Title,\r\n },\r\n {\r\n componentType: TaskFormDesignerComponentType.TextInput,\r\n title: Translations.FormTextInput,\r\n icon: ,\r\n index: 5,\r\n section: TaskFormDesignerSectionType.TextInput,\r\n },\r\n {\r\n componentType: TaskFormDesignerComponentType.TextArea,\r\n title: Translations.FormTextArea,\r\n icon: ,\r\n index: 6,\r\n section: TaskFormDesignerSectionType.TextInput,\r\n },\r\n {\r\n componentType: TaskFormDesignerComponentType.Date,\r\n title: Translations.FormDate,\r\n icon: ,\r\n index: 7,\r\n section: TaskFormDesignerSectionType.DateAndTime,\r\n },\r\n {\r\n componentType: TaskFormDesignerComponentType.Time,\r\n title: Translations.FormTime,\r\n icon: ,\r\n index: 8,\r\n section: TaskFormDesignerSectionType.DateAndTime,\r\n },\r\n {\r\n componentType: TaskFormDesignerComponentType.TimeSpan,\r\n title: Translations.FormTimeSpan,\r\n icon: ,\r\n index: 9,\r\n section: TaskFormDesignerSectionType.DateAndTime,\r\n },\r\n {\r\n componentType: TaskFormDesignerComponentType.Checkbox,\r\n title: Translations.FormCheckbox,\r\n icon: ,\r\n index: 10,\r\n section: TaskFormDesignerSectionType.Boolean,\r\n },\r\n {\r\n componentType: TaskFormDesignerComponentType.Dropdown,\r\n title: Translations.FormDropdown,\r\n icon: ,\r\n index: 11,\r\n section: TaskFormDesignerSectionType.Dropdown,\r\n },\r\n {\r\n componentType: TaskFormDesignerComponentType.Decimal,\r\n title: Translations.FormDecimalNumber,\r\n icon: ,\r\n index: 12,\r\n section: TaskFormDesignerSectionType.Number,\r\n },\r\n {\r\n componentType: TaskFormDesignerComponentType.Integer,\r\n title: Translations.FormIntegerNumber,\r\n icon: ,\r\n index: 13,\r\n section: TaskFormDesignerSectionType.Number,\r\n },\r\n {\r\n componentType: TaskFormDesignerComponentType.NumberCalculated,\r\n title: Translations.FormCalculatedDecimalNumber,\r\n icon: ,\r\n index: 14,\r\n section: TaskFormDesignerSectionType.Calculated,\r\n },\r\n {\r\n componentType: TaskFormDesignerComponentType.IntegerCalculated,\r\n title: Translations.FormCalculatedIntegerNumber,\r\n icon: ,\r\n index: 15,\r\n section: TaskFormDesignerSectionType.Calculated,\r\n },\r\n {\r\n componentType: TaskFormDesignerComponentType.LineBreak,\r\n title: Translations.FormLineBreak,\r\n icon: ,\r\n index: 16,\r\n section: TaskFormDesignerSectionType.Break,\r\n },\r\n {\r\n componentType: TaskFormDesignerComponentType.EmptyArea,\r\n title: Translations.FormEmptyArea,\r\n icon: ,\r\n index: 17,\r\n section: TaskFormDesignerSectionType.Break\r\n }\r\n];\r\n\r\nexport const TaskFormDesignComponentPicker = () => {\r\n const renderItems = getRenderItem(pickerItems);\r\n\r\n return (\r\n \r\n \r\n {(provided, _snapshot) => (\r\n \r\n \r\n {Translations.FormTitles}\r\n \r\n {pickerItems.filter(item => item.section === TaskFormDesignerSectionType.Title).map((item) => (\r\n \r\n ))}\r\n \r\n {Translations.FormTextInputs}\r\n \r\n {pickerItems.filter(item => item.section === TaskFormDesignerSectionType.TextInput).map((item) => (\r\n \r\n ))}\r\n \r\n {Translations.FormDatesAndTimes}\r\n \r\n {pickerItems.filter(item => item.section === TaskFormDesignerSectionType.DateAndTime).map((item) => (\r\n \r\n ))}\r\n \r\n {Translations.FormBooleans}\r\n \r\n {pickerItems.filter(item => item.section === TaskFormDesignerSectionType.Boolean).map((item) => (\r\n \r\n ))}\r\n \r\n {Translations.FormDropdowns}\r\n \r\n {pickerItems.filter(item => item.section === TaskFormDesignerSectionType.Dropdown).map((item) => (\r\n \r\n ))}\r\n \r\n {Translations.FormNumbers}\r\n \r\n {pickerItems.filter(item => item.section === TaskFormDesignerSectionType.Number).map((item) => (\r\n \r\n ))}\r\n \r\n {Translations.FormCalculated}\r\n \r\n {pickerItems.filter(item => item.section === TaskFormDesignerSectionType.Calculated).map((item) => (\r\n \r\n ))}\r\n \r\n {`${Translations.FormLineBreak} / ${Translations.FormEmptyArea}`}\r\n \r\n {pickerItems.filter(item => item.section === TaskFormDesignerSectionType.Break).map((item) => (\r\n \r\n ))}\r\n \r\n {/* Translations.Attachment\r\n \r\n }\r\n />\r\n \r\n Translations.PageBreak\r\n \r\n }\r\n />\r\n */}\r\n {provided.placeholder}\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n","import { Grid, TextField } from \"@mui/material\";\r\nimport React, { ChangeEvent } from \"react\";\r\nimport { ITaskTypeEditItem } from \"source/models/taskType/taskTypeEditItem\";\r\nimport { Dropdown, IDropdownAction } from \"ui/Scripts/source/components/framework/Dropdown/Dropdown\";\r\nimport { TaskRepetitionType, TaskVisibility } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { FormCheckBox } from \"../../../framework/FormCheckBox\";\r\nimport { FormField } from \"../../../framework/FormField\";\r\nimport { GridRow } from \"../../../framework/Grid/GridRow\";\r\nimport { ModifyUserInfo } from \"../../../framework/User/ModifyUserInfo\";\r\n\r\ninterface TaskTypeBasicInformationProps{\r\n code: string;\r\n comment: string;\r\n taskRepetitionType: TaskRepetitionType;\r\n printOrientationLandscape: boolean;\r\n visibility: TaskVisibility;\r\n activeState: number;\r\n item: ITaskTypeEditItem;\r\n isNew: boolean;\r\n showTaskRepetitionType: boolean;\r\n onHandleChange: (event: ChangeEvent) => void;\r\n onUpdateTaskRepetitionType: (taskRepetitionType: TaskRepetitionType) => void;\r\n onUpdateVisibility: (visibility: TaskVisibility) => void;\r\n onUpdatePrintOrientationLandscape: (printOrientationLandscape: boolean) => void;\r\n onUpdateActiveState: (activeState: number) => void;\r\n}\r\n\r\nexport const TaskTypeBasicInformation = (props: TaskTypeBasicInformationProps) => {\r\n const getRepetitionTypeText = (taskRepetitionType: TaskRepetitionType): string => {\r\n return taskRepetitionType === TaskRepetitionType.NotRepeated\r\n ? Translations.NotRepeated\r\n : Translations.Repeated;\r\n };\r\n\r\n const getRepetitionTypeAction = (taskRepetitionType: TaskRepetitionType): IDropdownAction => {\r\n return {\r\n title: getRepetitionTypeText(taskRepetitionType),\r\n selected: props.taskRepetitionType === taskRepetitionType,\r\n onClick: () => props.onUpdateTaskRepetitionType(taskRepetitionType),\r\n };\r\n };\r\n\r\n const getVisibilityText = (visibility: TaskVisibility): string => {\r\n return visibility === TaskVisibility.Private\r\n ? Translations.Private\r\n : (visibility === TaskVisibility.Public\r\n ? Translations.Public\r\n : Translations.PrivateAndPublic);\r\n };\r\n\r\n const getVisibilityAction = (visibility: TaskVisibility): IDropdownAction => {\r\n return {\r\n title: getVisibilityText(visibility),\r\n selected: props.visibility === visibility,\r\n onClick: () => props.onUpdateVisibility(visibility),\r\n };\r\n };\r\n\r\n const getPrintOrientationText = (printOrientationLandscape: boolean): string => {\r\n return printOrientationLandscape\r\n ? Translations.Landscape\r\n : Translations.Portrait;\r\n };\r\n\r\n const getPrintOrientationAction = (printOrientationLandscape: boolean): IDropdownAction => {\r\n return {\r\n title: getPrintOrientationText(printOrientationLandscape),\r\n selected: props.printOrientationLandscape === printOrientationLandscape,\r\n onClick: () => props.onUpdatePrintOrientationLandscape(printOrientationLandscape),\r\n };\r\n };\r\n\r\n return <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n  } margin=\"0\">\r\n 0} onChange={(checked: boolean) => props.onUpdateActiveState(checked ? 1 : 0)} />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.showTaskRepetitionType &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!props.isNew && \r\n \r\n \r\n \r\n \r\n \r\n }\r\n ;\r\n};\r\n","import { Box } from \"@mui/material\";\r\nimport React, { useState } from \"react\";\r\nimport { Draggable, DraggableRubric, Droppable } from \"react-beautiful-dnd\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ITaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskDataRowCol, TaskDataRowCol } from \"ui/Scripts/source/models/task/taskDataRowCol\";\r\nimport { ITaskTypeCol, TaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\nimport { RemoveToolButton } from \"../../../../framework/Button/RemoveToolButton\";\r\nimport { PopupMenu } from \"../../../../framework/PopupMenu\";\r\nimport { TaskDynamicFormCol } from \"../../../TaskDynamicForm/TaskDynamicForm\";\r\nimport { TaskDataRowDataType } from \"ui/Scripts/source/models/enums\";\r\nimport { CopyToolButton } from \"source/components/framework/Button/CopyToolButton\";\r\n\r\nexport interface TaskFormDesignerDataRow {\r\n id: string;\r\n locked?: boolean;\r\n width?: number;\r\n rows: ITaskTypeCol[];\r\n}\r\n\r\ninterface ITaskFormDesignerFormBuilderProps {\r\n droppableId: string;\r\n pickerDroppableId: string;\r\n designerRows?: TaskFormDesignerDataRow[];\r\n taskDataRow?: ITaskDataRow;\r\n taskTypeCol: ITaskTypeCol;\r\n taskTypeCols: ITaskTypeCol[];\r\n draggingWidth?: number;\r\n draggingSource?: string;\r\n onClick?: (id: string) => void;\r\n onRemoveComponent: (id: string) => void;\r\n onCopyComponent: (id: string) => void;\r\n}\r\n\r\nconst getRenderItem = (items: ITaskTypeCol[],\r\n fieldName: string,\r\n calculatedFieldSelected: boolean,\r\n calculatedFieldExpressionFields: string[],\r\n taskDataRows: ITaskDataRowCol[],\r\n isFirst: boolean,\r\n isLast: boolean,\r\n onClick: (id: string) => void,\r\n onRemove: (id: string) => void,\r\n onCopy: (id: string) => void) =>\r\n // eslint-disable-next-line react/display-name\r\n (provided, _snapshot, rubric: DraggableRubric) => {\r\n const item = items[rubric.source.index];\r\n const showFieldName = calculatedFieldSelected && (item.dataType === TaskDataRowDataType.Integer || item.dataType === TaskDataRowDataType.Number || item.dataType === TaskDataRowDataType.Date || item.dataType === TaskDataRowDataType.Time) && (item.field !== fieldName);\r\n const showFieldNameColor = showFieldName && calculatedFieldExpressionFields.indexOf(item.field) > -1 ? \"success.dark\" : \"primary.main\";\r\n return (\r\n \r\n {\r\n onClick(item.field);\r\n }}\r\n >\r\n i.field === item.field\r\n )}\r\n ignoreClass\r\n onChange={() => { }}\r\n />\r\n {fieldName === item.field &&\r\n \r\n onCopy(item.field)}\r\n />\r\n onRemove(item.field)}\r\n />\r\n \r\n }\r\n \r\n \r\n );\r\n };\r\n\r\nexport const TaskFormDesignerFormBuilder = (props: ITaskFormDesignerFormBuilderProps) => {\r\n const [draggableLocked, setDraggableLocked] = useState(false);\r\n\r\n const handleMouseEnter = (containerId) => {\r\n if (props.draggingSource === containerId || props.designerRows.find((item) => item.id === containerId).width + props.draggingWidth <= 12) {\r\n setDraggableLocked(true);\r\n }\r\n };\r\n\r\n const handleMouseLeave = (_event) => {\r\n setDraggableLocked(false);\r\n };\r\n\r\n const dropAllowedFromDraggingSource = props.draggingSource?.startsWith(props.droppableId) || props.draggingSource === props.pickerDroppableId;\r\n\r\n const isCalculatedField = TaskTypeCol.isCalculatedField(props.taskTypeCol);\r\n\r\n const expressionFields = TaskDataRowCol.getExpressionsFieldNames(props.taskTypeCols, props.taskTypeCol?.expression);\r\n\r\n return (\r\n <>\r\n \r\n \r\n {(provided, snapshot) => (\r\n \r\n {props.designerRows?.map((designerRow, rowIndex) => (\r\n \r\n {(provided, _snapshot) => (\r\n handleMouseEnter(designerRow.id)}\r\n onMouseLeave={handleMouseLeave}\r\n {...provided.draggableProps}\r\n {...provided.dragHandleProps}\r\n sx={{\r\n left: \"auto !important\",\r\n top: \"auto !important\",\r\n }}\r\n >\r\n 12) && props.draggingSource !== designerRow.id)}\r\n renderClone={getRenderItem(designerRow.rows, props.taskTypeCol?.field, isCalculatedField, expressionFields, props.taskDataRow?.cols, false, false, props.onClick, props.onRemoveComponent, props.onCopyComponent)}\r\n getContainerForClone={() => {\r\n return document.getElementById(\"formDesignerDragItemContainer\") as any;\r\n }}\r\n >\r\n {(provided, snapshot) => (\r\n \r\n {designerRow.rows.map((taskTypeCol, fieldIndex) => (\r\n \r\n {getRenderItem(designerRow.rows, props.taskTypeCol?.field, isCalculatedField, expressionFields, props.taskDataRow?.cols, fieldIndex === 0, fieldIndex === designerRow.rows.length - 1, props.onClick, props.onRemoveComponent, props.onCopyComponent)}\r\n \r\n ))}\r\n {provided.placeholder}\r\n \r\n )}\r\n \r\n \r\n )}\r\n \r\n ))}\r\n {provided.placeholder}\r\n \r\n )}\r\n \r\n \r\n \r\n );\r\n};\r\n","import { Box, Typography } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Draggable, Droppable } from \"react-beautiful-dnd\";\r\nimport { ITaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { ITaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\n\r\nconst getRenderItem =\r\n (items: ITaskTypeCol[], fieldName: string, onClick: (id: string) => void) =>\r\n // eslint-disable-next-line react/display-name\r\n (provided, _snapshot, rubric) =>\r\n (\r\n \r\n onClick(items[rubric.source.index].field)}\r\n >\r\n {items[rubric.source.index].title}\r\n \r\n \r\n );\r\n\r\ninterface TaskFormDesignerRowBuilderProps {\r\n droppableId: string;\r\n taskType?: ITaskEditTypeItem;\r\n lineDataRow?: ITaskDataRow;\r\n lineTypeCol?: ITaskTypeCol;\r\n draggingSource?: string;\r\n onClick?: (id: string) => void;\r\n}\r\n\r\nexport const TaskFormDesignerRowBuilder = (\r\n props: TaskFormDesignerRowBuilderProps\r\n) => {\r\n const items = props.taskType?.lineCols;\r\n const renderItem = getRenderItem(items, props.lineTypeCol?.field, props.onClick);\r\n \r\n return (\r\n \r\n {\r\n return document.getElementById(\"formDesignerDragItemContainerForRow\") as any;\r\n }}\r\n isDropDisabled={props.draggingSource !== props.droppableId}\r\n >\r\n {(provided, _snapshot) => (\r\n \r\n {props.taskType?.lineCols?.map((item, colIndex) => (\r\n \r\n {renderItem}\r\n \r\n ))}\r\n {provided.placeholder}\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n","import { Box, FormControlLabel, Grid, Switch } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { DialogSectionCard } from \"source/components/framework/Dialog/DialogSectionCard\";\r\nimport { ITaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { ITaskTypeCol, modifyDateField, modifyUserNameField } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ISessionState } from \"../../../../models/session/sessionState\";\r\nimport { TaskFormDesignerFormBuilder } from \"./TaskFormDesignerFormBuilder\";\r\nimport { TaskFormDesignerRowBuilder } from \"./TaskFormDesignerRowBuilder\";\r\nimport { FormAccordion } from \"source/components/framework/FormAccordion\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum TaskFormDesignBuilderDroppableId {\r\n Picker = \"componentPickerDroppable\",\r\n Header = \"headerDroppable\",\r\n Form = \"formDroppable\",\r\n Row = \"rowDroppable\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\nexport interface TaskFormDesignerDataRow {\r\n id: string;\r\n locked?: boolean;\r\n width?: number;\r\n rows: ITaskTypeCol[];\r\n}\r\n\r\ninterface TaskFormDesignBuilderProps {\r\n taskType?: ITaskEditTypeItem;\r\n headerDesignerRows?: TaskFormDesignerDataRow[];\r\n formDesignerRows?: TaskFormDesignerDataRow[];\r\n headerDataRow?: ITaskDataRow;\r\n formDataRow?: ITaskDataRow;\r\n lineDataRow?: ITaskDataRow;\r\n headerTypeCol: ITaskTypeCol;\r\n formTypeCol: ITaskTypeCol;\r\n lineTypeCol: ITaskTypeCol;\r\n sessionState: ISessionState;\r\n draggingWidth?: number;\r\n draggingSource?: string;\r\n onHeaderItemClick?: (id: string) => void;\r\n onFormItemClick?: (id: string) => void;\r\n onHeaderRemoveComponent: (id: string) => void;\r\n onHeaderCopyComponent: (id: string) => void;\r\n onFormRemoveComponent: (id: string) => void;\r\n onFormCopyComponent: (id: string) => void;\r\n onViewSchema: () => void;\r\n onRemoveFieldFromLine: (id: string) => void;\r\n onAddFieldToLine: (id: string) => Promise;\r\n}\r\n\r\nexport const TaskFormDesignBuilder = (props: TaskFormDesignBuilderProps) => {\r\n const toggleFieldInLine = (id: string, add: boolean) => {\r\n if (add) {\r\n props.onAddFieldToLine(id);\r\n } else {\r\n props.onRemoveFieldFromLine(id);\r\n }\r\n };\r\n\r\n const hasHeader = !!props.taskType?.headerCols?.length;\r\n const hasLine = !!props.taskType?.lineCols?.length;\r\n const lineHasModifyUser = hasLine && !!props.taskType?.lineCols?.find(i => i.field.equalIgnoreCase(modifyUserNameField));\r\n const lineHasModifyDate = hasLine && !!props.taskType?.lineCols?.find(i => i.field.equalIgnoreCase(modifyDateField));\r\n\r\n return (\r\n {Translations.ShowSchema}\r\n : null\r\n }\r\n contentPadding=\"16px 0!important\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {hasLine &&\r\n \r\n
    {Translations.Line}
    \r\n \r\n { e.stopPropagation(); }\r\n }}\r\n onChange={(_e, checked) => {\r\n toggleFieldInLine(modifyUserNameField, checked);\r\n }}\r\n />}\r\n slotProps={{\r\n typography: {\r\n onClick: (e) => { e.stopPropagation(); },\r\n sx: { lineHeight: \"2.5\" },\r\n }\r\n }}\r\n label={Translations.FormShowModifyUser}\r\n />\r\n { e.stopPropagation(); }\r\n }}\r\n onChange={(_e, checked) => {\r\n toggleFieldInLine(modifyDateField, checked);\r\n }}\r\n />}\r\n slotProps={{\r\n typography: {\r\n onClick: (e) => { e.stopPropagation(); },\r\n sx: { lineHeight: \"2.5\" },\r\n }\r\n }}\r\n label={Translations.FormShowModifyDate}\r\n />\r\n \r\n }\r\n >\r\n \r\n \r\n }\r\n
    \r\n \r\n );\r\n};\r\n","import { Switch } from \"@mui/material\";\r\nimport React, { ChangeEvent } from \"react\";\r\nimport { TaskDataRowDataType, TaskTypeClassFontWeight } from \"ui/Scripts/source/models/enums\";\r\nimport { ITaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\n\r\ninterface TaskFormDesignerComponentPropertiesBoldProps {\r\n taskTypeCol?: ITaskTypeCol;\r\n onChange?: (id: string, name: string, value: string | boolean) => void;\r\n}\r\n\r\nexport const TaskFormDesignerComponentPropertiesBold = (\r\n props: TaskFormDesignerComponentPropertiesBoldProps\r\n) => {\r\n //NOTE: class name may be used in other style class as prefix or suffix => need to use padding (problem: sText <=> sTextArea)\r\n const classes = \" \" + (props.taskTypeCol?.class ?? \"\") + \" \";\r\n const isLabel = props.taskTypeCol?.dataType === TaskDataRowDataType.Label;\r\n\r\n const handleSwitchChange = (\r\n _event: ChangeEvent,\r\n _checked: boolean\r\n ) => {\r\n props.onChange(\r\n props.taskTypeCol?.field,\r\n \"class\",\r\n classes\r\n .replace(\" \" + TaskTypeClassFontWeight.Normal + \" \", \" \")\r\n .replace(\" \" + TaskTypeClassFontWeight.Bold + \" \", \" \")\r\n .trim() +\r\n (_checked\r\n ? (isLabel\r\n ? \"\"\r\n : \" \" + TaskTypeClassFontWeight.Bold)\r\n : (isLabel\r\n ? \" \" + TaskTypeClassFontWeight.Normal\r\n : \"\")\r\n )\r\n );\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { InputProps, TextField } from \"@mui/material\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\ninterface IFormIntegerProps {\r\n value: number;\r\n min?: number;\r\n max?: number;\r\n maxLength?: number;\r\n required?: boolean;\r\n InputProps?: Partial\r\n onChange: (value: number) => void;\r\n}\r\n\r\nexport const FormInteger = (props: IFormIntegerProps) => {\r\n const [value, setValue] = useState(\"\");\r\n const min = Base.isNullOrUndefined(props.min) ? 0 : props.min;\r\n \r\n useEffect(() => {\r\n if (!Base.isNullOrUndefined(props.value)) {\r\n let num = Math.max(props.value, min);\r\n if (!Base.isNullOrUndefined(props.max)) {\r\n num = Math.min(num, props.max);\r\n }\r\n setValue(num.toString(10));\r\n } else {\r\n setValue(\"\");\r\n }\r\n }, [props.value]);\r\n\r\n const handleChange = (event) => {\r\n const value: string = event.target.value;\r\n if (!props.maxLength || !value || value.length <= props.maxLength) {\r\n setValue(event.target.value);\r\n }\r\n setValue(value.substring(0, props.maxLength));\r\n };\r\n\r\n const handleBlur = (event) => {\r\n const value: string = event.target.value;\r\n let newValue = value;\r\n let result: number = null;\r\n if (props.required || Base.hasNumber(value)) {\r\n result = Base.strToInteger(value, min, props.max);\r\n newValue = result.toString(10);\r\n } else {\r\n newValue = \"\";\r\n }\r\n setValue(newValue);\r\n props.onChange(result);\r\n };\r\n\r\n return (\r\n \r\n );\r\n};","import React, { useEffect, useState } from \"react\";\r\nimport { TextField } from \"@mui/material\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\ninterface IFormDecimalProps {\r\n value: number;\r\n decimals?: number;\r\n min?: number;\r\n max?: number;\r\n maxLength?: number;\r\n required?: boolean;\r\n onChange: (value: number) => void;\r\n}\r\n\r\nexport const FormDecimal = (props: IFormDecimalProps) => {\r\n const [value, setValue] = useState(\"\");\r\n const decimals = Base.isNullOrUndefined(props.decimals) ? 2 : props.decimals;\r\n const min = Base.isNullOrUndefined(props.min) ? 0 : props.min;\r\n\r\n useEffect(() => {\r\n if (!Base.isNullOrUndefined(props.value)) {\r\n let num = Math.max(props.value, min);\r\n if (!Base.isNullOrUndefined(props.max)) {\r\n num = Math.min(num, props.max);\r\n }\r\n setValue(num.toLocaleFixed(decimals));\r\n } else {\r\n setValue(\"\");\r\n }\r\n }, [props.value, decimals]);\r\n\r\n const handleChange = (event) => {\r\n const value: string = event.target.value;\r\n if (!props.maxLength || !value || value.length <= props.maxLength) {\r\n setValue(event.target.value);\r\n }\r\n setValue(value.substring(0, props.maxLength));\r\n };\r\n\r\n const handleBlur = (event) => {\r\n const value: string = event.target.value;\r\n let newValue = value;\r\n let result: number = null;\r\n if (props.required || Base.hasNumber(value)) {\r\n result = Base.roundToDecimals(Base.strToNumber(value, min, props.max), decimals);\r\n newValue = result.toLocaleFixed(decimals);\r\n } else {\r\n newValue = \"\";\r\n }\r\n setValue(newValue);\r\n props.onChange(result);\r\n };\r\n\r\n return (\r\n \r\n );\r\n};","import React, { useEffect, useState } from \"react\";\r\nimport { InputProps, TextField } from \"@mui/material\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\ninterface IFormTimeSpanProps {\r\n value: number;\r\n maxLength?: number;\r\n required?: boolean;\r\n InputProps?: Partial\r\n onChange: (value: number) => void;\r\n}\r\n\r\nexport const FormTimeSpan = (props: IFormTimeSpanProps) => {\r\n const [value, setValue] = useState(\"\");\r\n\r\n useEffect(() => {\r\n if (!Base.isNullOrUndefined(props.value)) {\r\n setValue(Base.timeSpanToString(props.value));\r\n } else {\r\n setValue(\"\");\r\n }\r\n }, [props.value]);\r\n\r\n const handleChange = (event) => {\r\n const value: string = event.target.value;\r\n if (!props.maxLength || !value || value.length <= props.maxLength) {\r\n setValue(event.target.value);\r\n }\r\n setValue(value.substring(0, props.maxLength));\r\n };\r\n\r\n const handleBlur = (event) => {\r\n const value: string = event.target.value;\r\n let newValue = value;\r\n let result: number = null;\r\n if (props.required || Base.hasNumber(value)) {\r\n result = value.toTimeSpan();\r\n newValue = Base.timeSpanToString(result);\r\n } else {\r\n newValue = \"\";\r\n }\r\n setValue(newValue);\r\n props.onChange(result);\r\n };\r\n\r\n return (\r\n \r\n );\r\n};","import { FormControlLabel, IconButton, InputAdornment, MenuItem, Select, Switch, TextField } from \"@mui/material\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport MinusIcon from \"@mui/icons-material/Remove\";\r\nimport PlusIcon from \"@mui/icons-material/Add\";\r\nimport { TaskDataRowDataType } from \"ui/Scripts/source/models/enums\";\r\nimport { ITaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\nimport { DatePicker, TimePicker } from \"../../../../framework/DateTime\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { FormInteger } from \"source/components/framework/FormInteger\";\r\nimport { FormDecimal } from \"source/components/framework/FormDecimal\";\r\nimport { FormTimeSpan } from \"source/components/framework/FormTimeSpan\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\ninterface TaskFormDesignerComponentPropertiesDefaultValueProps {\r\n disabled?: boolean;\r\n required?: boolean;\r\n taskTypeCol?: ITaskTypeCol;\r\n onTaskTypePropUpdate?: (\r\n id: string,\r\n name: string,\r\n value: string | number,\r\n ) => void;\r\n}\r\n\r\nexport const TaskFormDesignerComponentPropertiesDefaultValue = (\r\n props: TaskFormDesignerComponentPropertiesDefaultValueProps\r\n) => {\r\n const [valueStr, setValueStr] = useState(\"\");\r\n const [relative, setRelative] = useState<{ minus: boolean, offset: number }>(null);\r\n\r\n useEffect(() => {\r\n let val = props.taskTypeCol?.defaultStr ?? \"\";\r\n if (props.taskTypeCol?.dataType === TaskDataRowDataType.Boolean && !val) {\r\n val = \"0\";\r\n }\r\n setValueStr(val);\r\n if ((props.taskTypeCol?.dataType === TaskDataRowDataType.Date || props.taskTypeCol?.dataType === TaskDataRowDataType.Time) && val.length > 1) {\r\n const hasMinus = val[0] === \"-\";\r\n const hasPlus = val[0] === \"+\";\r\n setRelative(hasMinus || hasPlus ? { minus: hasMinus, offset: val.substring(1).toInteger() } : null);\r\n } else {\r\n setRelative(null);\r\n }\r\n }, [props.taskTypeCol?.dataType, props.taskTypeCol?.defaultStr]);\r\n \r\n const handleValueFieldChange = (event) => {\r\n props.onTaskTypePropUpdate(\r\n props.taskTypeCol?.field,\r\n \"defaultStr\",\r\n event.target.value\r\n );\r\n };\r\n\r\n const handleValueStrChange = (value: string) => {\r\n props.onTaskTypePropUpdate(\r\n props.taskTypeCol?.field,\r\n \"defaultStr\",\r\n value\r\n );\r\n };\r\n\r\n const handleValueNumberChange = (value: number) => {\r\n props.onTaskTypePropUpdate(\r\n props.taskTypeCol?.field,\r\n \"defaultNbr\",\r\n value\r\n );\r\n };\r\n\r\n const handleValueRelativeTimeChange = (offset: number, minus: boolean) => {\r\n props.onTaskTypePropUpdate(\r\n props.taskTypeCol?.field,\r\n \"defaultStr\",\r\n (minus ? \"-\" : \"+\") + offset.toString(10)\r\n );\r\n };\r\n\r\n const isDropdown = props.taskTypeCol?.options?.length > 0 || props.taskTypeCol?.idOptions?.length > 0;\r\n\r\n return (\r\n <>\r\n {props.taskTypeCol?.dataType === TaskDataRowDataType.String && isDropdown && (\r\n \r\n )}\r\n {(props.taskTypeCol?.dataType === TaskDataRowDataType.String && !isDropdown) &&\r\n \r\n }\r\n {props.taskTypeCol?.dataType === TaskDataRowDataType.Boolean && (\r\n \r\n )}\r\n {props.taskTypeCol?.dataType === TaskDataRowDataType.Integer &&\r\n \r\n }\r\n {(props.taskTypeCol?.dataType === TaskDataRowDataType.Number) &&\r\n \r\n }\r\n {props.taskTypeCol?.dataType === TaskDataRowDataType.Date &&\r\n <>\r\n
    \r\n {\r\n handleValueStrChange(checked ? \"-1\" : \"\");\r\n }}\r\n />}\r\n label={Translations.FormRelativeDefinition}\r\n />\r\n
    \r\n {(relative\r\n ? <>\r\n \r\n handleValueRelativeTimeChange(relative.offset, !relative.minus)}\r\n edge=\"start\"\r\n >\r\n {relative.minus ? : }\r\n \r\n ,\r\n endAdornment: {Translations.Days.toLocaleLowerCase()}\r\n }}\r\n onChange={(value) => handleValueRelativeTimeChange(value, relative.minus)}\r\n />\r\n \r\n : \r\n )}\r\n \r\n }\r\n {props.taskTypeCol?.dataType === TaskDataRowDataType.Time &&\r\n <>\r\n
    \r\n {\r\n handleValueStrChange(checked ? \"-60\" : \"\");\r\n }}\r\n />}\r\n label={Translations.FormRelativeDefinition}\r\n />\r\n
    \r\n {(relative\r\n ? <>\r\n \r\n handleValueRelativeTimeChange(relative.offset, !relative.minus)}\r\n edge=\"start\"\r\n >\r\n {relative.minus ? : }\r\n \r\n ,\r\n endAdornment: {Translations.Minutes.toLocaleLowerCase()}\r\n }}\r\n onChange={(value) => handleValueRelativeTimeChange(value, relative.minus)}\r\n />\r\n \r\n : \r\n )}\r\n \r\n }\r\n {props.taskTypeCol?.dataType === TaskDataRowDataType.TimeSpan &&\r\n handleValueStrChange(Base.timeSpanToString(value))}\r\n />\r\n }\r\n \r\n );\r\n};\r\n","import { MenuItem, Select, SelectChangeEvent } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { ITaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\n\r\ninterface IFontSizeOption {\r\n class: string;\r\n class2?: string;\r\n title: string;\r\n}\r\n\r\ninterface TaskFormDesignerComponentPropertiesFontSizeProps {\r\n taskTypeCol?: ITaskTypeCol;\r\n sizeOptions: IFontSizeOption[]\r\n onChange?: (id: string, name: string, value: string | boolean) => void;\r\n}\r\n\r\nconst getTextSize = (classes: string, sizeOptions: IFontSizeOption[]) => {\r\n for (const sizeOption of sizeOptions) {\r\n if (classes.includes(\" \" + sizeOption.class + \" \")) return sizeOption.class;\r\n }\r\n // if (classes.includes(\" \" + TaskTypeClassTextSize.Small + \" \")) return TaskTypeClassTextSize.Small;\r\n // else if (classes.includes(\" \" + TaskTypeClassTextSize.Medium + \" \")) return TaskTypeClassTextSize.Medium;\r\n // else if (classes.includes(\" \" + TaskTypeClassTextSize.Large + \" \")) return TaskTypeClassTextSize.Large;\r\n // else if (classes.includes(\" \" + TaskTypeClassTextSize.Extra + \" \")) return TaskTypeClassTextSize.Extra;\r\n return \"\";\r\n};\r\n\r\nexport const TaskFormDesignerComponentPropertiesFontSize = (\r\n props: TaskFormDesignerComponentPropertiesFontSizeProps\r\n) => {\r\n //NOTE: class name may be used in other style class as prefix or suffix => need to use padding (problem: sText <=> sTextArea)\r\n const classes = \" \" + (props.taskTypeCol?.class ?? \"\") + \" \";\r\n\r\n const handleSelectChange = (event: SelectChangeEvent) => {\r\n let value = classes;\r\n for (const sizeOption of props.sizeOptions) {\r\n if (sizeOption.class) {\r\n value = value.replace(\" \" + sizeOption.class + \" \", \" \");\r\n }\r\n if (sizeOption.class2) {\r\n value = value.replace(\" \" + sizeOption.class2 + \" \", \" \");\r\n }\r\n }\r\n props.onChange(\r\n props.taskTypeCol?.field,\r\n \"class\",\r\n value.trim() + ` ${event.target.value}`\r\n // classes\r\n // .replace(\" \" + TaskTypeClassTextSize.Small + \" \", \" \")\r\n // .replace(\" \" + TaskTypeClassTextSize.Medium + \" \", \" \")\r\n // .replace(\" \" + TaskTypeClassTextSize.Large + \" \", \" \")\r\n // .replace(\" \" + TaskTypeClassTextSize.Extra + \" \", \" \")\r\n // .trim() + ` ${event.target.value}`\r\n );\r\n };\r\n\r\n const fontSize = getTextSize(classes, props.sizeOptions);\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import { Slider } from \"@mui/material\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { FormField } from \"source/components/framework/FormField\";\r\nimport { TaskTypeClassHidden, TaskTypeClassWidthPrefix } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\n\r\nconst getGenericWidthFromClass = (classes: string, hiddenStyle: string, widthStylePrefixes: string[]) => {\r\n //console.log(\"getGenericWidthFromClass S\", `'${classes}'`, hiddenStyle, widthStylePrefixes);\r\n if (!classes) return 12;\r\n const styles = classes\r\n .split(\" \")\r\n .filter(i => !!i);\r\n if (!styles.length) return 12;\r\n if (styles.find(i => i.equalIgnoreCase(hiddenStyle) || i.equalIgnoreCase(TaskTypeClassHidden.Generic))) return 0;\r\n let style = \"\";\r\n for (const widthStylePrefix of widthStylePrefixes) {\r\n style = styles.find(i => !!i.match(`${widthStylePrefix}\\\\d+`));\r\n if (style) break;\r\n }\r\n if (!style) return 12;\r\n const result = style.numberString(false).toInteger();\r\n //console.log(\"getGenericWidthFromClass E\", result);\r\n return result;\r\n};\r\n\r\nexport const getWebWidthFromClass = (classes: string) => getGenericWidthFromClass(classes, TaskTypeClassHidden.Web, [TaskTypeClassWidthPrefix.Web, TaskTypeClassWidthPrefix.Web2]);\r\n \r\nexport const getMobileWidthFromClass = (classes: string) => getGenericWidthFromClass(classes, TaskTypeClassHidden.Mobile, [TaskTypeClassWidthPrefix.Mobile, TaskTypeClassWidthPrefix.Web, TaskTypeClassWidthPrefix.Web2]);\r\n\r\nexport const getPrintWidthFromClass = (classes: string) => getGenericWidthFromClass(classes, TaskTypeClassHidden.Print, [TaskTypeClassWidthPrefix.Print, TaskTypeClassWidthPrefix.Web, TaskTypeClassWidthPrefix.Web2]);\r\n\r\nexport const getUpdatedClassForWidthSub = (classes: string, removeSizePrefixes: TaskTypeClassWidthPrefix[], ignoreSizePrefixes: TaskTypeClassWidthPrefix[], sizePrefix: TaskTypeClassWidthPrefix, hiddenStyle: TaskTypeClassHidden, value: number) => {\r\n const styles = (classes ?? \"\")\r\n .split(\" \")\r\n .filter(i => !!i);\r\n const ignoredStyles = styles\r\n .filter(i => ignoreSizePrefixes.find(j => i.startsWith(j)));\r\n return styles\r\n .filter(i => !ignoreSizePrefixes.find(j => i.startsWith(j)))\r\n .filter(i => i !== hiddenStyle && !removeSizePrefixes.find(j => i.startsWith(j)))\r\n .concat(value > 0 ? `${sizePrefix}${value}` : hiddenStyle)\r\n .concat(ignoredStyles)\r\n .sort()\r\n .join(\" \");\r\n};\r\n\r\nconst getUpdatedClassForWidth = (classes: string, removeSizePrefixes: TaskTypeClassWidthPrefix[], ignoreSizePrefixes: TaskTypeClassWidthPrefix[], sizePrefix: TaskTypeClassWidthPrefix,\r\n hiddenStyle: TaskTypeClassHidden, value: number, oldWidth: number, previewMode: boolean) => {\r\n //console.log(\"getUpdatedClassForWidth S\", `'${classes}'`, removeSizePrefixes, ignoreSizePrefixes, sizePrefix, hiddenStyle, value, oldWidth, previewMode);\r\n let result = getUpdatedClassForWidthSub(classes, removeSizePrefixes, ignoreSizePrefixes, sizePrefix, hiddenStyle, value);\r\n //Change mobile and print widths of non hidden same width columns when web width is changed\r\n if (!previewMode && (sizePrefix === TaskTypeClassWidthPrefix.Web || sizePrefix === TaskTypeClassWidthPrefix.Web2)) {\r\n const mobileWidth = getMobileWidthFromClass(result);\r\n if (mobileWidth > 0 && mobileWidth === oldWidth) {\r\n result = getUpdatedClassForWidthSub(result, [], [], TaskTypeClassWidthPrefix.Mobile, TaskTypeClassHidden.Mobile, value);\r\n }\r\n const peintWidth = getPrintWidthFromClass(result);\r\n if (peintWidth > 0 && peintWidth === oldWidth) {\r\n result = getUpdatedClassForWidthSub(result, [], [], TaskTypeClassWidthPrefix.Print, TaskTypeClassHidden.Print, value);\r\n }\r\n }\r\n //console.log(\"getUpdatedClassForWidth E\", `'${result}'`);\r\n return result;\r\n};\r\n\r\ninterface TaskFormDesignerComponentPropertiesWidthProps {\r\n id: string;\r\n classes: string;\r\n formFieldMargin: number | string;\r\n sizePrefix: TaskTypeClassWidthPrefix;\r\n minimum?: number;\r\n maximum?: number;\r\n title: string;\r\n previewMode?: boolean;\r\n onUpdate: (id: string, classes: string) => void;\r\n}\r\n\r\n//TODO: Check custom width classes handling\r\nexport const TaskFormDesignerComponentPropertiesWidth = ({\r\n id,\r\n classes,\r\n formFieldMargin,\r\n sizePrefix,\r\n minimum = 1,\r\n maximum = 12,\r\n title,\r\n previewMode,\r\n onUpdate,\r\n}: TaskFormDesignerComponentPropertiesWidthProps) => {\r\n const [width, setWidth] = useState(0);\r\n\r\n useEffect(() => {\r\n const w = sizePrefix === TaskTypeClassWidthPrefix.Web || sizePrefix === TaskTypeClassWidthPrefix.Web2\r\n ? getWebWidthFromClass(classes) || 0\r\n : (sizePrefix === TaskTypeClassWidthPrefix.Mobile\r\n ? getMobileWidthFromClass(classes)\r\n : getPrintWidthFromClass(classes)\r\n );\r\n setWidth(Math.min(Math.max(w, minimum), maximum));\r\n }, [classes, sizePrefix]);\r\n\r\n const handleSliderChange = (_event: Event, newValue: number) => {\r\n setWidth(newValue > maximum ? maximum : newValue);\r\n };\r\n\r\n const handleSliderChangeCommited = (_event: Event, newValue: number) => {\r\n const isWebPrefix = sizePrefix === TaskTypeClassWidthPrefix.Web || sizePrefix === TaskTypeClassWidthPrefix.Web2;\r\n const removeSizePrefixes = isWebPrefix && !previewMode\r\n ? [TaskTypeClassWidthPrefix.Web, TaskTypeClassWidthPrefix.Web2, TaskTypeClassWidthPrefix.Mobile, TaskTypeClassWidthPrefix.Print]\r\n : [sizePrefix];\r\n const ignoreSizePrefixes = sizePrefix === TaskTypeClassWidthPrefix.Mobile\r\n ? [TaskTypeClassWidthPrefix.Web, TaskTypeClassWidthPrefix.Web2]\r\n : [];\r\n const hiddenStyle = isWebPrefix\r\n ? TaskTypeClassHidden.Web\r\n : (sizePrefix === TaskTypeClassWidthPrefix.Mobile\r\n ? TaskTypeClassHidden.Mobile\r\n : TaskTypeClassHidden.Print\r\n );\r\n onUpdate(id, getUpdatedClassForWidth(classes, removeSizePrefixes, ignoreSizePrefixes, sizePrefix, hiddenStyle, newValue > maximum ? maximum : newValue, width, previewMode));\r\n };\r\n\r\n return (\r\n 0 ? \"\" : (\" (\" + Translations.Hidden + \")\"))} overflow=\"visible\" margin={formFieldMargin}>\r\n \r\n \r\n );\r\n};\r\n","import { Grid, Switch, TextField } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { ITaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\nimport { FormField } from \"../../../../framework/FormField\";\r\nimport { GridRow } from \"../../../../framework/Grid/GridRow\";\r\nimport { TaskFormDesignerComponentPropertiesWidth } from \"../TaskFormDesignerComponentPropertiesWidth\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { TaskTypeClassWidthPrefix } from \"ui/Scripts/source/models/enums\";\r\nimport { FormAccordion } from \"source/components/framework/FormAccordion\";\r\n\r\nexport interface ILineColumnWidth {\r\n field: string,\r\n webWidth: number\r\n mobileWidth: number\r\n printWidth: number,\r\n locked: boolean\r\n};\r\n\r\ninterface TaskFormDesignerComponentPropertiesRowProps {\r\n fieldName?: string;\r\n formTypeCol?: ITaskTypeCol;\r\n lineTypeCol?: ITaskTypeCol;\r\n lineColumnWidths: ILineColumnWidth[];\r\n formFieldMargin: string;\r\n onAddFieldToLine: (id: string) => Promise;\r\n onRemoveFieldFromLine: (id: string) => void;\r\n onTaskTypePropUpdate?: (\r\n id: string,\r\n name: string,\r\n value: string | boolean | number | IIdTitle[]\r\n ) => void;\r\n onRowLinePropUpdate: (\r\n id: string,\r\n name: string,\r\n value: string | boolean\r\n ) => void;\r\n onChangeLineColumnWidth: (id: string, classes: string) => void;\r\n}\r\n\r\nexport const TaskFormDesignerComponentPropertiesRow = (\r\n props: TaskFormDesignerComponentPropertiesRowProps\r\n) => {\r\n const handleSwitchShowInRow = () => {\r\n if (props.lineTypeCol) {\r\n props.onRemoveFieldFromLine(props.fieldName);\r\n } else {\r\n props.onAddFieldToLine(props.fieldName);\r\n }\r\n };\r\n\r\n // const defaultExpanded = !props.formTypeCol;\r\n\r\n // console.log(\"defaultExpanded\", defaultExpanded);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n handleSwitchShowInRow()}\r\n />\r\n \r\n \r\n {props.lineTypeCol && (\r\n <>\r\n \r\n i.webWidth > 0).length + 1}\r\n title={Translations.FormColumnWidth}\r\n onUpdate={props.onChangeLineColumnWidth}\r\n />\r\n \r\n \r\n i.mobileWidth > 0).length + 1}\r\n title={Translations.FormColumnWidthMobile}\r\n onUpdate={props.onChangeLineColumnWidth}\r\n />\r\n \r\n \r\n i.printWidth > 0).length + 1}\r\n title={Translations.FormColumnWidthPrint}\r\n onUpdate={props.onChangeLineColumnWidth}\r\n />\r\n \r\n \r\n \r\n \r\n props.onRowLinePropUpdate(\r\n props.lineTypeCol?.field,\r\n \"title\",\r\n e.target.value\r\n )\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n props.onRowLinePropUpdate(\r\n props.lineTypeCol?.field,\r\n \"defaultSortField\",\r\n checked\r\n )\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n props.onRowLinePropUpdate(\r\n props.lineTypeCol?.field,\r\n \"defaultSortOrderAsc\",\r\n checked\r\n )\r\n }\r\n />\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n","import { Switch } from \"@mui/material\";\r\nimport React, { ChangeEvent } from \"react\";\r\nimport { TaskTypeClassRightAlign } from \"ui/Scripts/source/models/enums\";\r\nimport { ITaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\n\r\ninterface TaskFormDesignerComponentPropertiesTextAlignmentProps {\r\n taskTypeCol?: ITaskTypeCol;\r\n onChange?: (id: string, name: string, value: string | boolean) => void;\r\n}\r\n\r\nexport const TaskFormDesignerComponentPropertiesTextAlignment = (\r\n props: TaskFormDesignerComponentPropertiesTextAlignmentProps\r\n) => {\r\n //NOTE: class name may be used in other style class as prefix or suffix => need to use padding (problem: sText <=> sTextArea)\r\n const classes = \" \" + (props.taskTypeCol?.class ?? \"\") + \" \";\r\n\r\n const handleSwitchChange = (\r\n _event: ChangeEvent,\r\n _checked: boolean\r\n ) => {\r\n props.onChange(\r\n props.taskTypeCol?.field,\r\n \"class\",\r\n (classes.includes(\" \" + TaskTypeClassRightAlign.Right + \" \")\r\n ? classes.replace(\" \" + TaskTypeClassRightAlign.Right + \" \", \" \")\r\n : classes).trim() +\r\n (_checked ? \" \" + TaskTypeClassRightAlign.Right : \"\")\r\n );\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import { MenuItem, Select, SelectChangeEvent } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { TaskTypeClassTextAreaSize } from \"ui/Scripts/source/models/enums\";\r\nimport { ITaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\n\r\ninterface TaskFormDesignerComponentPropertiesTextareaSizeProps {\r\n taskTypeCol?: ITaskTypeCol;\r\n onChange?: (id: string, name: string, value: string | boolean) => void;\r\n}\r\n\r\nexport const TaskFormDesignerComponentPropertiesTextareaSize = (\r\n props: TaskFormDesignerComponentPropertiesTextareaSizeProps\r\n) => {\r\n const classes = props.taskTypeCol?.class ?? \"\";\r\n\r\n const getTextAreaSize = () => {\r\n const styles = classes\r\n .split(\" \")\r\n .filter(i => !!i);\r\n if (!styles.length) return TaskTypeClassTextAreaSize.Small;\r\n if (styles.find(i => i.equalIgnoreCase(TaskTypeClassTextAreaSize.Small))) return TaskTypeClassTextAreaSize.Small;\r\n if (styles.find(i => i.equalIgnoreCase(TaskTypeClassTextAreaSize.Medium))) return TaskTypeClassTextAreaSize.Medium;\r\n if (styles.find(i => i.equalIgnoreCase(TaskTypeClassTextAreaSize.Large))) return TaskTypeClassTextAreaSize.Large;\r\n if (styles.find(i => i.equalIgnoreCase(TaskTypeClassTextAreaSize.Extra))) return TaskTypeClassTextAreaSize.Extra;\r\n return TaskTypeClassTextAreaSize.Small;\r\n };\r\n \r\n const handleSelectChange = (event: SelectChangeEvent) => {\r\n const styles = classes\r\n .split(\" \")\r\n .filter(i => !!i);\r\n const newClasses = styles\r\n .filter(i => ![TaskTypeClassTextAreaSize.Small, TaskTypeClassTextAreaSize.Medium, TaskTypeClassTextAreaSize.Large, TaskTypeClassTextAreaSize.Extra].find(j => i.equalIgnoreCase(j)))\r\n .concat(`${event.target.value}`)\r\n .sort()\r\n .join(\" \");\r\n props.onChange(props.taskTypeCol?.field, \"class\", newClasses);\r\n };\r\n\r\n const areaSize = getTextAreaSize();\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import { Switch } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { TaskTypeClassNoTitle } from \"ui/Scripts/source/models/enums\";\r\nimport { ITaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\n\r\ninterface ITaskFormDesignerComponentPropertiesNoTitleInRowProps {\r\n taskTypeCol?: ITaskTypeCol;\r\n onChange?: (id: string, name: string, value: string) => void;\r\n}\r\n\r\nconst getChecked = (classes: string) => {\r\n return classes.includes(\" \" + TaskTypeClassNoTitle.No + \" \");\r\n};\r\n\r\nexport const TaskFormDesignerComponentPropertiesNoTitleInRow = (\r\n props: ITaskFormDesignerComponentPropertiesNoTitleInRowProps\r\n) => {\r\n //NOTE: class name may be used in other style class as prefix or suffix => need to use padding (problem: sText <=> sTextArea)\r\n const classes = \" \" + (props.taskTypeCol?.class ?? \"\") + \" \";\r\n\r\n const handleChange = (e: any, aChecked: boolean) => {\r\n props.onChange(\r\n props.taskTypeCol?.field,\r\n \"class\",\r\n classes\r\n .replace(\" \" + TaskTypeClassNoTitle.No + \" \", \" \").trim() +\r\n (aChecked ? \" \" + TaskTypeClassNoTitle.No : \"\")\r\n );\r\n };\r\n\r\n const checked = getChecked(classes);\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import { Box, Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { IdTitle, IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { AppUtils } from \"../../../../../../framework/appUtils\";\r\nimport { Dialog } from \"../../../../../framework/Dialog/Dialog\";\r\nimport { DialogButtons } from \"../../../../../framework/Dialog/DialogButtons\";\r\nimport { SaveDataObj } from \"source/framework/saveData\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { FormField } from \"source/components/framework/FormField\";\r\nimport { DialogItemsNav } from \"source/components/framework/Dialog/DialogItemsNav\";\r\n\r\nexport interface ITaskFormOptionDialogProp {\r\n usedOptionTitles: string[];\r\n idOption: IIdTitle;\r\n isNew: boolean;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onOk: (idOption: IIdTitle) => void;\r\n onCancel: () => void;\r\n onRemove: (title: string) => void;\r\n}\r\n\r\nexport interface ITaskFormOptionDialogState {\r\n title: string;\r\n id: string;\r\n}\r\n\r\nexport class TaskFormOptionDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n getSaveDataFromState = (state: ITaskFormOptionDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.id);\r\n result.append(\"title\", state.title);\r\n return result;\r\n };\r\n\r\n constructor(props: ITaskFormOptionDialogProp) {\r\n super(props);\r\n this.state = {\r\n title: props.idOption.title,\r\n id: props.idOption.id\r\n };\r\n this.orgStateHash = this.getSaveDataFromState(this.state).hash;\r\n }\r\n\r\n async componentDidUpdate(prevProps: ITaskFormOptionDialogProp, prevState: ITaskFormOptionDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevTitle = prevProps.idOption.title ?? \"\";\r\n const title = props.idOption.title ?? \"\";\r\n if (prevTitle === title) return;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n await this.saveToDb();\r\n }\r\n this.setState({\r\n title: props.idOption.title,\r\n id: props.idOption.id\r\n }, () => { this.orgStateHash = this.getSaveDataFromState(this.state).hash; });\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"title\") {\r\n this.setState({ title: value, id: value });\r\n } else if (name === \"id\") {\r\n this.setState({ id: value });\r\n }\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.title) {\r\n AppUtils.showErrorMessage(Translations.TitleMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (this.props.usedOptionTitles.find(i => i.equalIgnoreCase(state.title))) {\r\n AppUtils.showErrorMessage(Translations.TitleIsAlreadyInUse);\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n this.props.onOk(IdTitle.createIdTitle(state.id, state.title));\r\n return true;\r\n };\r\n\r\n handleSave = async () => {\r\n await this.saveToDb();\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n if (props.isNew) return;\r\n props.onRemove(props.idOption.title);\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n return await AppUtils.canMoveOut(this.getSaveDataFromState(this.state).hash, this.orgStateHash, this.saveToDb, null);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!props.idOption) return null;\r\n const isNew = props.isNew;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","import ArrowUpwardIcon from \"@mui/icons-material/ArrowUpward\";\r\nimport { IconButtonProps } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppToolButton } from \"ui/Scripts/source/components/framework/Button/AppToolButton\";\r\n\r\ninterface IArrowUpToolButtonProps extends IconButtonProps {\r\n tooltip?: string;\r\n}\r\n\r\nexport const ArrowUpToolButton = (props: IArrowUpToolButtonProps) => (\r\n }\r\n />\r\n);\r\n","import ArrowDownwardIcon from \"@mui/icons-material/ArrowDownward\";\r\nimport { IconButtonProps } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppToolButton } from \"ui/Scripts/source/components/framework/Button/AppToolButton\";\r\n\r\ninterface IArrowDownToolButtonProps extends IconButtonProps {\r\n tooltip?: string;\r\n}\r\n\r\nexport const ArrowDownToolButton = (props: IArrowDownToolButtonProps) => (\r\n }\r\n />\r\n);\r\n","import { Box, } from \"@mui/material\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Dialog } from \"../../../../framework/Dialog/Dialog\";\r\nimport { DialogButtons } from \"../../../../framework/Dialog/DialogButtons\";\r\nimport { IdTitle, IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { DialogSettingsCard } from \"source/components/framework/Container/DialogSettingsCard\";\r\nimport { ActionContainer } from \"source/components/framework/ActionContainer\";\r\nimport { ListIconButtonsItem } from \"source/components/framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { List } from \"source/components/framework/List/List\";\r\nimport { TaskFormOptionDialog } from \"./TaskFormOptionDialog\";\r\nimport { ListLinkValue } from \"source/components/framework/List/ListLinkValue\";\r\nimport { ArrowUpToolButton } from \"source/components/framework/Button/ArrowUpToolButton\";\r\nimport { ArrowDownToolButton } from \"source/components/framework/Button/ArrowDownToolButton\";\r\n\r\ninterface ITaskFormOptionsDialogProps {\r\n idOptions: IIdTitle[];\r\n onSave: (idOptions: IIdTitle[]) => Promise;\r\n onClose: () => void;\r\n}\r\n\r\nexport const TaskFormOptionsDialog = (\r\n props: ITaskFormOptionsDialogProps\r\n) => {\r\n const [idOptions, setIdOptions] = useState([]);\r\n const [selectionData, setSelectionData] = useState<{ title: string, index: number }>({ title: \"\", index: -1 });\r\n const [optionDialogData, setOptionDialogData] = useState<{ idOption: IIdTitle, index: number, isNew: boolean, usedOptionTitles: string[] }>({ idOption: null, index: 0, isNew: false, usedOptionTitles: [] });\r\n\r\n useEffect(() => {\r\n setIdOptions(Base.getTypedArray(props.idOptions, IdTitle));\r\n }, [props.idOptions]);\r\n\r\n const handleSetSelectedIds = (title: string, checkedIds: string[]) => {\r\n const index = idOptions.findIndex(i => i.id === title);\r\n setSelectionData({\r\n title,\r\n index\r\n });\r\n };\r\n \r\n const handleOpen = (title: string) => {\r\n const index = idOptions.findIndex(i => i.id === title);\r\n if (index < 0) return;\r\n setOptionDialogData({\r\n idOption: idOptions[index],\r\n index,\r\n isNew: false,\r\n usedOptionTitles: idOptions.map(i => i.title)\r\n });\r\n };\r\n\r\n const handleOptionDialogClose = () => {\r\n setOptionDialogData({\r\n idOption: null,\r\n index: 0,\r\n isNew: false,\r\n usedOptionTitles: []\r\n });\r\n };\r\n\r\n const handleOptionDialogOk = (idOption: IIdTitle) => {\r\n if (!idOption) return;\r\n if (optionDialogData.isNew) {\r\n setIdOptions((old) => [...old, idOption]);\r\n } else {\r\n setIdOptions((old) => {\r\n old[optionDialogData.index] = idOption;\r\n return [...old];\r\n });\r\n }\r\n handleOptionDialogClose();\r\n };\r\n\r\n const handleRemove = (title: string) => {\r\n if (!title) return;\r\n handleOptionDialogClose();\r\n setIdOptions((old) => [...old.filter((item) => item.title !== title)]);\r\n setSelectionData({\r\n title: \"\",\r\n index: -1\r\n });\r\n };\r\n\r\n const handleAdd = () => {\r\n setOptionDialogData({\r\n idOption: IdTitle.createIdTitleSimple(Translations.FormDropdownOption + \" \" + (idOptions.length + 1).toString(10)),\r\n index: -1,\r\n isNew: true,\r\n usedOptionTitles: idOptions.map(i => i.title)\r\n });\r\n };\r\n\r\n const setEditDialogItemByIndex = (index: number) => {\r\n setOptionDialogData({\r\n idOption: idOptions[index],\r\n index,\r\n isNew: false,\r\n usedOptionTitles: idOptions.map(i => i.title)\r\n });\r\n setSelectionData({\r\n title: idOptions[index].title,\r\n index\r\n });\r\n };\r\n\r\n const handleMoveToPrevious = () => {\r\n if (!optionDialogData.idOption || optionDialogData.index < 1 || optionDialogData.index > props.idOptions.length) return;\r\n setEditDialogItemByIndex(optionDialogData.index - 1);\r\n };\r\n\r\n const handleMoveToNext = () => {\r\n if (!optionDialogData.idOption || optionDialogData.index < 1 || optionDialogData.index >= props.idOptions.length - 1) return;\r\n setEditDialogItemByIndex(optionDialogData.index + 1);\r\n };\r\n \r\n const swapIdOptions = (oldIndex: number, newIndex: number) => {\r\n const newIdOptions = Base.swapArrayItems(idOptions.slice(0), oldIndex, newIndex);\r\n setIdOptions(newIdOptions);\r\n setSelectionData({\r\n title: newIdOptions[newIndex].title,\r\n index: newIndex\r\n });\r\n };\r\n\r\n const handleMoveItemUp = () => {\r\n if (selectionData.index < 1) return;\r\n swapIdOptions(selectionData.index, selectionData.index - 1);\r\n };\r\n \r\n const handleMoveItemDown = () => {\r\n if (selectionData.index < 0 || selectionData.index >= idOptions.length - 1) return;\r\n swapIdOptions(selectionData.index, selectionData.index + 1);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n = idOptions.length - 1} />\r\n \r\n }\r\n removeDisabled={!selectionData.title}\r\n onAdd={handleAdd}\r\n onRemove={() => handleRemove(selectionData.title)}\r\n />\r\n }\r\n />\r\n }\r\n content={\r\n {\r\n return {\r\n columns: [\r\n { size: 6, content: handleOpen(idOption.title)}>{idOption.title} },\r\n { size: 6, content: idOption.id }\r\n ],\r\n id: idOption.title\r\n };\r\n })}\r\n sortColumn={\"\"}\r\n sortOrderIsAsc={true}\r\n selectedId={selectionData.title}\r\n checkedIds={[]}\r\n onSetSelectedIds={handleSetSelectedIds}\r\n onSearchLines={() => {}}\r\n onOpenLine={handleOpen}\r\n />\r\n } />\r\n {!!optionDialogData.idOption &&\r\n 0}\r\n hasNext={optionDialogData.index < props.idOptions.length - 1}\r\n onOk={handleOptionDialogOk}\r\n onCancel={handleOptionDialogClose}\r\n onRemove={handleRemove}\r\n onPrevious={handleMoveToPrevious}\r\n onNext={handleMoveToNext}\r\n />\r\n }\r\n \r\n }\r\n actions={\r\n \r\n props.onSave(idOptions)}\r\n />\r\n \r\n }\r\n onClose={props.onClose}\r\n />\r\n );\r\n};\r\n","import { Grid } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { TaskDataRowDataType } from \"ui/Scripts/source/models/enums\";\r\nimport { ITaskTypeCol, TaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { FormInteger } from \"source/components/framework/FormInteger\";\r\nimport { FormDecimal } from \"source/components/framework/FormDecimal\";\r\nimport { FormField } from \"source/components/framework/FormField\";\r\n\r\ninterface ITaskFormDesignerComponentPropertiesMinMaxProps {\r\n formFieldMargin: string;\r\n taskTypeCol?: ITaskTypeCol;\r\n onTaskTypePropUpdate?: (\r\n id: string,\r\n name: string,\r\n value: string | number,\r\n ) => void;\r\n}\r\n\r\nexport const TaskFormDesignerComponentPropertiesMinMax = (\r\n props: ITaskFormDesignerComponentPropertiesMinMaxProps\r\n) => {\r\n if (!(props.taskTypeCol?.dataType === TaskDataRowDataType.Number || props.taskTypeCol?.dataType === TaskDataRowDataType.Integer) || TaskTypeCol.isCalculatedField(props.taskTypeCol)) return null;\r\n return (\r\n <>\r\n \r\n \r\n {(props.taskTypeCol?.dataType === TaskDataRowDataType.Number\r\n ? {\r\n props.onTaskTypePropUpdate(props.taskTypeCol?.field, \"minimum\", value);\r\n }}\r\n />\r\n : {\r\n props.onTaskTypePropUpdate(props.taskTypeCol?.field, \"minimum\", value);\r\n }}\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n {(props.taskTypeCol?.dataType === TaskDataRowDataType.Number\r\n ? {\r\n props.onTaskTypePropUpdate(props.taskTypeCol?.field, \"maximum\", value);\r\n }}\r\n />\r\n : {\r\n props.onTaskTypePropUpdate(props.taskTypeCol?.field, \"maximum\", value);\r\n }}\r\n />\r\n )}\r\n \r\n \r\n \r\n );\r\n};\r\n","import { Grid, TextField } from \"@mui/material\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport * as taskService from \"../../../../../models/services/taskService\";\r\nimport { TaskDataRowDataType } from \"ui/Scripts/source/models/enums\";\r\nimport { ITaskTypeCol, TaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { FormField } from \"source/components/framework/FormField\";\r\nimport { IdTitle, IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { IdTitleDropdown } from \"ui/Scripts/source/components/framework/Dropdown/IdTitleDropdown\";\r\nimport { optionCodeTaskTypeExpressionInfoDocument } from \"ui/Scripts/source/models/consts\";\r\n\r\ninterface ITaskFormDesignerComponentPropertiesExpressionProps {\r\n formFieldMargin: string;\r\n taskTypeCol?: ITaskTypeCol;\r\n taskTypeCols: ITaskTypeCol[];\r\n onTaskTypePropUpdate?: (\r\n id: string,\r\n name: string,\r\n value: string | number,\r\n ) => void;\r\n}\r\n\r\nexport const TaskFormDesignerComponentPropertiesExpression = (\r\n props: ITaskFormDesignerComponentPropertiesExpressionProps\r\n) => {\r\n const functionList = [\r\n { id: \"0\", title: `'${Translations.SelectOperatorOrFunction}'` },\r\n { id: \"D1\", title: Translations.Operators, divider: true },\r\n { id: \"1\", title: Translations.FormulaAddition, value: \"number1 + number2\" },\r\n { id: \"2\", title: Translations.FormulaSubtraction, value: \"number1 - number2\" },\r\n { id: \"3\", title: Translations.FormulaMultiplication, value: \"number1 * number2\" },\r\n { id: \"4\", title: Translations.FormulaDivision, value: \"number1 / number2\" },\r\n { id: \"5\", title: Translations.FormulaRemainder, value: \"number1 % number2\" },\r\n { id: \"6\", title: Translations.FormulaExponent, value: \"number1 ** number2\" },\r\n { id: \"D2\", title: Translations.Functions, divider: true },\r\n { id: \"7\", title: Translations.FormulaMax, value: \"Math.max(number1,number2)\" },\r\n { id: \"8\", title: Translations.FormulaMin, value: \"Math.min(number1,number2)\" },\r\n { id: \"9\", title: Translations.FormulaAbs, value: \"Math.abs(number)\" },\r\n { id: \"10\", title: Translations.FormulaCeil, value: \"Math.ceil(number)\" },\r\n { id: \"11\", title: Translations.FormulaFloor, value: \"Math.floor(number)\" },\r\n { id: \"12\", title: Translations.FormulaTrunc, value: \"Math.trunc(number)\" },\r\n { id: \"13\", title: Translations.FormulaRound, value: \"Math.round(number)\" },\r\n { id: \"D3\", title: Translations.Trigonometry, divider: true },\r\n { id: \"14\", title: Translations.FormulaExponent, value: \"Math.pow(number,2)\" },\r\n { id: \"15\", title: Translations.FormulaSqrt, value: \"Math.sqrt(number)\" },\r\n { id: \"16\", title: Translations.FormulaCbrt, value: \"Math.cbrt(number)\" },\r\n { id: \"17\", title: Translations.FormulaCos, value: \"Math.cos(number)\" },\r\n { id: \"18\", title: Translations.FormulaSin, value: \"Math.sin(number)\" },\r\n { id: \"19\", title: Translations.FormulaTan, value: \"Math.tan(number)\" },\r\n { id: \"20\", title: Translations.FormulaHypot, value: \"Math.hypot(number1, number2)\" },\r\n { id: \"21\", title: Translations.FormulaPI, value: \"Math.PI\" },\r\n { id: \"D4\", title: Translations.Conversions, divider: true },\r\n { id: \"22\", title: Translations.FormulaDateAndTimeDiffInMinutes, value: \"utcDateAndTimeDiffInMinutes(date1,time1,date2,time2)\" },\r\n { id: \"23\", title: Translations.FormulaDateAndTimeDiffInTimeSpan, value: \"utcDateAndTimeDiffInTimeSpan(date1,time1,date2,time2)\" },\r\n ];\r\n const [expression, setExpression] = useState(\"\");\r\n const [selectedFunctionId, setSelectedFunctionId] = useState(\"0\");\r\n\r\n const setFieldsToFunctionByDataType = (dataTypes: TaskDataRowDataType[], prefix: string, functionValue: string) => {\r\n let result = functionValue;\r\n if (!result.includes(prefix)) return result;\r\n const fields = props.taskTypeCols.filter((c) => dataTypes.includes(c.dataType));\r\n if (!fields.length) return result;\r\n for (let i = 0; i < fields.length; i++) {\r\n result = result.replace(`${prefix}${i + 1}`, fields[i].field);\r\n }\r\n return result.replace(prefix, fields[0].field);\r\n };\r\n\r\n const setFieldsToFunction = (functionValue: string) => {\r\n return setFieldsToFunctionByDataType([TaskDataRowDataType.Time], \"time\",\r\n setFieldsToFunctionByDataType([TaskDataRowDataType.Date], \"date\",\r\n setFieldsToFunctionByDataType([TaskDataRowDataType.Integer, TaskDataRowDataType.Number], \"number\", functionValue)\r\n ));\r\n };\r\n\r\n const handleAddFunction = () => {\r\n const functionValue = functionList.find((f) => f.id === selectedFunctionId)?.value;\r\n if (!functionValue) return;\r\n const newExpression = setFieldsToFunction(functionValue);\r\n setExpression(newExpression);\r\n props.onTaskTypePropUpdate(props.taskTypeCol?.field, \"expression\", newExpression);\r\n };\r\n\r\n useEffect(() => {\r\n setExpression(props.taskTypeCol?.expression ?? \"\");\r\n const selectedFunction = functionList.find((f) => f.value === props.taskTypeCol?.expression);\r\n setSelectedFunctionId(selectedFunction ? selectedFunction.id : \"0\");\r\n }, [props.taskTypeCol?.expression]);\r\n\r\n const expressionFormats: IIdTitle[] = [\r\n IdTitle.createIdTitle(\"\", \"'\" + Translations.NotInUse + \"'\"),\r\n IdTitle.createIdTitle(\"minutesToDateStr(fieldValue)\", \"'\" + Translations.FormExpressionFormatMinutesToHoursAndMinutes + \"'\")\r\n ];\r\n\r\n const handleChangeExpression = (event) => {\r\n const value: string = event.target.value;\r\n setExpression(value);\r\n };\r\n\r\n const handleBlurExpression = (event) => {\r\n let value: string = event.target.value;\r\n if (!value) {\r\n value = props.taskTypeCol?.expression ?? \"\";\r\n setExpression(value);\r\n }\r\n props.onTaskTypePropUpdate(props.taskTypeCol?.field, \"expression\", value);\r\n };\r\n\r\n if (!TaskTypeCol.isCalculatedField(props.taskTypeCol)) return null;\r\n return (\r\n <>\r\n \r\n taskService.downloadInfoDocument(optionCodeTaskTypeExpressionInfoDocument)}>\r\n { return { id: i.id, title: i.title, subTitle: i.value ? `(${i.value})` : null, divider: i.divider }; })}\r\n sx={{ marginBottom: \".5rem\" }}\r\n onChange={(id: string) => setSelectedFunctionId(id)}\r\n buttons={[\r\n { label: Translations.Add, onClick: handleAddFunction, disabled: selectedFunctionId === \"0\" }]\r\n }\r\n />\r\n \r\n \r\n \r\n {props.taskTypeCol?.dataType === TaskDataRowDataType.Integer &&\r\n \r\n \r\n props.onTaskTypePropUpdate(props.taskTypeCol?.field, \"expressionFormat\", value)}\r\n />\r\n \r\n \r\n }\r\n \r\n );\r\n};\r\n","import { Slider } from \"@mui/material\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { FormField } from \"source/components/framework/FormField\";\r\n\r\nconst getHeightFromClass = (classes: string, sizePrefix: string) => {\r\n if (!classes) return 0;\r\n const styles = classes\r\n .split(\" \")\r\n .filter(i => !!i);\r\n if (!styles.length) return 0;\r\n const style = styles.find(i => !!i.match(`${sizePrefix}\\\\d+`));\r\n if (!style) return 0;\r\n return style.numberString(false).toInteger();\r\n};\r\n\r\nconst getUpdatedClassForHeight = (classes: string, sizePrefix: string, removeSizePrefixes: string[], value: number) => {\r\n return (classes ?? \"\")\r\n .split(\" \")\r\n .filter(i => !!i)\r\n .filter(i => !removeSizePrefixes.find(j => i.startsWith(j)))\r\n .concat(`${sizePrefix}${value}`)\r\n .sort()\r\n .join(\" \");\r\n};\r\n\r\ninterface ITaskFormDesignerComponentPropertiesHeightProps {\r\n id: string;\r\n classes: string;\r\n formFieldMargin: number | string;\r\n minimum?: number;\r\n maximum?: number;\r\n title: string;\r\n onUpdate: (id: string, classes: string) => void;\r\n}\r\n\r\n//TODO: Check custom width classes handling\r\nexport const TaskFormDesignerComponentPropertiesHeight = ({\r\n id,\r\n classes,\r\n formFieldMargin,\r\n minimum = 0,\r\n maximum = 12,\r\n title,\r\n onUpdate,\r\n}: ITaskFormDesignerComponentPropertiesHeightProps) => {\r\n const sizePrefix = \"lineBreak\";\r\n const [height, setHeight] = useState(0);\r\n\r\n useEffect(() => {\r\n const h = getHeightFromClass(classes, sizePrefix);\r\n setHeight(Math.min(Math.max(h, minimum), maximum));\r\n }, [classes]);\r\n\r\n const handleSliderChange = (_event: Event, newValue: number) => {\r\n setHeight(newValue > maximum ? maximum : newValue);\r\n };\r\n\r\n const handleSliderChangeCommited = (_event: Event, newValue: number) => {\r\n onUpdate(id, getUpdatedClassForHeight(classes, sizePrefix, [sizePrefix], newValue > maximum ? maximum : newValue));\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","import { Box } from \"@mui/material\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { ITaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\nimport { getTaskFormDesignerComponentTitle, getTaskFormDesignerComponentType, TaskFormDesignerComponentType } from \"../../TaskFormDesignerComponentPicker/TaskFormDesignerComponentPickerItem\";\r\nimport { IdTitleDropdown, IIdTitleDropdownItem } from \"ui/Scripts/source/components/framework/Dropdown/IdTitleDropdown\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\ninterface ITaskFormDesignerComponentPropertiesNameProps {\r\n headerTypeCol: ITaskTypeCol;\r\n formTypeCol: ITaskTypeCol;\r\n headerCols: ITaskTypeCol[];\r\n formCols: ITaskTypeCol[];\r\n onHeaderItemClick: (field: string) => void;\r\n onFormItemClick: (field: string) => void;\r\n}\r\n\r\n//TODO: Check custom width classes handling\r\nexport const TaskFormDesignerComponentPropertiesName = (props: ITaskFormDesignerComponentPropertiesNameProps) => {\r\n const hederPrefix = \"H\";\r\n const formPrefix = \"F\";\r\n const [dropdownItems, setDropdownItems] = useState([]);\r\n\r\n const getFieldId = (col: ITaskTypeCol, prefix: string) => {\r\n return `${prefix}#${col.field}`;\r\n };\r\n\r\n const getHeaderFieldId = (col: ITaskTypeCol) => {\r\n return getFieldId(col, hederPrefix);\r\n };\r\n\r\n const getFormFieldId = (col: ITaskTypeCol) => {\r\n return getFieldId(col, formPrefix);\r\n };\r\n\r\n const getDropDownTitle = (col: ITaskTypeCol) => {\r\n const designerComponentType = getTaskFormDesignerComponentType(col);\r\n let title = designerComponentType === TaskFormDesignerComponentType.LineBreak || designerComponentType === TaskFormDesignerComponentType.EmptyArea\r\n ? null\r\n : (!col.title ? \"\" : col.title);\r\n if (title?.length > 20) {\r\n title = title.substring(0, 20).trim() + \"...\";\r\n }\r\n const titleStr = title ? ` (${title})` : \"\";\r\n return `${getTaskFormDesignerComponentTitle(col)}${titleStr}`;\r\n };\r\n\r\n useEffect(() => {\r\n const newDropdownItems: IIdTitleDropdownItem[] = [];\r\n if (props.headerCols && props.headerCols.length) {\r\n newDropdownItems.push({ id: Base.getGuid(), title: Translations.Header, unselectable: true });\r\n newDropdownItems.push({ id: Base.getGuid(), title: \"\", divider: true });\r\n props.headerCols.forEach((col) => {\r\n newDropdownItems.push({\r\n id: getHeaderFieldId(col),\r\n title: getDropDownTitle(col)\r\n });\r\n });\r\n }\r\n newDropdownItems.push({ id: Base.getGuid(), title: Translations.Form, unselectable: true });\r\n newDropdownItems.push({ id: Base.getGuid(), title: \"\", divider: true });\r\n props.formCols.forEach((col) => {\r\n newDropdownItems.push({\r\n id: getFormFieldId(col),\r\n title: getDropDownTitle(col)\r\n });\r\n });\r\n setDropdownItems(newDropdownItems);\r\n }, [props.headerCols, props.formCols]);\r\n\r\n if (!(props.headerTypeCol ?? props.formTypeCol)) return null;\r\n \r\n return (\r\n \r\n {\r\n const field = id.substring(2);\r\n console.log(\"id, field\", id, field);\r\n if (id.startsWith(hederPrefix)) {\r\n props.onHeaderItemClick(field);\r\n } else {\r\n props.onFormItemClick(field);\r\n }\r\n }}\r\n />\r\n \r\n );\r\n};\r\n","import { Box, } from \"@mui/material\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Dialog } from \"../../../../framework/Dialog/Dialog\";\r\nimport { DialogButtons } from \"../../../../framework/Dialog/DialogButtons\";\r\nimport { ITaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\nimport { FormField } from \"source/components/framework/FormField\";\r\nimport { IdTitleDropdown, IIdTitleDropdownItem } from \"ui/Scripts/source/components/framework/Dropdown/IdTitleDropdown\";\r\n\r\nconst rowItems = [{ id: \"0\", title: Translations.FirstListRow }, { id: \"-1\", title: Translations.LastListRow }];\r\n\r\nexport const getInitializeFromRowTextFromExpression = (expression: string, cols: ITaskTypeCol[]): string => {\r\n if (!expression) return \"\";\r\n const values = expression.split(\"#\");\r\n if (values.length > 2) {\r\n if (values[0] === \"row\") {\r\n const rowNumber = values[1];\r\n const row = rowItems.find((r) => r.id === rowNumber);\r\n if (!row) return \"\";\r\n const field = values[2];\r\n const col = cols.find((c) => c.field === field);\r\n if (!col) return \"\";\r\n return `${row.title}, ${col.title || col.field}`;\r\n }\r\n }\r\n return \"\";\r\n};\r\n\r\ninterface ITaskFormInitializeFromRowDialogProps {\r\n cols: ITaskTypeCol[];\r\n taskTypeCol: ITaskTypeCol;\r\n onSave: (defaultExpression: string) => Promise;\r\n onClose: () => void;\r\n}\r\n\r\nexport const TaskFormInitializeFromRowDialog = (props: ITaskFormInitializeFromRowDialogProps) => {\r\n const [state, setState] = useState<{ field: string, rowNumber: string }>({ field: \"\", rowNumber: \"-1\" });\r\n const [fields, setFields] = useState([]);\r\n const [rows] = useState(rowItems);\r\n\r\n useEffect(() => {\r\n const newFields: IIdTitleDropdownItem[] = [];\r\n for (let i = 0; i < props.cols.length; i++) {\r\n const col = props.cols[i];\r\n if (col.dataType !== props.taskTypeCol.dataType) continue;\r\n newFields.push({ id: col.field, title: col.title || col.field });\r\n }\r\n if (props.taskTypeCol.defaultExpression) {\r\n const values = props.taskTypeCol.defaultExpression.split(\"#\");\r\n if (values.length > 2) {\r\n if (values[0] === \"row\") {\r\n setState({\r\n rowNumber: values[1],\r\n field: values[2]\r\n });\r\n }\r\n }\r\n } else if (newFields.length > 0) {\r\n setState({\r\n rowNumber: \"-1\",\r\n field: newFields[0].id\r\n });\r\n }\r\n setFields(newFields);\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n setState((old) => ({ ...old, rowNumber }))}\r\n />\r\n \r\n \r\n setState((old) => ({ ...old, field }))}\r\n />\r\n \r\n \r\n }\r\n actions={\r\n \r\n props.onSave(\"\")}\r\n onCancel={props.onClose}\r\n onSave={() => props.onSave(`row#${state.rowNumber}#${state.field}`)}\r\n />\r\n \r\n }\r\n onClose={props.onClose}\r\n />\r\n );\r\n};\r\n","import { Alert, Grid, Switch, TextField } from \"@mui/material\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { TaskDataRowDataType, TaskRepetitionType, TaskTypeClassTextSize, TaskTypeClassWidthPrefix } from \"ui/Scripts/source/models/enums\";\r\nimport { ITaskTypeCol, TaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { FormField } from \"../../../framework/FormField\";\r\nimport { GridRow } from \"../../../framework/Grid/GridRow\";\r\nimport { TaskFormDesignerComponentPropertiesBold } from \"./TaskFormDesignerComponentPropertiesBold\";\r\nimport { TaskFormDesignerComponentPropertiesDefaultValue } from \"./TaskFormDesignerComponentPropertiesDefaultValue\";\r\nimport { TaskFormDesignerComponentPropertiesFontSize } from \"./TaskFormDesignerComponentPropertiesFontSize\";\r\nimport { ILineColumnWidth, TaskFormDesignerComponentPropertiesRow } from \"./TaskFormDesignerComponentPropertiesRow\";\r\nimport { TaskFormDesignerComponentPropertiesTextAlignment } from \"./TaskFormDesignerComponentPropertiesTextAlignment\";\r\nimport { TaskFormDesignerComponentPropertiesTextareaSize } from \"./TaskFormDesignerComponentPropertiesTextareaSize\";\r\nimport { TaskFormDesignerComponentPropertiesWidth } from \"./TaskFormDesignerComponentPropertiesWidth\";\r\nimport { DialogSectionCard } from \"source/components/framework/Dialog/DialogSectionCard\";\r\nimport { FormInteger } from \"source/components/framework/FormInteger\";\r\nimport { TaskFormDesignerComponentPropertiesNoTitleInRow } from \"./TaskFormDesignerComponentPropertiesNoTitleInRow\";\r\nimport { IdTitle, IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { TaskFormOptionsDialog } from \"./TaskFormOptionsDialog\";\r\nimport { TaskFormDesignerComponentPropertiesMinMax } from \"./TaskFormDesignerComponentPropertiesMinMax\";\r\nimport { TaskFormDesignerComponentPropertiesExpression } from \"./TaskFormDesignerComponentPropertiesExpression\";\r\nimport { FormAccordion } from \"source/components/framework/FormAccordion\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\nimport { TaskFormDesignerComponentPropertiesHeight } from \"./TaskFormDesignerComponentPropertiesHeight\";\r\nimport { TaskFormDesignerComponentPropertiesName } from \"./TaskFormDesignerComponentPropertiesName/TaskFormDesignerComponentPropertiesName\";\r\nimport { getInitializeFromRowTextFromExpression, TaskFormInitializeFromRowDialog } from \"./TaskFormInitializeFromRowDialog\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\n\r\ninterface TaskFormDesignerComponentPropertiesProps {\r\n taskRepetitionType: TaskRepetitionType;\r\n taskType: ITaskEditTypeItem;\r\n headerTypeCol?: ITaskTypeCol;\r\n formTypeCol?: ITaskTypeCol;\r\n lineTypeCol?: ITaskTypeCol;\r\n lineColumnWidths: ILineColumnWidth[];\r\n onHeaderItemClick: (field: string) => void;\r\n onFormItemClick: (field: string) => void;\r\n onTaskTypeHeaderPropUpdate?: (\r\n id: string,\r\n name: string,\r\n value: string | boolean | number | IIdTitle[],\r\n ) => void;\r\n onTaskTypeFormPropUpdate?: (\r\n id: string,\r\n name: string,\r\n value: string | boolean | number | IIdTitle[],\r\n ) => void;\r\n onHeaderTaskDataRowValueUpdate?: (\r\n id: string,\r\n name: string,\r\n value: string | number | boolean,\r\n ) => void;\r\n onFormTaskDataRowValueUpdate?: (\r\n id: string,\r\n name: string,\r\n value: string | number | boolean,\r\n ) => void;\r\n onRowLinePropUpdate: (\r\n id: string,\r\n name: string,\r\n value: string | boolean,\r\n ) => void;\r\n onRemoveFieldFromLine: (id: string) => void;\r\n onAddFieldToLine: (id: string) => Promise;\r\n onChangeLineColumnWidth: (id: string, classes: string) => void;\r\n}\r\n\r\nexport const TaskFormDesignerComponentProperties = (\r\n props: TaskFormDesignerComponentPropertiesProps\r\n) => {\r\n const [optionsDialogData, setOptionsDialogData] = useState<{ show: boolean, idOptions: IIdTitle[] }>({ show: false, idOptions: [] });\r\n\r\n const [showInializeFromRowDialog, setShowInializeFromRowDialog] = useState(false);\r\n const [defaultExpressionText, setDefaultExpressionText] = useState(\"\");\r\n\r\n const taskTypeCol = props.headerTypeCol ?? props.formTypeCol ?? props.lineTypeCol;\r\n\r\n const isTextAreaComponent = taskTypeCol?.dataType === TaskDataRowDataType.String && taskTypeCol?.maxLength > 499;\r\n\r\n const isDropdown = taskTypeCol?.options?.length > 0 || taskTypeCol?.idOptions?.length > 0;\r\n\r\n const isLabel = taskTypeCol?.dataType === TaskDataRowDataType.Label;\r\n\r\n const isEmptyArea = taskTypeCol?.dataType === TaskDataRowDataType.Label && !taskTypeCol?.title;\r\n\r\n const isLineBreak = taskTypeCol?.dataType === TaskDataRowDataType.LineBreak;\r\n\r\n useEffect(() => {\r\n const cols = props.formTypeCol ? props.taskType.formCols : props.taskType.headerCols;\r\n if (taskTypeCol?.defaultExpression && cols) {\r\n setDefaultExpressionText(getInitializeFromRowTextFromExpression(taskTypeCol.defaultExpression, cols));\r\n } else {\r\n setDefaultExpressionText(\"\");\r\n }\r\n }, [taskTypeCol?.defaultExpression ?? \"\"]);\r\n\r\n const onTaskTypePropUpdate = (id: string, name: string, value: string | boolean | number | IIdTitle[]) => {\r\n if (props.headerTypeCol) {\r\n props.onTaskTypeHeaderPropUpdate(id, name, value);\r\n } else {\r\n props.onTaskTypeFormPropUpdate(id, name, value);\r\n }\r\n };\r\n\r\n const onTaskDataRowValueUpdate = (id: string, name: string, value: string | number | boolean) => {\r\n if (props.headerTypeCol) {\r\n props.onHeaderTaskDataRowValueUpdate(id, name, value);\r\n } else {\r\n props.onFormTaskDataRowValueUpdate(id, name, value);\r\n }\r\n };\r\n\r\n const handleTextFieldChange = (event) => {\r\n onTaskTypePropUpdate(\r\n taskTypeCol?.field,\r\n event.target.name,\r\n event.target.value\r\n );\r\n };\r\n\r\n const handleIntegerTextFieldChange = (name: string, value: number) => {\r\n onTaskTypePropUpdate(\r\n taskTypeCol?.field,\r\n name,\r\n value\r\n );\r\n };\r\n\r\n const handleWidthChange = (id: string, classes: string) => {\r\n onTaskTypePropUpdate(id, \"class\", classes);\r\n };\r\n\r\n const handleHeightChange = (id: string, classes: string) => {\r\n onTaskTypePropUpdate(id, \"class\", classes);\r\n };\r\n\r\n const handleSwitchChange = (event: React.ChangeEvent) => {\r\n onTaskTypePropUpdate(\r\n taskTypeCol?.field,\r\n event.target.name,\r\n event.target.checked\r\n );\r\n };\r\n\r\n const handleRequiredChange = (event: React.ChangeEvent) => {\r\n onTaskTypePropUpdate(\r\n taskTypeCol?.field,\r\n event.target.name,\r\n event.target.checked\r\n );\r\n //If boolean field input (= checking) is required, default value must be false\r\n if (taskTypeCol?.dataType === TaskDataRowDataType.Boolean && event.target.checked) {\r\n onTaskDataRowValueUpdate(taskTypeCol?.field, \"valueStr\", \"0\");\r\n }\r\n };\r\n\r\n const handleShowOptionsDialog = () => {\r\n setOptionsDialogData({\r\n show: true,\r\n idOptions: props.formTypeCol?.idOptions ?? props.formTypeCol?.options.map(i => IdTitle.createIdTitleSimple(i))\r\n });\r\n };\r\n\r\n const handleOptionsDialogClose = () => {\r\n setOptionsDialogData({\r\n show: false,\r\n idOptions: []\r\n });\r\n };\r\n\r\n const handleOptionsDialogSave = async (idOptions: IIdTitle[]) => {\r\n setOptionsDialogData((old) => ({ ...old, idOptions }));\r\n onTaskTypePropUpdate(taskTypeCol?.field, \"idOptions\", idOptions);\r\n handleOptionsDialogClose();\r\n };\r\n\r\n const handleShowInitializeFromRowDialog = () => {\r\n setShowInializeFromRowDialog(true);\r\n };\r\n\r\n const handleInializeFromRowDialogClose = () => {\r\n setShowInializeFromRowDialog(false);\r\n };\r\n\r\n const handleInializeFromRowDialogSave = async (defaultExpression: string) => {\r\n onTaskTypePropUpdate(taskTypeCol?.field, \"defaultExpression\", defaultExpression);\r\n setShowInializeFromRowDialog(false);\r\n };\r\n\r\n const formFieldMargin = \".5rem 0 0 0\";\r\n\r\n const isCalulatedField = TaskTypeCol.isCalculatedField(taskTypeCol);\r\n\r\n return (\r\n \r\n \r\n {(!taskTypeCol\r\n ?
    \r\n {Translations.SelectComponentInFormToSeeComponentProperties}\r\n
    \r\n : \r\n )}\r\n {(!!props.headerTypeCol || !!props.formTypeCol) &&\r\n <>\r\n \r\n \r\n {(!isLineBreak\r\n ? <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!isEmptyArea &&\r\n \r\n \r\n {\r\n if (!isLabel || !!e.target.value) return;\r\n onTaskTypePropUpdate(taskTypeCol?.field, e.target.name, Translations.Text);\r\n }}\r\n minRows={isLabel ? 5 : 1}\r\n multiline={isLabel}\r\n />\r\n \r\n \r\n }\r\n \r\n : \r\n \r\n )\r\n }\r\n {taskTypeCol.dataType === TaskDataRowDataType.String && isDropdown && (\r\n \r\n \r\n \r\n {Translations.Edit}\r\n \r\n \r\n \r\n )}\r\n {isTextAreaComponent &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {taskTypeCol.dataType === TaskDataRowDataType.Number &&\r\n \r\n \r\n {\r\n onTaskTypePropUpdate(taskTypeCol.field, \"decimals\", value);\r\n }}\r\n />\r\n \r\n \r\n }\r\n \r\n \r\n \r\n {(!isLineBreak && !isEmptyArea) &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {(isLabel ||\r\n taskTypeCol.dataType === TaskDataRowDataType.String ||\r\n taskTypeCol.dataType === TaskDataRowDataType.Number ||\r\n taskTypeCol.dataType === TaskDataRowDataType.Integer ||\r\n taskTypeCol.dataType === TaskDataRowDataType.Date ||\r\n taskTypeCol.dataType === TaskDataRowDataType.Time ||\r\n taskTypeCol.dataType === TaskDataRowDataType.TimeSpan) && (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n }\r\n {(!isLabel && !isLineBreak && !isEmptyArea) &&\r\n \r\n \r\n {(taskTypeCol.dataType !== TaskDataRowDataType.Boolean &&\r\n taskTypeCol.dataType !== TaskDataRowDataType.Date &&\r\n taskTypeCol.dataType !== TaskDataRowDataType.Time &&\r\n !isCalulatedField\r\n ) && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {!isCalulatedField &&\r\n \r\n \r\n {(!taskTypeCol.defaultExpression\r\n ? \r\n : \r\n )}\r\n {props.taskRepetitionType === TaskRepetitionType.Repeated &&\r\n \r\n \r\n {Translations.FormInitializeFromSavedRow}\r\n \r\n \r\n }\r\n \r\n \r\n }\r\n {(taskTypeCol.dataType === TaskDataRowDataType.String && !isDropdown) &&\r\n \r\n \r\n handleIntegerTextFieldChange(\"maxLength\", value)}\r\n />\r\n \r\n \r\n }\r\n \r\n {(taskTypeCol.dataType === TaskDataRowDataType.Number || taskTypeCol.dataType === TaskDataRowDataType.Integer) &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {!isCalulatedField &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {!isCalulatedField &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {(taskTypeCol.dataType === TaskDataRowDataType.Boolean) &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {TaskTypeCol.colCanBeUsedInFilter(taskTypeCol) && (\r\n \r\n \r\n \r\n onTaskTypePropUpdate(\r\n taskTypeCol.field,\r\n \"useInFilter\",\r\n checked\r\n )\r\n }\r\n />\r\n \r\n \r\n )}\r\n \r\n \r\n }\r\n \r\n }\r\n {((!!props.formTypeCol || !!props.lineTypeCol) && !isLabel && !isLineBreak && !isEmptyArea) && (\r\n \r\n )}\r\n {optionsDialogData.show &&\r\n \r\n }\r\n {showInializeFromRowDialog &&\r\n \r\n }\r\n
    \r\n
    \r\n );\r\n};\r\n","import { Grid } from \"@mui/material\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport {\r\n DragDropContext,\r\n DragStart,\r\n DropResult,\r\n ResponderProvided\r\n} from \"react-beautiful-dnd\";\r\nimport { ITaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { ITaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { TaskFormDesignBuilder, TaskFormDesignBuilderDroppableId, TaskFormDesignerDataRow } from \"./TaskFormDesignerBuilder\";\r\nimport { componentDefaultValues, TaskFormDesignComponentPicker } from \"./TaskFormDesignerComponentPicker\";\r\nimport { TaskFormDesignerComponentProperties } from \"./TaskFormDesignerComponentProperties\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { getWebWidthFromClass } from \"./TaskFormDesignerComponentProperties/TaskFormDesignerComponentPropertiesWidth\";\r\nimport { ILineColumnWidth } from \"./TaskFormDesignerComponentProperties/TaskFormDesignerComponentPropertiesRow\";\r\nimport { TaskRepetitionType } from \"ui/Scripts/source/models/enums\";\r\n\r\ninterface TaskFormDesignerProps {\r\n taskRepetitionType: TaskRepetitionType;\r\n taskType: ITaskEditTypeItem;\r\n headerDataRow?: ITaskDataRow;\r\n formDataRow?: ITaskDataRow;\r\n lineDataRow?: ITaskDataRow;\r\n lineColumnWidths: ILineColumnWidth[];\r\n headerTypeCol: ITaskTypeCol;\r\n formTypeCol: ITaskTypeCol;\r\n lineTypeCol: ITaskTypeCol;\r\n sessionState: ISessionState;\r\n onHeaderSchemaReorder: (startIndex: number, endIndex: number) => void;\r\n onHeaderSchemaAddItem: (fieldType: string, index: number) => void;\r\n onFormSchemaReorder: (startIndex: number, endIndex: number) => void;\r\n onFormSchemaAddItem: (fieldType: string, index: number) => void;\r\n onRowSchemaReorder: (startIndex: number, endIndex: number) => void;\r\n onHeaderItemClick: (id: string) => void;\r\n onFormItemClick: (id: string) => void;\r\n onTaskTypeHeaderPropUpdate: (id: string, name: string, value: string | boolean | number | IIdTitle[]) => void;\r\n onTaskTypeFormPropUpdate: (id: string, name: string, value: string | boolean | number | IIdTitle[]) => void;\r\n onHeaderTaskDataRowValueUpdate: (id: string, name: string, value: string) => void;\r\n onFormTaskDataRowValueUpdate: (id: string, name: string, value: string) => void;\r\n onHeaderRemoveComponent: (id: string) => void;\r\n onHeaderCopyComponent: (id: string) => void;\r\n onFormRemoveComponent: (id: string) => void;\r\n onFormCopyComponent: (id: string) => void;\r\n onRowLinePropUpdate: (id: string, name: string, value: string) => void;\r\n onAddFieldToLine: (id: string) => Promise;\r\n onRemoveFieldFromLine: (id: string) => void;\r\n onChangeLineColumnWidth: (id: string, classes: string) => void;\r\n onViewSchema?: () => void;\r\n}\r\n\r\ninterface TaskFormDesignerState {\r\n dragging?: {\r\n width: number;\r\n source?: string;\r\n },\r\n headerDesignerRows?: TaskFormDesignerDataRow[];\r\n formDesignerRows?: TaskFormDesignerDataRow[];\r\n}\r\n \r\nconst calculateRows = (rows: ITaskTypeCol[], prefix: string) => {\r\n const result: TaskFormDesignerDataRow[] = [\r\n {\r\n id: `${prefix}-row-0`,\r\n locked: false,\r\n width: 0,\r\n rows: [],\r\n }\r\n ];\r\n\r\n rows?.forEach((item) => {\r\n const itemWidth = getWebWidthFromClass(item.class);\r\n\r\n if ((result[result.length - 1].width + itemWidth) > 12) {\r\n result.push({\r\n id: `${prefix}-row-${result.length}`,\r\n locked: false,\r\n width: 0,\r\n rows: [],\r\n });\r\n }\r\n\r\n result[result.length - 1].rows?.push(item);\r\n result[result.length - 1].width += itemWidth;\r\n });\r\n \r\n return result;\r\n};\r\n\r\nconst calculateStartIndex = (formCols: ITaskTypeCol[], droppableId: string) => formCols.findIndex(item => item.field === droppableId);\r\n\r\nconst calculateEndIndex = (dataRows: TaskFormDesignerDataRow[], source: string, destination: string, index: number, startIndex: number) => {\r\n let result = 0;\r\n if (destination === TaskFormDesignBuilderDroppableId.Header || destination === TaskFormDesignBuilderDroppableId.Form) {\r\n result = dataRows.reduce((accumulator, item, currIndex) => accumulator + (currIndex < index ? item.rows.length : 0), 0);\r\n if (startIndex >= 0 && startIndex < result) {\r\n result -= 1;\r\n }\r\n } else {\r\n const rowId = dataRows.findIndex(item => item.id === destination);\r\n result = dataRows.reduce((accumulator, item, currIndex) => accumulator + (currIndex < rowId ? item.rows.length : 0), 0) + index;\r\n if (startIndex >= 0 && source !== destination && startIndex < result) {\r\n result -= 1;\r\n }\r\n }\r\n return result;\r\n};\r\n\r\nexport const TaskFormDesigner = (props: TaskFormDesignerProps) => {\r\n const [state, setState] = useState();\r\n\r\n useEffect(() => {\r\n setState((old) => ({\r\n ...old,\r\n headerDesignerRows: calculateRows(props.taskType?.headerCols, TaskFormDesignBuilderDroppableId.Header)\r\n }));\r\n }, [props.taskType?.headerCols]);\r\n\r\n useEffect(() => {\r\n setState((old) => ({\r\n ...old,\r\n formDesignerRows: calculateRows(props.taskType?.formCols, TaskFormDesignBuilderDroppableId.Form)\r\n }));\r\n }, [props.taskType?.formCols]);\r\n \r\n const handleDragEnd = (result: DropResult, provided: ResponderProvided) => {\r\n //console.log(\"handleDragEnd S\", result?.destination, result?.source, `'${result?.draggableId}'`);\r\n if (!result?.destination) return;\r\n if (result?.source?.droppableId === TaskFormDesignBuilderDroppableId.Picker) {\r\n setTimeout(() => {\r\n if ((result?.destination.droppableId ?? \"\").startsWith(TaskFormDesignBuilderDroppableId.Header)) {\r\n const startIndex = calculateStartIndex(props.taskType.headerCols, result.draggableId);\r\n const endIndex = calculateEndIndex(state.headerDesignerRows, result.source.droppableId, result.destination.droppableId, result.destination.index, startIndex);\r\n props.onHeaderSchemaAddItem(result.draggableId, endIndex);\r\n } else if ((result?.destination.droppableId ?? \"\").startsWith(TaskFormDesignBuilderDroppableId.Form)) {\r\n const startIndex = calculateStartIndex(props.taskType.formCols, result.draggableId);\r\n const endIndex = calculateEndIndex(state.formDesignerRows, result.source.droppableId, result.destination.droppableId, result.destination.index, startIndex);\r\n props.onFormSchemaAddItem(result.draggableId, endIndex);\r\n }\r\n }, 10);\r\n } else if (result?.source?.droppableId === TaskFormDesignBuilderDroppableId.Row) {\r\n props.onRowSchemaReorder(result.source?.index, result.destination?.index);\r\n } else if ((result?.source?.droppableId ?? \"\").startsWith(TaskFormDesignBuilderDroppableId.Form)) {\r\n const field = result.draggableId?.substring(TaskFormDesignBuilderDroppableId.Form.length) ?? \"\";\r\n const startIndex = calculateStartIndex(props.taskType.formCols, field);\r\n const endIndex = calculateEndIndex(state.formDesignerRows, result.source.droppableId, result.destination.droppableId, result.destination.index, startIndex);\r\n props.onFormSchemaReorder(startIndex, endIndex);\r\n } else if ((result?.source?.droppableId ?? \"\").startsWith(TaskFormDesignBuilderDroppableId.Header)) {\r\n const field = result.draggableId?.substring(TaskFormDesignBuilderDroppableId.Header.length) ?? \"\";\r\n const startIndex = calculateStartIndex(props.taskType.headerCols, field);\r\n const endIndex = calculateEndIndex(state.headerDesignerRows, result.source.droppableId, result.destination.droppableId, result.destination.index, startIndex);\r\n props.onHeaderSchemaReorder(startIndex, endIndex);\r\n }\r\n setState((old) => ({\r\n ...old,\r\n dragging: null,\r\n }));\r\n };\r\n\r\n const handleDragStart = (initial: DragStart) => {\r\n //console.log(\"handleDragStart S\", initial, initial.source, initial.source?.droppableId, initial.draggableId, props.taskType);\r\n if (!initial.source || !initial.draggableId || !props.taskType) return;\r\n const droppableId = initial.source.droppableId;\r\n let width = 6;\r\n if (droppableId === TaskFormDesignBuilderDroppableId.Picker) {\r\n width = getWebWidthFromClass(componentDefaultValues[initial.draggableId]?.defaultProps?.class) || 6;\r\n } else {\r\n let taskTypeCols: ITaskTypeCol[] = [];\r\n let field = \"\";\r\n if (droppableId.startsWith(TaskFormDesignBuilderDroppableId.Header)) {\r\n taskTypeCols = props.taskType.headerCols;\r\n field = initial.draggableId.substring(TaskFormDesignBuilderDroppableId.Header.length) ?? \"\";\r\n } else if (droppableId.startsWith(TaskFormDesignBuilderDroppableId.Form)) {\r\n taskTypeCols = props.taskType.formCols;\r\n field = initial.draggableId.substring(TaskFormDesignBuilderDroppableId.Form.length) ?? \"\";\r\n } else if (droppableId.startsWith(TaskFormDesignBuilderDroppableId.Row)) {\r\n taskTypeCols = props.taskType.lineCols;\r\n field = initial.draggableId.substring(TaskFormDesignBuilderDroppableId.Row.length) ?? \"\";\r\n } else {\r\n return;\r\n }\r\n const taskTypeCol = taskTypeCols.find(item => item.field === field);\r\n if (!taskTypeCol) return;\r\n width = getWebWidthFromClass(taskTypeCol.class);\r\n }\r\n //console.log(\"handleDragStart M\", width, droppableId);\r\n setState((old) => ({\r\n ...old,\r\n dragging: {\r\n width,\r\n source: droppableId,\r\n },\r\n }));\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import { json } from \"@codemirror/lang-json\";\r\nimport { Box } from \"@mui/material\";\r\nimport CodeMirror, { ViewUpdate } from \"@uiw/react-codemirror\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { Dialog } from \"../../../../framework/Dialog/Dialog\";\r\nimport { DialogButtons } from \"../../../../framework/Dialog/DialogButtons\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\n\r\ninterface TaskFormDesignerSchemaDialogProps {\r\n dataSchema: string;\r\n onSave: (value: string) => void;\r\n onClose: () => void;\r\n}\r\n\r\nexport const TaskFormDesignerSchemaDialog = (props: TaskFormDesignerSchemaDialogProps) => {\r\n const [schema, setSchema] = useState();\r\n\r\n useEffect(() => {\r\n setSchema(props.dataSchema);\r\n }, [props.dataSchema]);\r\n \r\n const handleChangeSchema = (value: string, _viewUpdate: ViewUpdate) => {\r\n setSchema(value);\r\n };\r\n\r\n return (\r\n \r\n }\r\n actions={\r\n \r\n props.onSave(schema)}\r\n />\r\n \r\n }\r\n onClose={props.onClose}\r\n />\r\n );\r\n};\r\n","// ReportExcelReportTable - MODULE\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { ITaskDataRow, TaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { List } from \"../../../List/List\";\r\nimport { ITaskValidationRow } from \"ui/Scripts/source/models/task/taskValidationRow\";\r\n\r\n// ReportExcelReportTable\r\nexport interface IReportExcelReportTableProp {\r\n listWidth: number;\r\n taskType: ITaskEditTypeItem;\r\n dataRows: ITaskDataRow[];\r\n validationRows?: ITaskValidationRow[];\r\n sortingDisabled?: boolean;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n multiSelect?: boolean;\r\n selectedId?: string;\r\n selectedColumn?: string;\r\n checkedIds?: string[];\r\n onSetSortData: (sortColumn: string, sortOrderIsAsc: boolean) => void;\r\n onSetSelectedIds?: (selectedId: string, checkedIds: string[]) => void;\r\n onColumnClick?: (column: string) => void;\r\n}\r\n\r\nexport interface IReportExcelReportTableState {\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n dataRows: ITaskDataRow[];\r\n}\r\n\r\nexport class ReportExcelReportTable extends React.Component {\r\n getSortColumnFromProps = (props: IReportExcelReportTableProp): string => {\r\n let result = props.sortColumn ?? \"\";\r\n if (props.taskType && props.taskType.lineCols.length > 0) {\r\n if (!props.taskType.lineCols.find(i => i.field === result)) {\r\n result = props.taskType.lineCols[0].field;\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n constructor(props: IReportExcelReportTableProp) {\r\n super(props);\r\n const sortColumn = this.getSortColumnFromProps(props);\r\n const sortOrderIsAsc = props.sortColumn ? props.sortOrderIsAsc : true;\r\n this.state = {\r\n sortColumn,\r\n sortOrderIsAsc,\r\n dataRows: props.dataRows ? props.dataRows : [],\r\n };\r\n }\r\n\r\n filteredList = (column: string, asc: boolean) => {\r\n const props = this.props;\r\n const dataRows = props.dataRows ? props.dataRows.slice(0) : [];\r\n TaskDataRow.sortTaskDataRowsByColumn(dataRows, props.taskType, column, asc);\r\n if (props.onSetSortData) {\r\n props.onSetSortData(column, asc);\r\n }\r\n this.setState({\r\n sortColumn: column,\r\n sortOrderIsAsc: asc,\r\n dataRows\r\n });\r\n };\r\n\r\n componentDidUpdate(prevProps: IReportExcelReportTableProp, prevState: IReportExcelReportTableState) {\r\n const props = this.props;\r\n const prevSortColumn = this.getSortColumnFromProps(prevProps);\r\n const sortColumn = this.getSortColumnFromProps(props);\r\n const prevSortOrderIsAsc = prevProps.sortColumn ? prevProps.sortOrderIsAsc : true;\r\n const sortOrderIsAsc = props.sortColumn ? props.sortOrderIsAsc : true;\r\n const prevDataRowsHash = prevProps.dataRows ? TaskDataRow.getHash(prevProps.dataRows) : \"\";\r\n const dataRowsHash = props.dataRows ? TaskDataRow.getHash(props.dataRows) : \"\";\r\n if (prevDataRowsHash === dataRowsHash && prevSortColumn === sortColumn && prevSortOrderIsAsc === sortOrderIsAsc) return;\r\n this.filteredList(sortColumn, sortOrderIsAsc);\r\n };\r\n \r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n this.filteredList(sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n {\r\n return { styleClass: i.class + (!!props.selectedColumn && props.selectedColumn === i.field ? \" col-selected\" : \"\"), column: i.field, content: i.title };\r\n })\r\n }}\r\n lines={state.dataRows.map((dataRow) => {\r\n const validationRow = props.validationRows && props.validationRows.length\r\n ? props.validationRows.find(i => i.id === dataRow.id)\r\n : null;\r\n return {\r\n columns: props.taskType.lineCols.map((dataCol) => {\r\n const validationCol = validationRow\r\n ? validationRow.cols.find(j => j.field === dataCol.field)\r\n : null;\r\n return {\r\n styleClass: dataCol.class,\r\n column: dataCol.field,\r\n errors: validationCol\r\n ? validationCol.errors\r\n : [],\r\n content: dataRow.getTaskDataRowColListUiValue(dataCol.field, props.taskType)\r\n };\r\n }),\r\n id: dataRow.id\r\n };\r\n })}\r\n sortColumn={props.sortingDisabled ? \"\" : state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={props.multiSelect ? props.selectedId : \"\"}\r\n checkedIds={props.multiSelect ? props.checkedIds : []}\r\n selectedColumn={props.selectedColumn}\r\n onSetSelectedIds={props.multiSelect ? props.onSetSelectedIds : null}\r\n onSearchLines={this.handleSearchLines}\r\n onColumnClick={props.onColumnClick}\r\n />\r\n );\r\n }\r\n}","import React, { ReactNode } from \"react\";\r\n\r\ninterface ITaskDynamicFormTableContainerProps {\r\n mobile?: boolean;\r\n children: ReactNode;\r\n}\r\n\r\nexport const TaskDynamicFormTableContainer = (props: ITaskDynamicFormTableContainerProps) => (\r\n
    \r\n {props.children}\r\n
    \r\n);\r\n","import React from \"react\";\r\nimport { TaskRepetitionType } from \"ui/Scripts/source/models/enums\";\r\nimport { ITaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ReportExcelReportTable } from \"../../../../framework/Report/ReportExcelReport/ReportExcelReportTable\";\r\nimport { TaskDynamicForm } from \"../../../TaskDynamicForm/TaskDynamicForm\";\r\nimport { TaskDynamicFormContainer } from \"../../../TaskDynamicFormContainer\";\r\nimport { TaskDynamicFormTableContainer } from \"../../../TaskDynamicFormTableContainer\";\r\nimport { DialogSectionCard } from \"source/components/framework/Dialog/DialogSectionCard\";\r\nimport { Box } from \"@mui/material\";\r\nimport { ITaskDataRowCol } from \"ui/Scripts/source/models/task/taskDataRowCol\";\r\nimport { ITaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\nimport { FormAccordion } from \"source/components/framework/FormAccordion\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum TaskFormDesignerPreviewType {\r\n Web = \"1\",\r\n Mobile = \"2\",\r\n Print = \"3\",\r\n PrintRow = \"4\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\ninterface TaskFormDesignerPreviewWebProps {\r\n height?: string;\r\n title: string;\r\n previewType: TaskFormDesignerPreviewType;\r\n taskRepetitionType?: TaskRepetitionType;\r\n taskType: ITaskEditTypeItem;\r\n headerDataRow: ITaskDataRow;\r\n formDataRow: ITaskDataRow;\r\n lineDataRow: ITaskDataRow;\r\n headerTypeCol?: ITaskTypeCol;\r\n formTypeCol?: ITaskTypeCol;\r\n onHeaderItemClick: (id: string) => void;\r\n onFormItemClick: (id: string) => void;\r\n onUpdateHeaderDataRowCols: (taskDataRowCols: ITaskDataRowCol[]) => void;\r\n onUpdateFormDataRowCols: (taskDataRowCols: ITaskDataRowCol[]) => void;\r\n}\r\n\r\nexport const TaskFormDesignerPreviewWeb = (\r\n props: TaskFormDesignerPreviewWebProps\r\n) => {\r\n const headerColsExist = !!props.headerDataRow && props.headerDataRow.cols.length > 0;\r\n const formColsExist = !!props.formDataRow && props.formDataRow.cols.length > 0;\r\n\r\n return (\r\n \r\n \r\n {headerColsExist && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {formColsExist && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {props.taskRepetitionType === TaskRepetitionType.Repeated && !!props.lineDataRow && props.lineDataRow.cols.length > 0 && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n","import { Grid } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { ITaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\nimport { GridRow } from \"../../../../framework/Grid/GridRow\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { TaskTypeClassWidthPrefix } from \"ui/Scripts/source/models/enums\";\r\nimport { TaskFormDesignerPreviewType } from \"../TaskFormDesignerPreviewWeb\";\r\nimport { ILineColumnWidth } from \"../../TaskFormDesignerComponentProperties/TaskFormDesignerComponentPropertiesRow\";\r\nimport { TaskFormDesignerComponentPropertiesWidth } from \"../../TaskFormDesignerComponentProperties/TaskFormDesignerComponentPropertiesWidth\";\r\nimport { FormAccordion } from \"source/components/framework/FormAccordion\";\r\n\r\ninterface ITaskFormDesignerPreviewComponentPropertiesRowProps {\r\n previewType: TaskFormDesignerPreviewType;\r\n lineTypeCol: ITaskTypeCol;\r\n lineColumnWidths: ILineColumnWidth[];\r\n formFieldMargin: string;\r\n onChangeLineColumnWidth: (id: string, classes: string) => void;\r\n}\r\n\r\nexport const TaskFormDesignerPreviewComponentPropertiesRow = (\r\n props: ITaskFormDesignerPreviewComponentPropertiesRowProps\r\n) => {\r\n if (!props.lineTypeCol) return null;\r\n return (\r\n \r\n \r\n {props.lineTypeCol && (\r\n <>\r\n {props.previewType === TaskFormDesignerPreviewType.Web &&\r\n \r\n i.webWidth > 0).length + 1}\r\n title={Translations.FormColumnWidth}\r\n onUpdate={props.onChangeLineColumnWidth}\r\n />\r\n \r\n }\r\n {props.previewType === TaskFormDesignerPreviewType.Mobile &&\r\n \r\n i.mobileWidth > 0).length + 1}\r\n title={Translations.FormColumnWidthMobile}\r\n onUpdate={props.onChangeLineColumnWidth}\r\n />\r\n \r\n }\r\n {props.previewType === TaskFormDesignerPreviewType.Print &&\r\n \r\n i.printWidth > 0).length + 1}\r\n title={Translations.FormColumnWidthPrint}\r\n onUpdate={props.onChangeLineColumnWidth}\r\n />\r\n \r\n }\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n","import { Alert, Grid } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { TaskDataRowDataType, TaskRepetitionType, TaskTypeClassWidthPrefix } from \"ui/Scripts/source/models/enums\";\r\nimport { ITaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { DialogSectionCard } from \"source/components/framework/Dialog/DialogSectionCard\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { TaskFormDesignerPreviewType } from \"../TaskFormDesignerPreviewWeb\";\r\nimport { ILineColumnWidth } from \"../../TaskFormDesignerComponentProperties/TaskFormDesignerComponentPropertiesRow\";\r\nimport { TaskFormDesignerComponentPropertiesName } from \"../../TaskFormDesignerComponentProperties/TaskFormDesignerComponentPropertiesName/TaskFormDesignerComponentPropertiesName\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { TaskFormDesignerComponentPropertiesWidth } from \"../../TaskFormDesignerComponentProperties/TaskFormDesignerComponentPropertiesWidth\";\r\nimport { TaskFormDesignerPreviewComponentPropertiesRow } from \"../TaskFormDesignerPreviewComponentPropertiesRow\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { FormAccordion } from \"source/components/framework/FormAccordion\";\r\n\r\ninterface ITaskFormDesignerPreviewComponentPropertiesProps {\r\n previewType: TaskFormDesignerPreviewType;\r\n taskRepetitionType: TaskRepetitionType;\r\n taskType: ITaskEditTypeItem;\r\n headerTypeCol?: ITaskTypeCol;\r\n formTypeCol?: ITaskTypeCol;\r\n lineTypeCol?: ITaskTypeCol;\r\n lineColumnWidths: ILineColumnWidth[];\r\n onHeaderItemClick: (field: string) => void;\r\n onFormItemClick: (field: string) => void;\r\n onTaskTypeHeaderPropUpdate?: (\r\n id: string,\r\n name: string,\r\n value: string | boolean | number | IIdTitle[],\r\n ) => void;\r\n onTaskTypeFormPropUpdate?: (\r\n id: string,\r\n name: string,\r\n value: string | boolean | number | IIdTitle[],\r\n ) => void;\r\n onChangeLineColumnWidth: (id: string, classes: string) => void;\r\n}\r\n\r\nexport const TaskFormDesignerPreviewComponentProperties = (\r\n props: ITaskFormDesignerPreviewComponentPropertiesProps\r\n) => {\r\n const taskTypeCol = props.headerTypeCol ?? props.formTypeCol ?? props.lineTypeCol;\r\n\r\n const isLabel = taskTypeCol?.dataType === TaskDataRowDataType.Label;\r\n\r\n const isLineBreak = taskTypeCol?.dataType === TaskDataRowDataType.LineBreak;\r\n\r\n const isHeaderField = !!props.headerTypeCol;\r\n\r\n const onTaskTypePropUpdate = (id: string, name: string, value: string | boolean | number | IIdTitle[]) => {\r\n if (props.headerTypeCol) {\r\n props.onTaskTypeHeaderPropUpdate(id, name, value);\r\n } else {\r\n props.onTaskTypeFormPropUpdate(id, name, value);\r\n }\r\n };\r\n\r\n const handleWidthChange = (id: string, classes: string) => {\r\n onTaskTypePropUpdate(id, \"class\", classes);\r\n };\r\n\r\n const formFieldMargin = \".5rem 0 0 0\";\r\n\r\n return (\r\n \r\n \r\n {(!taskTypeCol\r\n ?
    \r\n {Translations.SelectComponentInFormToSeeComponentProperties}\r\n
    \r\n : \r\n )}\r\n {(!!props.headerTypeCol || !!props.formTypeCol) &&\r\n <>\r\n {(!isLineBreak && !(!isHeaderField && props.taskRepetitionType === TaskRepetitionType.Repeated && props.previewType === TaskFormDesignerPreviewType.Print)) &&\r\n \r\n \r\n {props.previewType === TaskFormDesignerPreviewType.Web &&\r\n \r\n \r\n \r\n }\r\n {props.previewType === TaskFormDesignerPreviewType.Mobile &&\r\n \r\n \r\n \r\n }\r\n {(props.previewType === TaskFormDesignerPreviewType.Print || props.previewType === TaskFormDesignerPreviewType.PrintRow) &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n }\r\n \r\n }\r\n {((!!props.formTypeCol || !!props.lineTypeCol) && !isLabel && !isLineBreak && props.previewType !== TaskFormDesignerPreviewType.PrintRow) &&\r\n \r\n }\r\n
    \r\n
    \r\n );\r\n};\r\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\r\nimport { TaskRepetitionType, TaskVisibility } from \"ui/Scripts/source/models/enums\";\r\nimport { ITaskDataRow, SaveTaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { DialogSectionCard } from \"source/components/framework/Dialog/DialogSectionCard\";\r\nimport { Box } from \"@mui/material\";\r\nimport { SaveTaskDataRowCol } from \"ui/Scripts/source/models/task/taskDataRowCol\";\r\nimport { ITaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\nimport { SaveDataObj } from \"source/framework/saveData\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { PrintButton } from \"source/components/framework/Button/PrintButton\";\r\nimport { TaskTypePrintHtml } from \"source/models/taskType/taskTypePrintHtml\";\r\n\r\ninterface ITaskFormDesignerPreviewPrintProps {\r\n height?: string;\r\n companyId: string;\r\n code: string;\r\n taskRepetitionType: TaskRepetitionType;\r\n dataSchema: string;\r\n printOrientationLandscape: boolean;\r\n visibility: TaskVisibility;\r\n title: string;\r\n taskType: ITaskEditTypeItem;\r\n headerDataRow: ITaskDataRow;\r\n formDataRow: ITaskDataRow;\r\n headerTypeCol?: ITaskTypeCol;\r\n formTypeCol?: ITaskTypeCol;\r\n onGetPrintHtml: (obj: any) => Promise;\r\n onGetPrint: (obj: any) => Promise;\r\n onHeaderItemClick?: (id: string) => void;\r\n onFormItemClick?: (id: string) => void;\r\n}\r\n\r\nexport const TaskFormDesignerPreviewPrint = (props: ITaskFormDesignerPreviewPrintProps) => {\r\n const containerClassName = \"task-form-designer-preview-print\";\r\n const observerRef = useRef(null);\r\n const divRef = useRef(null);\r\n const [previewHtml, setPreviewHtml] = useState(\"\");\r\n const [headerElements, setHeaderElements] = useState([]);\r\n const [formElements, setFormElements] = useState([]);\r\n const [mutationId, setMutationId] = useState(\"\");\r\n\r\n const getSaveData = (): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"code\", props.code);\r\n result.append(\"taskRepetitionType\", props.taskRepetitionType);\r\n result.append(\"dataSchema\", props.dataSchema);\r\n result.append(\"printOrientationLandscape\", props.printOrientationLandscape);\r\n result.append(\"visibility\", props.visibility);\r\n result.append(\"activeState\", 1);\r\n result.append(\"taskHeaderDataCols\", props.taskType.headerCols && props.taskType.headerCols.length\r\n ? JSON.stringify(props.headerDataRow.cols.map(i => new SaveTaskDataRowCol(i)))\r\n : null);\r\n result.append(\"taskDataRow\", props.formDataRow\r\n ? JSON.stringify(SaveTaskDataRow.createSaveTaskDataRow(props.taskType.formCols, props.formDataRow, null))\r\n : null\r\n );\r\n return result;\r\n };\r\n\r\n const elementIsInHeader = (element: Element): boolean => {\r\n return element.classList.contains(\"header\");\r\n };\r\n\r\n const getElementField = (element: Element): string => {\r\n const value = element.getAttribute(\"id\");\r\n if (!value) return \"\";\r\n return value.substring(6);\r\n };\r\n\r\n const clickEvent = (event: any) => {\r\n const element = event.target.closest(\".field\");\r\n if (!element) return;\r\n const field = getElementField(element);\r\n if (!field) return;\r\n if (elementIsInHeader(element)) {\r\n props.onHeaderItemClick(field);\r\n } else {\r\n props.onFormItemClick(field);\r\n }\r\n };\r\n\r\n const setSelectedElement = (tempHeaderElements: Element[], tempFormElements: Element[]) => {\r\n for (const element of tempHeaderElements) {\r\n element.classList.remove(\"selected\");\r\n }\r\n for (const element of tempFormElements) {\r\n element.classList.remove(\"selected\");\r\n }\r\n if (props.headerTypeCol?.field) {\r\n for (const element of tempHeaderElements) {\r\n const field = getElementField(element);\r\n if (field === props.headerTypeCol.field) {\r\n element.classList.add(\"selected\");\r\n break;\r\n }\r\n }\r\n }\r\n if (props.formTypeCol?.field) {\r\n for (const element of tempFormElements) {\r\n const field = getElementField(element);\r\n if (field === props.formTypeCol.field) {\r\n element.classList.add(\"selected\");\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n\r\n const attachClickEvents = () => {\r\n const elements = document.querySelectorAll(`.${containerClassName} .field`);\r\n const tempHeaderElements: Element[] = [];\r\n const tempFormElements: Element[] = [];\r\n elements.forEach((element) => {\r\n element.addEventListener(\"click\", clickEvent);\r\n if (elementIsInHeader(element)) {\r\n tempHeaderElements.push(element);\r\n } else {\r\n tempFormElements.push(element);\r\n }\r\n });\r\n setHeaderElements(tempHeaderElements);\r\n setFormElements(tempFormElements);\r\n setSelectedElement(tempHeaderElements, tempFormElements);\r\n };\r\n\r\n const removeClickEvents = () => {\r\n const elements = document.querySelectorAll(`.${containerClassName} .field`);\r\n elements.forEach((element) => {\r\n element.removeEventListener(\"click\", clickEvent);\r\n });\r\n setHeaderElements([]);\r\n setFormElements([]);\r\n };\r\n\r\n const loadPreviewData = async () => {\r\n //Call server\r\n const result = await AppUtils.callService(() => props.onGetPrintHtml(getSaveData().obj));\r\n if (!result) return;\r\n removeClickEvents();\r\n setPreviewHtml(result.html);\r\n // window.setTimeout(() => {\r\n // attachClickEvents();\r\n // }, 0);\r\n };\r\n \r\n const handleMutation = useCallback(() => {\r\n setMutationId(Base.getGuid());\r\n }, [previewHtml]);\r\n\r\n useEffect(() => {\r\n observerRef.current = new MutationObserver(handleMutation);\r\n observerRef.current.observe(divRef.current, {\r\n childList: true,\r\n attributes: true,\r\n characterData: true\r\n });\r\n\r\n return () => {\r\n observerRef.current.disconnect();\r\n removeClickEvents();\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n loadPreviewData();\r\n }, [props.companyId, props.dataSchema, props.onGetPrint, props.onGetPrintHtml]);\r\n\r\n useEffect(() => {\r\n setSelectedElement(headerElements, formElements);\r\n }, [props.headerTypeCol?.field, props.formTypeCol?.field]);\r\n\r\n useEffect(() => {\r\n if (!mutationId) return;\r\n attachClickEvents();\r\n }, [mutationId]);\r\n\r\n const handlePrint = async () => {\r\n const fileName = await AppUtils.callService(() => props.onGetPrint(getSaveData().obj));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.PrintParameterDownloaded, fileName));\r\n };\r\n\r\n return (\r\n \r\n {Translations.Print}\r\n \r\n }\r\n >\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import React, { useEffect, useState } from \"react\";\r\nimport * as taskService from \"source/models/services/taskService\";\r\nimport { TaskRepetitionType, TaskVisibility } from \"ui/Scripts/source/models/enums\";\r\nimport { ISchemaParseResult, TaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { Alert, Grid } from \"@mui/material\";\r\nimport { ITaskDataRowCol } from \"ui/Scripts/source/models/task/taskDataRowCol\";\r\nimport { ITaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { TaskFormDesignerPreviewType, TaskFormDesignerPreviewWeb } from \"./TaskFormDesignerPreviewWeb\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { TaskFormDesignerPreviewComponentProperties } from \"./TaskFormDesignerPreviewComponentProperties/TaskFormDesignerPreviewComponentProperties\";\r\nimport { ITaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\nimport { ILineColumnWidth } from \"../TaskFormDesignerComponentProperties/TaskFormDesignerComponentPropertiesRow\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { TaskFormDesignerPreviewPrint } from \"./TaskFormDesignerPreviewPrint\";\r\n \r\ninterface TaskFormDesignerPreviewProps {\r\n previewType: TaskFormDesignerPreviewType;\r\n taskRepetitionType: TaskRepetitionType;\r\n dataSchema: string;\r\n headerDataRow: ITaskDataRow;\r\n formDataRow: ITaskDataRow;\r\n lineDataRow: ITaskDataRow;\r\n //Print preview\r\n companyId: string;\r\n code: string;\r\n printOrientationLandscape: boolean;\r\n //Properties Panel\r\n headerTypeCol?: ITaskTypeCol;\r\n formTypeCol?: ITaskTypeCol;\r\n lineTypeCol?: ITaskTypeCol;\r\n lineColumnWidths: ILineColumnWidth[];\r\n onHeaderItemClick: (id: string) => void;\r\n onFormItemClick: (id: string) => void;\r\n onTaskTypeHeaderPropUpdate?: (\r\n id: string,\r\n name: string,\r\n value: string | boolean | number | IIdTitle[],\r\n ) => void;\r\n onTaskTypeFormPropUpdate?: (\r\n id: string,\r\n name: string,\r\n value: string | boolean | number | IIdTitle[],\r\n ) => void;\r\n onUpdateHeaderDataRowCols: (taskDataRowCols: ITaskDataRowCol[]) => void;\r\n onUpdateFormDataRowCols: (taskDataRowCols: ITaskDataRowCol[]) => void;\r\n onChangeLineColumnWidth: (id: string, classes: string) => void;\r\n}\r\n\r\nexport const TaskFormDesignerPreview = (\r\n props: TaskFormDesignerPreviewProps\r\n) => {\r\n const [state, setState] = useState(null);\r\n\r\n useEffect(() => {\r\n setState(TaskEditTypeItem.getTaskTypeFromSchema(props.dataSchema));\r\n }, [props.dataSchema]);\r\n \r\n if (!state) return null;\r\n\r\n return (\r\n \r\n \r\n {!!state.error &&\r\n
    \r\n {state.error}\r\n
    \r\n }\r\n {!!state.taskType &&\r\n <>\r\n {props.previewType === TaskFormDesignerPreviewType.Web &&\r\n \r\n }\r\n {props.previewType === TaskFormDesignerPreviewType.Mobile &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {(props.previewType === TaskFormDesignerPreviewType.Print || props.previewType === TaskFormDesignerPreviewType.PrintRow) &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n","import { Box, Grid } from \"@mui/material\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { getComponentDefaultValueForNewIntance, getComponentNameForNewIntance, getComponentTitleForNewIntance, getTaskTypeCol } from \"source/components/task/TaskFormDesigner/TaskFormDesignerComponentPicker\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { SaveDataObj } from \"source/framework/saveData\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult, TaskDataRowDataType, TaskRepetitionType, TaskTypeClassHidden, TaskTypeClassWidthPrefix, TaskVisibility } from \"ui/Scripts/source/models/enums\";\r\nimport { ITaskDataRow, TaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskDataRowCol, TaskDataRowCol } from \"ui/Scripts/source/models/task/taskDataRowCol\";\r\nimport { ISchemaParseResult, ITaskEditTypeItem, TaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { ITaskTypeCol, modifyUserNameField, TaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport * as store from \"../../../../framework/customStore\";\r\nimport * as taskService from \"../../../../models/services/taskService\";\r\nimport { ISessionState } from \"../../../../models/session/sessionState\";\r\nimport * as storeActions from \"../../../../models/store/storeActions\";\r\nimport { ITaskTypeEditItem } from \"../../../../models/taskType/taskTypeEditItem\";\r\nimport { Dialog } from \"../../../framework/Dialog/Dialog\";\r\nimport { DialogButtons } from \"../../../framework/Dialog/DialogButtons\";\r\nimport { DialogItemsNav } from \"../../../framework/Dialog/DialogItemsNav\";\r\nimport { DialogTabs } from \"../../../framework/Dialog/DialogTabs\";\r\nimport { TaskTypeBasicInformation } from \"../TaskTypeBasicInformation\";\r\nimport { TaskFormDesigner } from \"../TaskFormDesigner\";\r\nimport { TaskFormDesignerSchemaDialog } from \"../TaskFormDesignerBuilder/TaskFormDesignerSchemaDialog\";\r\nimport { TaskFormDesignerPreview } from \"../TaskFormDesignerPreview\";\r\nimport { getTaskFormDesignerComponentType, TaskFormDesignerComponentType } from \"../TaskFormDesignerComponentPicker/TaskFormDesignerComponentPickerItem\";\r\nimport { IdTitle, IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { getMobileWidthFromClass, getPrintWidthFromClass, getUpdatedClassForWidthSub, getWebWidthFromClass } from \"../TaskFormDesignerComponentProperties/TaskFormDesignerComponentPropertiesWidth\";\r\nimport { ILineColumnWidth } from \"../TaskFormDesignerComponentProperties/TaskFormDesignerComponentPropertiesRow\";\r\nimport { DialogSectionCard } from \"source/components/framework/Dialog/DialogSectionCard\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { TaskFormDesignerPreviewType } from \"../TaskFormDesignerPreview/TaskFormDesignerPreviewWeb\";\r\nimport { removeConfirmationWord } from \"ui/Scripts/source/models/consts\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum TaskFormDesignerDialogMenuItem {\r\n General = \"1\",\r\n Builder = \"2\",\r\n PreviewWeb = \"3\",\r\n PreviewMobile = \"4\",\r\n PreviewPrint = \"5\",\r\n PreviewRowPrint = \"6\",\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\ninterface TaskFormDesignerDialogProps {\r\n id: string;\r\n sessionState: ISessionState;\r\n companyId: string;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n addToCompany: boolean;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onOk: (id: string) => void;\r\n onClose: () => void;\r\n onRemove: (ids: string[]) => Promise;\r\n onRefreshList: () => Promise;\r\n}\r\n\r\nexport interface ITaskFormDesignerDialogState {\r\n activeMenuItem: TaskFormDesignerDialogMenuItem;\r\n showSchemaDesignerDialog: boolean;\r\n code: string;\r\n comment: string;\r\n taskRepetitionType: TaskRepetitionType;\r\n dataSchema: string;\r\n dataSchemaParseError: string;\r\n printOrientationLandscape: boolean;\r\n visibility: TaskVisibility;\r\n activeState: number;\r\n headerDataRow: ITaskDataRow;\r\n formDataRow: ITaskDataRow;\r\n lineDataRow: ITaskDataRow;\r\n lineColumnWidths: ILineColumnWidth[];\r\n taskType: ITaskEditTypeItem;\r\n item: ITaskTypeEditItem;\r\n rowId: string;\r\n formSelectedField: string;\r\n headerSelectedField: string;\r\n}\r\n\r\nexport const TaskFormDesignerDialog = (props: TaskFormDesignerDialogProps) => {\r\n const [state, setState] = useState({\r\n activeMenuItem: TaskFormDesignerDialogMenuItem.General,\r\n showSchemaDesignerDialog: false,\r\n item: null,\r\n headerDataRow: null,\r\n formDataRow: null,\r\n lineDataRow: null,\r\n lineColumnWidths: [],\r\n taskType: null,\r\n code: \"\",\r\n comment: \"\",\r\n taskRepetitionType: TaskRepetitionType.NotRepeated,\r\n dataSchema: \"\",\r\n dataSchemaParseError: \"\",\r\n printOrientationLandscape: false,\r\n visibility: TaskVisibility.PrivateAndPublic,\r\n activeState: 0,\r\n rowId: \"\",\r\n formSelectedField: \"\",\r\n headerSelectedField: \"\"\r\n });\r\n\r\n const getTaskTypeFromSchema = (dataSchema: string): ISchemaParseResult => {\r\n const result = TaskEditTypeItem.getTaskTypeFromSchema(dataSchema);\r\n if (!result.taskType) {\r\n return {\r\n taskType: state.taskType,\r\n headerDataRow: state.headerDataRow,\r\n formDataRow: state.formDataRow,\r\n lineDataRow: state.lineDataRow,\r\n error: result.error,\r\n };\r\n }\r\n return result;\r\n };\r\n \r\n const getSchemaFromTaskType = (taskType: ITaskEditTypeItem) => {\r\n return JSON.stringify(\r\n {\r\n header: Object.fromEntries(\r\n taskType?.headerCols?.map(({ field, ...rest }) => [field, getSchemaObjectFromTaskTypeCol(rest)])\r\n ),\r\n form: Object.fromEntries(\r\n taskType?.formCols?.map(({ field, ...rest }) => [field, getSchemaObjectFromTaskTypeCol(rest)])\r\n ),\r\n line: Object.fromEntries(\r\n taskType?.lineCols?.map(({ field, ...rest }) => [field, getSchemaObjectFromTaskTypeCol(rest)])\r\n ),\r\n },\r\n replacer,\r\n \"\\t\"\r\n );\r\n };\r\n\r\n const getSchemaFromState = () => getSchemaFromTaskType(state.taskType);\r\n\r\n const getSaveDataFromState = (props: TaskFormDesignerDialogProps, state: ITaskFormDesignerDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.item?.id);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"code\", state.code);\r\n result.append(\"comment\", state.comment);\r\n result.append(\"taskRepetitionType\", state.taskRepetitionType);\r\n result.append(\"dataSchema\", state.dataSchema);\r\n result.append(\"printOrientationLandscape\", state.printOrientationLandscape);\r\n result.append(\"visibility\", state.visibility);\r\n result.append(\"activeState\", state.activeState);\r\n return result;\r\n };\r\n\r\n const checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n if (!state.code) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.NameMustBeDefined));\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n let orgStateHash = getSaveDataFromState(props, state).hash;\r\n\r\n const getLineColumnWidths = (lineCols: ITaskTypeCol[], ignoreField: string = \"\"): ILineColumnWidth[] => lineCols?.filter(i => i.field !== ignoreField)?.map(item => ({\r\n field: item.field,\r\n webWidth: getWebWidthFromClass(item.class),\r\n mobileWidth: getMobileWidthFromClass(item.class),\r\n printWidth: getPrintWidthFromClass(item.class),\r\n locked: false\r\n }));\r\n\r\n const loadData = async (id: string, addToCompany: boolean) => {\r\n const result = await AppUtils.callService(() => taskService.getTaskTypeEdit(props.companyId, id, addToCompany), false);\r\n if (!result) return;\r\n const item = result.item;\r\n const parseResult = getTaskTypeFromSchema(item.dataSchema);\r\n setState((old) => ({\r\n ...old,\r\n item,\r\n taskType: parseResult.taskType,\r\n headerDataRow: parseResult.headerDataRow,\r\n formDataRow: parseResult.formDataRow,\r\n lineDataRow: parseResult.lineDataRow,\r\n lineColumnWidths: getLineColumnWidths(parseResult.taskType?.lineCols),\r\n code: item.code,\r\n comment: item.comment,\r\n taskRepetitionType: item.taskRepetitionType,\r\n dataSchema: item.dataSchema,\r\n dataSchemaParseError: parseResult.error,\r\n printOrientationLandscape: item.printOrientationLandscape,\r\n visibility: item.visibility,\r\n activeState: item.activeState,\r\n rowId: item.rowId\r\n }));\r\n };\r\n\r\n const handleHeaderSchemaReorder = (startIndex: number, endIndex: number) => {\r\n const result = Array.from(state.taskType.headerCols);\r\n const [removed] = result.splice(startIndex, 1);\r\n result.splice(endIndex, 0, removed);\r\n setState((old) => {\r\n const newTaskType = {\r\n ...old.taskType,\r\n headerCols: result,\r\n };\r\n return {\r\n ...old,\r\n taskType: newTaskType,\r\n dataSchema: getSchemaFromTaskType(newTaskType)\r\n };\r\n });\r\n };\r\n\r\n const handleFormSchemaReorder = (startIndex: number, endIndex: number) => {\r\n const result = Array.from(state.taskType.formCols);\r\n const [removed] = result.splice(startIndex, 1);\r\n result.splice(endIndex, 0, removed);\r\n setState((old) => {\r\n const newTaskType = {\r\n ...old.taskType,\r\n formCols: result,\r\n };\r\n return {\r\n ...old,\r\n taskType: newTaskType,\r\n dataSchema: getSchemaFromTaskType(newTaskType)\r\n };\r\n });\r\n };\r\n\r\n const addComponentToTaskTypeCols = (typeCols: ITaskTypeCol[], componentType: TaskFormDesignerComponentType, index: number, copyTaskTypeCol: ITaskTypeCol = null): { typeCols: ITaskTypeCol[], field: string } => {\r\n const result = Array.from(typeCols).map(item => item);\r\n const item = getTaskTypeCol(componentType);\r\n const name = getComponentNameForNewIntance(typeCols.map(item => item.field), componentType);\r\n item.field = name;\r\n item.title = getComponentTitleForNewIntance(typeCols.map(item => item.title), componentType);\r\n if (copyTaskTypeCol) {\r\n item.dataType = copyTaskTypeCol.dataType;\r\n item.decimals = copyTaskTypeCol.decimals;\r\n item.defaultStr = copyTaskTypeCol.defaultStr;\r\n item.defaultNbr = copyTaskTypeCol.defaultNbr;\r\n item.defaultExpression = copyTaskTypeCol.defaultExpression;\r\n item.unitTitle = copyTaskTypeCol.unitTitle;\r\n item.readOnly = copyTaskTypeCol.readOnly;\r\n item.readOnlyExpression = copyTaskTypeCol.readOnlyExpression;\r\n item.required = copyTaskTypeCol.required;\r\n item.useInFilter = false;\r\n item.minimum = copyTaskTypeCol.minimum;\r\n item.maximum = copyTaskTypeCol.maximum;\r\n item.maxLength = copyTaskTypeCol.maxLength;\r\n item.options = copyTaskTypeCol.options;\r\n item.idOptions = Base.getTypedArray(copyTaskTypeCol.idOptions, IdTitle);\r\n item.idNodeOptions = Base.getTypedArray(copyTaskTypeCol.idNodeOptions, IdTitleNode);\r\n item.class = copyTaskTypeCol.class;\r\n item.expression = copyTaskTypeCol.expression;\r\n item.expressionFormat = copyTaskTypeCol.expressionFormat;\r\n item.expressionIndex = copyTaskTypeCol.expressionIndex;\r\n item.defaultSortField = copyTaskTypeCol.defaultSortField;\r\n item.defaultSortOrderAsc = copyTaskTypeCol.defaultSortOrderAsc;\r\n item.placeholder = copyTaskTypeCol.placeholder;\r\n }\r\n // DO NOT SET PLACEHOLDER AUTOMATICALLY\r\n // if (componentType === TaskFormDesignerComponentType.TextInput || componentType === TaskFormDesignerComponentType.TextArea ||\r\n // componentType === TaskFormDesignerComponentType.Decimal || componentType === TaskFormDesignerComponentType.Integer) {\r\n // item.placeholder = item.title;\r\n // }\r\n result.splice(index, 0, item);\r\n return {\r\n typeCols: result,\r\n field: name\r\n };\r\n };\r\n\r\n const handleHeaderSchemaAddItem = (componentType: TaskFormDesignerComponentType, index: number, copyTaskTypeCol: ITaskTypeCol = null) => {\r\n setState((old) => {\r\n const result = addComponentToTaskTypeCols(old.taskType.headerCols, componentType, index, copyTaskTypeCol);\r\n const dataRowCol = new TaskDataRowCol();\r\n dataRowCol.field = result.field;\r\n dataRowCol.valueStr = getComponentDefaultValueForNewIntance(componentType);\r\n const newTaskType = {\r\n ...old.taskType,\r\n headerCols: [...result.typeCols],\r\n };\r\n const headerDataRow = new TaskDataRow(old.headerDataRow);\r\n headerDataRow.cols = headerDataRow.cols.filter(i => i.field !== result.field).concat([dataRowCol]);\r\n return {\r\n ...old,\r\n taskType: newTaskType,\r\n dataSchema: getSchemaFromTaskType(newTaskType),\r\n headerDataRow,\r\n headerSelectedField: result.field,\r\n formSelectedField: \"\"\r\n };\r\n });\r\n };\r\n\r\n const handleFormSchemaAddItem = (componentType: TaskFormDesignerComponentType, index: number, copyTaskTypeCol: ITaskTypeCol = null) => {\r\n setState((old) => {\r\n const result = addComponentToTaskTypeCols(old.taskType.formCols, componentType, index, copyTaskTypeCol);\r\n const dataRowCol = new TaskDataRowCol();\r\n dataRowCol.field = result.field;\r\n dataRowCol.valueStr = getComponentDefaultValueForNewIntance(componentType);\r\n const newTaskType = {\r\n ...old.taskType,\r\n formCols: [...result.typeCols],\r\n };\r\n const formDataRow = new TaskDataRow(old.formDataRow);\r\n formDataRow.cols = formDataRow.cols.filter(i => i.field !== result.field).concat([dataRowCol]);\r\n return {\r\n ...old,\r\n taskType: newTaskType,\r\n dataSchema: getSchemaFromTaskType(newTaskType),\r\n formDataRow,\r\n formSelectedField: result.field,\r\n headerSelectedField: \"\"\r\n };\r\n });\r\n };\r\n\r\n const handleRowSchemaReorder = (startIndex: number, endIndex: number) => {\r\n const result = Array.from(state.taskType.lineCols);\r\n const [removed] = result.splice(startIndex, 1);\r\n result.splice(endIndex, 0, removed);\r\n setState((old) => {\r\n const newTaskType = {\r\n ...old.taskType,\r\n lineCols: result\r\n };\r\n return {\r\n ...old,\r\n taskType: newTaskType,\r\n dataSchema: getSchemaFromTaskType(newTaskType)\r\n };\r\n });\r\n };\r\n\r\n const handleHeaderItemClick = (headerSelectedField: string) => {\r\n setState((old) => ({\r\n ...old,\r\n headerSelectedField,\r\n formSelectedField: headerSelectedField\r\n ? \"\"\r\n : state.formSelectedField\r\n }));\r\n };\r\n\r\n const handleFormItemClick = (formSelectedField: string) => {\r\n setState((old) => ({\r\n ...old,\r\n formSelectedField,\r\n headerSelectedField: formSelectedField\r\n ? \"\"\r\n : state.headerSelectedField\r\n }));\r\n };\r\n \r\n useEffect(() => {\r\n if (!props.id) return;\r\n loadData(props.id, props.addToCompany);\r\n }, [props.companyId, props.id, props.addToCompany]);\r\n\r\n const handleChange = (event: { target: any; }) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"code\") {\r\n setState((old) => ({ ...old, code: value }));\r\n } else if (name === \"name\") {\r\n setState((old) => ({ ...old, name: value }));\r\n } else if (name === \"comment\") {\r\n setState((old) => ({ ...old, comment: value }));\r\n }\r\n };\r\n\r\n const getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n const saveToDb = async (): Promise => {\r\n if (!await AppUtils.validate(checkErrors, getWarningMessage, null)) return null;\r\n const saveData = getSaveDataFromState(props, state);\r\n //Call server\r\n return await AppUtils.callService(() => taskService.saveTaskTypeEdit(saveData.obj));\r\n };\r\n\r\n const handleSave = async () => {\r\n const result = await saveToDb();\r\n if (!result) return;\r\n props.onOk(result.id);\r\n loadData(result.id, false);\r\n };\r\n\r\n const handleRemove = async () => {\r\n if (state.item?.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveFormParameter, state.item.code), false, removeConfirmationWord) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await props.onRemove([state.item?.id]);\r\n if (!result) return;\r\n props.onClose();\r\n }\r\n };\r\n\r\n const handleCancel = async () => {\r\n const cancelResult = await AppUtils.cancel(getSaveDataFromState(props, state).hash, orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n handleSave();\r\n } else {\r\n props.onClose();\r\n }\r\n };\r\n\r\n const canMoveOut = async (): Promise => {\r\n return await AppUtils.canMoveOut(getSaveDataFromState(props, state).hash, orgStateHash, async () => !!(await saveToDb()), props.onRefreshList);\r\n };\r\n\r\n const handlePrevious = async () => {\r\n if (!await canMoveOut()) return;\r\n orgStateHash = getSaveDataFromState(props, state).hash;\r\n setState((old) => ({\r\n ...old,\r\n formSelectedField: null,\r\n headerSelectedField: null,\r\n }));\r\n props.onPrevious();\r\n };\r\n\r\n const handleNext = async () => {\r\n if (!await canMoveOut()) return;\r\n orgStateHash = getSaveDataFromState(props, state).hash;\r\n setState((old) => ({\r\n ...old,\r\n formSelectedField: null,\r\n headerSelectedField: null,\r\n }));\r\n props.onNext();\r\n };\r\n\r\n const updateTaskTypeColPropUpdate = (taskTypeCols: ITaskTypeCol[], id: string, name: string, value: string | boolean | number | IIdTitle[]) => {\r\n let typeCol: ITaskTypeCol = null;\r\n const result = taskTypeCols.map((item) => {\r\n if (item.field === id) {\r\n const res = { ...item };\r\n res[name] = value;\r\n typeCol = res;\r\n //idOptions change\r\n if (name === \"idOptions\") {\r\n typeCol.options = [];\r\n }\r\n //title change\r\n if (name === \"title\") {\r\n const valueStr = value as string;\r\n // DO NOT SET PLACEHOLDER AUTOMATICALLY\r\n // if (valueStr && typeCol.dataType === TaskDataRowDataType.String) {\r\n // typeCol.placeholder = valueStr;\r\n // } else\r\n if (typeCol.dataType === TaskDataRowDataType.Label) {\r\n //Dynamically set preWrap\r\n const hasPreWrap = typeCol.class.includes(\"preWrap\");\r\n if (valueStr && valueStr.indexOf(\"\\n\") > -1) {\r\n if (!hasPreWrap) {\r\n typeCol.class = `${typeCol.class} preWrap`;\r\n }\r\n } else if (hasPreWrap) {\r\n typeCol.class = typeCol.class.replace(\" preWrap\", \"\").replace(\"preWrap \", \"\");\r\n }\r\n }\r\n }\r\n return res;\r\n }\r\n return { ...item };\r\n });\r\n return {\r\n taskTypeCols: result,\r\n typeCol\r\n };\r\n };\r\n\r\n const updateDefaultValueToDataRowCols = (taskDataRow: ITaskDataRow, typeCol: ITaskTypeCol, id: string) => {\r\n if (!taskDataRow?.cols) return;\r\n const ind = taskDataRow.cols.findIndex(i => i.field === id);\r\n if (ind < 0) return;\r\n const dataCol = TaskDataRowCol.getDefaultValueTaskDataRowCol(typeCol);\r\n dataCol.valueStr = TaskDataRowCol.getTaskDataRowColUiValue(typeCol, dataCol.valueStr, dataCol.valueNbr);\r\n taskDataRow.cols[ind] = dataCol;\r\n };\r\n\r\n const handleHeaderTaskTypePropUpdate = (id: string, name: string, value: string | boolean | number | IIdTitle[]) => {\r\n //TypeCol update\r\n const updated = updateTaskTypeColPropUpdate(state.taskType.headerCols, id, name, value);\r\n const taskType = {\r\n ...state.taskType,\r\n headerCols: updated.taskTypeCols\r\n };\r\n //Default value update\r\n const headerDataRow = new TaskDataRow(state.headerDataRow);\r\n if (updated.typeCol && (name === \"defaultStr\" || name === \"defaultNbr\")) {\r\n updateDefaultValueToDataRowCols(headerDataRow, updated.typeCol, id);\r\n }\r\n setState((old) => ({\r\n ...old,\r\n taskType,\r\n headerDataRow,\r\n dataSchema: getSchemaFromTaskType(taskType)\r\n }));\r\n };\r\n\r\n const handleFormTaskTypePropUpdate = (id: string, name: string, value: string | boolean | number | IIdTitle[]) => {\r\n //TypeCol update\r\n const updated = updateTaskTypeColPropUpdate(state.taskType.formCols, id, name, value);\r\n const taskType = {\r\n ...state.taskType,\r\n formCols: updated.taskTypeCols\r\n };\r\n //Default value update\r\n const formDataRow = new TaskDataRow(state.formDataRow);\r\n if (updated.typeCol && (name === \"defaultStr\" || name === \"defaultNbr\")) {\r\n updateDefaultValueToDataRowCols(formDataRow, updated.typeCol, id);\r\n }\r\n setState((old) => ({\r\n ...old,\r\n taskType,\r\n formDataRow,\r\n dataSchema: getSchemaFromTaskType(taskType)\r\n }));\r\n };\r\n \r\n const updateValueToDataRowCol = (taskDataRow: ITaskDataRow, field: string, name: string, value: string | number | boolean) => {\r\n if (!taskDataRow?.cols) return;\r\n const ind = taskDataRow.cols.findIndex(i => i.field === field);\r\n if (ind < 0) return;\r\n taskDataRow.cols[ind][name] = value;\r\n };\r\n\r\n const handleHeaderTaskDataRowValueUpdate = (field: string, name: string, value: string | number | boolean) => {\r\n const headerDataRow = new TaskDataRow(state.headerDataRow);\r\n updateValueToDataRowCol(headerDataRow, field, name, value);\r\n setState((old) => ({\r\n ...old,\r\n headerDataRow\r\n }));\r\n };\r\n \r\n const handleFormTaskDataRowValueUpdate = (field: string, name: string, value: string | number | boolean) => {\r\n const formDataRow = new TaskDataRow(state.formDataRow);\r\n updateValueToDataRowCol(formDataRow, field, name, value);\r\n setState((old) => ({\r\n ...old,\r\n formDataRow\r\n }));\r\n };\r\n\r\n const handleHeaderRemoveComponent = async (field: string) => {\r\n if (await AppUtils.showConfirmationDialog(Translations.FormRemoveFieldConfirmation, false) === ConfirmationDialogResult.No) {\r\n return;\r\n }\r\n const headerDataRow = new TaskDataRow(state.headerDataRow);\r\n headerDataRow.cols = headerDataRow.cols.filter(i => i.field !== field);\r\n setState((old) => {\r\n const newTaskType = {\r\n ...old.taskType,\r\n headerCols: old.taskType?.headerCols?.filter(item => item.field !== field)\r\n };\r\n return {\r\n ...old,\r\n taskType: newTaskType,\r\n dataSchema: getSchemaFromTaskType(newTaskType),\r\n headerDataRow\r\n };\r\n });\r\n };\r\n\r\n const handleHeaderCopyComponent = async (id: string) => {\r\n const taskTypeCol = state.taskType.headerCols.find(i => i.field === id);\r\n if (!taskTypeCol) return;\r\n const designerComponentType = getTaskFormDesignerComponentType(taskTypeCol);\r\n handleHeaderSchemaAddItem(designerComponentType, state.taskType.headerCols.findIndex(i => i.field === id) + 1, taskTypeCol);\r\n };\r\n\r\n const handleFormRemoveComponent = async (field: string) => {\r\n if (await AppUtils.showConfirmationDialog(Translations.FormRemoveFieldConfirmation, false) === ConfirmationDialogResult.No) {\r\n return;\r\n }\r\n const formDataRow = new TaskDataRow(state.formDataRow);\r\n formDataRow.cols = formDataRow.cols.filter(i => i.field !== field);\r\n setState((old) => {\r\n const newTaskType = {\r\n ...old.taskType,\r\n formCols: old.taskType?.formCols?.filter(item => item.field !== field),\r\n lineCols: old.taskType?.lineCols?.filter(item => item.field !== field),\r\n };\r\n return {\r\n ...old,\r\n taskType: newTaskType,\r\n dataSchema: getSchemaFromTaskType(newTaskType),\r\n formDataRow\r\n };\r\n });\r\n };\r\n\r\n const handleFormCopyComponent = async (id: string) => {\r\n const taskTypeCol = state.taskType.formCols.find(i => i.field === id);\r\n if (!taskTypeCol) return;\r\n const designerComponentType = getTaskFormDesignerComponentType(taskTypeCol);\r\n handleFormSchemaAddItem(designerComponentType, state.taskType.formCols.findIndex(i => i.field === id) + 1, taskTypeCol);\r\n };\r\n\r\n const handleRowLinePropUpdate = (id: string, name: string, value: string) => {\r\n setState((old) => {\r\n const newTaskType = {\r\n ...old.taskType,\r\n lineCols: old.taskType?.lineCols?.map((item) => {\r\n if (item.field === id) {\r\n const res = { ...item };\r\n res[name] = value;\r\n return res;\r\n }\r\n return { ...item };\r\n }),\r\n };\r\n return {\r\n ...old,\r\n taskType: newTaskType,\r\n dataSchema: getSchemaFromTaskType(newTaskType)\r\n };\r\n });\r\n };\r\n\r\n //Do not decrease hidden or locked columns widths\r\n const decreaseLineWidthsSub = (widths: ILineColumnWidth[], widthField: \"webWidth\" | \"mobileWidth\" | \"printWidth\") => {\r\n const nonZeroWidths = widths.filter(i => i[widthField]);\r\n if (!nonZeroWidths.length || !nonZeroWidths.filter(i => !i.locked).length) return;\r\n while (nonZeroWidths.reduce((accumulator, item) => accumulator + item[widthField], 0) > 12) {\r\n nonZeroWidths.filter(i => !i.locked).sort((a, b) => b[widthField] - a[widthField])[0][widthField] -= 1;\r\n }\r\n };\r\n\r\n //Do not increase hidden or locked columns widths\r\n const increaseLineWidthsSub = (widths: ILineColumnWidth[], widthField: \"webWidth\" | \"mobileWidth\" | \"printWidth\") => {\r\n const nonZeroWidths = widths.filter(i => i[widthField]);\r\n if (!nonZeroWidths.length || !nonZeroWidths.filter(i => !i.locked).length) return;\r\n while (nonZeroWidths.reduce((accumulator, item) => accumulator + item[widthField], 0) < 12) {\r\n nonZeroWidths.filter(i => !i.locked).sort((a, b) => a[widthField] - b[widthField])[0][widthField] += 1;\r\n }\r\n };\r\n\r\n const decreaseLineWidths = (widths: ILineColumnWidth[]) => {\r\n decreaseLineWidthsSub(widths, \"webWidth\");\r\n decreaseLineWidthsSub(widths, \"mobileWidth\");\r\n decreaseLineWidthsSub(widths, \"printWidth\");\r\n };\r\n\r\n const increaseLineWidths = (widths: ILineColumnWidth[]) => {\r\n increaseLineWidthsSub(widths, \"webWidth\");\r\n increaseLineWidthsSub(widths, \"mobileWidth\");\r\n increaseLineWidthsSub(widths, \"printWidth\");\r\n };\r\n\r\n const updateAllWidthsToClass = (classes: string, field: string, widths: ILineColumnWidth[]) => {\r\n //console.log(\"updateAllWidthsToClass S\", `'${classes}'`, field, widths);\r\n const result = getUpdatedClassForWidthSub(\r\n getUpdatedClassForWidthSub(\r\n getUpdatedClassForWidthSub(\r\n classes,\r\n [TaskTypeClassWidthPrefix.Web, TaskTypeClassWidthPrefix.Web2, TaskTypeClassWidthPrefix.Mobile, TaskTypeClassWidthPrefix.Print],\r\n [],\r\n TaskTypeClassWidthPrefix.Web,\r\n TaskTypeClassHidden.Web,\r\n widths.find((x) => x.field === field).webWidth\r\n ),\r\n [],\r\n [],\r\n TaskTypeClassWidthPrefix.Mobile,\r\n TaskTypeClassHidden.Mobile,\r\n widths.find((x) => x.field === field).mobileWidth\r\n ),\r\n [],\r\n [],\r\n TaskTypeClassWidthPrefix.Print,\r\n TaskTypeClassHidden.Print,\r\n widths.find((x) => x.field === field).printWidth\r\n );\r\n //console.log(\"updateAllWidthsToClass E\", `'${result}'`);\r\n return result;\r\n };\r\n\r\n const handleRemoveFieldFromLine = async (field: string) => {\r\n if ((await AppUtils.showConfirmationDialog(\r\n Translations.FormRemoveColumnFromRowConfirmation,\r\n false\r\n )) === ConfirmationDialogResult.No) {\r\n return;\r\n }\r\n const lineColumnWidths = state.lineColumnWidths.filter((i) => i.field !== field);\r\n //console.log(\"lineColumnWidths 1\", lineColumnWidths.map(i => ({ field: i.field, webWidth: i.webWidth, mobileWidth: i.mobileWidth, printWidth: i.printWidth })));\r\n increaseLineWidths(lineColumnWidths);\r\n //console.log(\"lineColumnWidths 2\", lineColumnWidths);\r\n const lineDataRow = new TaskDataRow(state.lineDataRow);\r\n lineDataRow.cols = lineDataRow.cols.filter(i => i.field !== field);\r\n setState((old) => {\r\n const newTaskType = {\r\n ...old.taskType,\r\n lineCols: old.taskType?.lineCols\r\n ?.filter((item) => item.field !== field)\r\n .map((item) => ({\r\n ...item,\r\n class: updateAllWidthsToClass(item.class, item.field, lineColumnWidths),\r\n })),\r\n };\r\n return {\r\n ...old,\r\n taskType: newTaskType,\r\n dataSchema: getSchemaFromTaskType(newTaskType),\r\n lineDataRow,\r\n lineColumnWidths,\r\n taskRepetitionType: lineColumnWidths.length ? TaskRepetitionType.Repeated : TaskRepetitionType.NotRepeated\r\n };\r\n });\r\n };\r\n\r\n const handleAddFieldToLine = async (id: string) => {\r\n const newWidth = Math.max(Math.floor(12 / (state.taskType?.lineCols?.length + 1)), 1);\r\n const lineColumnWidths = state.lineColumnWidths.slice(0);\r\n lineColumnWidths.push({\r\n field: id,\r\n webWidth: newWidth,\r\n mobileWidth: newWidth,\r\n printWidth: newWidth,\r\n locked: false\r\n });\r\n //increaseLineWidths(widths);\r\n decreaseLineWidths(lineColumnWidths);\r\n //Do not duplicate all form type fields to line, only required\r\n const formTypeCol = state.taskType?.formCols?.find((item) => item.field === id);\r\n const newLineCol = new TaskTypeCol();\r\n newLineCol.field = id;\r\n newLineCol.title = formTypeCol\r\n ? formTypeCol.title\r\n : (id.equalIgnoreCase(modifyUserNameField)\r\n ? Translations.FormModifyUser\r\n : Translations.FormModifyDate);\r\n newLineCol.dataType = formTypeCol\r\n ? formTypeCol.dataType\r\n : (id.equalIgnoreCase(modifyUserNameField)\r\n ? TaskDataRowDataType.String\r\n : TaskDataRowDataType.Date);\r\n newLineCol.class = updateAllWidthsToClass(\"\", id, lineColumnWidths);\r\n newLineCol.defaultSortField = formTypeCol?.defaultSortField ?? false;\r\n newLineCol.defaultSortOrderAsc = formTypeCol?.defaultSortOrderAsc ?? false;\r\n //Update state\r\n setState((old) => {\r\n const newTaskType = {\r\n ...old.taskType,\r\n lineCols: [\r\n ...old.taskType?.lineCols.map((item) => ({\r\n ...item,\r\n class: updateAllWidthsToClass(item.class, item.field, lineColumnWidths)\r\n })),\r\n newLineCol\r\n ],\r\n };\r\n return {\r\n ...old,\r\n taskType: newTaskType,\r\n dataSchema: getSchemaFromTaskType(newTaskType),\r\n lineColumnWidths,\r\n taskRepetitionType: lineColumnWidths.length ? TaskRepetitionType.Repeated : TaskRepetitionType.NotRepeated\r\n };\r\n });\r\n };\r\n\r\n const handleChangeLineColumnWidth = (id: string, classes: string) => {\r\n const lineColumnWidths = state.lineColumnWidths.filter((i) => i.field !== id);\r\n lineColumnWidths.push({\r\n field: id,\r\n webWidth: getWebWidthFromClass(classes),\r\n mobileWidth: getMobileWidthFromClass(classes),\r\n printWidth: getPrintWidthFromClass(classes),\r\n locked: true\r\n });\r\n //console.log(\"handleChangeLineColumnWidth S\", lineColumnWidths.map(i => ({ field: i.field, webWidth: i.webWidth, mobileWidth: i.mobileWidth, printWidth: i.printWidth })));\r\n increaseLineWidths(lineColumnWidths);\r\n //console.log(\"handleChangeLineColumnWidth I\", lineColumnWidths.map(i => ({ field: i.field, webWidth: i.webWidth, mobileWidth: i.mobileWidth, printWidth: i.printWidth })));\r\n decreaseLineWidths(lineColumnWidths);\r\n //console.log(\"handleChangeLineColumnWidth D\", lineColumnWidths);\r\n setState((old) => {\r\n const newTaskType = {\r\n ...old.taskType,\r\n lineCols: old.taskType?.lineCols\r\n .map((item) => ({\r\n ...item,\r\n class: updateAllWidthsToClass(item.class, item.field, lineColumnWidths),\r\n })),\r\n };\r\n return {\r\n ...old,\r\n taskType: newTaskType,\r\n dataSchema: getSchemaFromTaskType(newTaskType),\r\n lineColumnWidths\r\n };\r\n });\r\n };\r\n\r\n const replacer = (key: string, value: string | number | boolean | any[]) => {\r\n if (\r\n value === null ||\r\n (key !== \"title\" && value === \"\") ||\r\n value === undefined ||\r\n value === false ||\r\n value === 0 ||\r\n (Array.isArray(value) && value.length === 0)\r\n ) { return undefined; }\r\n return value;\r\n };\r\n\r\n const getSchemaObjectFromTaskTypeCol = (col: Partial) => ({\r\n type: TaskDataRowDataType[col.dataType].toLowerCase(),\r\n title: col.title,\r\n required: col.required,\r\n readOnly: col.readOnly,\r\n useInFilter: col.useInFilter,\r\n class: col.class,\r\n unitTitle: col.unitTitle,\r\n expression: col.expression,\r\n expressionFormat: col.expressionFormat,\r\n defaultSortField: col.defaultSortField,\r\n defaultSortOrderAsc: col.defaultSortOrderAsc,\r\n placeholder: col.placeholder,\r\n // readOnlyExpression\r\n default: col.dataType === TaskDataRowDataType.Integer || col.dataType === TaskDataRowDataType.Number\r\n ? col.defaultNbr\r\n : col.defaultStr,\r\n defaultExpression: col.defaultExpression,\r\n minimum: col.minimum,\r\n maximum: col.maximum,\r\n maxLength: col.maxLength,\r\n enum: col.options,\r\n idEnum: col.idOptions,\r\n // idNodeEnum\r\n decimals: col.decimals,\r\n // type\r\n // field\r\n // title\r\n // required\r\n // readOnly\r\n // useInFilter\r\n // class\r\n // unitTitle\r\n // expression\r\n // expressionFormat\r\n // defaultSortField\r\n // defaultSortOrderAsc\r\n // placeholder\r\n // readOnlyExpression\r\n // default\r\n // minimum\r\n // maximum\r\n // maxLength\r\n // enum\r\n // idEnum\r\n // idNodeEnum\r\n // decimals\r\n });\r\n \r\n const handleOpenSchemaDialog = () => {\r\n setState((old) => ({\r\n ...old,\r\n dataSchema: getSchemaFromState(),\r\n showSchemaDesignerDialog: true,\r\n }));\r\n };\r\n\r\n const handleSaveSchemaDialog = (value: string) => {\r\n const parseResult = getTaskTypeFromSchema(value);\r\n \r\n setState((old) => ({\r\n ...old,\r\n taskType: parseResult.taskType,\r\n headerDataRow: parseResult.headerDataRow,\r\n formDataRow: parseResult.formDataRow,\r\n lineDataRow: parseResult.lineDataRow,\r\n lineColumnWidths: getLineColumnWidths(parseResult.taskType?.lineCols),\r\n dataSchemaParseError: parseResult.error,\r\n dataSchema: value,\r\n showSchemaDesignerDialog: false,\r\n }));\r\n };\r\n\r\n const handleCloseSchemaDialog = () => {\r\n setState((old) => ({ ...old, showSchemaDesignerDialog: false }));\r\n };\r\n\r\n // #region Preview\r\n const getUpdatedTaskDataRow = (taskDataRow: ITaskDataRow, taskDataRowCols: ITaskDataRowCol[]): ITaskDataRow => {\r\n const result = new TaskDataRow(taskDataRow);\r\n result.cols = taskDataRowCols;\r\n return result;\r\n };\r\n \r\n const handleUpdateHeaderDataRowCols = (taskDataRowCols: ITaskDataRowCol[]) => {\r\n setState((old) => ({\r\n ...old,\r\n headerDataRow: getUpdatedTaskDataRow(state.headerDataRow, taskDataRowCols)\r\n }));\r\n };\r\n\r\n const handleUpdatFormDataRowCols = (taskDataRowCols: ITaskDataRowCol[]) => {\r\n setState((old) => ({\r\n ...old,\r\n formDataRow: getUpdatedTaskDataRow(state.formDataRow, taskDataRowCols),\r\n lineDataRow: getUpdatedTaskDataRow(state.lineDataRow, taskDataRowCols),\r\n }));\r\n };\r\n // #endregion Preview\r\n\r\n const isNew = state.item?.isNew();\r\n\r\n return setState((old) => ({ ...old, activeMenuItem }))}\r\n />\r\n }\r\n body={\r\n {state.activeMenuItem === TaskFormDesignerDialogMenuItem.General &&\r\n \r\n \r\n \r\n \r\n setState((old) => ({ ...old, taskRepetitionType }))}\r\n onUpdateVisibility={(visibility) => setState((old) => ({ ...old, visibility }))}\r\n onUpdatePrintOrientationLandscape={(printOrientationLandscape) => setState((old) => ({ ...old, printOrientationLandscape }))}\r\n onUpdateActiveState={(activeState) => setState((old) => ({ ...old, activeState }))}\r\n />\r\n \r\n \r\n \r\n \r\n }\r\n {state.activeMenuItem === TaskFormDesignerDialogMenuItem.Builder &&\r\n item?.field === state.headerSelectedField)}\r\n formTypeCol={state.taskType?.formCols?.find(item => item?.field === state.formSelectedField)}\r\n lineTypeCol={state.taskType?.lineCols?.find(item => item?.field === state.formSelectedField)}\r\n sessionState={props.sessionState}\r\n onHeaderSchemaReorder={handleHeaderSchemaReorder}\r\n onHeaderSchemaAddItem={handleHeaderSchemaAddItem}\r\n onFormSchemaReorder={handleFormSchemaReorder}\r\n onFormSchemaAddItem={handleFormSchemaAddItem}\r\n onRowSchemaReorder={handleRowSchemaReorder}\r\n onHeaderItemClick={handleHeaderItemClick}\r\n onFormItemClick={handleFormItemClick}\r\n onTaskTypeHeaderPropUpdate={handleHeaderTaskTypePropUpdate}\r\n onTaskTypeFormPropUpdate={handleFormTaskTypePropUpdate}\r\n onHeaderTaskDataRowValueUpdate={handleHeaderTaskDataRowValueUpdate}\r\n onFormTaskDataRowValueUpdate={handleFormTaskDataRowValueUpdate}\r\n onHeaderRemoveComponent={handleHeaderRemoveComponent}\r\n onHeaderCopyComponent={handleHeaderCopyComponent}\r\n onFormRemoveComponent={handleFormRemoveComponent}\r\n onFormCopyComponent={handleFormCopyComponent}\r\n onRowLinePropUpdate={handleRowLinePropUpdate}\r\n onAddFieldToLine={handleAddFieldToLine}\r\n onRemoveFieldFromLine={handleRemoveFieldFromLine}\r\n onChangeLineColumnWidth={handleChangeLineColumnWidth}\r\n onViewSchema={handleOpenSchemaDialog}\r\n />\r\n }\r\n {(state.activeMenuItem === TaskFormDesignerDialogMenuItem.PreviewWeb || state.activeMenuItem === TaskFormDesignerDialogMenuItem.PreviewMobile || state.activeMenuItem === TaskFormDesignerDialogMenuItem.PreviewPrint || state.activeMenuItem === TaskFormDesignerDialogMenuItem.PreviewRowPrint) &&\r\n item?.field === state.headerSelectedField)}\r\n formTypeCol={state.taskType?.formCols?.find(item => item?.field === state.formSelectedField)}\r\n lineTypeCol={state.taskType?.lineCols?.find(item => item?.field === state.formSelectedField)}\r\n lineColumnWidths={state.lineColumnWidths}\r\n onHeaderItemClick={handleHeaderItemClick}\r\n onFormItemClick={handleFormItemClick}\r\n onTaskTypeHeaderPropUpdate={handleHeaderTaskTypePropUpdate}\r\n onTaskTypeFormPropUpdate={handleFormTaskTypePropUpdate}\r\n onUpdateHeaderDataRowCols={handleUpdateHeaderDataRowCols}\r\n onUpdateFormDataRowCols={handleUpdatFormDataRowCols}\r\n onChangeLineColumnWidth={handleChangeLineColumnWidth}\r\n />\r\n }\r\n {state.showSchemaDesignerDialog && (\r\n \r\n )}\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n \r\n }\r\n onClose={handleCancel}\r\n />;\r\n};\r\n","import * as React from \"react\";\r\nimport { Collapse, Divider, List, ListItemButton, ListItemText } from \"@mui/material\";\r\nimport { ExpandLess, ExpandMore } from \"@mui/icons-material\";\r\n\r\nexport interface ITreeListItem {\r\n id: string;\r\n title: string;\r\n divider?: boolean;\r\n children: ITreeListItem[];\r\n}\r\n\r\nexport const getFirstSelectableTreeListItem = (items: ITreeListItem[], ignoreId: string): ITreeListItem => {\r\n for (const item of items) {\r\n if (item.id !== ignoreId && !item.divider && item.children.length === 0) {\r\n return item;\r\n }\r\n const child = getFirstSelectableTreeListItem(item.children, ignoreId);\r\n if (child) {\r\n return child;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\ninterface ITreeListItemProps {\r\n item: ITreeListItem;\r\n selectedId: string;\r\n onSelect: (item: ITreeListItem) => void;\r\n}\r\n\r\nexport const TreeListItem = (props: ITreeListItemProps) => {\r\n const [open, setOpen] = React.useState(props.item?.children?.length > 0);\r\n\r\n const hasChildren = props.item.children.length > 0;\r\n\r\n if (props.item.divider) {\r\n return {props.item.title};\r\n }\r\n\r\n return (\r\n <>\r\n (hasChildren\r\n ? {\r\n \"borderBottom\": \"1px solid\",\r\n \"borderColor\": theme.palette.divider,\r\n \"background\": theme.palette.action.hover\r\n }\r\n : null\r\n )}\r\n onClick={() => hasChildren ? setOpen(!open) : props.onSelect(props.item)}\r\n >\r\n \r\n {(hasChildren\r\n ? (open ? : )\r\n : null\r\n )}\r\n \r\n {hasChildren &&\r\n \r\n \r\n {props.item.children.map((child) =>\r\n \r\n )}\r\n \r\n \r\n }\r\n \r\n );\r\n};\r\n\r\ninterface ITreeListProps {\r\n items: ITreeListItem[];\r\n height?: string;\r\n selectedId: string;\r\n onSelect: (item: ITreeListItem) => void;\r\n}\r\n\r\nexport const TreeList = (props: ITreeListProps) => {\r\n return (\r\n \r\n {props.items.map((item) =>\r\n \r\n )}\r\n \r\n );\r\n};","import { Box, Card, Grid } from \"@mui/material\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport * as taskService from \"../../../../models/services/taskService\";\r\nimport { ActionContainer } from \"../../../framework/ActionContainer\";\r\nimport { Dialog } from \"../../../framework/Dialog/Dialog\";\r\nimport { DialogButtons } from \"../../../framework/Dialog/DialogButtons\";\r\nimport { GridRow } from \"../../../framework/Grid/GridRow\";\r\nimport { ListSearchFilter } from \"../../../framework/List/ListSearchFilter\";\r\nimport { TaskFormDesignerPreviewType, TaskFormDesignerPreviewWeb } from \"../TaskFormDesignerPreview/TaskFormDesignerPreviewWeb\";\r\nimport { ITaskEditTypeItem, TaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { ITaskDataRow, TaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { TaskDataRowCol } from \"ui/Scripts/source/models/task/taskDataRowCol\";\r\nimport { getFirstSelectableTreeListItem, ITreeListItem, TreeList } from \"source/components/framework/List/TreeList\";\r\nimport { TaskRepetitionType } from \"ui/Scripts/source/models/enums\";\r\n\r\ninterface TaskFormDesignerNewDialogProps {\r\n companyId: string;\r\n onOk: (id: string) => void;\r\n onCancel: () => void;\r\n}\r\n\r\ninterface TaskFormDesignerNewDialogState {\r\n allSystemTaskTypes: ITaskEditTypeItem[];\r\n allCompanyTaskTypes: ITaskEditTypeItem[];\r\n listItems: ITreeListItem[];\r\n taskType: ITaskEditTypeItem;\r\n selectedId: string;\r\n filter: string;\r\n headerDataRow: ITaskDataRow;\r\n formDataRow: ITaskDataRow;\r\n lineDataRow: ITaskDataRow;\r\n initialized: boolean;\r\n isLoading: boolean;\r\n}\r\n\r\nexport const TaskFormDesignerNewDialog = (\r\n props: TaskFormDesignerNewDialogProps\r\n) => {\r\n const createEmptyTaskType = () => {\r\n const result = new TaskEditTypeItem();\r\n result.id = Base.emptyGuid;\r\n result.code = `'${Translations.EmptyForm}'`;\r\n return result;\r\n };\r\n\r\n const getDataRows = (taskType: ITaskEditTypeItem) => {\r\n const headerDataRow = new TaskDataRow();\r\n const formDataRow = new TaskDataRow();\r\n const lineDataRow = new TaskDataRow();\r\n if (taskType) {\r\n headerDataRow.cols = TaskDataRowCol.initializeValuesByType(taskType.headerCols, []);\r\n formDataRow.cols = TaskDataRowCol.initializeValuesByType(taskType.formCols, []);\r\n lineDataRow.cols = TaskDataRowCol.initializeValuesByType(taskType.lineCols, []);\r\n }\r\n return {\r\n headerDataRow,\r\n formDataRow,\r\n lineDataRow\r\n };\r\n };\r\n\r\n const [state, setState] = useState({\r\n allSystemTaskTypes: [createEmptyTaskType()],\r\n allCompanyTaskTypes: [],\r\n listItems: [],\r\n taskType: createEmptyTaskType(),\r\n selectedId: Base.emptyGuid,\r\n filter: \"\",\r\n ...getDataRows(createEmptyTaskType()),\r\n initialized: false,\r\n isLoading: false,\r\n });\r\n \r\n const getSubTreeListItemsWithTaskRepetitionType = (taskTypes: ITaskEditTypeItem[], taskRepetitionType: TaskRepetitionType) => {\r\n return taskTypes.filter(i => i.taskRepetitionType === taskRepetitionType).map(item => {\r\n return {\r\n id: item.id,\r\n title: item.code,\r\n children: []\r\n };\r\n });\r\n };\r\n\r\n const getSubTreeListItems = (taskTypes: ITaskEditTypeItem[]) => {\r\n const notRepeatedTaskTypes = getSubTreeListItemsWithTaskRepetitionType(taskTypes, TaskRepetitionType.NotRepeated);\r\n const repeatedTaskTypes = getSubTreeListItemsWithTaskRepetitionType(taskTypes, TaskRepetitionType.Repeated);\r\n let result: ITreeListItem[] = [];\r\n if (notRepeatedTaskTypes.length > 0) {\r\n result.push({\r\n id: Translations.OneTimeForm,\r\n title: Translations.OneTimeForm,\r\n divider: true,\r\n children: []\r\n });\r\n result = result.concat(notRepeatedTaskTypes);\r\n }\r\n if (repeatedTaskTypes.length > 0) {\r\n result.push({\r\n id: Translations.RowForm,\r\n title: Translations.RowForm,\r\n divider: true,\r\n children: []\r\n });\r\n result = result.concat(repeatedTaskTypes);\r\n }\r\n return result;\r\n };\r\n\r\n const getTreeListItems = (allSystemTaskTypes: ITaskEditTypeItem[], allCompanyTaskTypes: ITaskEditTypeItem[], searchFilter: string): ITreeListItem[] => {\r\n const result: ITreeListItem[] = [];\r\n const lowSearchFilter = searchFilter.toLocaleLowerCase();\r\n const systemTaskTypes = lowSearchFilter\r\n ? allSystemTaskTypes.filter(i => i.code.toLocaleLowerCase().indexOf(searchFilter) > -1)\r\n : allSystemTaskTypes.slice(0);\r\n if (systemTaskTypes.length > 0) {\r\n result.push({ id: Translations.TemplateForms, title: Translations.TemplateForms, children: getSubTreeListItems(systemTaskTypes) });\r\n }\r\n const companyTaskTypes = lowSearchFilter\r\n ? allCompanyTaskTypes.filter(i => i.code.toLocaleLowerCase().indexOf(searchFilter) > -1)\r\n : allCompanyTaskTypes.slice(0);\r\n if (companyTaskTypes.length > 0) {\r\n result.push({ id: Translations.CompanyTaskTypeTemplates, title: Translations.CompanyTaskTypeTemplates, children: getSubTreeListItems(companyTaskTypes) });\r\n }\r\n return result;\r\n };\r\n\r\n const loadItems = async () => {\r\n setState((old) => ({ ...old, isLoading: true }));\r\n const result = await AppUtils.callService(() => taskService.getTaskTypeNew(props.companyId), false, false, () => setState((old) => ({ ...old, isLoading: false })));\r\n if (!result) return;\r\n const allSystemTaskTypes = [\r\n ...state.allSystemTaskTypes,\r\n ...result.systemTaskTypes\r\n ];\r\n const allCompanyTaskTypes = result.companyTaskTypes;\r\n const listItems = getTreeListItems(allSystemTaskTypes, allCompanyTaskTypes, state.filter);\r\n const selectedId = getFirstSelectableTreeListItem(listItems, Base.emptyGuid)?.id ?? state.selectedId;\r\n const taskType = allSystemTaskTypes.union(allCompanyTaskTypes).find(i => i.id === selectedId) ?? state.taskType;\r\n setState((old) => ({\r\n ...old,\r\n initialized: true,\r\n allSystemTaskTypes,\r\n allCompanyTaskTypes,\r\n listItems,\r\n taskType,\r\n selectedId: taskType.id,\r\n ...getDataRows(taskType)\r\n }));\r\n };\r\n\r\n useEffect(() => {\r\n loadItems();\r\n }, []);\r\n\r\n const changeFilter = (searchFilter: string) => {\r\n let systemTaskTypes: ITaskEditTypeItem[] = [];\r\n let companyTaskTypes: ITaskEditTypeItem[] = [];\r\n if (searchFilter) {\r\n const lowSearchFilter = searchFilter.toLocaleLowerCase();\r\n systemTaskTypes = state.allSystemTaskTypes.filter(i => i.code.toLocaleLowerCase().indexOf(lowSearchFilter) > -1);\r\n companyTaskTypes = state.allCompanyTaskTypes.filter(i => i.code.toLocaleLowerCase().indexOf(lowSearchFilter) > -1);\r\n } else {\r\n systemTaskTypes = state.allSystemTaskTypes.slice(0);\r\n companyTaskTypes = state.allCompanyTaskTypes.slice(0);\r\n }\r\n const taskType = systemTaskTypes.concat(companyTaskTypes).find(i => i.id === state.selectedId);\r\n setState((old) => ({\r\n ...old,\r\n filter: searchFilter,\r\n taskType,\r\n selectedId: taskType ? state.selectedId : \"\",\r\n ...getDataRows(taskType),\r\n listItems: getTreeListItems(state.allSystemTaskTypes, state.allCompanyTaskTypes, searchFilter)\r\n }));\r\n };\r\n\r\n const handleSetSelectedId = (selectedId: string) => {\r\n const taskType = state.allSystemTaskTypes.concat(state.allCompanyTaskTypes).find(i => i.id === selectedId);\r\n setState((old) => ({\r\n ...old,\r\n selectedId,\r\n taskType,\r\n ...getDataRows(taskType)\r\n }));\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n handleSetSelectedId(item.id)}\r\n />\r\n \r\n \r\n \r\n \r\n {}}\r\n onHeaderItemClick={() => {}}\r\n onUpdateFormDataRowCols={() => {}}\r\n onUpdateHeaderDataRowCols={() => {}}\r\n />\r\n \r\n \r\n )}\r\n actions={\r\n Promise.resolve(props.onOk(state.selectedId))}\r\n />\r\n }\r\n onClose={props.onCancel}\r\n />\r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../../framework/saveData\";\r\nimport { infiniteListPageSize } from \"../../../../models/common/webConsts\";\r\nimport * as taskService from \"../../../../models/services/taskService\";\r\nimport { ISessionState } from \"../../../../models/session/sessionState\";\r\nimport { ITaskTypeListItem } from \"../../../../models/taskType/taskTypeListItem\";\r\nimport { ActionContainer } from \"../../../framework/ActionContainer\";\r\nimport { DialogSettingsCard } from \"../../../framework/Container/DialogSettingsCard\";\r\nimport { List } from \"../../../framework/List/List\";\r\nimport { ListIconButtonsItem } from \"../../../framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { ListLinkValue } from \"../../../framework/List/ListLinkValue\";\r\nimport { ListSearchFilter } from \"../../../framework/List/ListSearchFilter\";\r\nimport { TaskFormDesignerDialog } from \"../../TaskFormDesigner/TaskFormDesignerDialog\";\r\nimport { Badge, Box, Tooltip, Typography } from \"@mui/material\";\r\nimport { ListStateIconSuccess } from \"source/components/framework/List/ListStateIconSuccess\";\r\nimport { TaskFormDesignerNewDialog } from \"../../TaskFormDesigner/TaskFormDesignerNewDialog\";\r\nimport { IListCardData } from \"source/components/framework/List/ListLine\";\r\nimport { removeConfirmationWord } from \"ui/Scripts/source/models/consts\";\r\n\r\nexport interface ITaskTypeGridProp {\r\n companyId: string;\r\n sessionState: ISessionState;\r\n}\r\n\r\ninterface ITaskTypeGridState {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n pageSize: number;\r\n page: number;\r\n hasMore: boolean;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n items: ITaskTypeListItem[];\r\n selectedId: string;\r\n checkedIds: string[];\r\n\r\n // New Form Dialog\r\n showNewFormDialog: boolean;\r\n\r\n // Edit Dialog\r\n showEditDialog: boolean;\r\n editDialogId: string;\r\n editDialogHasPrevious: boolean;\r\n editDialogHasNext: boolean;\r\n editDialogAddToCompany: boolean;\r\n}\r\n\r\nexport class TaskTypeGrid extends React.Component {\r\n constructor(props: ITaskTypeGridProp) {\r\n super(props);\r\n this.state = {\r\n intialized: false,\r\n isLoading: false,\r\n page: 1,\r\n hasMore: true,\r\n filter: \"\",\r\n pageSize: infiniteListPageSize,\r\n sortColumn: \"activeState\",\r\n sortOrderIsAsc: false,\r\n items: [],\r\n selectedId: null,\r\n checkedIds: [],\r\n showNewFormDialog: false,\r\n showEditDialog: false,\r\n editDialogId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false,\r\n editDialogAddToCompany: false\r\n };\r\n }\r\n\r\n searchItems = async (pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean, moveNext: boolean = false, setEditDialogData: boolean = true) => {\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => taskService.getTaskTypeListItems(this.props.companyId, !refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1, filter, sortColumn, sortOrderIsAsc, null), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const state = this.state;\r\n const items = List.getListItems(state.items, state.selectedId, state.checkedIds, result.items, resetItems, refreshList);\r\n let selectedId = items.selectedId;\r\n let index = items.items.findIndex(i => i.id === selectedId);\r\n let selectedItem = index > -1 ? items.items[index] : null;\r\n if (moveNext && selectedItem && index < items.items.length - 1) {\r\n index = index + 1;\r\n selectedItem = items.items[index];\r\n selectedId = items.items[index].id;\r\n }\r\n const editDialogStateChange = setEditDialogData\r\n ? {\r\n editDialogId: moveNext && selectedItem ? selectedItem.id : \"\",\r\n editDialogHasPrevious: index > 0,\r\n editDialogHasNext: index < items.items.length - 1 || result.hasMore,\r\n editDialogAddToCompany: false\r\n }\r\n : null;\r\n this.setState({\r\n ...editDialogStateChange,\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n selectedId,\r\n checkedIds: items.checkedIds,\r\n });\r\n };\r\n\r\n refreshList = async (setEducationDialogData: boolean = true) => {\r\n const state = this.state;\r\n await this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, true, false, setEducationDialogData);\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: ITaskTypeGridProp, prevState: ITaskTypeGridState) {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n if (companyId === prevCompanyId) return;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n //#region Edit Dialog\r\n handleShowEditDialog = (taskTypeId: string, addToCompany: boolean) => {\r\n const state = this.state;\r\n const isNew = taskTypeId === Base.emptyGuid || addToCompany;\r\n const index = isNew ? 0 : state.items.findIndex(i => i.id === taskTypeId);\r\n if (index < 0) return;\r\n this.setState({\r\n showNewFormDialog: false,\r\n showEditDialog: true,\r\n editDialogId: taskTypeId,\r\n editDialogHasPrevious: index > 0,\r\n editDialogHasNext: isNew ? false : index < state.items.length - 1 || state.hasMore,\r\n editDialogAddToCompany: addToCompany\r\n });\r\n };\r\n\r\n handleAddNew = () => {\r\n this.handleShowEditDialog(Base.emptyGuid, false);\r\n };\r\n\r\n handleShowNewFormDialogOpen = () => {\r\n this.setState({\r\n showNewFormDialog: true,\r\n });\r\n };\r\n\r\n handleShowNewFormDialogClose = () => {\r\n this.setState({\r\n showNewFormDialog: false,\r\n });\r\n };\r\n\r\n handleOpenLine = (id: string) => {\r\n this.handleShowEditDialog(id, false);\r\n };\r\n\r\n handleEditDialogOk = async (savedTaskTypeId: string) => {\r\n this.refreshList(false);\r\n };\r\n\r\n handleEditDialogCancel = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n };\r\n //#endregion Edit Dialog\r\n\r\n getRemoveSaveData = (props: ITaskTypeGridProp, ids: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"ids\", ids);\r\n return result;\r\n };\r\n\r\n remove = async (ids: string[]): Promise => {\r\n const props = this.props;\r\n if (ids.length < 1) return;\r\n const saveData = this.getRemoveSaveData(props, ids);\r\n // Call server\r\n const result = await AppUtils.callService(() => taskService.removeTaskTypes(saveData.obj));\r\n if (!result) return null;\r\n this.refreshList();\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n const selectedItems = state.items.filter(i => selectedIds.indexOf(i.id) > -1);\r\n if (selectedItems.length < 1) return;\r\n if (await AppUtils.showConfirmationDialog(selectedItems.length > 1\r\n ? Translations.DoYouReallyWantToRemoveSelectedForms\r\n : String.format(Translations.DoYouReallyWantToRemoveFormParameter, selectedItems[0].code), false, removeConfirmationWord) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n this.remove(selectedIds);\r\n }\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n if (index < 0) return;\r\n if (index >= state.items.length) {\r\n if (!state.hasMore) return;\r\n this.searchItems(state.pageSize, state.page + 1, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false, true);\r\n } else {\r\n this.setState({\r\n selectedId: state.items[index].id,\r\n editDialogId: state.items[index].id,\r\n editDialogHasPrevious: index > 0,\r\n editDialogHasNext: index < state.items.length - 1 || state.hasMore,\r\n });\r\n }\r\n };\r\n\r\n getItemCardData = (item: ITaskTypeListItem): IListCardData => {\r\n return {\r\n sm: 4,\r\n rows: [\r\n {\r\n content:\r\n \r\n \r\n this.handleOpenLine(item.id)}>{item.code}\r\n {(item.usageAmount > 0 || item.activeState > 0) &&\r\n \r\n {item.usageAmount > 0 &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {item.activeState > 0 &&\r\n \r\n \r\n \r\n }\r\n \r\n }\r\n \r\n \r\n {item.comment}\r\n \r\n \r\n }\r\n ],\r\n id: item.id\r\n };\r\n };\r\n\r\n getItemCardDatas = (): IListCardData[] => {\r\n const state = this.state;\r\n const result = state.items.filter(i => i.activeState).map(i => this.getItemCardData(i));\r\n const notInUseItems = state.items.filter(i => !i.activeState);\r\n if (notInUseItems.length > 0) {\r\n result.push({ id: Translations.NotInUse, subTitle: Translations.NotInUse, rows: [] });\r\n result.push(...notInUseItems.map(i => this.getItemCardData(i)));\r\n }\r\n return result;\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n }\r\n rightItems={\r\n \r\n }\r\n />\r\n }\r\n content={\r\n ({\r\n // sm: 4,\r\n // rows: [\r\n // {\r\n // content:\r\n // \r\n // \r\n // this.handleOpenLine(item.id)}>{item.code}\r\n // {(item.usageAmount > 0 || item.activeState > 0) &&\r\n // \r\n // {item.usageAmount > 0 &&\r\n // \r\n // \r\n // \r\n // \r\n // \r\n // }\r\n // {item.activeState > 0 &&\r\n // \r\n // \r\n // \r\n // }\r\n // \r\n // }\r\n // \r\n // \r\n // {item.comment}\r\n // \r\n // \r\n // }\r\n // ],\r\n // id: item.id\r\n // }))}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpenLine}\r\n />\r\n }\r\n />\r\n {state.showEditDialog && (\r\n this.refreshList(false)}\r\n onPrevious={() => List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n />\r\n )}\r\n {state.showNewFormDialog && (\r\n this.handleShowEditDialog(taskTypeId, true)}\r\n onCancel={this.handleShowNewFormDialogClose}\r\n />\r\n )}\r\n \r\n );\r\n }\r\n};\r\n","// TaskSettingsDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Grid } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ApplicationPermissionType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as taskService from \"../../../models/services/taskService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { IUnitModuleNode } from \"../../../models/unit/unitModuleNode\";\r\nimport { IUnitNodePermissions } from \"../../../models/unit/unitNodePermissions\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { IPageNavMenuItem, PageNavMenuItems } from \"../../framework/PageNav/PageNavMenuItems\";\r\nimport { UnitModuleSettings } from \"../../unit/Unit/UnitModuleSettings\";\r\nimport { UnitPermissionSettings } from \"../../unit/Unit/UnitPermissionSettings\";\r\nimport { TaskPriorityList } from \"./TaskPriorityList\";\r\nimport { TaskStateList } from \"./TaskStateList\";\r\nimport { TaskTypeGrid } from \"./TaskTypeGrid\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum TaskSettingsDialogMenuItem {\r\n Units = \"1\",\r\n Permissions = \"2\",\r\n TaskStates = \"3\",\r\n TaskPriorities = \"4\",\r\n CompanyTaskTypes = \"5\",\r\n DefaultTaskStates = \"6\",\r\n DefaultTaskPriorities = \"7\",\r\n DefaultTaskTypes = \"8\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n//TaskSettingsDialog\r\nexport interface ITaskSettingsDialogProp {\r\n sessionState: ISessionState;\r\n companyId: string;\r\n classes?: string;\r\n settingsActions: IPageNavMenuItem[];\r\n validAdditionalPermissions?: number[]\r\n onClose: (refreshView: boolean) => void;\r\n}\r\n\r\nexport interface ITaskSettingsDialogState {\r\n // Units\r\n unitModuleNode: IUnitModuleNode;\r\n // Permissions\r\n unitNodePermissions: IUnitNodePermissions;\r\n\r\n activeMenuItem: TaskSettingsDialogMenuItem;\r\n}\r\n\r\nexport class TaskSettingsDialog extends React.Component {\r\n private unitsRef = React.createRef();\r\n private permissionsRef = React.createRef();\r\n private refreshViewOnClose = false;\r\n\r\n constructor(props: ITaskSettingsDialogProp) {\r\n super(props);\r\n this.state = {\r\n unitModuleNode: null,\r\n unitNodePermissions: null,\r\n activeMenuItem: TaskSettingsDialogMenuItem.Units,\r\n };\r\n }\r\n\r\n async componentDidMount(): Promise {\r\n await this.loadUnits();\r\n }\r\n\r\n // #region Units\r\n onUnitModuleSettingsCancel = async (): Promise => {\r\n return await this.unitsRef.current.handleCancel(false);\r\n };\r\n\r\n loadUnits = async () => {\r\n const result = await AppUtils.callService(() => taskService.getUnits(this.props.companyId), false);\r\n if (!result) return;\r\n this.setState({\r\n unitModuleNode: result.unitModuleNode\r\n });\r\n };\r\n\r\n handleUnitModuleSettingsSave = async (obj: any) => {\r\n return await taskService.saveUnits(obj);\r\n };\r\n // #endregion Units\r\n\r\n // #region Permissions\r\n onUnitPermissionSettingsCancel = async (): Promise => {\r\n return await this.permissionsRef.current.handleCancel(false);\r\n };\r\n\r\n loadPermissions = async () => {\r\n const result = await AppUtils.callService(() => taskService.getUnitNodePermissions(this.props.companyId), false);\r\n if (!result) return;\r\n this.setState({\r\n unitNodePermissions: result\r\n });\r\n };\r\n\r\n handleUnitPermissionSettingsSave = async (obj: any) => {\r\n const result = await taskService.saveUnitNodePermissions(obj);\r\n this.loadPermissions();\r\n return result;\r\n };\r\n // #endregion Permissions\r\n\r\n handleSubViewOk = (_closeDialog: boolean) => {\r\n this.refreshViewOnClose = true;\r\n };\r\n\r\n handleToggleActiveMenuItem = async (menuItem: TaskSettingsDialogMenuItem) => {\r\n const state = this.state;\r\n if (state.activeMenuItem === menuItem) return;\r\n //Check current tab cancel\r\n if (state.activeMenuItem === TaskSettingsDialogMenuItem.Units) {\r\n if (!await this.onUnitModuleSettingsCancel()) return;\r\n } else if (state.activeMenuItem === TaskSettingsDialogMenuItem.Permissions) {\r\n if (!await this.onUnitPermissionSettingsCancel()) return;\r\n }\r\n //Load new tab data\r\n if (menuItem === TaskSettingsDialogMenuItem.Units) {\r\n await this.loadUnits();\r\n } else if (menuItem === TaskSettingsDialogMenuItem.Permissions) {\r\n await this.loadPermissions();\r\n }\r\n //Set new tab active\r\n this.setState({\r\n activeMenuItem: menuItem\r\n });\r\n };\r\n\r\n handleCancel = async (closeDialog: boolean) => {\r\n if (!closeDialog) return;\r\n this.props.onClose(this.refreshViewOnClose);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n this.handleCancel(true)}\r\n body={\r\n \r\n \r\n \r\n \r\n \r\n {(state.activeMenuItem === TaskSettingsDialogMenuItem.Units) && (\r\n \r\n )}\r\n {state.activeMenuItem === TaskSettingsDialogMenuItem.Permissions && (\r\n \r\n )}\r\n {(state.activeMenuItem === TaskSettingsDialogMenuItem.TaskStates || state.activeMenuItem === TaskSettingsDialogMenuItem.DefaultTaskStates) &&\r\n \r\n }\r\n {(state.activeMenuItem === TaskSettingsDialogMenuItem.TaskPriorities || state.activeMenuItem === TaskSettingsDialogMenuItem.DefaultTaskPriorities) &&\r\n \r\n }\r\n {(state.activeMenuItem === TaskSettingsDialogMenuItem.CompanyTaskTypes || state.activeMenuItem === TaskSettingsDialogMenuItem.DefaultTaskTypes) &&\r\n \r\n }\r\n \r\n \r\n }\r\n buttons={\r\n state.activeMenuItem !== TaskSettingsDialogMenuItem.Units && state.activeMenuItem !== TaskSettingsDialogMenuItem.Permissions\r\n ? [{ title: Translations.Close, variant: \"outlined\", onClick: () => this.handleCancel(true) }]\r\n : null\r\n }\r\n />\r\n );\r\n }\r\n}","import { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { TaskList } from \"../TaskList\";\r\nimport { ITaskPageFilterState } from \"../TaskPageDashboardChart\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\nexport interface ITaskTrashBinDialogProp {\r\n sessionState: ISessionState;\r\n companyId: string;\r\n units: IIdTitleNode[];\r\n onLoadPageData: () => void;\r\n onClose: () => void;\r\n}\r\n\r\nexport interface ITaskTrashBinDialogState extends ITaskPageFilterState {\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n}\r\n\r\nexport class TaskTrashBinDialog extends React.Component {\r\n constructor(props: ITaskTrashBinDialogProp) {\r\n super(props);\r\n this.state = {\r\n selectedUnitIds: [],\r\n selectedStateIds: [],\r\n selectedPriorityIds: [],\r\n selectedTaskTypeIds: [],\r\n selectedHandlerUserCodes: [],\r\n selectedTaskTypeHeaderFields: null,\r\n selectedTaskTypeFields: null,\r\n sortColumn: \"modifyDate\",\r\n sortOrderIsAsc: false,\r\n };\r\n }\r\n\r\n handleFilterSortData = (sortColumn: string, sortOrderIsAsc: boolean) => {\r\n this.setState({\r\n sortColumn,\r\n sortOrderIsAsc,\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n \r\n \r\n }\r\n actions={\r\n \r\n {Translations.Close}\r\n \r\n }\r\n onClose={props.onClose}/>\r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { ICodeTitle } from \"source/models/common/codeTitle\";\r\nimport { userParameterCodeShowDocumentPreview } from \"source/models/common/webConsts\";\r\nimport { ISavedReport } from \"source/models/report/savedReport\";\r\nimport { ITaskPage } from \"source/models/task/taskPage\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IIdColorTitle, IdColorTitle } from \"ui/Scripts/source/models/common/idColorTitle\";\r\nimport { IIdTitle, IdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { IIdTitleNode, IdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { ApplicationPermissionType, ContentPagePanelType, FrontPagePanelSize, ReportSharingType, ReportType } from \"ui/Scripts/source/models/enums\";\r\nimport { ITaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskEditTypeItem, TaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IChartItem } from \"../../../models/chart/chartItem\";\r\nimport { SavedChartPanel } from \"../../../models/chart/savedChartPanel\";\r\nimport { IListFilterItem, ListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { IPagePanel, PagePanel } from \"../../../models/common/pagePanel\";\r\nimport { ISavedListFilter } from \"../../../models/common/savedListFilter\";\r\nimport { ITypedOption } from \"../../../models/common/typedOption\";\r\nimport { IReportItem, ReportItem } from \"../../../models/report/reportItem\";\r\nimport { ReportItems } from \"../../../models/report/reportItems\";\r\nimport { recordLockManager } from \"../../../models/services/recordLockService\";\r\nimport * as taskService from \"../../../models/services/taskService\";\r\nimport * as userService from \"../../../models/services/userService\";\r\nimport { IAppSessionState } from \"../../../models/store/storeTypes\";\r\nimport { DashboardPanelList } from \"../../app/DashboardPanelList\";\r\nimport { HeaderMenuItem, NavigationMenu } from \"../../app/NavigationMenu\";\r\nimport { UserMenu } from \"../../app/UserMenu\";\r\nimport { ListFilterSaveDialog } from \"../../framework/Filters/ListFilterSaveDialog\";\r\nimport { PageContainer } from \"../../framework/Page/PageContainer\";\r\nimport { PageContent } from \"../../framework/Page/PageContent\";\r\nimport { PageDashboard } from \"../../framework/Page/PageDashboard\";\r\nimport { PageListAndReportsContainer } from \"../../framework/Page/PageListAndReportsContainer\";\r\nimport { PageReportsContainer } from \"../../framework/Page/PageReportsContainer\";\r\nimport { PageTabs } from \"../../framework/Page/PageTabs\";\r\nimport { PageTopBar } from \"../../framework/Page/PageTopBar\";\r\nimport { IPageNavMenuItem } from \"../../framework/PageNav/PageNavMenuItems\";\r\nimport { FilterTabs } from \"../../framework/PageNavMenuItem/FilterTabs\";\r\nimport { ReportSettings } from \"../../framework/ReportSettings\";\r\nimport { PageNavMenuReportList } from \"../../report/PageNavMenuItemReportList/PageNavMenuItemReportList\";\r\nimport { ISaveReportFilters } from \"../../report/PageNavMenuItemReportList/SaveReportDialog\";\r\nimport { SaveReportDialog } from \"../../report/PageNavMenuItemReportList/SaveReportDialog/SaveReportDialog\";\r\nimport { TaskChartFilterDrawer } from \"../TaskChartFilterDrawer/TaskChartFilterDrawer\";\r\nimport { TaskFilterDrawer } from \"../TaskFilterDrawer\";\r\nimport { TaskList } from \"../TaskList\";\r\nimport { ITaskPageFilterState, TaskPageDashboardChart } from \"../TaskPageDashboardChart\";\r\nimport { TaskPageReport } from \"../TaskPageReport\";\r\nimport { TaskReportFilterPanel } from \"../TaskReportFilterPanel/TaskReportFilterPanel\";\r\nimport { TaskSettingsDialog, TaskSettingsDialogMenuItem } from \"../TaskSettingsDialog/TaskSettingsDialog\";\r\nimport { TaskTrashBinDialog } from \"../TaskTrashBinDialog\";\r\nimport { AddButton } from \"source/components/framework/Button/AddButton\";\r\nimport { abortManager } from \"source/models/services/tokenService\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum TaskPageViewTypeId {\r\n Records = \"0\",\r\n Reports = \"1\",\r\n Dashboard = \"2\",\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n// TaskPage\r\nexport interface ITaskPageOwnProps {\r\n}\r\n\r\nexport interface ITaskPageStateProps {\r\n appState: IAppSessionState;\r\n dataId: number;\r\n taskPage: ITaskPage;\r\n}\r\n\r\nexport interface ITaskPageDispatchProps {\r\n onGetTaskPage: () => void;\r\n onLogout: () => void;\r\n onSetCulture: (culture: string) => void;\r\n onSaveUserParameters: (parameters: ITypedOption[]) => void;\r\n onRefreshSessionState: () => void;\r\n}\r\n\r\ntype TaskPageProp = ITaskPageOwnProps & ITaskPageStateProps & ITaskPageDispatchProps;\r\n\r\ninterface ITaskPageState extends ITaskPageFilterState {\r\n initialized: boolean;\r\n listDataPreloaded: boolean;\r\n listAddRecord: boolean;\r\n units: IIdTitleNode[];\r\n states: IIdColorTitle[];\r\n priorities: IIdTitle[];\r\n taskTypes: ITaskEditTypeItem[];\r\n handlers: IIdTitle[];\r\n activeViewTypeId: TaskPageViewTypeId;\r\n activeCompanyId: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n settingsActions: IPageNavMenuItem[];\r\n // Filters\r\n listFilterIsSet: boolean;\r\n showListFilter: boolean;\r\n listFilterFilter: IListFilterItem;\r\n filters: IListFilterItem[];\r\n savedFilters: IListFilterItem[];\r\n activeFilterId: string;\r\n activeSavedFilterId: string;\r\n showListFilterSaveDialog: boolean;\r\n listFilterSaveDialogFilter: IListFilterItem;\r\n listFilterSaveDialogGeneralFilter: any;\r\n listFilterSaveDialogReservedNames: string[];\r\n listFilterSaveDialogOnGetGeneralFilter: () => any;\r\n // Permissions\r\n dataId: number;\r\n canCreateTasks: boolean;\r\n // Channel Settings\r\n showSettingsDialog: boolean;\r\n // Reports\r\n reportFilterIsSet: boolean;\r\n loadingReports: boolean;\r\n reports: IReportItem[];\r\n savedReports: IReportItem[];\r\n chartItems: IChartItem[];\r\n activeReportId: string;\r\n activeSavedReportId: string;\r\n reportPanelFilterReport: IReportItem;\r\n showReportSaveDialog: boolean;\r\n reportSaveDialogReport: IReportItem;\r\n reportSaveDialogGeneralFilter: any;\r\n reportSaveDialogReservedNames: string[];\r\n reportSaveDialogOnGetReportSaveFilters: () => ISaveReportFilters;\r\n // Dashboard\r\n showDashBoardNavPanel: boolean;\r\n dashBoardPanels: IPagePanel[];\r\n showDashBoardChartPanel: boolean;\r\n dashBoardChartPanelFilter: ITaskPageFilterState;\r\n dashBoardChartPanelVisible: boolean;\r\n dashBoardChartPanelPanelSize: number;\r\n dashBoardChartPanelCharts: IIdTitle[];\r\n dashBoardChartPanelChartId: string;\r\n dashBoardChartPanelId: string;\r\n // TrashBin\r\n showTrashBinDialog: boolean;\r\n // Preview\r\n showDocumentPreview: boolean;\r\n}\r\n\r\nexport class TaskPage extends React.Component {\r\n _isMounted: boolean;\r\n\r\n getUnits = (units: IIdTitleNode[]): IIdTitleNode[] => {\r\n const result: IIdTitleNode[] = [];\r\n result.push(IdTitleNode.createIdTitleNode(Base.emptyGuid, \"'\" + Translations.All + \"'\", []));\r\n return result.concat(units);\r\n };\r\n \r\n getIdTitles = (idTitles: IIdTitle[]): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(Base.emptyGuid, \"'\" + Translations.All + \"'\"));\r\n return result.concat(idTitles);\r\n };\r\n \r\n getStates = (states: IIdColorTitle[]): IIdColorTitle[] => {\r\n const result: IIdColorTitle[] = [];\r\n result.push(IdColorTitle.createIdColorTitle(Base.emptyGuid, \"\", \"'\" + Translations.All + \"'\"));\r\n return result.concat(states);\r\n };\r\n \r\n getTaskTypes = (taskTypes: ITaskEditTypeItem[]): ITaskEditTypeItem[] => {\r\n const result: ITaskEditTypeItem[] = [];\r\n const allItem = new TaskEditTypeItem();\r\n allItem.id = Base.emptyGuid;\r\n allItem.code = \"'\" + Translations.All + \"'\";\r\n result.push(allItem);\r\n return result.concat(taskTypes);\r\n };\r\n\r\n getHandlers = (handlers: ICodeTitle[]): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(\"\", \"'\" + Translations.All + \"'\"));\r\n return result.concat(handlers.map(i => IdTitle.createIdTitle(i.code, i.title)));\r\n };\r\n \r\n getHtlmlReportItems = (): IReportItem[] => {\r\n const result: IReportItem[] = [];\r\n return result;\r\n };\r\n \r\n getFilters = (): IListFilterItem[] => {\r\n const result: IListFilterItem[] = [];\r\n result.push(ListFilterItem.createListFilterItem(Translations.Tasks, Translations.Tasks,\r\n {\r\n unitIds: [],\r\n stateIds: [],\r\n priorityIds: [],\r\n taskTypeIds: [],\r\n handlerUserCodes: [],\r\n taskTypeHeaderFields: null,\r\n taskTypeFields: null\r\n }, \"modifyDate\", false, 0));\r\n ListFilterItem.sortListFilterItems(result);\r\n return result;\r\n };\r\n\r\n getListFilterIsSet = (state: ITaskPageState): boolean => {\r\n return TaskFilterDrawer.filterIsSet(state, state);\r\n };\r\n\r\n getReportFilterIsSet = (state: ITaskPageState): boolean => {\r\n const taskTypeData = state.activeReportId\r\n ? ReportItem.getTaskTypeAndTaskDataRow(state.activeReportId, state.reports)\r\n : ReportItem.getTaskTypeAndTaskDataRow(state.activeSavedReportId, state.savedReports);\r\n return TaskReportFilterPanel.filterIsSet(state, state, taskTypeData.taskType, taskTypeData.taskDataRow);\r\n };\r\n\r\n getSettingsActions = (): IPageNavMenuItem[] => {\r\n const props = this.props;\r\n const sessionState = props.appState.state;\r\n const result: IPageNavMenuItem[] = [];\r\n if (props.taskPage?.canEditAllModuleProperties) {\r\n result.push({ id: TaskSettingsDialogMenuItem.Units, title: Translations.Units });\r\n result.push({ id: TaskSettingsDialogMenuItem.Permissions, title: Translations.Permissions });\r\n result.push({ id: TaskSettingsDialogMenuItem.TaskStates, title: Translations.TaskStates });\r\n result.push({ id: TaskSettingsDialogMenuItem.TaskPriorities, title: Translations.TaskPriorities });\r\n }\r\n if (sessionState?.isSuperAdmin) {\r\n result.push({ id: TaskSettingsDialogMenuItem.DefaultTaskStates, title: Translations.DefaultTaskStates });\r\n result.push({ id: TaskSettingsDialogMenuItem.DefaultTaskPriorities, title: Translations.DefaultTaskPriorities });\r\n result.push({ id: TaskSettingsDialogMenuItem.DefaultTaskTypes, title: Translations.DefaultTaskTypes });\r\n }\r\n if (props.taskPage?.canEditAllModuleProperties) {\r\n result.push({ id: TaskSettingsDialogMenuItem.CompanyTaskTypes, title: Translations.CompanyTaskTypes });\r\n }\r\n return result;\r\n };\r\n\r\n constructor(props: TaskPageProp) {\r\n super(props);\r\n abortManager.abortAll(); //Abort all abortable calls regardless of module\r\n const sessionState = props.appState.state;\r\n const filters = this.getFilters();\r\n const filterProps = ListFilterItem.getFilterProps(filters[0], \"\", true, TaskPageDashboardChart.getStateFilterPropsFromGeneralFilter);\r\n const state = {\r\n ...filterProps,\r\n initialized: !!props.taskPage,\r\n activeViewTypeId: TaskPageViewTypeId.Dashboard,\r\n activeCompanyId: sessionState.companyId,\r\n listDataPreloaded: true,\r\n listAddRecord: false,\r\n units: this.getUnits(props.taskPage?.units ?? []),\r\n states: this.getStates(props.taskPage?.states ?? []),\r\n priorities: this.getIdTitles(props.taskPage?.priorities ?? []),\r\n taskTypes: this.getTaskTypes(props.taskPage?.taskTypes ?? []),\r\n handlers: this.getHandlers(props.taskPage?.handlers ?? []),\r\n settingsActions: this.getSettingsActions(),\r\n // Filters\r\n listFilterIsSet: false,\r\n activeFilterId: filters[0].id,\r\n activeSavedFilterId: \"\",\r\n filters,\r\n savedFilters: ListFilterItem.getListFilterItems(props.taskPage?.companyFilters, props.taskPage?.userFilters),\r\n showListFilter: false,\r\n listFilterFilter: null,\r\n showListFilterSaveDialog: false,\r\n listFilterSaveDialogFilter: null,\r\n listFilterSaveDialogGeneralFilter: null,\r\n listFilterSaveDialogReservedNames: [],\r\n listFilterSaveDialogOnGetGeneralFilter: null,\r\n // Permissions\r\n dataId: props.dataId,\r\n canCreateTasks: props.taskPage?.canCreateTasks ?? false,\r\n // Settings\r\n showSettingsDialog: false,\r\n // Reports\r\n reportFilterIsSet: false,\r\n loadingReports: true,\r\n reports: this.getHtlmlReportItems(),\r\n savedReports: [],\r\n chartItems: [],\r\n activeReportId: \"\",\r\n activeSavedReportId: \"\",\r\n reportPanelFilterReport: null,\r\n showReportSaveDialog: false,\r\n reportSaveDialogReport: null,\r\n reportSaveDialogGeneralFilter: null,\r\n reportSaveDialogReservedNames: [],\r\n reportSaveDialogOnGetReportSaveFilters: null,\r\n // Dashboard\r\n showDashBoardNavPanel: false,\r\n dashBoardPanels: [],\r\n showDashBoardChartPanel: false,\r\n dashBoardChartPanelFilter: null,\r\n dashBoardChartPanelVisible: false,\r\n dashBoardChartPanelPanelSize: FrontPagePanelSize.OneXOne,\r\n dashBoardChartPanelCharts: [],\r\n dashBoardChartPanelChartId: \"\",\r\n dashBoardChartPanelId: \"\",\r\n // TrashBin\r\n showTrashBinDialog: false,\r\n // Preview\r\n showDocumentPreview: false,\r\n };\r\n this.state = {\r\n ...state,\r\n dashBoardPanels: SavedChartPanel.getDashBoardPanels(props.taskPage?.panels, props.taskPage?.chartPanels, state.chartItems, ApplicationPermissionType.Task),\r\n listFilterIsSet: this.getListFilterIsSet(state),\r\n reportFilterIsSet: this.getReportFilterIsSet(state)\r\n };\r\n }\r\n\r\n setGeneralFilterToDefaultReports = (state: { reports: IReportItem[] }, states: IIdColorTitle[], taskTypes: ITaskEditTypeItem[]) => {\r\n const taskType = taskTypes.length > 0 ? taskTypes.find(i => i.id !== Base.emptyGuid) : null;\r\n const taskTypeIds = taskType ? [taskType.id] : null;\r\n const taskState = states.length > 0 ? states.find(i => i.id !== Base.emptyGuid) : null;\r\n const stateIds = taskState ? [taskState.id] : null;\r\n for (const report of state.reports) {\r\n if (report.id !== Base.emptyGuid && report.id !== \"00000000-0000-0000-0000-000000000001\") continue;\r\n report.generalFilter = { taskTypeIds, stateIds };\r\n }\r\n };\r\n\r\n getReports = async (companyId: string) => {\r\n const newState = await ReportItems.getReportsState(companyId, this.state.activeReportId, this.getHtlmlReportItems(), taskService.getTaskPageReportItems,\r\n () => {\r\n if (!this._isMounted) return;\r\n this.setState({ loadingReports: true });\r\n },\r\n () => {\r\n if (!this._isMounted) return;\r\n this.setState({ loadingReports: false });\r\n });\r\n if (!this._isMounted || !newState) return;\r\n this.setGeneralFilterToDefaultReports(newState, this.state.states, this.state.taskTypes);\r\n const props = this.props;\r\n this.setState({\r\n ...newState,\r\n dashBoardPanels: SavedChartPanel.getDashBoardPanels(props.taskPage?.panels, props.taskPage?.chartPanels, newState.chartItems, ApplicationPermissionType.Task)\r\n });\r\n };\r\n\r\n componentDidMount(): void {\r\n const sessionState = this.props.appState.state;\r\n recordLockManager.unlockAll(sessionState?.companyId, sessionState?.code);\r\n this.props.onGetTaskPage();\r\n this.getReports(sessionState.companyId);\r\n this._isMounted = true;\r\n }\r\n\r\n componentDidUpdate(prevProps: TaskPageProp, prevState: ITaskPageState): void {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n const equalCompanyIds = Base.equalStrArrays(prevProps.taskPage?.companies.map(i => i.id) ?? [], props.taskPage?.companies.map(i => i.id) ?? []);\r\n const prevCompanyId = prevProps.taskPage && prevProps.taskPage.companies.length > 0 ? prevProps.taskPage.companies[0].id : Base.emptyGuid;\r\n const companyId = props.taskPage && props.taskPage.companies.length > 0 ? props.taskPage.companies[0].id : Base.emptyGuid;\r\n const prevCanCreateTasks = prevProps.taskPage?.canCreateTasks ?? false;\r\n const canCreateTasks = props.taskPage?.canCreateTasks ?? false;\r\n const prevCanEditAllModuleProperties = prevProps.taskPage?.canEditAllModuleProperties ?? false;\r\n const canEditAllModuleProperties = props.taskPage?.canEditAllModuleProperties ?? false;\r\n const unitsData = props.taskPage?.units ?? [];\r\n const equalUnits = IdTitleNode.equalIds(prevProps.taskPage?.units ?? [], unitsData);\r\n const units = this.getUnits(unitsData);\r\n const statesData = props.taskPage?.states ?? [];\r\n const equalStates = IdTitle.equal(prevProps.taskPage?.states ?? [], statesData);\r\n const states = this.getStates(statesData);\r\n const prioritiesData = props.taskPage?.priorities ?? [];\r\n const equalPriorities = IdTitle.equal(prevProps.taskPage?.priorities ?? [], prioritiesData);\r\n const priorities = this.getIdTitles(prioritiesData);\r\n const taskTypesData = props.taskPage?.taskTypes ?? [];\r\n const equalTaskTypes = IdTitle.equal(prevProps.taskPage?.taskTypes ?? [], taskTypesData);\r\n const taskTypes = this.getTaskTypes(taskTypesData);\r\n const handlersData = props.taskPage?.handlers ?? [];\r\n const equalHandlers = IdTitle.equal(prevProps.taskPage?.handlers ?? [], handlersData);\r\n const handlers = this.getHandlers(handlersData);\r\n if (prevProps.dataId === props.dataId && prevCompanyId === companyId && prevCanEditAllModuleProperties === canEditAllModuleProperties &&\r\n prevCanCreateTasks === canCreateTasks && equalCompanyIds && equalUnits && equalStates && equalPriorities && equalTaskTypes && equalHandlers) return;\r\n const savedFilters = ListFilterItem.getListFilterItems(props.taskPage?.companyFilters, props.taskPage?.userFilters);\r\n const selectedUnitIds = equalUnits ? state.selectedUnitIds : [Base.emptyGuid];\r\n const selectedStateIds = equalStates ? state.selectedStateIds : [Base.emptyGuid];\r\n const selectedPriorityIds = equalPriorities ? state.selectedPriorityIds : [Base.emptyGuid];\r\n const selectedTaskTypeIds = equalTaskTypes ? state.selectedTaskTypeIds : [Base.emptyGuid];\r\n const selectedHandlerUserCodes = equalHandlers ? state.selectedHandlerUserCodes : [\"\"];\r\n const activeSavedFilterId = savedFilters.find(i => i.id === state.activeSavedFilterId)\r\n ? state.activeSavedFilterId\r\n : \"\";\r\n const stateChange = {\r\n dataId: props.dataId,\r\n canCreateTasks,\r\n initialized: !!props.taskPage,\r\n dashBoardPanels: SavedChartPanel.getDashBoardPanels(props.taskPage?.panels, props.taskPage?.chartPanels, state.chartItems, ApplicationPermissionType.Task),\r\n activeViewTypeId: companyId !== sessionState.companyId ? TaskPageViewTypeId.Records : state.activeViewTypeId,\r\n activeCompanyId: companyId,\r\n units,\r\n states,\r\n priorities,\r\n taskTypes,\r\n handlers,\r\n selectedUnitIds,\r\n selectedStateIds,\r\n selectedPriorityIds,\r\n selectedTaskTypeIds,\r\n selectedHandlerUserCodes,\r\n savedFilters,\r\n activeSavedFilterId,\r\n settingsActions: this.getSettingsActions(),\r\n showDocumentPreview: props.taskPage?.showDocumentPreview ?? state.showDocumentPreview\r\n };\r\n const newState = { ...state, ...stateChange };\r\n this.setGeneralFilterToDefaultReports(newState, states, taskTypes);\r\n this.setState({\r\n ...stateChange,\r\n listFilterIsSet: this.getListFilterIsSet(newState),\r\n reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n });\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this._isMounted = false;\r\n }\r\n \r\n // #region Saved Filter\r\n getFilterPropsWithState = (listItemFilter: IListFilterItem) => {\r\n const state = this.state;\r\n let result = {\r\n selectedUnitIds: state.selectedUnitIds,\r\n selectedStateIds: state.selectedStateIds,\r\n selectedPriorityIds: state.selectedPriorityIds,\r\n selectedTaskTypeIds: state.selectedTaskTypeIds,\r\n selectedHandlerUserCodes: state.selectedHandlerUserCodes,\r\n sortColumn: state.sortColumn,\r\n sortOrderIsAsc: state.sortOrderIsAsc\r\n };\r\n if (listItemFilter) {\r\n result = ListFilterItem.getFilterProps(listItemFilter, result.sortColumn, result.sortOrderIsAsc, TaskPageDashboardChart.getStateFilterPropsFromGeneralFilter);\r\n }\r\n return result;\r\n };\r\n\r\n handleChangeActiveCompanyId = async (companyId: string) => {\r\n if (this.state.activeCompanyId === companyId) return;\r\n await this.handleRefreshPageData(companyId);\r\n };\r\n\r\n getStateChangeAfterChangeActiveFilter = (activeFilterId: string): any => {\r\n const state = this.state;\r\n const filter = state.filters.find(i => i.id === activeFilterId);\r\n if (!filter) return {};\r\n const filterProps = this.getFilterPropsWithState(filter);\r\n const activeSavedFilterId = \"\";\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId };\r\n return {\r\n ...filterProps,\r\n activeFilterId,\r\n activeSavedFilterId: \"\",\r\n listFilterIsSet: this.getListFilterIsSet(newState),\r\n reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n };\r\n };\r\n\r\n handleChangeActiveFilter = (activeFilterId: string) => {\r\n this.setState(this.getStateChangeAfterChangeActiveFilter(activeFilterId));\r\n };\r\n\r\n getStateChangeAfterChangeActiveSavedFilter = (activeSavedFilterId: string): any => {\r\n const state = this.state;\r\n const savedFilter = state.savedFilters.find(i => i.id === activeSavedFilterId);\r\n if (!savedFilter) return {};\r\n const filterProps = this.getFilterPropsWithState(savedFilter);\r\n const activeFilterId = \"\";\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId };\r\n return {\r\n ...filterProps,\r\n activeFilterId,\r\n activeSavedFilterId,\r\n listFilterIsSet: this.getListFilterIsSet(newState),\r\n reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n };\r\n };\r\n\r\n handleChangeActiveSavedFilter = (activeSavedFilterId: string) => {\r\n this.setState(this.getStateChangeAfterChangeActiveSavedFilter(activeSavedFilterId));\r\n };\r\n\r\n handleRemoveSavedFilter = async (savedFilterId: string) => {\r\n const state = this.state;\r\n const savedFilter = state.savedFilters.find(i => i.id === savedFilterId);\r\n if (!savedFilter) return;\r\n const result = await ListFilterSaveDialog.removeListFilterFromDb(state.savedFilters, state.activeCompanyId, savedFilterId, savedFilter.isShared, ApplicationPermissionType.Task);\r\n if (!result) return;\r\n const savedFilters = state.savedFilters.filter(i => i.id !== savedFilterId);\r\n let activeFilterId = \"\";\r\n let activeSavedFilterId = \"\";\r\n let newfilter: IListFilterItem = null;\r\n if (savedFilters.length > 0) {\r\n newfilter = savedFilters[0];\r\n activeSavedFilterId = newfilter.id;\r\n } else if (state.filters.length > 0) {\r\n newfilter = state.filters[0];\r\n activeFilterId = newfilter.id;\r\n }\r\n const filterProps = this.getFilterPropsWithState(newfilter);\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId, savedFilters };\r\n this.setState({\r\n ...filterProps,\r\n showListFilter: false,\r\n activeFilterId,\r\n activeSavedFilterId,\r\n savedFilters,\r\n listFilterIsSet: this.getListFilterIsSet(newState),\r\n reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n });\r\n };\r\n\r\n handleFilterSortData = (sortColumn: string, sortOrderIsAsc: boolean) => {\r\n this.setState({\r\n sortColumn,\r\n sortOrderIsAsc,\r\n });\r\n };\r\n\r\n updateFiltersAfterSave = (orgFilterId: string, savedListFilter: ISavedListFilter, isShared: boolean) => {\r\n if (!savedListFilter) return;\r\n const state = this.state;\r\n const savedFilters = state.savedFilters.filter(i => i.id !== orgFilterId || i.isShared !== isShared);\r\n const filter = ListFilterItem.createListFilterItemFromSavedListFilter(savedListFilter, isShared);\r\n savedFilters.push(filter);\r\n ListFilterItem.sortListFilterItems(savedFilters);\r\n this.setState({\r\n showListFilterSaveDialog: false,\r\n savedFilters,\r\n activeFilterId: \"\",\r\n activeSavedFilterId: savedListFilter.id,\r\n listFilterFilter: filter\r\n });\r\n };\r\n\r\n getActiveFilter = (): IListFilterItem => {\r\n const state = this.state;\r\n return state.activeFilterId\r\n ? state.filters.find(i => i.id === state.activeFilterId)\r\n : state.savedFilters.find(i => i.id === state.activeSavedFilterId);\r\n };\r\n\r\n handleSaveListFilter = async (saveAs: boolean, onGetGeneralFilter: () => any) => {\r\n const state = this.state;\r\n const filter = this.getActiveFilter();\r\n if (!filter) return;\r\n if (!saveAs) {\r\n const savedListFilter = await ListFilterSaveDialog.saveListFilterToDb(filter, TaskPageDashboardChart.getGeneralFilterFromState(state), state.sortColumn, state.sortOrderIsAsc, state.activeCompanyId, ApplicationPermissionType.Task);\r\n this.updateFiltersAfterSave(filter.id, savedListFilter, filter.isShared);\r\n } else {\r\n this.setState({\r\n showListFilterSaveDialog: true,\r\n listFilterSaveDialogFilter: filter,\r\n listFilterSaveDialogReservedNames: state.savedFilters.map(i => i.id).concat(state.filters.map(i => i.title)),\r\n listFilterSaveDialogGeneralFilter: TaskPageDashboardChart.getGeneralFilterFromState(state),\r\n listFilterSaveDialogOnGetGeneralFilter: onGetGeneralFilter\r\n });\r\n }\r\n };\r\n\r\n handleSaveListFilterDialogOk = (savedListFilter: ISavedListFilter, isShared: boolean) => {\r\n this.updateFiltersAfterSave(\"\", savedListFilter, isShared);\r\n };\r\n\r\n handleSaveListFilterDialogCancel = () => {\r\n this.setState({\r\n showListFilterSaveDialog: false\r\n });\r\n };\r\n // #endregion Saved Filter\r\n\r\n // #region Record Filter\r\n handleShowListFilter = () => {\r\n const filter = this.getActiveFilter();\r\n if (!filter) return;\r\n this.setState({\r\n showListFilter: this.state.activeViewTypeId !== TaskPageViewTypeId.Reports,\r\n listFilterFilter: filter\r\n });\r\n };\r\n\r\n handleListFilterPanelOk = (closeDialog: boolean, newFilterState: ITaskPageFilterState): any => {\r\n const newState = {\r\n ...this.state,\r\n ...newFilterState\r\n };\r\n this.setState({\r\n showListFilter: !closeDialog,\r\n ...newFilterState,\r\n listFilterIsSet: this.getListFilterIsSet(newState),\r\n reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n });\r\n return TaskPageDashboardChart.getGeneralFilterFromState(newState);\r\n };\r\n \r\n handleFilterPanelCancel = () => {\r\n this.setState({ showListFilter: false });\r\n };\r\n // #endregion Record Filter\r\n\r\n // #region Report Filter\r\n setStateAfterActiveReportUpdate = (report: IReportItem, reports: IReportItem[], savedReports: IReportItem[], activeReportId: string, activeSavedReportId: string) => {\r\n report.resetTaskDataRowToOrg();\r\n const reportFilterProps = TaskPageDashboardChart.getStateFilterPropsFromGeneralFilter(report.generalFilter); //Reset filter parameters\r\n const updatedState = {\r\n ...reportFilterProps,\r\n reports,\r\n savedReports,\r\n activeReportId,\r\n activeSavedReportId,\r\n reportPanelFilterReport: report,\r\n };\r\n const newState = {\r\n ...this.state,\r\n ...updatedState\r\n };\r\n return {\r\n ...updatedState,\r\n listFilterIsSet: this.getListFilterIsSet(newState),\r\n reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n };\r\n };\r\n\r\n getStateChangeAfterChangeActiveReport = (activeReportId: string) => {\r\n const state = this.state;\r\n const reports = state.reports.slice(0);\r\n const report = reports.find(i => i.id === activeReportId);\r\n if (!report) return {};\r\n return this.setStateAfterActiveReportUpdate(report, reports, state.savedReports, activeReportId, \"\");\r\n };\r\n\r\n handleChangeActiveReport = (activeReportId: string) => {\r\n this.setState(this.getStateChangeAfterChangeActiveReport(activeReportId));\r\n };\r\n\r\n getStateChangeAfterChangeActiveSavedReport = (activeSavedReportId: string): any => {\r\n const state = this.state;\r\n const savedReports = state.savedReports.slice(0);\r\n const savedReport = savedReports.find(i => i.id === activeSavedReportId);\r\n if (!savedReport) return {};\r\n return this.setStateAfterActiveReportUpdate(savedReport, state.reports, savedReports, \"\", activeSavedReportId);\r\n };\r\n\r\n handleChangeActiveSavedReport = (activeSavedReportId: string) => {\r\n this.setState(this.getStateChangeAfterChangeActiveSavedReport(activeSavedReportId));\r\n };\r\n\r\n handleRemoveSavedReport = async (reportId: string) => {\r\n const state = this.state;\r\n const savedReport = state.savedReports.find(i => i.id === reportId);\r\n if (!savedReport) return;\r\n const result = await SaveReportDialog.removeReportFromDb(state.savedReports, state.activeCompanyId, reportId, savedReport.reportSharingType, ApplicationPermissionType.Task);\r\n if (!result) return;\r\n const savedReports = state.savedReports.filter(i => i.id !== reportId);\r\n let activeReportId = \"\";\r\n let activeSavedReportId = \"\";\r\n let newReport: IReportItem = null;\r\n if (savedReports.length > 0) {\r\n newReport = savedReports[0];\r\n activeSavedReportId = newReport.id;\r\n } else if (state.reports.length > 0) {\r\n newReport = state.reports[0];\r\n activeReportId = newReport.id;\r\n }\r\n const reportFilterProps = TaskPageDashboardChart.getStateFilterPropsFromGeneralFilter(newReport?.generalFilter);\r\n const newState = { ...state, ...reportFilterProps, activeReportId, activeSavedReportId, savedReports };\r\n this.setState({\r\n ...reportFilterProps,\r\n activeReportId,\r\n activeSavedReportId,\r\n savedReports,\r\n listFilterIsSet: this.getListFilterIsSet(newState),\r\n reportFilterIsSet: this.getReportFilterIsSet(newState),\r\n reportPanelFilterReport: newReport,\r\n });\r\n };\r\n // #endregion Report\r\n\r\n setActiveViewType = (itemId: TaskPageViewTypeId, listAddRecord: boolean) => {\r\n const state = this.state;\r\n //To reset filter when filter/report is activated\r\n let newState = {};\r\n if (itemId === TaskPageViewTypeId.Reports) {\r\n newState = state.activeReportId\r\n ? this.getStateChangeAfterChangeActiveReport(state.activeReportId)\r\n : this.getStateChangeAfterChangeActiveSavedReport(state.activeSavedReportId);\r\n } else if (itemId === TaskPageViewTypeId.Records) {\r\n newState = state.activeFilterId\r\n ? this.getStateChangeAfterChangeActiveFilter(state.activeFilterId)\r\n : this.getStateChangeAfterChangeActiveSavedFilter(state.activeSavedFilterId);\r\n }\r\n this.setState({\r\n ...newState,\r\n activeViewTypeId: itemId,\r\n listDataPreloaded: false,\r\n listAddRecord\r\n });\r\n };\r\n\r\n handleSetActiveViewType = (itemId: TaskPageViewTypeId) => {\r\n this.setActiveViewType(itemId, false);\r\n };\r\n\r\n handleAddTask = () => {\r\n this.setActiveViewType(TaskPageViewTypeId.Records, true);\r\n };\r\n\r\n // #region Units\r\n handleRefreshPageData = async (companyId: string) => {\r\n const pageData = await taskService.getTaskPageData(companyId);\r\n const state = this.state;\r\n //Units\r\n const units = this.getUnits(pageData.units);\r\n const selectedUnitIds = IdTitleNode.keepAvailableSelectedIds(units, state.selectedUnitIds);\r\n //States\r\n const states = this.getStates(pageData.states);\r\n const selectedStateIds = Base.keepAvailableSelectedIds(states, state.selectedStateIds);\r\n //Priorities\r\n const priorities = this.getIdTitles(pageData.priorities);\r\n const selectedPriorityIds = Base.keepAvailableSelectedIds(priorities, state.selectedPriorityIds);\r\n //TaskTypes\r\n const taskTypes = this.getTaskTypes(pageData.taskTypes);\r\n const selectedTaskTypeIds = Base.keepAvailableSelectedIds(taskTypes, state.selectedTaskTypeIds);\r\n let selectedTaskTypeFields = state.selectedTaskTypeFields;\r\n let selectedTaskTypeHeaderFields = state.selectedTaskTypeHeaderFields;\r\n if (state.selectedTaskTypeIds.length === 1 && selectedTaskTypeIds.length < 1 &&\r\n (state.selectedTaskTypeFields || state.selectedTaskTypeHeaderFields)) {\r\n selectedTaskTypeFields = \"\";\r\n selectedTaskTypeHeaderFields = \"\";\r\n }\r\n //Handlers and Handler filter user codes\r\n const handlers = this.getHandlers(pageData.handlers);\r\n const selectedHandlerUserCodes = Base.keepAvailableSelectedIds(handlers, state.selectedHandlerUserCodes, \"\");\r\n const stateChange = {\r\n activeCompanyId: companyId,\r\n units,\r\n states,\r\n priorities,\r\n taskTypes,\r\n handlers,\r\n selectedUnitIds,\r\n selectedStateIds,\r\n selectedPriorityIds,\r\n selectedTaskTypeIds,\r\n selectedHandlerUserCodes,\r\n selectedTaskTypeFields,\r\n selectedTaskTypeHeaderFields\r\n };\r\n const newState = { ...state, ...stateChange };\r\n this.setGeneralFilterToDefaultReports(newState, states, taskTypes);\r\n this.setState({\r\n ...stateChange,\r\n listFilterIsSet: this.getListFilterIsSet(newState),\r\n reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n });\r\n };\r\n // #endregion Units\r\n\r\n handleShowDetailsPanel = (showDocumentPreview) => {\r\n this.setState({ showDocumentPreview });\r\n AppUtils.callService(() => userService.saveUserParameter(userParameterCodeShowDocumentPreview, showDocumentPreview ? \"TRUE\" : \"FALSE\"), false, true);\r\n };\r\n \r\n // #region Settings\r\n handleOpenSettingsDialog = () => {\r\n this.setState({\r\n showSettingsDialog: true\r\n });\r\n };\r\n \r\n handleSettingsDialogOk = async (refreshView: boolean) => {\r\n this.setState({\r\n showSettingsDialog: false,\r\n dataId: this.state.dataId + 1\r\n });\r\n if (!refreshView) return;\r\n await this.handleRefreshPageData(this.state.activeCompanyId);\r\n };\r\n // #endregion Settings\r\n\r\n // #region Report Filter\r\n handleOpenReportFilterDialog = () => {\r\n const report = ReportItem.getActiveReport(this.state);\r\n if (!report) return;\r\n this.setState({\r\n reportPanelFilterReport: report\r\n });\r\n };\r\n\r\n onTaskReportFilterPanelOk = (filterState: ITaskPageFilterState, parameters: ITaskDataRow, showInFrontPage: boolean): ISaveReportFilters => {\r\n const state = this.state;\r\n const stateUdpate = SaveReportDialog.getReportStateChangeAfterReportFilterChange(state, parameters, showInFrontPage);\r\n if (!stateUdpate) return;\r\n const stateChange = {\r\n selectedUnitIds: filterState.selectedUnitIds,\r\n selectedStateIds: filterState.selectedStateIds,\r\n selectedPriorityIds: filterState.selectedPriorityIds,\r\n selectedTaskTypeIds: filterState.selectedTaskTypeIds,\r\n selectedHandlerUserCodes: filterState.selectedHandlerUserCodes,\r\n selectedTaskTypeHeaderFields: filterState.selectedTaskTypeHeaderFields,\r\n selectedTaskTypeFields: filterState.selectedTaskTypeFields,\r\n reports: stateUdpate.reports,\r\n savedReports: stateUdpate.savedReports\r\n };\r\n const newState = {\r\n ...this.state,\r\n ...stateChange\r\n };\r\n this.setState({\r\n ...stateChange,\r\n listFilterIsSet: this.getListFilterIsSet(newState),\r\n reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n });\r\n return {\r\n generalFilter: TaskPageDashboardChart.getGeneralFilterFromState(newState),\r\n reportFilter: stateUdpate.reportFilter,\r\n showInFrontPage\r\n };\r\n };\r\n // #endregion Report Filter\r\n\r\n // // #region Report Save\r\n // handleSetSortData = (sortColumn: string, sortOrderIsAsc: boolean) => {\r\n // const state = this.state;\r\n // if (state.activeReportId) {\r\n // const reports = state.reports.slice(0);\r\n // const index = reports.findIndex(i => i.id === state.activeReportId);\r\n // if (index < 0) return;\r\n // const report = new ReportItem(reports[index]);\r\n // report.sortColumn = sortColumn;\r\n // report.sortOrderIsAsc = sortOrderIsAsc;\r\n // reports[index] = report;\r\n // const newState = { ...this.state, reports };\r\n // this.setState({\r\n // reports,\r\n // listFilterIsSet: this.getListFilterIsSet(newState),\r\n // reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n // });\r\n // } else if (state.activeSavedReportId) {\r\n // const savedReports = state.savedReports.slice(0);\r\n // const index = savedReports.findIndex(i => i.id === state.activeSavedReportId);\r\n // if (index < 0) return;\r\n // const savedReport = new ReportItem(savedReports[index]);\r\n // savedReport.sortColumn = sortColumn;\r\n // savedReport.sortOrderIsAsc = sortOrderIsAsc;\r\n // savedReports[index] = savedReport;\r\n // const newState = { ...this.state, savedReports };\r\n // this.setState({\r\n // savedReports,\r\n // listFilterIsSet: this.getListFilterIsSet(newState),\r\n // reportFilterIsSet: this.getReportFilterIsSet(newState)\r\n // });\r\n // }\r\n // };\r\n\r\n handleSaveAsReportsModifiedReport = async (saveAs: boolean, onGetReportSaveFilters: () => ISaveReportFilters) => {\r\n const state = this.state;\r\n const report = ReportItem.getActiveReport(state);\r\n if (!report) return;\r\n if (!saveAs) {\r\n const savedReport = await SaveReportDialog.saveReportToDb(report, TaskPageDashboardChart.getGeneralFilterFromState(state), state.activeCompanyId, ApplicationPermissionType.Task);\r\n this.setState(SaveReportDialog.getReportStateChangeAfterReportSave(this.state, report.id, savedReport, report.reportSharingType));\r\n } else {\r\n this.setState({\r\n showReportSaveDialog: true,\r\n reportSaveDialogReport: report,\r\n reportSaveDialogReservedNames: state.savedReports.map(i => i.id).concat(state.reports.map(i => i.title)),\r\n reportSaveDialogGeneralFilter: TaskPageDashboardChart.getGeneralFilterFromState(state),\r\n reportSaveDialogOnGetReportSaveFilters: onGetReportSaveFilters\r\n });\r\n }\r\n };\r\n\r\n handleReportSaveDialogOk = (savedReport: ISavedReport, reportSharingType: ReportSharingType) => {\r\n this.setState(SaveReportDialog.getReportStateChangeAfterReportSave(this.state, \"\", savedReport, reportSharingType));\r\n };\r\n\r\n handleReportSaveDialogCancel = () => {\r\n this.setState({\r\n showReportSaveDialog: false\r\n });\r\n };\r\n // // #endregion Report Save\r\n\r\n // #region Dashboard\r\n handleToggleShowDashboardNavPanel = () => {\r\n this.setState({ showDashBoardNavPanel: !this.state.showDashBoardNavPanel });\r\n };\r\n\r\n handleUpdateDashBoardPanels = async (panels: IPagePanel[]) => {\r\n this.setState({\r\n dashBoardPanels: panels\r\n });\r\n };\r\n\r\n handleSaveDashBoardPanels = async (panels: IPagePanel[]) => {\r\n const pagePanels = panels.filter(i => i.panelType !== ContentPagePanelType.Chart);\r\n await taskService.saveTaskPanels(pagePanels);\r\n const chartPanels = panels.filter(i => i.panelType === ContentPagePanelType.Chart).map(i => i as SavedChartPanel);\r\n await taskService.saveTaskChartPanels(chartPanels);\r\n this.setState({\r\n dashBoardPanels: panels\r\n });\r\n };\r\n\r\n handleDashboardSavedFilterClick = (filterId: string) => {\r\n this.handleChangeActiveSavedFilter(filterId);\r\n this.setState({\r\n activeViewTypeId: TaskPageViewTypeId.Records,\r\n listDataPreloaded: false\r\n });\r\n };\r\n\r\n handleDashboardFilterClick = (filterId: string) => {\r\n this.handleChangeActiveFilter(filterId);\r\n this.setState({\r\n activeViewTypeId: TaskPageViewTypeId.Records,\r\n listDataPreloaded: false\r\n });\r\n };\r\n\r\n handleDashboardSavedReportClick = (reportId: string) => {\r\n this.handleChangeActiveSavedReport(reportId);\r\n this.setState({\r\n activeViewTypeId: TaskPageViewTypeId.Reports,\r\n listDataPreloaded: false\r\n });\r\n };\r\n\r\n handleDashboardReportClick = (reportId: string) => {\r\n this.handleChangeActiveReport(reportId);\r\n this.setState({\r\n activeViewTypeId: TaskPageViewTypeId.Reports,\r\n listDataPreloaded: false\r\n });\r\n };\r\n\r\n handleShowChartPanelPropertiesDialog = (panelId: string) => {\r\n if (!panelId) return;\r\n const state = this.state;\r\n const chartPanels = state.dashBoardPanels.filter(i => i.panelType === ContentPagePanelType.Chart).map(i => i as SavedChartPanel);\r\n const chartPanel = chartPanels.find(i => i.id === panelId);\r\n if (!chartPanel) return;\r\n const chartItem = state.chartItems.find(i => i.reportName === chartPanel.reportId);\r\n if (!chartItem) return;\r\n const reportItem = ReportItem.createReportItem(chartItem.id, chartPanel.getTitle(), ReportType.Pdf, chartItem.taskType);\r\n reportItem.taskDataRow = chartItem.taskDataRow;\r\n reportItem.generalFilter = chartPanel.generalFilter;\r\n reportItem.reportFilter = chartPanel.reportFilter;\r\n reportItem.copyReportParameterValuesFromSavedValues();\r\n this.setState({\r\n showDashBoardChartPanel: true,\r\n dashBoardChartPanelId: panelId,\r\n reportPanelFilterReport: reportItem,\r\n dashBoardChartPanelFilter: TaskPageDashboardChart.getStateFilterPropsFromGeneralFilter(chartPanel.generalFilter),\r\n dashBoardChartPanelVisible: chartPanel.visible,\r\n dashBoardChartPanelPanelSize: chartPanel.size,\r\n dashBoardChartPanelCharts: chartItem.chartNames.map(i => IdTitle.createIdTitle(i, i)),\r\n dashBoardChartPanelChartId: chartPanel.chartId,\r\n });\r\n };\r\n \r\n onChartPanelReportFilterDialogOk = async (filterState: ITaskPageFilterState, parameters: ITaskDataRow, selectedChartId: string, panelSize: number, panelVisible: boolean) => {\r\n const state = this.state;\r\n const pagePanels = state.dashBoardPanels.filter(i => i.panelType !== ContentPagePanelType.Chart);\r\n const chartPanels = state.dashBoardPanels.filter(i => i.panelType === ContentPagePanelType.Chart).map(i => i as SavedChartPanel);\r\n const chartPanel = chartPanels.find(i => i.id === state.dashBoardChartPanelId);\r\n if (!chartPanel) return;\r\n const chartItem = state.chartItems.find(i => i.reportName === chartPanel.reportId);\r\n if (!chartItem) return;\r\n const newState = {\r\n ...this.state,\r\n selectedUnitIds: filterState.selectedUnitIds,\r\n selectedStateIds: filterState.selectedStateIds,\r\n selectedPriorityIds: filterState.selectedPriorityIds,\r\n selectedTaskTypeIds: filterState.selectedTaskTypeIds,\r\n selectedHandlerUserCodes: filterState.selectedHandlerUserCodes,\r\n selectedTaskTypeHeaderFields: filterState.selectedTaskTypeHeaderFields,\r\n selectedTaskTypeFields: filterState.selectedTaskTypeFields\r\n };\r\n chartPanel.size = panelSize;\r\n chartPanel.visible = panelVisible;\r\n chartPanel.chartId = selectedChartId;\r\n chartPanel.generalFilter = TaskPageDashboardChart.getGeneralFilterFromState(newState);\r\n chartPanel.reportFilter = SaveReportDialog.getReportFilterFromTaskType(chartItem.taskType, parameters);\r\n this.setState({\r\n showDashBoardChartPanel: false,\r\n dashBoardPanels: PagePanel.sortPagePanels(pagePanels.concat(chartPanels))\r\n });\r\n await taskService.saveTaskChartPanels([chartPanel]);\r\n };\r\n \r\n onChartPanelReportFilterDialogCancel = () => {\r\n this.setState({\r\n showDashBoardChartPanel: false\r\n });\r\n };\r\n // #endregion Dashboard\r\n\r\n // #region Transh bin dialog\r\n handleOpenTrashBinDialog = () => {\r\n this.setState({\r\n showTrashBinDialog: true\r\n });\r\n };\r\n \r\n handleCloseTrashBinDialog = () => {\r\n this.setState({\r\n showTrashBinDialog: false,\r\n dataId: this.state.dataId + 1\r\n });\r\n };\r\n // #endregion Transh bin dialog\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n const companies = props.taskPage ? props.taskPage.companies : [];\r\n const dashboardViewIsActive = state.activeViewTypeId === TaskPageViewTypeId.Dashboard;\r\n const recordsViewIsActive = state.activeViewTypeId === TaskPageViewTypeId.Records;\r\n const reportsViewIsActive = state.activeViewTypeId === TaskPageViewTypeId.Reports;\r\n const settingsVisible = state.settingsActions?.length > 0;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!dashboardViewIsActive &&\r\n \r\n {recordsViewIsActive &&\r\n i.id === state.activeSavedFilterId) : null}\r\n sessionState={sessionState}\r\n dataId={state.dataId.toString(10)}\r\n preloaded={state.listDataPreloaded}\r\n addRecord={state.listAddRecord}\r\n canCreateTasks={state.canCreateTasks}\r\n list={props.taskPage?.list}\r\n listFilterIsSet={state.listFilterIsSet}\r\n units={state.units}\r\n selectedUnitIds={state.selectedUnitIds}\r\n selectedStateIds={state.selectedStateIds}\r\n selectedPriorityIds={state.selectedPriorityIds}\r\n selectedTaskTypeIds={state.selectedTaskTypeIds}\r\n selectedHandlerUserCodes={state.selectedHandlerUserCodes}\r\n selectedTaskTypeHeaderFields={state.selectedTaskTypeHeaderFields}\r\n selectedTaskTypeFields={state.selectedTaskTypeFields}\r\n companyId={state.activeCompanyId}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n thrashBin={false}\r\n showDocumentPreview={state.showDocumentPreview}\r\n onOpenFiltersDialog={this.handleShowListFilter}\r\n onSetSortData={this.handleFilterSortData}\r\n onLoadPageData={() => this.handleRefreshPageData(state.activeCompanyId)}\r\n onOpenTrashBinDialog={this.handleOpenTrashBinDialog}\r\n onChangeShowDocumentPreview={this.handleShowDetailsPanel}\r\n reportTabs={(\r\n \r\n )}\r\n />\r\n }\r\n {reportsViewIsActive &&\r\n \r\n \r\n \r\n }\r\n filtersPadding={\"0\"}\r\n reports={\r\n \r\n }\r\n />\r\n \r\n }\r\n \r\n }\r\n {dashboardViewIsActive &&\r\n \r\n \r\n {state.showListFilterSaveDialog &&\r\n \r\n }\r\n \r\n {state.showReportSaveDialog &&\r\n \r\n }\r\n {state.showSettingsDialog &&\r\n \r\n }\r\n {state.showTrashBinDialog &&\r\n this.handleRefreshPageData(state.activeCompanyId)}\r\n onClose={this.handleCloseTrashBinDialog}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","/* eslint-disable no-unused-vars */\r\nimport * as React from \"react\";\r\n/* eslint-enable no-unused-vars */\r\nimport { connect } from \"react-redux\";\r\nimport { IApplicationState } from \"../../models/store/storeTypes\";\r\nimport * as storeEffects from \"../../models/store/storeEffects\";\r\nimport { ITaskPageOwnProps, ITaskPageStateProps, ITaskPageDispatchProps, TaskPage } from \"../../components/task/TaskPage/TaskPage\";\r\nimport { ITypedOption } from \"../../models/common/typedOption\";\r\n\r\nexport function mapStateToProps(applicationState: IApplicationState, ownProps: ITaskPageOwnProps): ITaskPageStateProps {\r\n if (!applicationState || !applicationState.front) {\r\n return {\r\n appState: null,\r\n dataId: -1,\r\n taskPage: null\r\n };\r\n }\r\n const tasks = applicationState.tasks;\r\n return {\r\n appState: applicationState.session,\r\n dataId: tasks.dataId,\r\n taskPage: tasks.taskPage\r\n };\r\n}\r\n\r\nexport function mapDispatchToProps(dispatch: storeEffects.TasksThunkDispatch): ITaskPageDispatchProps {\r\n return {\r\n onGetTaskPage: () => dispatch(storeEffects.getTaskPage()),\r\n onLogout: () => dispatch(storeEffects.logout()),\r\n onSetCulture: (culture: string) => dispatch(storeEffects.setCulture(culture)),\r\n onSaveUserParameters: (parameters: ITypedOption[]) => dispatch(storeEffects.saveUserParameters(parameters)),\r\n onRefreshSessionState: () => dispatch(storeEffects.refreshSessionState()),\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TaskPage);","// UserFilterDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Grid, MenuItem, Select } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { TreeCheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/TreeCheckboxDropdown\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Base } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/framework/base\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { DrawerContent } from \"../../framework/Drawer/DrawerContent\";\r\nimport { FilterButtons } from \"../../framework/Filters/FilterButtons\";\r\nimport { FilterSearchField } from \"../../framework/Filters/FilterSearchField\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { PageFilterConditionDrawer } from \"../../framework/Page/PageFilterConditionDrawer\";\r\n\r\n//UserFilterDialog\r\nexport interface IUserFilterDrawerProp {\r\n open: boolean;\r\n classes?: string;\r\n filter: IListFilterItem;\r\n userGroups: IIdTitleNode[];\r\n activityFilters: IIdTitle[];\r\n selectedUserGroupIds: string[];\r\n selectedActivityFilterId: string;\r\n canRemoveSharedFilters: boolean;\r\n onSaveFilter: (saveAs: boolean, onGetGeneralFilter: () => any) => void;\r\n onRemoveFilter: (filterId: string) => void;\r\n onOk: (closeDialog: boolean, selectedActivityFilterId: string, selectedUserGroupIds: string[]) => any;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IUserFilterDrawerState {\r\n selectedUserGroupIds: string[];\r\n selectedActivityFilterId: string;\r\n}\r\n\r\nexport class UserFilterDrawer extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n getStateFromProps = (props: IUserFilterDrawerProp): IUserFilterDrawerState => {\r\n return {\r\n selectedActivityFilterId: props.selectedActivityFilterId,\r\n selectedUserGroupIds: props.selectedUserGroupIds.slice(0)\r\n };\r\n };\r\n\r\n constructor(props: IUserFilterDrawerProp) {\r\n super(props);\r\n this.state = this.getStateFromProps(props);\r\n this.orgStateHash = this.getSaveDataFromState(props, this.state).hash;\r\n }\r\n\r\n componentDidUpdate(prevProps: IUserFilterDrawerProp, prevState: IUserFilterDrawerState): void {\r\n const props = this.props;\r\n if (!prevProps || prevProps?.filter?.getHash() === props?.filter?.getHash()) return;\r\n const state = this.getStateFromProps(props);\r\n this.setState(state);\r\n this.orgStateHash = this.getSaveDataFromState(props, state).hash;\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"activityFilterId\") {\r\n this.setState({ selectedActivityFilterId: value });\r\n }\r\n };\r\n\r\n handleChangeUserGroupIds = (selectedUserGroupIds: string[]) => {\r\n this.setState({\r\n selectedUserGroupIds\r\n });\r\n };\r\n\r\n getSaveDataFromState = (props: IUserFilterDrawerProp, state: IUserFilterDrawerState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"selectedActivityFilterId\", state.selectedActivityFilterId ? state.selectedActivityFilterId : null);\r\n result.append(\"selectedUserGroupIds\", JSON.stringify(state.selectedUserGroupIds));\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n \r\n static filterIsSet = (activityFilters: IIdTitle[], userGroups: IIdTitleNode[],\r\n selectedActivityFilterId: string, selectedUserGroupIds: string[]): boolean => {\r\n if (userGroups.length < 1) return false;\r\n return !(selectedActivityFilterId === activityFilters[0].id &&\r\n Base.equalStrArrays(selectedUserGroupIds, [userGroups[0].id]));\r\n };\r\n\r\n handleSaveFilter = async (saveAs: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n if (!saveAs) {\r\n props.onOk(false, state.selectedActivityFilterId, state.selectedUserGroupIds);\r\n await this.props.onSaveFilter(false, null);\r\n } else {\r\n await this.props.onSaveFilter(true, () => {\r\n return props.onOk(false, state.selectedActivityFilterId, state.selectedUserGroupIds);\r\n });\r\n }\r\n };\r\n\r\n handleClear = () => {\r\n const props = this.props;\r\n this.setState({\r\n selectedActivityFilterId: props.activityFilters[0].id,\r\n selectedUserGroupIds: [props.userGroups[0].id]\r\n });\r\n };\r\n\r\n handleSave = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n props.onOk(true, state.selectedActivityFilterId, state.selectedUserGroupIds);\r\n };\r\n\r\n handleCancel = async (checkChanges: boolean) => {\r\n AppUtils.cancelEditDialog(checkChanges, this.getSaveDataFromState(this.props, this.state).hash, this.orgStateHash, this.handleSave, this.props.onCancel, Translations.YouHaveUnapprovedChangesDoYouWantApproveChanges);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n this.handleCancel(false)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.activityFilters.map((activityFilter) => (\r\n \r\n {activityFilter.title}\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n actions={\r\n this.handleCancel(false)}\r\n onClear={this.handleClear}\r\n />\r\n }\r\n />\r\n \r\n );\r\n }\r\n}","import { RecordEmployeeType } from \"ui/Scripts/source/models/enums\";\r\n\r\nexport interface IUserImportItem {\r\n userCode: string;\r\n firstName: string;\r\n lastName: string;\r\n endDate: number;\r\n email: string;\r\n userGroupName: string;\r\n defaultCulture: string;\r\n recordUser: boolean;\r\n employeeType: RecordEmployeeType;\r\n unitName: string;\r\n postalAddress: string;\r\n postalCode: string;\r\n city: string;\r\n phone: string;\r\n taxNumber: string;\r\n workShiftName: string;\r\n comment: string;\r\n companyName: string;\r\n startDate: number;\r\n jobTitle: string;\r\n}\r\n\r\nexport class UserImportItem implements IUserImportItem {\r\n userCode: string;\r\n firstName: string;\r\n lastName: string;\r\n endDate: number;\r\n email: string;\r\n userGroupName: string;\r\n defaultCulture: string;\r\n recordUser: boolean;\r\n employeeType: RecordEmployeeType;\r\n unitName: string;\r\n postalAddress: string;\r\n postalCode: string;\r\n city: string;\r\n phone: string;\r\n taxNumber: string;\r\n workShiftName: string;\r\n comment: string;\r\n companyName: string;\r\n startDate: number;\r\n jobTitle: string;\r\n\r\n constructor();\r\n constructor(obj: IUserImportItem);\r\n constructor(obj?: any) {\r\n this.userCode = obj && obj.userCode || \"\";\r\n this.firstName = obj && obj.firstName || \"\";\r\n this.lastName = obj && obj.lastName || \"\";\r\n this.endDate = obj && obj.endDate || null;\r\n this.email = obj && obj.email || \"\";\r\n this.userGroupName = obj && obj.userGroupName || \"\";\r\n this.defaultCulture = obj && obj.defaultCulture || \"\";\r\n this.recordUser = obj && obj.recordUser || false;\r\n this.employeeType = obj && obj.employeeType || RecordEmployeeType.Employee;\r\n this.unitName = obj && obj.unitName || \"\";\r\n this.postalAddress = obj && obj.postalAddress || \"\";\r\n this.postalCode = obj && obj.postalCode || \"\";\r\n this.city = obj && obj.city || \"\";\r\n this.phone = obj && obj.phone || \"\";\r\n this.taxNumber = obj && obj.taxNumber || \"\";\r\n this.workShiftName = obj && obj.workShiftName || \"\";\r\n this.comment = obj && obj.comment || \"\";\r\n this.companyName = obj && obj.companyName || \"\";\r\n this.startDate = obj && obj.startDate || null;\r\n this.jobTitle = obj && obj.jobTitle || \"\";\r\n }\r\n}","import * as React from \"react\";\r\nimport * as userService from \"../../../models/services/userService\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { useState } from \"react\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { Alert, Box, Grid } from \"@mui/material\";\r\nimport { FormField } from \"source/components/framework/FormField\";\r\nimport { TextFieldWithButtonGroup } from \"source/components/framework/Form/TextFieldWithButtonGroup\";\r\nimport { ReportExcelReport } from \"source/components/framework/Report/ReportExcelReport\";\r\nimport { IReportGenerated2 } from \"source/models/report/reportGenerated2\";\r\nimport { SaveAttachmentBase64 } from \"ui/Scripts/source/models/common/saveAttachmentBase64\";\r\nimport { FileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { FormCheckBox } from \"source/components/framework/FormCheckBox\";\r\nimport { IUserImportItem, UserImportItem } from \"source/models/user/userImportItem\";\r\nimport { EnumHelper } from \"ui/Scripts/source/models/enums\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { DownloadButton } from \"source/components/framework/Button/DownloadButton/DownloadButton\";\r\nimport { AppUploadIcon } from \"source/components/framework/Icon/AppUploadIcon\";\r\n\r\ninterface IImportUsersDialogProps {\r\n companyId: string;\r\n onOk: () => void;\r\n onCancel: () => void;\r\n}\r\n\r\ninterface IImportUsersDialogState {\r\n file: File;\r\n sendInvitations: boolean;\r\n //List\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n selectedId: string;\r\n checkedIds: string[];\r\n reportData: IReportGenerated2;\r\n}\r\n\r\nexport const ImportUsersDialog = (props: IImportUsersDialogProps) => {\r\n const [state, setState] = useState(\r\n {\r\n file: null,\r\n sendInvitations: false,\r\n //List\r\n sortColumn: \"userCode\",\r\n sortOrderIsAsc: true,\r\n selectedId: \"\",\r\n checkedIds: [],\r\n reportData: null\r\n }\r\n );\r\n\r\n const handleCancel = () => {\r\n props.onCancel();\r\n };\r\n\r\n const getSaveData = (companyId: string, checkedIds: string[]): SaveDataObj => {\r\n const importItems: IUserImportItem[] = [];\r\n checkedIds.forEach(id => {\r\n const item = state.reportData.tables[0].dataRows.find(i => i.id === id);\r\n if (!item) return;\r\n const importItem = new UserImportItem();\r\n importItem.userCode = item.cols.find(i => i.field === \"userCode\")?.valueStr ?? \"\";\r\n importItem.firstName = item.cols.find(i => i.field === \"firstName\")?.valueStr ?? \"\";\r\n importItem.lastName = item.cols.find(i => i.field === \"lastName\")?.valueStr ?? \"\";\r\n const endDate = item.cols.find(i => i.field === \"endDate\");\r\n importItem.endDate = endDate ? endDate.valueNbr : null;\r\n importItem.email = item.cols.find(i => i.field === \"email\")?.valueStr ?? \"\";\r\n importItem.userGroupName = item.cols.find(i => i.field === \"userGroupName\")?.valueStr ?? \"\";\r\n importItem.defaultCulture = item.cols.find(i => i.field === \"defaultCulture\")?.valueStr ?? \"\";\r\n const recordUser = item.cols.find(i => i.field === \"recordUser\");\r\n importItem.recordUser = recordUser ? recordUser.valueNbr === 1 : false;\r\n if (importItem.recordUser) {\r\n importItem.employeeType = EnumHelper.RecordEmployeeTypeFromStr(item.cols.find(i => i.field === \"employeeType\")?.valueStr);\r\n importItem.unitName = item.cols.find(i => i.field === \"unitName\")?.valueStr ?? \"\";\r\n importItem.postalAddress = item.cols.find(i => i.field === \"postalAddress\")?.valueStr ?? \"\";\r\n importItem.postalCode = item.cols.find(i => i.field === \"postalCode\")?.valueStr ?? \"\";\r\n importItem.city = item.cols.find(i => i.field === \"city\")?.valueStr ?? \"\";\r\n importItem.phone = item.cols.find(i => i.field === \"phone\")?.valueStr ?? \"\";\r\n importItem.taxNumber = item.cols.find(i => i.field === \"taxNumber\")?.valueStr ?? \"\";\r\n importItem.workShiftName = item.cols.find(i => i.field === \"workShiftName\")?.valueStr ?? \"\";\r\n importItem.comment = item.cols.find(i => i.field === \"comment\")?.valueStr ?? \"\";\r\n importItem.companyName = item.cols.find(i => i.field === \"companyName\")?.valueStr ?? \"\";\r\n const startDate = item.cols.find(i => i.field === \"startDate\");\r\n importItem.startDate = startDate ? startDate.valueNbr : null;\r\n importItem.jobTitle = item.cols.find(i => i.field === \"jobTitle\")?.valueStr ?? \"\";\r\n }\r\n importItems.push(importItem);\r\n });\r\n if (!importItems.length) return;\r\n const result = new SaveDataObj();\r\n result.append(\"companyId\", companyId);\r\n result.append(\"sendInvitations\", state.sendInvitations);\r\n result.append(\"importItems\", importItems);\r\n return result;\r\n };\r\n\r\n const importUsers = async (companyId: string, checkedIds: string[]): Promise => {\r\n if (checkedIds.length < 1) return;\r\n const saveData = getSaveData(companyId, checkedIds);\r\n // Call server\r\n return await AppUtils.callService(() => userService.importUsers(saveData.obj));\r\n };\r\n\r\n const handleOk = async () => {\r\n const result = await importUsers(props.companyId, state.checkedIds);\r\n if (!result) return null;\r\n props.onOk();\r\n };\r\n\r\n const uploadFile = async (files: File[]) => {\r\n if (!files || files.length < 1) return;\r\n const file = files[0];\r\n if (!file) return;\r\n const attachment = await FileAttachment.fileToFileAttachment(file, 0);\r\n if (!attachment) return;\r\n setState((old) => ({\r\n ...old,\r\n file\r\n }));\r\n const saveData = new SaveDataObj();\r\n saveData.append(\"companyId\", props.companyId);\r\n saveData.append(\"attachments\", await SaveAttachmentBase64.fromFileAttachments([attachment]));\r\n // Call server\r\n const reportData = await AppUtils.callService(() => userService.uploadImportFile(saveData.obj));\r\n setState((old) => ({\r\n ...old,\r\n reportData\r\n }));\r\n };\r\n\r\n const downloadTemplate = async () => {\r\n const fileName = await AppUtils.callService(() => userService.downloadImportTemplate());\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.DocumentParameterDownloaded, fileName));\r\n };\r\n\r\n const handleSetSortData = (sortColumn: string, sortOrderIsAsc: boolean) => {\r\n setState((old) => ({\r\n ...old,\r\n sortColumn,\r\n sortOrderIsAsc\r\n }));\r\n };\r\n\r\n const handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n setState((old) => ({\r\n ...old,\r\n selectedId,\r\n checkedIds\r\n }));\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n , onClick: null, fileInput: { onChange: uploadFile, accept: \".xlsx,.xlsm\" } }\r\n ]}\r\n />\r\n \r\n \r\n \r\n  } margin=\"0 0 0 -10px\" padding=\"0 0 0 10px\">\r\n \r\n {\r\n setState((old) => ({\r\n ...old,\r\n sendInvitations\r\n }));\r\n }}\r\n />\r\n {Translations.DownloadFileTemplate}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n {!state.reportData &&\r\n {Translations.ImportUserDialogInstruction}\r\n }\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n }\r\n buttons={[\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: handleCancel },\r\n { title: Translations.Import, disabled: !state.checkedIds.length, variant: \"confirmation\", onClick: handleOk },\r\n ]}\r\n onClose={handleCancel}\r\n />\r\n );\r\n};","/* global JSX */\r\n// UserList - MODULE\r\n// ***********************************************************************************************************************\r\nimport ComputerIcon from \"@mui/icons-material/Computer\";\r\nimport DoNotDisturbOffIcon from \"@mui/icons-material/DoNotDisturbOff\";\r\nimport ListAltIcon from \"@mui/icons-material/ListAlt\";\r\nimport PhoneAndroidIcon from \"@mui/icons-material/PhoneAndroid\";\r\nimport { Box, Grid, Tooltip, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { EnumHelper, RecordEmailNotificationType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { infiniteListPageSize } from \"../../../models/common/webConsts\";\r\nimport * as userService from \"../../../models/services/userService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { IUserListItem } from \"../../../models/user/userListItem\";\r\nimport { IUserListItems } from \"../../../models/user/userListItems\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { AddButton } from \"../../framework/Button/AddButton\";\r\nimport { SettingsButton } from \"../../framework/Button/SettingsButton\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { IListUsingComponentState, List } from \"../../framework/List/List\";\r\nimport { ListActionButtons } from \"../../framework/List/ListActionButtons\";\r\nimport { ListCardField } from \"../../framework/List/ListCardField\";\r\nimport { ListContainer } from \"../../framework/List/ListContainer\";\r\nimport { ListDetailsButton } from \"../../framework/List/ListDetailsButton\";\r\nimport { ListLinkValue } from \"../../framework/List/ListLinkValue\";\r\nimport { ListSearchContainer } from \"../../framework/List/ListSearchContainer\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { ListToggleButtons } from \"../../framework/List/ListToggleButtons\";\r\nimport { PageTitle } from \"../../framework/Page/PageTitle\";\r\nimport { UserDialogMenuItem, UserEditDialog } from \"../UserEditDialog/UserEditDialog\";\r\nimport { IPageNavMenuItemActionsAction } from \"source/components/framework/PageNavMenuItem/Actions\";\r\nimport { ToolButtonDropdown } from \"ui/Scripts/source/components/framework/Button/ToolButtonDropdown\";\r\nimport { AppMoreIcon } from \"source/components/framework/Icon/AppMoreIcon\";\r\nimport { ImportUsersDialog } from \"../ImportUsersDialog\";\r\n\r\n// UserList\r\nexport interface IUserListProp {\r\n savedFilter: IListFilterItem;\r\n sessionState: ISessionState;\r\n companyId: string;\r\n disableGlobalLoading?: boolean;\r\n preloaded?: boolean;\r\n waitingPreloadedData?: boolean;\r\n list?: IUserListItems;\r\n listFilterIsSet: boolean;\r\n userGroupIds?: string[];\r\n activityState?: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n dataId?: string;\r\n startDateStr?: string;\r\n endDateStr?: string;\r\n titleSuffix?: JSX.Element;\r\n reportTabs: React.ReactNode;\r\n settingsActions: IPageNavMenuItemActionsAction[];\r\n onRefreshSessionState: () => void;\r\n onSetSortData: (sortColumn: string, sortOrderIsAsc: boolean) => void;\r\n onOpenFiltersDialog: () => void;\r\n onToggleSettingsDialog: () => void;\r\n}\r\n\r\ninterface IUserListState extends IListUsingComponentState {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n waitingPreloadedData: boolean;\r\n pageSize: number;\r\n page: number;\r\n filter: string;\r\n userGroupIds: string[];\r\n activityState: number;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n listModeIsLine: boolean;\r\n checkedIds: string[];\r\n companyCanUseInstantMessages: boolean\r\n\r\n // Dialog\r\n editDialogDefaultMenuItem: UserDialogMenuItem;\r\n\r\n // ImportUsersDialog\r\n showImportUsersDialog: boolean;\r\n}\r\n\r\nexport class UserList extends React.Component {\r\n constructor(props: IUserListProp) {\r\n super(props);\r\n this.state = {\r\n intialized: props.list && !!props.preloaded,\r\n isLoading: false,\r\n waitingPreloadedData: !Base.isNullOrUndefined(props.waitingPreloadedData) ? props.waitingPreloadedData : (props.list ? false : props.preloaded),\r\n page: props.list ? props.list.page : 1,\r\n hasMore: props.list ? props.list.hasMore : true,\r\n filter: \"\",\r\n userGroupIds: props.userGroupIds ? props.userGroupIds.filter(i => i !== Base.emptyGuid) : [],\r\n activityState: props.activityState ? parseInt(props.activityState, 10) : 0,\r\n pageSize: props.list ? props.list.pageSize : infiniteListPageSize,\r\n sortColumn: props.sortColumn,\r\n sortOrderIsAsc: props.sortOrderIsAsc,\r\n listModeIsLine: true,\r\n items: props.list ? props.list.items : [],\r\n companyCanUseInstantMessages: props.list ? props.list.companyCanUseInstantMessages : false,\r\n selectedId: null,\r\n checkedIds: [],\r\n // Details\r\n detailsItem: null,\r\n // Dialog\r\n showEditDialog: false,\r\n editDialogId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false,\r\n editDialogDefaultMenuItem: UserDialogMenuItem.General,\r\n // ImportUsersDialog\r\n showImportUsersDialog: false\r\n };\r\n }\r\n\r\n searchItems = async (companyId: string, pageSize: number, page: number, filter: string, userGroupIds: string[], activityState: number, sortColumn: string, sortOrderIsAsc: boolean,\r\n resetItems: boolean, refreshList: boolean, moveNext: boolean = false, setUserDialogData: boolean = true) => {\r\n const state = this.state;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => userService.getUserListItems(companyId, !refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1, filter, userGroupIds, activityState, sortColumn, sortOrderIsAsc),\r\n false, this.props.disableGlobalLoading, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const items = List.getListItems(state.items, state.selectedId, state.checkedIds, result.items, resetItems, refreshList);\r\n let selectedId = items.selectedId;\r\n let index = items.items.findIndex(i => i.id === selectedId);\r\n let detailsItem = index > -1 ? items.items[index] : null;\r\n if (moveNext && detailsItem && index < items.items.length - 1) {\r\n index = index + 1;\r\n detailsItem = items.items[index];\r\n selectedId = items.items[index].id;\r\n }\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n userGroupIds,\r\n activityState,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n companyCanUseInstantMessages: result.companyCanUseInstantMessages,\r\n selectedId,\r\n checkedIds: items.checkedIds,\r\n detailsItem,\r\n editDialogDefaultMenuItem: setUserDialogData ? UserDialogMenuItem.General : this.state.editDialogDefaultMenuItem,\r\n editDialogId: setUserDialogData ? (moveNext && detailsItem ? detailsItem.id : \"\") : this.state.editDialogId,\r\n editDialogHasPrevious: setUserDialogData ? index > 0 : this.state.editDialogHasPrevious,\r\n editDialogHasNext: setUserDialogData ? (index < items.items.length - 1 || result.hasMore) : this.state.editDialogHasNext,\r\n });\r\n this.props.onSetSortData(sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n refreshList = async (setUserDialogData: boolean = true) => {\r\n const state = this.state;\r\n await this.searchItems(this.props.companyId, state.pageSize, state.page, state.filter, state.userGroupIds, state.activityState, state.sortColumn, state.sortOrderIsAsc, false, true, false, setUserDialogData);\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n if (this.props.preloaded) return;\r\n this.searchItems(this.props.companyId, state.pageSize, state.page, state.filter, state.userGroupIds, state.activityState, state.sortColumn, state.sortOrderIsAsc, false, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: IUserListProp, prevState: IUserListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.waitingPreloadedData) {\r\n if (!props.list || (props.dataId ?? \"\") === (prevProps.dataId ?? \"\")) return;\r\n this.setState({\r\n intialized: true,\r\n waitingPreloadedData: false,\r\n page: props.list.page,\r\n hasMore: props.list.hasMore,\r\n items: props.list.items,\r\n pageSize: props.list.pageSize,\r\n sortColumn: props.list.sortColumn,\r\n sortOrderIsAsc: props.list.sortOrderIsAsc,\r\n companyCanUseInstantMessages: props.list.companyCanUseInstantMessages,\r\n });\r\n } else {\r\n const prevDataId = prevProps.dataId ? prevProps.dataId : \"\";\r\n const dataId = props.dataId ? props.dataId : \"\";\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n const prevUserGroupIds = prevProps.userGroupIds ? prevProps.userGroupIds.filter(i => i !== Base.emptyGuid) : [];\r\n const userGroupIds = props.userGroupIds ? props.userGroupIds.filter(i => i !== Base.emptyGuid) : [];\r\n const prevActivityState = prevProps.activityState ? parseInt(prevProps.activityState, 10) : 0;\r\n const activityState = props.activityState ? parseInt(props.activityState, 10) : 0;\r\n const prevSortColumn = prevProps.sortColumn;\r\n const sortColumn = props.sortColumn;\r\n const prevSortOrderIsAsc = prevProps.sortOrderIsAsc;\r\n const sortOrderIsAsc = props.sortOrderIsAsc;\r\n if (dataId === prevDataId && companyId === prevCompanyId &&\r\n Base.equalStrArrays(prevUserGroupIds, userGroupIds) && prevActivityState === activityState &&\r\n prevSortColumn === sortColumn && prevSortOrderIsAsc === sortOrderIsAsc) return;\r\n this.searchItems(companyId, state.pageSize, state.page, state.filter, userGroupIds, activityState, sortColumn, sortOrderIsAsc, true, false);\r\n }\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(this.props.companyId, state.pageSize, 1, filter, state.userGroupIds, state.activityState, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(this.props.companyId, state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, state.userGroupIds, state.activityState, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds,\r\n detailsItem: this.state.items.find(i => i.id === selectedId)\r\n });\r\n };\r\n \r\n handleListModeChange = (listModeIsLine: boolean) => {\r\n this.setState({\r\n listModeIsLine,\r\n });\r\n };\r\n\r\n handleListModeToggle = (_event: React.MouseEvent, listModeIsLine: boolean) => {\r\n this.setState({\r\n listModeIsLine,\r\n });\r\n };\r\n\r\n handleAdd = () => {\r\n this.setState({ ...List.getShowEditDialogStateChange(this.state, Base.emptyGuid), editDialogDefaultMenuItem: UserDialogMenuItem.General });\r\n };\r\n\r\n handleOpenLine = (id: string) => {\r\n this.setState({ ...List.getShowEditDialogStateChange(this.state, id), editDialogDefaultMenuItem: UserDialogMenuItem.General });\r\n };\r\n\r\n handleUserDialogOk = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n this.refreshList();\r\n };\r\n\r\n handleUserDialogCancel = (userDataWasModified: boolean) => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n if (!userDataWasModified) return;\r\n this.refreshList();\r\n };\r\n\r\n handleUserDialogNewSaved = (newUserId: string) => {\r\n this.setState({\r\n showEditDialog: true,\r\n editDialogId: newUserId,\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false,\r\n editDialogDefaultMenuItem: UserDialogMenuItem.UserGroups\r\n });\r\n this.refreshList(false);\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n this.setState(List.getEditDialogItemByIndexStateChange(this.state, index, () => this.searchItems(this.props.companyId, state.pageSize, state.page + 1, state.filter, state.userGroupIds, state.activityState, state.sortColumn, state.sortOrderIsAsc, false, false, true)));\r\n };\r\n\r\n // #region Additional functions: Import Users\r\n handleImportUsers = () => {\r\n this.setState({\r\n showImportUsersDialog: true\r\n });\r\n };\r\n\r\n handleImportUsersDialogOk = () => {\r\n this.setState({\r\n showImportUsersDialog: false\r\n });\r\n this.refreshList(false);\r\n };\r\n\r\n handleImportUsersCancel = () => {\r\n this.setState({\r\n showImportUsersDialog: false\r\n });\r\n };\r\n // #endregion Additional functions: Import Users\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n \r\n return (\r\n <>\r\n \r\n {props.settingsActions.length > 0 &&\r\n \r\n {Translations.Settings}\r\n \r\n }\r\n \r\n {Translations.AddUser}\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n tooltip={Translations.AdditionalFunctions}\r\n menuRight={true}\r\n />\r\n\r\n \r\n }\r\n />\r\n \r\n \r\n \r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 3,\r\n column: \"code\",\r\n content:\r\n \r\n \r\n \r\n \r\n this.handleOpenLine(item.id)}>{item.code}\r\n \r\n \r\n \r\n {(item.hasRecordUser || item.mobileInUse || item.webActive) &&\r\n <>\r\n {item.mobileInUse &&\r\n \r\n \r\n \r\n }\r\n {item.webActive &&\r\n \r\n \r\n \r\n }\r\n {item.hasRecordUser &&\r\n \r\n \r\n \r\n }\r\n \r\n }\r\n {item.emailNotificationType === 0 && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n },\r\n { size: 3, column: \"name\", content: item.getName() },\r\n { size: 4, column: \"groups\", content: item.userGroupsStr },\r\n { size: 2, column: \"endDate\", content: Base.timeToDateStr(item.endDate) }\r\n ],\r\n id: item.id,\r\n classes: item.disabled ? \"disabled\" : \"\"\r\n };\r\n })\r\n : null\r\n }\r\n cards={!state.listModeIsLine\r\n ? state.items.map((item) => {\r\n return {\r\n //classes: (item.disabled ? \" disabled\" : \"\"),\r\n sm: 4,\r\n rows: [\r\n {\r\n cols: [\r\n {\r\n size: 6,\r\n title: Translations.Code,\r\n value:\r\n \r\n \r\n \r\n this.handleOpenLine(item.id)}>{item.code}\r\n \r\n \r\n },\r\n { size: 6, title: Translations.Name, value: item.getName() }\r\n ]\r\n },\r\n {\r\n cols: [\r\n { size: 6, title: Translations.EmailAddress, value: item.email },\r\n { size: 6, title: Translations.UserEndDate, value: Base.timeToDateStr(item.endDate) }\r\n ]\r\n },\r\n {\r\n cols: [\r\n { title: Translations.UserGroups, value: item.userGroupsStr }\r\n ]\r\n }],\r\n id: item.id\r\n };\r\n })\r\n : null\r\n }\r\n lineDetails={state.detailsItem\r\n ? \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0 ? Translations.Yes : Translations.No)} />\r\n {(state.detailsItem.recordEmailNotificationType > 0 ? Translations.Yes : Translations.No) +\r\n (!EnumHelper.isEqual(state.detailsItem.recordEmailNotificationType, RecordEmailNotificationType.NotInUse)\r\n ? \", \" + (EnumHelper.isEqual(state.detailsItem.recordEmailNotificationType, RecordEmailNotificationType.Expiration090)\r\n ? Translations.ExpiringIn90Days\r\n : (EnumHelper.isEqual(state.detailsItem.recordEmailNotificationType, RecordEmailNotificationType.Expiration120)\r\n ? Translations.ExpiringIn120Days\r\n : Translations.ExpiringIn180Days))\r\n : \"\")}\r\n \r\n } />\r\n {!EnumHelper.isEqual(state.detailsItem.recordEmailNotificationType, RecordEmailNotificationType.NotInUse) &&\r\n \r\n }\r\n {state.companyCanUseInstantMessages &&\r\n \r\n }\r\n \r\n \r\n \r\n \r\n this.handleOpenLine(state.selectedId)}\r\n />\r\n \r\n : null}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpenLine}\r\n />\r\n \r\n {(state.showEditDialog && !!state.editDialogId) &&\r\n this.refreshList(false)}\r\n onNewSaved={this.handleUserDialogNewSaved}\r\n onPrevious={() => List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n onRefreshSessionState={props.onRefreshSessionState}\r\n />\r\n }\r\n {state.showImportUsersDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IdTitle, IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { ApplicationPermissionType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IListFilterItem, ListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { ISavedListFilter } from \"../../../models/common/savedListFilter\";\r\nimport { ITypedOption } from \"../../../models/common/typedOption\";\r\nimport { recordLockManager } from \"../../../models/services/recordLockService\";\r\nimport * as userService from \"../../../models/services/userService\";\r\nimport { IAppSessionState } from \"../../../models/store/storeTypes\";\r\nimport { IUnitNodePermissions } from \"../../../models/unit/unitNodePermissions\";\r\nimport { IUsersPage } from \"../../../models/user/usersPage\";\r\nimport { HeaderMenuItem, NavigationMenu } from \"../../app/NavigationMenu\";\r\nimport { UserMenu } from \"../../app/UserMenu\";\r\nimport { ListFilterSaveDialog } from \"../../framework/Filters/ListFilterSaveDialog\";\r\nimport { PageContainer } from \"../../framework/Page/PageContainer\";\r\nimport { PageContent } from \"../../framework/Page/PageContent\";\r\nimport { PageTopBar } from \"../../framework/Page/PageTopBar\";\r\nimport { FilterTabs } from \"../../framework/PageNavMenuItem/FilterTabs\";\r\nimport { UnitPermissionDialog } from \"../../unit/Unit/UnitPermissionDialog\";\r\nimport { UserFilterDrawer } from \"../UserFilterDrawer\";\r\nimport { UserList } from \"../UserList\";\r\nimport { IPageNavMenuItemActionsAction } from \"source/components/framework/PageNavMenuItem/Actions\";\r\nimport { abortManager } from \"source/models/services/tokenService\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nconst enum UserPageMenuItem {\r\n None = \"\",\r\n CompanyFilter = \"1\",\r\n SavedFilters = \"2\",\r\n UserFilter = \"3\",\r\n Settings = \"4\"\r\n}\r\n\r\nconst enum UserPageActivityFilterId {\r\n None = \"0\",\r\n Active = \"1\",\r\n InActive = \"2\",\r\n Expired = \"3\",\r\n NoUserGroup = \"4\",\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n// UserPage\r\nexport interface IUserPageOwnProps {\r\n}\r\n\r\nexport interface IUserPageStateProps {\r\n appState: IAppSessionState;\r\n dataId: number;\r\n usersPage: IUsersPage;\r\n}\r\n\r\nexport interface IUserPageDispatchProps {\r\n onGetUsersPage: () => void;\r\n onLogout: () => void;\r\n onSetCulture: (culture: string) => void;\r\n onSaveUserParameters: (parameters: ITypedOption[]) => void;\r\n onRefreshSessionState: () => void;\r\n}\r\n\r\ntype UserPageProp = IUserPageOwnProps & IUserPageStateProps & IUserPageDispatchProps;\r\n\r\ninterface IUserPageState {\r\n initialized: boolean;\r\n userGroups: IIdTitleNode[];\r\n showNavPanel: boolean;\r\n activeMenuItem: UserPageMenuItem;\r\n activeCompanyId: string;\r\n selectedUserGroupIds: string[];\r\n selectedActivityFilterId: string;\r\n activityFilters: IIdTitle[];\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n settingsActions: IPageNavMenuItemActionsAction[];\r\n // Filters\r\n userFilterIsSet: boolean;\r\n showUserFilterDialog: boolean;\r\n userFilterDialogFilter: IListFilterItem;\r\n filters: IListFilterItem[];\r\n savedFilters: IListFilterItem[];\r\n activeFilterId: string;\r\n activeSavedFilterId: string;\r\n showListFilterSaveDialog: boolean;\r\n listFilterSaveDialogFilter: IListFilterItem;\r\n listFilterSaveDialogGeneralFilter: any;\r\n listFilterSaveDialogReservedNames: string[];\r\n listFilterSaveDialogOnGetGeneralFilter: () => any;\r\n // Properties\r\n dataId: number;\r\n showUnitNodePermissionsDialog: boolean;\r\n unitNodePermissions: IUnitNodePermissions;\r\n}\r\n\r\nexport class UserPage extends React.Component {\r\n getActivityFilters = (): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(UserPageActivityFilterId.None, \"'\" + Translations.All + \"'\"));\r\n result.push(IdTitle.createIdTitle(UserPageActivityFilterId.Active, Translations.UserFilterActive));\r\n result.push(IdTitle.createIdTitle(UserPageActivityFilterId.InActive, Translations.UserFilterInActive));\r\n result.push(IdTitle.createIdTitle(UserPageActivityFilterId.Expired, Translations.UserFilterExpired));\r\n result.push(IdTitle.createIdTitle(UserPageActivityFilterId.NoUserGroup, Translations.UserFilterNoUserGroup));\r\n return result;\r\n };\r\n \r\n getFilters = (): IListFilterItem[] => {\r\n const result: IListFilterItem[] = [];\r\n result.push(ListFilterItem.createListFilterItem(Translations.Users, Translations.Users,\r\n {\r\n activityFilterId: UserPageActivityFilterId.None,\r\n userGroupIds: [Base.emptyGuid]\r\n }, \"code\", true));\r\n ListFilterItem.sortListFilterItems(result);\r\n return result;\r\n };\r\n\r\n getSavedFilters = (props: UserPageProp): IListFilterItem[] => {\r\n const result: IListFilterItem[] = [];\r\n if (!props || !props.usersPage) return result;\r\n for (const companyFilter of props.usersPage.companyFilters) {\r\n result.push(ListFilterItem.createListFilterItemFromSavedListFilter(companyFilter, true));\r\n }\r\n for (const userFilter of props.usersPage.userFilters) {\r\n result.push(ListFilterItem.createListFilterItemFromSavedListFilter(userFilter, false));\r\n }\r\n ListFilterItem.sortListFilterItems(result);\r\n return result;\r\n };\r\n\r\n getUserFilterIsSet = (state: IUserPageState): boolean => {\r\n return UserFilterDrawer.filterIsSet(state.activityFilters, state.userGroups,\r\n state.selectedActivityFilterId, state.selectedUserGroupIds);\r\n };\r\n\r\n getSettingsActions = (): IPageNavMenuItemActionsAction[] => {\r\n const props = this.props;\r\n const sessionState = props.appState.state;\r\n const result: IPageNavMenuItemActionsAction[] = [];\r\n if (sessionState.isCompanyAdmin) {\r\n result.push({ title: Translations.Permissions, onClick: this.handleOpenPermissions });\r\n }\r\n return result;\r\n };\r\n\r\n constructor(props: UserPageProp) {\r\n super(props);\r\n abortManager.abortAll(); //Abort all abortable calls regardless of module\r\n const sessionState = props.appState.state;\r\n const filters = this.getFilters();\r\n const filterProps = ListFilterItem.getFilterProps(filters[0], \"\", true, this.getStateFilterPropsFromGeneralFilter);\r\n const activityFilters = this.getActivityFilters();\r\n const state = {\r\n ...filterProps,\r\n initialized: !!props.usersPage,\r\n userGroups: props.usersPage ? props.usersPage.userGroups : [],\r\n showNavPanel: sessionState.getShowPageNavigation(),\r\n activeMenuItem: props.usersPage ? (props.usersPage.companies.length > 1 ? UserPageMenuItem.CompanyFilter : UserPageMenuItem.SavedFilters) : UserPageMenuItem.None,\r\n activeCompanyId: sessionState.companyId,\r\n activityFilters,\r\n selectedActivityFilterId: activityFilters[0].id,\r\n settingsActions: this.getSettingsActions(),\r\n // Filters\r\n userFilterIsSet: false,\r\n activeFilterId: filters[0].id,\r\n activeSavedFilterId: \"\",\r\n filters,\r\n savedFilters: this.getSavedFilters(props),\r\n showUserFilterDialog: false,\r\n userFilterDialogFilter: null,\r\n showListFilterSaveDialog: false,\r\n listFilterSaveDialogFilter: null,\r\n listFilterSaveDialogGeneralFilter: null,\r\n listFilterSaveDialogReservedNames: [],\r\n listFilterSaveDialogOnGetGeneralFilter: null,\r\n // Properties\r\n dataId: props.dataId,\r\n showUnitNodePermissionsDialog: false,\r\n unitNodePermissions: null\r\n };\r\n this.state = {\r\n ...state,\r\n userFilterIsSet: this.getUserFilterIsSet(state)\r\n };\r\n }\r\n\r\n componentDidMount(): void {\r\n const sessionState = this.props.appState.state;\r\n recordLockManager.unlockAll(sessionState?.companyId, sessionState?.code);\r\n this.props.onGetUsersPage();\r\n }\r\n\r\n componentDidUpdate(prevProps: UserPageProp, prevState: IUserPageState): void {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n const prevCompanyId = prevProps.usersPage && prevProps.usersPage.companies.length > 0 ? prevProps.usersPage.companies[0].id : Base.emptyGuid;\r\n const companyId = props.usersPage && props.usersPage.companies.length > 0 ? props.usersPage.companies[0].id : Base.emptyGuid;\r\n if (prevProps.dataId === props.dataId && prevCompanyId === companyId &&\r\n Base.equalStrArrays(prevProps.usersPage ? prevProps.usersPage.userGroups.map(i => i.id) : [], props.usersPage ? props.usersPage.userGroups.map(i => i.id) : []) &&\r\n Base.equalStrArrays(prevProps.usersPage ? prevProps.usersPage.companies.map(i => i.id) : [], props.usersPage ? props.usersPage.companies.map(i => i.id) : [])) return;\r\n const activeMenuItem = state.initialized || !props.usersPage\r\n ? state.activeMenuItem\r\n : props.usersPage.companies.length > 1 ? UserPageMenuItem.CompanyFilter : UserPageMenuItem.SavedFilters;\r\n const savedFilters = this.getSavedFilters(props);\r\n const activeSavedFilterId = savedFilters.find(i => i.id === state.activeSavedFilterId)\r\n ? state.activeSavedFilterId\r\n : \"\";\r\n const stateChange = {\r\n dataId: props.dataId,\r\n initialized: !!props.usersPage,\r\n showNavPanel: state.initialized ? state.showNavPanel : sessionState.getShowPageNavigation(),\r\n activeMenuItem,\r\n activeCompanyId: companyId,\r\n userGroups: props.usersPage ? props.usersPage.userGroups : [],\r\n savedFilters,\r\n activeSavedFilterId\r\n };\r\n const newState = { ...state, ...stateChange };\r\n this.setState({\r\n ...stateChange,\r\n userFilterIsSet: this.getUserFilterIsSet(newState),\r\n settingsActions: this.getSettingsActions(),\r\n });\r\n }\r\n\r\n handleToggleShowNavPanel = () => {\r\n this.setState({ showNavPanel: !this.state.showNavPanel });\r\n };\r\n\r\n handleToggleActiveMenuItem = (userPageMenuItem: UserPageMenuItem) => {\r\n this.setState({ activeMenuItem: this.state.activeMenuItem !== userPageMenuItem ? userPageMenuItem : UserPageMenuItem.None });\r\n };\r\n\r\n handleChangeActiveCompanyId = async (companyId: string) => {\r\n if (this.state.activeCompanyId === companyId) return;\r\n const usersPageUserGroups = await userService.getUsersPageUserGroups(companyId);\r\n this.setState({\r\n activeCompanyId: companyId,\r\n userGroups: usersPageUserGroups.userGroups,\r\n selectedUserGroupIds: [Base.emptyGuid]\r\n });\r\n };\r\n \r\n // #region Saved Filter\r\n getGeneralFilterFromState = (state: IUserPageState): any => {\r\n return {\r\n userGroupIds: state.selectedUserGroupIds ? state.selectedUserGroupIds.filter(i => i !== Base.emptyGuid) : [],\r\n activityFilterId: state.selectedActivityFilterId ? parseInt(state.selectedActivityFilterId, 10) : 0\r\n };\r\n };\r\n\r\n getStateFilterPropsFromGeneralFilter = (generalFilter: any): any => {\r\n return {\r\n selectedUserGroupIds: generalFilter && generalFilter.userGroupIds && generalFilter.userGroupIds.length > 0 ? generalFilter.userGroupIds : [Base.emptyGuid],\r\n selectedActivityFilterId: generalFilter && !Base.isNullOrUndefined(generalFilter.activityFilterId) ? generalFilter.activityFilterId.toString(10) : UserPageActivityFilterId.Active\r\n };\r\n };\r\n \r\n getFilterPropsWithState = (listItemFilter: IListFilterItem) => {\r\n const state = this.state;\r\n let result = {\r\n selectedUserGroupIds: state.selectedUserGroupIds,\r\n selectedActivityFilterId: state.selectedActivityFilterId,\r\n sortColumn: state.sortColumn,\r\n sortOrderIsAsc: state.sortOrderIsAsc\r\n };\r\n if (listItemFilter) {\r\n result = ListFilterItem.getFilterProps(listItemFilter, result.sortColumn, result.sortOrderIsAsc, this.getStateFilterPropsFromGeneralFilter);\r\n }\r\n return result;\r\n };\r\n\r\n handleChangeActiveFilter = (activeFilterId: string) => {\r\n const state = this.state;\r\n const filter = state.filters.find(i => i.id === activeFilterId);\r\n if (!filter) return;\r\n const filterProps = this.getFilterPropsWithState(filter);\r\n const activeSavedFilterId = \"\";\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId };\r\n this.setState({\r\n ...filterProps,\r\n activeFilterId,\r\n activeSavedFilterId: \"\",\r\n userFilterIsSet: this.getUserFilterIsSet(newState)\r\n });\r\n };\r\n\r\n handleChangeActiveSavedFilter = (activeSavedFilterId: string) => {\r\n const state = this.state;\r\n const savedFilter = state.savedFilters.find(i => i.id === activeSavedFilterId);\r\n if (!savedFilter) return;\r\n const filterProps = this.getFilterPropsWithState(savedFilter);\r\n const activeFilterId = \"\";\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId };\r\n this.setState({\r\n ...filterProps,\r\n activeFilterId,\r\n activeSavedFilterId,\r\n userFilterIsSet: this.getUserFilterIsSet(newState)\r\n });\r\n };\r\n\r\n handleRemoveSavedFilter = async (savedFilterId: string) => {\r\n const state = this.state;\r\n const savedFilter = state.savedFilters.find(i => i.id === savedFilterId);\r\n if (!savedFilter) return;\r\n const result = await ListFilterSaveDialog.removeListFilterFromDb(state.savedFilters, state.activeCompanyId, savedFilterId, savedFilter.isShared, ApplicationPermissionType.User);\r\n if (!result) return;\r\n const savedFilters = state.savedFilters.filter(i => i.id !== savedFilterId);\r\n let activeFilterId = \"\";\r\n let activeSavedFilterId = \"\";\r\n let newfilter: IListFilterItem = null;\r\n if (savedFilters.length > 0) {\r\n newfilter = savedFilters[0];\r\n activeSavedFilterId = newfilter.id;\r\n } else if (state.filters.length > 0) {\r\n newfilter = state.filters[0];\r\n activeFilterId = newfilter.id;\r\n }\r\n const filterProps = this.getFilterPropsWithState(newfilter);\r\n const activeMenuItem = activeSavedFilterId ? UserPageMenuItem.SavedFilters : UserPageMenuItem.None;\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId, activeMenuItem, savedFilters };\r\n this.setState({\r\n ...filterProps,\r\n showUserFilterDialog: false,\r\n activeFilterId,\r\n activeSavedFilterId,\r\n activeMenuItem,\r\n savedFilters,\r\n userFilterIsSet: this.getUserFilterIsSet(newState)\r\n });\r\n };\r\n\r\n handleFilterSortData = (sortColumn: string, sortOrderIsAsc: boolean) => {\r\n this.setState({\r\n sortColumn,\r\n sortOrderIsAsc,\r\n });\r\n };\r\n\r\n updateFiltersAfterSave = (orgFilterId: string, savedListFilter: ISavedListFilter, isShared: boolean) => {\r\n if (!savedListFilter) return;\r\n const state = this.state;\r\n const savedFilters = state.savedFilters.filter(i => i.id !== orgFilterId || i.isShared !== isShared);\r\n const filter = ListFilterItem.createListFilterItemFromSavedListFilter(savedListFilter, isShared);\r\n savedFilters.push(filter);\r\n ListFilterItem.sortListFilterItems(savedFilters);\r\n this.setState({\r\n showListFilterSaveDialog: false,\r\n savedFilters,\r\n activeFilterId: \"\",\r\n activeSavedFilterId: savedListFilter.id,\r\n activeMenuItem: UserPageMenuItem.SavedFilters,\r\n userFilterDialogFilter: filter\r\n });\r\n };\r\n\r\n getActiveFilter = (): IListFilterItem => {\r\n const state = this.state;\r\n return state.activeFilterId\r\n ? state.filters.find(i => i.id === state.activeFilterId)\r\n : state.savedFilters.find(i => i.id === state.activeSavedFilterId);\r\n };\r\n\r\n handleSaveListFilter = async (saveAs: boolean, onGetGeneralFilter: () => any) => {\r\n const state = this.state;\r\n const filter = this.getActiveFilter();\r\n if (!filter) return;\r\n if (!saveAs) {\r\n const savedListFilter = await ListFilterSaveDialog.saveListFilterToDb(filter, this.getGeneralFilterFromState(state), state.sortColumn, state.sortOrderIsAsc, state.activeCompanyId, ApplicationPermissionType.User);\r\n this.updateFiltersAfterSave(filter.id, savedListFilter, filter.isShared);\r\n } else {\r\n this.setState({\r\n showListFilterSaveDialog: true,\r\n listFilterSaveDialogFilter: filter,\r\n listFilterSaveDialogReservedNames: state.savedFilters.map(i => i.id).concat(state.filters.map(i => i.title)),\r\n listFilterSaveDialogGeneralFilter: this.getGeneralFilterFromState(state),\r\n listFilterSaveDialogOnGetGeneralFilter: onGetGeneralFilter\r\n });\r\n }\r\n };\r\n\r\n handleSaveListFilterDialogOk = (savedListFilter: ISavedListFilter, isShared: boolean) => {\r\n this.updateFiltersAfterSave(\"\", savedListFilter, isShared);\r\n };\r\n\r\n handleSaveListFilterDialogCancel = () => {\r\n this.setState({\r\n showListFilterSaveDialog: false\r\n });\r\n };\r\n // #endregion Saved Filter\r\n\r\n // #region Record Filter\r\n handleOpenUserFilterDialog = () => {\r\n const filter = this.getActiveFilter();\r\n if (!filter) return;\r\n this.setState({\r\n showUserFilterDialog: true,\r\n userFilterDialogFilter: filter\r\n });\r\n };\r\n\r\n onUserFilterDialogOk = (closeDialog: boolean, selectedActivityFilterId: string, selectedUserGroupIds: string[]): any => {\r\n const newState = { ...this.state, selectedActivityFilterId, selectedUserGroupIds };\r\n this.setState({\r\n showUserFilterDialog: !closeDialog,\r\n selectedActivityFilterId,\r\n selectedUserGroupIds,\r\n userFilterIsSet: this.getUserFilterIsSet(newState)\r\n });\r\n return this.getGeneralFilterFromState(newState);\r\n };\r\n \r\n onUserFilterDialogCancel = () => {\r\n this.setState({ showUserFilterDialog: false });\r\n };\r\n // #endregion Record Filter\r\n\r\n handleOpenPermissions = async () => {\r\n const result = await AppUtils.callService(() => userService.getUnitNodePermissions(this.state.activeCompanyId), false);\r\n if (!result) return;\r\n this.setState({\r\n showUnitNodePermissionsDialog: true,\r\n unitNodePermissions: result\r\n });\r\n };\r\n\r\n handlePermissionsDialogOk = () => {\r\n this.setState({\r\n dataId: Base.getRandomIntInteger(1000000),\r\n showUnitNodePermissionsDialog: false\r\n });\r\n };\r\n\r\n handlePermissionsDialogCancel = () => {\r\n this.setState({\r\n showUnitNodePermissionsDialog: false\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n const companies = props.usersPage ? props.usersPage.companies : [];\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n i.id === state.activeSavedFilterId) : null}\r\n sessionState={sessionState}\r\n dataId={state.dataId.toString(10)}\r\n preloaded={true}\r\n waitingPreloadedData={true}\r\n list={props.usersPage ? props.usersPage.list : null}\r\n listFilterIsSet={state.userFilterIsSet}\r\n userGroupIds={state.selectedUserGroupIds}\r\n companyId={state.activeCompanyId}\r\n activityState={state.selectedActivityFilterId}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n settingsActions={state.settingsActions}\r\n reportTabs={\r\n \r\n }\r\n onRefreshSessionState={props.onRefreshSessionState}\r\n onSetSortData={this.handleFilterSortData}\r\n onOpenFiltersDialog={this.handleOpenUserFilterDialog}\r\n onToggleSettingsDialog={this.handleOpenPermissions}\r\n />\r\n \r\n {state.showUnitNodePermissionsDialog &&\r\n \r\n }\r\n \r\n {state.showListFilterSaveDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","/* eslint-disable no-unused-vars */\r\nimport * as React from \"react\";\r\n/* eslint-enable no-unused-vars */\r\nimport { connect } from \"react-redux\";\r\nimport { IApplicationState } from \"../../models/store/storeTypes\";\r\nimport * as storeEffects from \"../../models/store/storeEffects\";\r\nimport { IUserPageOwnProps, IUserPageStateProps, IUserPageDispatchProps, UserPage } from \"../../components/user/UserPage\";\r\nimport { ITypedOption } from \"../../models/common/typedOption\";\r\n\r\nexport function mapStateToProps(applicationState: IApplicationState, ownProps: IUserPageOwnProps): IUserPageStateProps {\r\n if (!applicationState || !applicationState.front) {\r\n return {\r\n appState: null,\r\n dataId: -1,\r\n usersPage: null\r\n };\r\n }\r\n const users = applicationState.users;\r\n return {\r\n appState: applicationState.session,\r\n dataId: users.dataId,\r\n usersPage: users.usersPage\r\n };\r\n}\r\n\r\nexport function mapDispatchToProps(dispatch: storeEffects.LogThunkDispatch): IUserPageDispatchProps {\r\n return {\r\n onGetUsersPage: () => dispatch(storeEffects.getUsersPage()),\r\n onLogout: () => dispatch(storeEffects.logout()),\r\n onSetCulture: (culture: string) => dispatch(storeEffects.setCulture(culture)),\r\n onSaveUserParameters: (parameters: ITypedOption[]) => dispatch(storeEffects.saveUserParameters(parameters)),\r\n onRefreshSessionState: () => dispatch(storeEffects.refreshSessionState()),\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(UserPage);","export interface IUserPasswordChangePageData {\r\n culture: string;\r\n companyId: string;\r\n companyName: string;\r\n companyLogo: string;\r\n minPasswordLength: number;\r\n isInvitation: boolean;\r\n}\r\n\r\nexport class UserPasswordChangePageData implements IUserPasswordChangePageData {\r\n culture: string;\r\n companyId: string;\r\n companyName: string;\r\n companyLogo: string;\r\n minPasswordLength: number;\r\n isInvitation: boolean;\r\n\r\n constructor();\r\n constructor(obj: IUserPasswordChangePageData);\r\n constructor(obj?: any) {\r\n this.culture = obj && obj.culture || \"\";\r\n this.companyId = obj && obj.companyId || \"\";\r\n this.companyName = obj && obj.companyName || \"\";\r\n this.companyLogo = obj && obj.companyLogo || \"\";\r\n this.minPasswordLength = obj && obj.minPasswordLength || 0;\r\n this.isInvitation = obj && obj.isInvitation || false;\r\n }\r\n}","/// \r\nimport * as React from \"react\";\r\nimport * as publicUserService from \"../../../models/services/publicUserService\";\r\nimport LogoEsalkku from \"../../../../../Content/devel/images/logo_eSalkku.png\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"source/framework/saveData\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { Alert, Box, Grid, TextField } from \"@mui/material\";\r\nimport { FormField } from \"source/components/framework/FormField\";\r\nimport { IUserPasswordChangePageData } from \"source/models/user/userPasswordChangePageData\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { Dialog } from \"source/components/framework/Dialog/Dialog\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\ninterface IUserInvitationPageContentProps {\r\n token: string;\r\n}\r\n\r\ninterface IUserInvitationPageContentState {\r\n pageData: IUserPasswordChangePageData;\r\n usercode: string;\r\n password: string;\r\n passwordConfirmation: string;\r\n}\r\n\r\nexport const UserInvitationPageContent = (props: IUserInvitationPageContentProps) => {\r\n const [state, setState] = useState({\r\n pageData: null,\r\n usercode: \"\",\r\n password: \"\",\r\n passwordConfirmation: \"\"\r\n });\r\n const [showSuccessDialog, setShowSuccessDialog] = useState(false);\r\n\r\n const loadPageData = async () => {\r\n const pageData = await AppUtils.callService(() => publicUserService.getUserPasswordChangePageData(props.token));\r\n if (!pageData) return;\r\n Translations.setCulture(pageData.culture);\r\n publicUserService.setCulture(pageData.culture);\r\n setState((old) => ({\r\n ...old,\r\n pageData\r\n }));\r\n };\r\n\r\n useEffect(() => {\r\n loadPageData();\r\n }, []);\r\n\r\n const handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"x_u_c\") {\r\n setState((old) => ({\r\n ...old,\r\n usercode: value\r\n }));\r\n } else if (name === \"x_n_p\") {\r\n setState((old) => ({\r\n ...old,\r\n password: value\r\n }));\r\n } else if (name === \"x_n_pc\") {\r\n setState((old) => ({\r\n ...old,\r\n passwordConfirmation: value\r\n }));\r\n }\r\n };\r\n \r\n const checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n if (!state.usercode) {\r\n AppUtils.showErrorMessage(Translations.UserCodeMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (!state.password) {\r\n AppUtils.showErrorMessage(Translations.UserPasswordMustBeDefined);\r\n return resolve(false);\r\n }\r\n const errorMessage = Base.isValidPassword(state.password, state.pageData.minPasswordLength);\r\n if (errorMessage) {\r\n AppUtils.showErrorMessage(errorMessage);\r\n return resolve(false);\r\n }\r\n if (state.password !== state.passwordConfirmation) {\r\n AppUtils.showErrorMessage(Translations.PasswordConfirmationDoesNotMatchPassword);\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n const getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n const getSaveDataFromState = (): SaveDataObj => {\r\n const data = new SaveDataObj();\r\n data.append(\"token\", props.token);\r\n data.append(\"usercode\", state.usercode);\r\n data.append(\"password\", state.password);\r\n return data;\r\n };\r\n\r\n const handleSavePassword = async () => {\r\n if (!await AppUtils.validate(checkErrors, getWarningMessage, null)) return null;\r\n const saveData = getSaveDataFromState();\r\n //Call server\r\n const result = await AppUtils.callService(() => publicUserService.saveUserPassword(saveData.obj));\r\n if (!result) return null;\r\n // window.setTimeout(() => {\r\n // window.location.href = appConfig.rootUrl + \"Front\";\r\n // }, 1000);\r\n setShowSuccessDialog(true);\r\n return result;\r\n };\r\n\r\n const closeSuccessDialog = () => {\r\n setShowSuccessDialog(false);\r\n window.location.href = appConfig.rootUrl + \"Front\";\r\n };\r\n\r\n return (\r\n
    \r\n \r\n {state.pageData?.isInvitation ? Translations.WelcomeToUseEsalkkuSystem : Translations.UserPublicPasswordChangeMessage}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {Translations.SavePasswordAndMoveToLoginPage}\r\n \r\n \r\n \r\n \r\n {showSuccessDialog &&\r\n \r\n }\r\n
    \r\n );\r\n};","import { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { getApiCall, postApiCall } from \"./tokenService\";\r\nimport { UserPasswordChangePageData } from \"../user/userPasswordChangePageData\";\r\n\r\nexport const setCulture = (culture: string): Promise => {\r\n return getApiCall(\"api/userpublic/setculture?id=\" + culture, ApiSuccess);\r\n};\r\n\r\n// #region PasswordChange\r\nexport const requestPasswordChange = (obj: any): Promise => {\r\n return postApiCall(\"api/userpublic/requestpasswordchange\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n\r\nexport const getUserPasswordChangePageData = (token: string): Promise => {\r\n return getApiCall(\"api/userpublic/passwordchange?id=\" + token, UserPasswordChangePageData);\r\n};\r\n\r\nexport const saveUserPassword = (obj: any): Promise => {\r\n return postApiCall(\"api/userpublic/savepassword\", ApiSuccess, JSON.stringify(obj));\r\n};\r\n// #endregion PasswordChange\r\n","/// \r\nimport * as React from \"react\";\r\nimport { abortManager } from \"source/models/services/tokenService\";\r\nimport { RouteComponentProps } from \"react-router-dom\";\r\nimport { UserInvitationPageContent } from \"./UserInvitationPageContent\";\r\n\r\nexport interface IUserInvitationPageOwnProps {\r\n}\r\n\r\nexport interface IUserInvitationPageStateProps {\r\n}\r\n\r\nexport interface IUserInvitationPageDispatchProps {\r\n}\r\n\r\nexport interface IUserInvitationPagePathProps {\r\n token: string;\r\n}\r\n\r\ntype UserInvitationPageProp = IUserInvitationPageOwnProps & IUserInvitationPageStateProps & IUserInvitationPageDispatchProps & RouteComponentProps;\r\n\r\nexport class UserInvitationPage extends React.Component {\r\n constructor(props: UserInvitationPageProp) {\r\n super(props);\r\n abortManager.abortAll(); //Abort all abortable calls regardless of module\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}","/* eslint-disable no-unused-vars */\r\nimport * as React from \"react\";\r\n/* eslint-enable no-unused-vars */\r\nimport { connect } from \"react-redux\";\r\nimport { IApplicationState } from \"../../models/store/storeTypes\";\r\nimport * as storeEffects from \"../../models/store/storeEffects\";\r\nimport { IUserInvitationPageDispatchProps, IUserInvitationPageOwnProps, IUserInvitationPageStateProps, UserInvitationPage } from \"source/components/user/public/UserInvitationPage\";\r\n\r\nexport function mapStateToProps(applicationState: IApplicationState, ownProps: IUserInvitationPageOwnProps): IUserInvitationPageStateProps {\r\n return {\r\n };\r\n}\r\n\r\nexport function mapDispatchToProps(dispatch: storeEffects.LogThunkDispatch): IUserInvitationPageDispatchProps {\r\n return {\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(UserInvitationPage);","/// \r\nimport * as React from \"react\";\r\nimport ReCAPTCHA from \"react-google-recaptcha\";\r\nimport * as publicUserService from \"../../../models/services/publicUserService\";\r\nimport LogoEsalkku from \"../../../../../Content/devel/images/logo_eSalkku.png\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"source/framework/saveData\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { Alert, AlertTitle, Box, Grid, TextField } from \"@mui/material\";\r\nimport { FormField } from \"source/components/framework/FormField\";\r\nimport { useRef, useState } from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Dialog } from \"source/components/framework/Dialog/Dialog\";\r\nimport styled from \"@emotion/styled\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\ninterface IUserForgotPasswordPageContentProps {\r\n returnUrl: string;\r\n}\r\n\r\nexport const ReCAPTCHAContainer = styled.div`\r\n position: relative;\r\n border: 1px solid #C4C4C4;\r\n background: #f9f9f9;\r\n padding: 0;\r\n\r\n .topHider {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n height: 2px !important;\r\n width: 100%;\r\n background-color: #f9f9f9;\r\n }\r\n\r\n .rightHider {\r\n position: absolute;\r\n top: 0;\r\n left: 295px;\r\n height: 100% !important;\r\n width: 15px;\r\n background-color: #f9f9f9;\r\n }\r\n\r\n .leftHider {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n height: 100% !important;\r\n width: 2px;\r\n background-color: #f9f9f9;\r\n }\r\n\r\n .bottomHider {\r\n position: absolute;\r\n bottom: 1px;\r\n left: 0;\r\n height: 2px !important;\r\n width: 100%;\r\n background-color: #f9f9f9;\r\n }\r\n`;\r\n\r\nexport const UserForgotPasswordPageContent = (props: IUserForgotPasswordPageContentProps) => {\r\n const captchaRef = useRef(null);\r\n const [usercode, setUsercode] = useState(\"\");\r\n const [captchaToken, setCaptchaToken] = useState(\"\");\r\n const [showSuccessDialog, setShowSuccessDialog] = useState(false);\r\n \r\n const handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"x_u_c\") {\r\n setUsercode(value);\r\n }\r\n };\r\n \r\n const checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n if (!usercode) {\r\n AppUtils.showErrorMessage(Translations.UserCodeMustBeDefined);\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n const getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n const captchaInUse = !!appConfig.googleReCAPTCHASiteKey;\r\n\r\n const resetCaptcha = async () => {\r\n if (!captchaInUse) return;\r\n captchaRef.current.reset();\r\n setCaptchaToken(\"\");\r\n };\r\n\r\n const getSaveDataFromState = (): SaveDataObj => {\r\n const data = new SaveDataObj();\r\n data.append(\"usercode\", usercode);\r\n data.append(\"token\", captchaInUse ? captchaRef.current.getValue() : \"\");\r\n return data;\r\n };\r\n\r\n const handleChangePassword = async () => {\r\n if (!await AppUtils.validate(checkErrors, getWarningMessage, null)) return null;\r\n console.log(\"returnUrl\", props.returnUrl, Base.base64UrlDecode(props.returnUrl));\r\n //Call server\r\n const saveData = getSaveDataFromState();\r\n const result = await AppUtils.callService(() => publicUserService.requestPasswordChange(saveData.obj), false);\r\n resetCaptcha();\r\n if (!result) return null;\r\n // window.setTimeout(() => {\r\n // window.location.href = props.returnUrl ? Base.base64UrlDecode(props.returnUrl) : appConfig.loginUrl;\r\n // }, 1000);\r\n setShowSuccessDialog(true);\r\n return result;\r\n };\r\n\r\n const closeSuccessDialog = () => {\r\n setShowSuccessDialog(false);\r\n window.location.href = props.returnUrl ? Base.base64UrlDecode(props.returnUrl) : appConfig.loginUrl;\r\n };\r\n\r\n return (\r\n
    \r\n \r\n \r\n {Translations.RequestPasswordChangeTitle}\r\n {Translations.RequestPasswordChangeMessage1}{Translations.RequestPasswordChangeMessage2}{Translations.RequestPasswordChangeMessage3}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {captchaInUse &&\r\n \r\n \r\n \r\n {\r\n setCaptchaToken(value);\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n \r\n \r\n \r\n {Translations.Send}\r\n \r\n \r\n \r\n
    \r\n {showSuccessDialog &&\r\n \r\n }\r\n
    \r\n );\r\n};","import * as React from \"react\";\r\nimport { RouteComponentProps } from \"react-router-dom\";\r\nimport { UserForgotPasswordPageContent } from \"./UserForgotPasswordPageContent\";\r\n\r\nexport interface IUserForgotPasswordPageOwnProps {\r\n}\r\n\r\nexport interface IUserForgotPasswordPageStateProps {\r\n}\r\n\r\nexport interface IUserForgotPasswordPageDispatchProps {\r\n}\r\n\r\nexport interface IUserForgotPasswordPagePathProps {\r\n returnUrl: string;\r\n}\r\n\r\ntype UserForgotPasswordPageProp = IUserForgotPasswordPageOwnProps & IUserForgotPasswordPageStateProps & IUserForgotPasswordPageDispatchProps & RouteComponentProps;\r\n\r\nexport class UserForgotPasswordPage extends React.Component {\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}","/* eslint-disable no-unused-vars */\r\nimport * as React from \"react\";\r\n/* eslint-enable no-unused-vars */\r\nimport { connect } from \"react-redux\";\r\nimport { IApplicationState } from \"../../models/store/storeTypes\";\r\nimport * as storeEffects from \"../../models/store/storeEffects\";\r\nimport { IUserForgotPasswordPageDispatchProps, IUserForgotPasswordPageOwnProps, IUserForgotPasswordPageStateProps, UserForgotPasswordPage } from \"source/components/user/public/UserForgotPasswordPage\";\r\n\r\nexport function mapStateToProps(applicationState: IApplicationState, ownProps: IUserForgotPasswordPageOwnProps): IUserForgotPasswordPageStateProps {\r\n return {\r\n };\r\n}\r\n\r\nexport function mapDispatchToProps(dispatch: storeEffects.LogThunkDispatch): IUserForgotPasswordPageDispatchProps {\r\n return {\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(UserForgotPasswordPage);","// UserGroupFilterDrawer - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Grid, MenuItem, Select } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { DrawerContent } from \"source/components/framework/Drawer/DrawerContent\";\r\nimport { FilterButtons } from \"source/components/framework/Filters/FilterButtons\";\r\nimport { FilterSearchField } from \"source/components/framework/Filters/FilterSearchField\";\r\nimport { FormField } from \"source/components/framework/FormField\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { PageFilterConditionDrawer } from \"../../framework/Page/PageFilterConditionDrawer\";\r\n\r\n//UserGroupFilterDrawer\r\nexport interface IUserGroupFilterDrawerProp {\r\n open: boolean;\r\n classes?: string;\r\n filter: IListFilterItem;\r\n authorizationLevelFilters: IIdTitle[];\r\n authorizationLevelId: string;\r\n canRemoveSharedFilters: boolean;\r\n onSaveFilter: (saveAs: boolean, onGetGeneralFilter: () => any) => void;\r\n onRemoveFilter: (filterId: string) => void;\r\n onOk: (closeDrawer: boolean, authorizationLevelId: string) => any;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IUserGroupFilterDrawerState {\r\n authorizationLevelId: string;\r\n}\r\n\r\nexport class UserGroupFilterDrawer extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n getStateFromProps = (props: IUserGroupFilterDrawerProp): IUserGroupFilterDrawerState => {\r\n return {\r\n authorizationLevelId: props.authorizationLevelId\r\n };\r\n };\r\n\r\n constructor(props: IUserGroupFilterDrawerProp) {\r\n super(props);\r\n this.state = this.getStateFromProps(props);\r\n this.orgStateHash = this.getSaveDataFromState(props, this.state).hash;\r\n }\r\n\r\n componentDidUpdate(prevProps: IUserGroupFilterDrawerProp, prevState: IUserGroupFilterDrawerState): void {\r\n const props = this.props;\r\n if (!prevProps || prevProps?.filter?.getHash() === props?.filter?.getHash()) return;\r\n const state = this.getStateFromProps(props);\r\n this.setState(state);\r\n this.orgStateHash = this.getSaveDataFromState(props, state).hash;\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"authorizationLevelId\") {\r\n this.setState({ authorizationLevelId: value });\r\n }\r\n };\r\n\r\n getSaveDataFromState = (props: IUserGroupFilterDrawerProp, state: IUserGroupFilterDrawerState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"authorizationLevelId\", state.authorizationLevelId ? state.authorizationLevelId : null);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n \r\n static filterIsSet = (authorizationLevelFilters: IIdTitle[],\r\n selectedAuthorizationLevelId: string): boolean => {\r\n if (authorizationLevelFilters.length < 1) return false;\r\n return !(selectedAuthorizationLevelId === authorizationLevelFilters[0].id);\r\n };\r\n\r\n handleSaveFilter = async (saveAs: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n if (!saveAs) {\r\n props.onOk(false, state.authorizationLevelId);\r\n await this.props.onSaveFilter(false, null);\r\n } else {\r\n await this.props.onSaveFilter(true, () => {\r\n return props.onOk(false, state.authorizationLevelId);\r\n });\r\n }\r\n };\r\n\r\n handleClear = () => {\r\n const props = this.props;\r\n this.setState({\r\n authorizationLevelId: props.authorizationLevelFilters[0].id\r\n });\r\n };\r\n\r\n handleSave = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n props.onOk(true, state.authorizationLevelId);\r\n };\r\n\r\n handleCancel = async (checkChanges: boolean) => {\r\n AppUtils.cancelEditDialog(checkChanges, this.getSaveDataFromState(this.props, this.state).hash, this.orgStateHash, this.handleSave, this.props.onCancel, Translations.YouHaveUnapprovedChangesDoYouWantApproveChanges);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n this.handleCancel(false)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n actions={\r\n this.handleCancel(false)} onClear={this.handleClear} />\r\n }\r\n />\r\n \r\n );\r\n }\r\n}","// UserGroupEditDialogUserList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Alert, Box, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Base } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/framework/base\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as userGroupService from \"../../../models/services/userGroupService\";\r\nimport { IUserListItem, UserListItem } from \"../../../models/user/userListItem\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { DialogListContainer } from \"../../framework/Dialog/DialogListContainer\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListIconButtonsItem } from \"../../framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { SelectUserDialog } from \"../../user/SelectUserDialog/SelectUserDialog\";\r\n\r\n// UserGroupEditDialogUserList\r\nexport interface IUserGroupEditDialogUserListProp {\r\n isReadOnly: boolean;\r\n userGroupId: string;\r\n companyId: string;\r\n users: IUserListItem[];\r\n onRemoved: (ids: string[]) => void;\r\n onAdded: (users: IUserListItem[]) => void;\r\n onRefreshSessionState: () => void;\r\n}\r\n\r\ninterface IUserGroupEditDialogUserListState {\r\n // List\r\n isLoading: boolean;\r\n users: IUserListItem[];\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n selectedId: string;\r\n checkedIds: string[];\r\n\r\n // Dialog\r\n showSelectUserDialog: boolean;\r\n}\r\n\r\nexport class UserGroupEditDialogUserList extends React.Component {\r\n constructor(props: IUserGroupEditDialogUserListProp) {\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n users: props.users ? props.users.slice(0) : [],\r\n filter: \"\",\r\n sortColumn: \"code\",\r\n sortOrderIsAsc: true,\r\n selectedId: null,\r\n checkedIds: [],\r\n showSelectUserDialog: false,\r\n };\r\n }\r\n\r\n filteredList = (filter: string, column: string, asc: boolean) => {\r\n const props = this.props;\r\n let users = props.users ? props.users.slice(0) : [];\r\n if (filter) {\r\n const lowFilter = filter.toLowerCase();\r\n users = users.filter(i => i.code.toLowerCase().indexOf(lowFilter) > -1 || i.firstName.toLowerCase().indexOf(lowFilter) > -1 || i.lastName.toLowerCase().indexOf(lowFilter) > -1);\r\n }\r\n UserListItem.sortUserListItems(users, column, asc);\r\n this.setState({\r\n filter,\r\n sortColumn: column,\r\n sortOrderIsAsc: asc,\r\n users,\r\n });\r\n };\r\n\r\n componentDidUpdate(prevProps: IUserGroupEditDialogUserListProp, prevState: IUserGroupEditDialogUserListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (Base.equalStrArrays(prevProps.users ? prevProps.users.map(i => i.id) : [], props.users ? props.users.map(i => i.id) : [])) return;\r\n this.filteredList(state.filter, state.sortColumn, state.sortOrderIsAsc);\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.filteredList(filter, state.sortColumn, state.sortOrderIsAsc);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.filteredList(state.filter, sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n getRemoveSaveData = (props: IUserGroupEditDialogUserListProp, userIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.userGroupId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"userIds\", userIds);\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n if (selectedIds.length < 1) return;\r\n const saveData = this.getRemoveSaveData(props, selectedIds);\r\n // Call server\r\n const result = await AppUtils.callService(() => userGroupService.userGroupEditRemoveUsers(saveData.obj));\r\n if (!result) return;\r\n props.onRemoved(selectedIds);\r\n if (result.refreshSessionState) {\r\n props.onRefreshSessionState();\r\n }\r\n };\r\n \r\n handleAdd = () => {\r\n this.setState({\r\n showSelectUserDialog: true\r\n });\r\n };\r\n\r\n getAddSaveData = (props: IUserGroupEditDialogUserListProp, userIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.userGroupId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"userIds\", userIds);\r\n return result;\r\n };\r\n\r\n onSelectUserDialogOk = async (users: IUserListItem[]) => {\r\n const props = this.props;\r\n if (!users || users.length < 1) return;\r\n this.setState({\r\n showSelectUserDialog: false\r\n });\r\n const saveData = this.getAddSaveData(this.props, users.map(i => i.id));\r\n // Call server\r\n const result = await AppUtils.callService(() => userGroupService.userGroupEditAddUsers(saveData.obj));\r\n if (!result) return;\r\n props.onAdded(users);\r\n if (result.refreshSessionState) {\r\n props.onRefreshSessionState();\r\n }\r\n };\r\n\r\n onSelectUserDialogCancel = () => {\r\n this.setState({\r\n showSelectUserDialog: false\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n \r\n }\r\n rightItems={\r\n \r\n }\r\n />\r\n {!!props.isReadOnly &&\r\n {Translations.NewUserGroupMustBeSavedBeforeUsersCanBeAdded}\r\n }\r\n {!props.isReadOnly &&\r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 6,\r\n column: \"code\",\r\n content:\r\n \r\n \r\n {user.code}\r\n \r\n },\r\n { size: 6, column: \"name\", content: user.getName() }\r\n ],\r\n id: user.id,\r\n classes: user.disabled ? \"disabled\" : \"\"\r\n };\r\n })\r\n }\r\n noDataMessage={Translations.AddUsers}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n />\r\n }\r\n {state.showSelectUserDialog &&\r\n i.id)}\r\n onOk={this.onSelectUserDialogOk}\r\n onCancel={this.onSelectUserDialogCancel}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","// UserGroupEditDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Grid, MenuItem, Select, TextField, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { INumberTitle } from \"ui/Scripts/source/models/common/numberTitle\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { removeConfirmationWord } from \"ui/Scripts/source/models/consts\";\r\nimport { ConfirmationDialogResult, EnumHelper, UserGroupAuthorizationLevel } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IUserGroupIntraModule, UserGroupSaveIntraModule } from \"../../../models/intraModule/userGroupIntraModule\";\r\nimport * as userGroupService from \"../../../models/services/userGroupService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport { IUserListItem } from \"../../../models/user/userListItem\";\r\nimport { IUserGroupEditItem } from \"../../../models/userGroup/userGroupEditItem\";\r\nimport { ConfirmationButton } from \"../../framework/Button/ConfirmationButton\";\r\nimport { DangerButton } from \"../../framework/Button/DangerButton\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { DialogTabs } from \"../../framework/Dialog/DialogTabs\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { ListHeaderLine } from \"../../framework/List/ListLine\";\r\nimport { UserGroupEditDialogUserList } from \"../UserGroupEditDialogUserList\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum UserGroupDialogMenuItem {\r\n General = \"1\",\r\n Users = \"2\",\r\n IntraModules = \"4\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n//UserGroupEditDialog\r\nexport interface IUserGroupEditDialogProp {\r\n sessionState: ISessionState;\r\n defaultMenuItem: UserGroupDialogMenuItem;\r\n companyId: string;\r\n userGroupId: string;\r\n classes?: string;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onOk: () => void;\r\n onCancel: (userGroupDataWasModified: boolean) => void;\r\n onNewSaved: (userGroupId: string) => void;\r\n onRefreshList: () => Promise;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onRefreshSessionState: () => void;\r\n}\r\n\r\nexport interface IUserGroupEditDialogState {\r\n activeMenuItem: UserGroupDialogMenuItem;\r\n isLoading: boolean;\r\n userGroupDataWasModified: boolean;\r\n userGroup: IUserGroupEditItem;\r\n id: string;\r\n code: string;\r\n name: string;\r\n comment: string;\r\n authorizationLevel: number;\r\n rowId: string;\r\n users: IUserListItem[];\r\n authorizationLevels: INumberTitle[];\r\n intraModules: IUserGroupIntraModule[];\r\n}\r\n\r\nexport class UserGroupEditDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IUserGroupEditDialogProp) {\r\n super(props);\r\n this.state = {\r\n activeMenuItem: Base.isNullOrUndefined(props.defaultMenuItem) ? UserGroupDialogMenuItem.General : props.defaultMenuItem,\r\n isLoading: false,\r\n userGroupDataWasModified: false,\r\n userGroup: null,\r\n id: \"\",\r\n code: \"\",\r\n name: \"\",\r\n comment: \"\",\r\n authorizationLevel: 0,\r\n rowId: \"\",\r\n users: [],\r\n authorizationLevels: [],\r\n intraModules: []\r\n };\r\n }\r\n\r\n loadUserGroup = async () => {\r\n const props = this.props;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => userGroupService.getUserGroupEdit(props.companyId, props.userGroupId), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const userGroup = result.userGroup;\r\n const hideIntraModulesTab = (result.intraModules.length < 1 || EnumHelper.isGreaterThan(userGroup.authorizationLevel, UserGroupAuthorizationLevel.SuperUser) || !props.sessionState.isSuperAdmin);\r\n const state = {\r\n ...this.state,\r\n userGroup,\r\n id: userGroup.id,\r\n code: userGroup.code,\r\n name: userGroup.name,\r\n comment: userGroup.comment,\r\n authorizationLevel: userGroup.authorizationLevel,\r\n rowId: userGroup.rowId,\r\n users: result.users,\r\n authorizationLevels: result.authorizationLevels,\r\n intraModules: result.intraModules,\r\n activeMenuItem: this.state.activeMenuItem === UserGroupDialogMenuItem.IntraModules && hideIntraModulesTab ? UserGroupDialogMenuItem.General : this.state.activeMenuItem,\r\n };\r\n this.setState(state);\r\n const saveData = this.getSaveDataFromState(props, state);\r\n this.orgStateHash = saveData.hash;\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadUserGroup();\r\n }\r\n\r\n async componentDidUpdate(prevProps: IUserGroupEditDialogProp, prevState: IUserGroupEditDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevDefaultMenuItem = Base.isNullOrUndefined(prevProps.defaultMenuItem) ? UserGroupDialogMenuItem.General : prevProps.defaultMenuItem;\r\n const defaultMenuItem = Base.isNullOrUndefined(props.defaultMenuItem) ? UserGroupDialogMenuItem.General : props.defaultMenuItem;\r\n if (prevProps.companyId === props.companyId && prevProps.userGroupId === props.userGroupId) return;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb()) return;\r\n props.onRefreshList();\r\n }\r\n await this.loadUserGroup();\r\n \r\n if (prevDefaultMenuItem !== defaultMenuItem) {\r\n this.setState({\r\n activeMenuItem: defaultMenuItem\r\n });\r\n }\r\n }\r\n\r\n handleToggleActiveMenuItem = (userGroupDialogMenuItem: UserGroupDialogMenuItem) => {\r\n this.setState({ activeMenuItem: userGroupDialogMenuItem });\r\n };\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"xts\") {\r\n this.setState({ code: value });\r\n } else if (name === \"name\") {\r\n this.setState({ name: value });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n } else if (name === \"authorizationLevel\") {\r\n this.setState({ authorizationLevel: value.toInteger() });\r\n }\r\n };\r\n \r\n handleChangeIntraModuleLevel = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const code: string = target.name;\r\n if (!code) return;\r\n const intraModules = this.state.intraModules.slice(0);\r\n const intraModule = intraModules.find(i => i.code === code);\r\n if (!intraModule) return;\r\n intraModule.level = value.toInteger();\r\n this.setState({ intraModules });\r\n };\r\n\r\n // #region Users\r\n handleUsersRemoved = (ids: string[]) => {\r\n if (!ids || ids.length < 1) return;\r\n this.setState({\r\n users: this.state.users.filter(i => ids.indexOf(i.id) < 0),\r\n userGroupDataWasModified: true\r\n });\r\n };\r\n \r\n handleUsersAdded = (newUsers: IUserListItem[]) => {\r\n if (!newUsers || newUsers.length < 1) return;\r\n this.setState({\r\n users: this.state.users.concat(newUsers),\r\n userGroupDataWasModified: true\r\n });\r\n };\r\n // #endregion User Groups\r\n\r\n getSaveDataFromState = (props: IUserGroupEditDialogProp, state: IUserGroupEditDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"id\", state.id);\r\n result.append(\"code\", state.code);\r\n result.append(\"name\", state.name);\r\n result.append(\"comment\", state.comment);\r\n result.append(\"authorizationLevel\", state.authorizationLevel);\r\n // intraModules\r\n result.append(\"intraModules\", state.intraModules.reduce((result, intraModule) => {\r\n result.push(new UserGroupSaveIntraModule(intraModule));\r\n return result;\r\n }, []));\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.code) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.UserCodeMustBeDefined));\r\n return resolve(false);\r\n }\r\n if (!state.name) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.NameMustBeDefined));\r\n return resolve(false);\r\n }\r\n //validateDefaultEventHandlers\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = await AppUtils.callService(() => userGroupService.saveUserGroupEdit(saveData.obj));\r\n if (!result) return null;\r\n this.orgStateHash = saveData.hash;\r\n return result;\r\n };\r\n\r\n handleSave = async () => {\r\n const props = this.props;\r\n const result = await this.saveToDb();\r\n if (!result) return;\r\n const isNew = this.state.userGroup.isNew();\r\n if (!isNew) {\r\n props.onOk();\r\n } else {\r\n props.onNewSaved(result.id);\r\n }\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.userGroup.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveUserGroupParameter, props.sessionState.isSuperAdmin ? state.userGroup.code : state.userGroup.name), false, removeConfirmationWord) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await AppUtils.callService(() => userGroupService.removeUserGroup(state.userGroup.id, props.companyId));\r\n if (!result) return;\r\n props.onCancel(true);\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel(state.userGroupDataWasModified);\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut(this.getSaveDataFromState(props, this.state).hash, this.orgStateHash, async () => !!await this.saveToDb(), props.onRefreshList);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.userGroup) return null;\r\n const isNew = state.userGroup.isNew();\r\n const isSuperAdmin = props.sessionState.isSuperAdmin;\r\n return (\r\n \r\n }\r\n body={\r\n <>\r\n {state.activeMenuItem === UserGroupDialogMenuItem.General &&\r\n <>\r\n {props.sessionState.isSuperAdmin &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {state.activeMenuItem === UserGroupDialogMenuItem.Users &&\r\n <>\r\n \r\n \r\n }\r\n {state.activeMenuItem === UserGroupDialogMenuItem.IntraModules &&\r\n <>\r\n \r\n {state.intraModules.map((intraModule) =>\r\n \r\n \r\n \"...\"\r\n {intraModule.name}\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n {state.userGroup && !isNew && (\r\n {Translations.Remove}\r\n )}\r\n {Translations.Close}\r\n {Translations.Save}\r\n \r\n \r\n }\r\n onClose={this.handleCancel}/>\r\n );\r\n }\r\n}","// UserGroupList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Grid } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { infiniteListPageSize } from \"../../../models/common/webConsts\";\r\nimport * as userGroupService from \"../../../models/services/userGroupService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { IUserGroupListItem } from \"ui/Scripts/source/models/userGroup/userGroupListItem\";\r\nimport { IUserGroupListItems } from \"ui/Scripts/source/models/userGroup/userGroupListItems\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { AddButton } from \"../../framework/Button/AddButton\";\r\nimport { SettingsButton } from \"../../framework/Button/SettingsButton\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { IListUsingComponentState, List } from \"../../framework/List/List\";\r\nimport { ListActionButtons } from \"../../framework/List/ListActionButtons\";\r\nimport { ListCardField } from \"../../framework/List/ListCardField\";\r\nimport { ListContainer } from \"../../framework/List/ListContainer\";\r\nimport { ListDetailsButton } from \"../../framework/List/ListDetailsButton\";\r\nimport { ListLinkValue } from \"../../framework/List/ListLinkValue\";\r\nimport { ListSearchContainer } from \"../../framework/List/ListSearchContainer\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { ListToggleButtons } from \"../../framework/List/ListToggleButtons\";\r\nimport { PageTitle } from \"../../framework/Page/PageTitle\";\r\nimport { EllipsisTypography } from \"../../framework/Typography/EllipsisTypography\";\r\nimport { UserGroupDialogMenuItem, UserGroupEditDialog } from \"../UserGroupEditDialog\";\r\nimport { IPageNavMenuItemActionsAction } from \"source/components/framework/PageNavMenuItem/Actions\";\r\n\r\n// UserGroupList\r\nexport interface IUserGroupListProp {\r\n savedFilter: IListFilterItem;\r\n sessionState: ISessionState;\r\n companyId: string;\r\n disableGlobalLoading?: boolean;\r\n preloaded?: boolean;\r\n waitingPreloadedData?: boolean;\r\n list?: IUserGroupListItems;\r\n listFilterIsSet: boolean;\r\n authorizationLevelIds?: string[];\r\n dataId?: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n reportTabs: React.ReactNode;\r\n settingsActions: IPageNavMenuItemActionsAction[];\r\n onRefreshSessionState: () => void;\r\n onSetSortData: (sortColumn: string, sortOrderIsAsc: boolean) => void;\r\n onOpenFiltersDialog: () => void;\r\n onToggleSettingsDialog: () => void;\r\n}\r\n\r\ninterface IUserGroupListState extends IListUsingComponentState {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n waitingPreloadedData: boolean;\r\n pageSize: number;\r\n page: number;\r\n filter: string;\r\n authorizationLevels: number[];\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n listModeIsLine: boolean;\r\n checkedIds: string[];\r\n\r\n // Dialog\r\n editDialogDefaultMenuItem: UserGroupDialogMenuItem;\r\n}\r\n\r\nexport class UserGroupList extends React.Component {\r\n constructor(props: IUserGroupListProp) {\r\n super(props);\r\n this.state = {\r\n intialized: props.list && !!props.preloaded,\r\n isLoading: false,\r\n waitingPreloadedData: !Base.isNullOrUndefined(props.waitingPreloadedData) ? props.waitingPreloadedData : (props.list ? false : props.preloaded),\r\n page: props.list ? props.list.page : 1,\r\n hasMore: props.list ? props.list.hasMore : true,\r\n filter: \"\",\r\n authorizationLevels: props.authorizationLevelIds ? props.authorizationLevelIds.filter(i => i !== \"\").map(i => parseInt(i, 10)) : [],\r\n pageSize: props.list ? props.list.pageSize : infiniteListPageSize,\r\n sortColumn: props.sortColumn,\r\n sortOrderIsAsc: props.sortOrderIsAsc,\r\n listModeIsLine: true,\r\n items: props.list ? props.list.items : [],\r\n selectedId: null,\r\n checkedIds: [],\r\n detailsItem: null,\r\n showEditDialog: false,\r\n editDialogId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false,\r\n editDialogDefaultMenuItem: UserGroupDialogMenuItem.General\r\n };\r\n }\r\n\r\n searchItems = async (companyId: string, pageSize: number, page: number, filter: string, authorizationLevels: number[], sortColumn: string, sortOrderIsAsc: boolean,\r\n resetItems: boolean, refreshList: boolean, moveNext: boolean = false, setUserGroupDialogData: boolean = true) => {\r\n const state = this.state;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => userGroupService.getUserGroupListItems(companyId, !refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1, filter, authorizationLevels, sortColumn, sortOrderIsAsc),\r\n false, this.props.disableGlobalLoading, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const items = List.getListItems(state.items, state.selectedId, state.checkedIds, result.items, resetItems, refreshList);\r\n let selectedId = items.selectedId;\r\n let index = items.items.findIndex(i => i.id === selectedId);\r\n let detailsItem = index > -1 ? items.items[index] : null;\r\n if (moveNext && detailsItem && index < items.items.length - 1) {\r\n index = index + 1;\r\n detailsItem = items.items[index];\r\n selectedId = items.items[index].id;\r\n }\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n authorizationLevels,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n selectedId,\r\n checkedIds: items.checkedIds,\r\n detailsItem,\r\n editDialogId: setUserGroupDialogData ? (moveNext && detailsItem ? detailsItem.id : \"\") : this.state.editDialogId,\r\n editDialogHasPrevious: setUserGroupDialogData ? index > 0 : this.state.editDialogHasPrevious,\r\n editDialogHasNext: setUserGroupDialogData ? (index < items.items.length - 1 || result.hasMore) : this.state.editDialogHasNext,\r\n editDialogDefaultMenuItem: setUserGroupDialogData ? UserGroupDialogMenuItem.General : this.state.editDialogDefaultMenuItem\r\n });\r\n this.props.onSetSortData(sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n refreshList = async (setUserGroupDialogData: boolean = true) => {\r\n const state = this.state;\r\n await this.searchItems(this.props.companyId, state.pageSize, state.page, state.filter, state.authorizationLevels, state.sortColumn, state.sortOrderIsAsc, false, true, false, setUserGroupDialogData);\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n if (this.props.preloaded) return;\r\n this.searchItems(this.props.companyId, state.pageSize, state.page, state.filter, state.authorizationLevels, state.sortColumn, state.sortOrderIsAsc, false, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: IUserGroupListProp, prevState: IUserGroupListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.waitingPreloadedData) {\r\n if (!props.list || (props.dataId ?? \"\") === (prevProps.dataId ?? \"\")) return;\r\n this.setState({\r\n intialized: true,\r\n waitingPreloadedData: false,\r\n page: props.list.page,\r\n hasMore: props.list.hasMore,\r\n items: props.list.items,\r\n pageSize: props.list.pageSize,\r\n sortColumn: props.list.sortColumn,\r\n sortOrderIsAsc: props.list.sortOrderIsAsc\r\n });\r\n } else {\r\n const prevDataId = prevProps.dataId ? prevProps.dataId : \"\";\r\n const dataId = props.dataId ? props.dataId : \"\";\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n const prevAuthorizationLevels = prevProps.authorizationLevelIds ? prevProps.authorizationLevelIds.filter(i => i !== \"\").map(i => parseInt(i, 10)) : [];\r\n const authorizationLevels = props.authorizationLevelIds ? props.authorizationLevelIds.filter(i => i !== \"\").map(i => parseInt(i, 10)) : [];\r\n const prevSortColumn = prevProps.sortColumn;\r\n const sortColumn = props.sortColumn;\r\n const prevSortOrderIsAsc = prevProps.sortOrderIsAsc;\r\n const sortOrderIsAsc = props.sortOrderIsAsc;\r\n if (dataId === prevDataId && companyId === prevCompanyId &&\r\n Base.equalArrays(prevAuthorizationLevels, authorizationLevels) &&\r\n prevSortColumn === sortColumn && prevSortOrderIsAsc === sortOrderIsAsc) return;\r\n this.searchItems(companyId, state.pageSize, state.page, state.filter, authorizationLevels, sortColumn, sortOrderIsAsc, true, false);\r\n }\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(this.props.companyId, state.pageSize, 1, filter, state.authorizationLevels, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(this.props.companyId, state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, state.authorizationLevels, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds,\r\n detailsItem: this.state.items.find(i => i.id === selectedId)\r\n });\r\n };\r\n \r\n handleListModeChange = (listModeIsLine: boolean) => {\r\n this.setState({\r\n listModeIsLine,\r\n });\r\n };\r\n\r\n handleAdd = () => {\r\n this.setState({ ...List.getShowEditDialogStateChange(this.state, Base.emptyGuid), editDialogDefaultMenuItem: UserGroupDialogMenuItem.General });\r\n };\r\n\r\n handleOpenLine = (id: string) => {\r\n this.setState({ ...List.getShowEditDialogStateChange(this.state, id), editDialogDefaultMenuItem: UserGroupDialogMenuItem.General });\r\n };\r\n\r\n handleUserDialogOk = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n this.refreshList();\r\n };\r\n\r\n handleUserDialogCancel = (userDataWasModified: boolean) => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n if (!userDataWasModified) return;\r\n this.refreshList();\r\n };\r\n\r\n handleUserDialogNewSaved = (newUserGroupId: string) => {\r\n this.setState({\r\n showEditDialog: true,\r\n selectedId: newUserGroupId,\r\n editDialogId: newUserGroupId,\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false,\r\n editDialogDefaultMenuItem: UserGroupDialogMenuItem.Users\r\n });\r\n this.refreshList(false);\r\n };\r\n\r\n handleListModeToggle = (_event: React.MouseEvent, listModeIsLine: boolean) => {\r\n this.setState({\r\n listModeIsLine,\r\n });\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n this.setState(List.getEditDialogItemByIndexStateChange(this.state, index, () => this.searchItems(this.props.companyId, state.pageSize, state.page + 1, state.filter, state.authorizationLevels, state.sortColumn, state.sortOrderIsAsc, false, false, true)));\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const isSuperAdmin = props.sessionState.isSuperAdmin;\r\n return (\r\n <>\r\n \r\n {props.settingsActions.length > 0 &&\r\n \r\n {Translations.Settings}\r\n \r\n }\r\n \r\n {Translations.AddUserGroup}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n {\r\n return {\r\n columns: isSuperAdmin\r\n ? [\r\n { size: 3, column: \"code\", content: this.handleOpenLine(item.id)}>{item.code} },\r\n { size: 3, column: \"name\", content: item.name },\r\n { size: 4, column: \"comment\", content: item.comment },\r\n { size: 2, column: \"authorizationLevel\", content: item.levelStr }\r\n ]\r\n : [\r\n { size: 4, column: \"name\", content: this.handleOpenLine(item.id)}>{item.name} },\r\n { size: 6, column: \"comment\", content: item.comment },\r\n { size: 2, column: \"authorizationLevel\", content: item.levelStr }\r\n ],\r\n id: item.id\r\n };\r\n })\r\n : null\r\n }\r\n cards={!state.listModeIsLine\r\n ? state.items.map((item) => {\r\n return {\r\n sm: 4,\r\n rows: [\r\n {\r\n cols: isSuperAdmin\r\n ? [\r\n { size: 6, title: Translations.Code, value: this.handleOpenLine(item.id)}>{item.code} },\r\n { size: 6, title: Translations.Name, value: item.name }\r\n ]\r\n : [\r\n { size: 6, title: Translations.Name, value: this.handleOpenLine(item.id)}>{item.name} },\r\n { size: 6, title: Translations.AuthorizationLevel, value: {item.levelStr} }\r\n ]\r\n },\r\n isSuperAdmin\r\n ? {\r\n cols: [\r\n { size: 6, title: Translations.AuthorizationLevel, value: {item.levelStr} },\r\n ]\r\n }\r\n : null,\r\n {\r\n cols: [\r\n { title: Translations.Description, value: item.comment },\r\n ]\r\n },\r\n {\r\n cols: [\r\n {\r\n title: Translations.Users,\r\n value:\r\n i.name), \", \")}>\r\n {item.users.map((user, index) =>\r\n \r\n {index > 0 &&\r\n \r\n }\r\n {user.name}\r\n \r\n )}\r\n \r\n }\r\n ]\r\n }],\r\n id: item.id\r\n };\r\n })\r\n : null\r\n }\r\n lineDetails={state.detailsItem\r\n ? \r\n \r\n \r\n {isSuperAdmin &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n i.name), \", \")}>\r\n {state.detailsItem.users.map((user, index) =>\r\n (index < 10\r\n ? \r\n {index > 0 &&\r\n \r\n }\r\n {user.name}\r\n \r\n : null\r\n )\r\n )}\r\n {state.detailsItem.users.length > 6 &&\r\n {\" + (\" + (state.detailsItem.users.length - 10).toString(10) + \")\"}\r\n }\r\n \r\n } />\r\n \r\n \r\n \r\n \r\n this.handleOpenLine(state.selectedId)}\r\n />\r\n \r\n : null}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpenLine}\r\n />\r\n \r\n {(state.showEditDialog && !!state.editDialogId) &&\r\n this.refreshList(false)}\r\n onNewSaved={this.handleUserDialogNewSaved}\r\n onPrevious={() => List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n onRefreshSessionState={props.onRefreshSessionState}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IIdTitle, IdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { INumberTitle } from \"ui/Scripts/source/models/common/numberTitle\";\r\nimport { ApplicationPermissionType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IListFilterItem, ListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { ISavedListFilter } from \"../../../models/common/savedListFilter\";\r\nimport { ITypedOption } from \"../../../models/common/typedOption\";\r\nimport * as userGroupService from \"../../../models/services/userGroupService\";\r\nimport { IAppSessionState } from \"../../../models/store/storeTypes\";\r\nimport { IUnitNodePermissions } from \"../../../models/unit/unitNodePermissions\";\r\nimport { IUserGroupPage } from \"../../../models/userGroup/userGroupPage\";\r\nimport { HeaderMenuItem, NavigationMenu } from \"../../app/NavigationMenu\";\r\nimport { UserMenu } from \"../../app/UserMenu\";\r\nimport { ListFilterSaveDialog } from \"../../framework/Filters/ListFilterSaveDialog\";\r\nimport { PageContainer } from \"../../framework/Page/PageContainer\";\r\nimport { PageContent } from \"../../framework/Page/PageContent\";\r\nimport { PageTopBar } from \"../../framework/Page/PageTopBar\";\r\nimport { FilterTabs } from \"../../framework/PageNavMenuItem/FilterTabs\";\r\nimport { UnitPermissionDialog } from \"../../unit/Unit/UnitPermissionDialog/UnitPermissionDialog\";\r\nimport { UserGroupFilterDrawer } from \"../UserGroupFilterDrawer\";\r\nimport { UserGroupList } from \"../UserGroupList\";\r\nimport { IPageNavMenuItemActionsAction } from \"source/components/framework/PageNavMenuItem/Actions\";\r\nimport { abortManager } from \"source/models/services/tokenService\";\r\n\r\n// UserPage\r\nexport interface IUserGroupPageOwnProps {\r\n}\r\n\r\nexport interface IUserGroupPageStateProps {\r\n appState: IAppSessionState;\r\n dataId: number;\r\n userGroupPage: IUserGroupPage;\r\n}\r\n\r\nexport interface IUserGroupPageDispatchProps {\r\n onGetUserGroupsPage: () => void;\r\n onLogout: () => void;\r\n onSetCulture: (culture: string) => void;\r\n onSaveUserParameters: (parameters: ITypedOption[]) => void;\r\n onRefreshSessionState: () => void;\r\n}\r\n\r\ntype UserGroupPageProp = IUserGroupPageOwnProps & IUserGroupPageStateProps & IUserGroupPageDispatchProps;\r\n\r\ninterface IUserGroupPageState {\r\n initialized: boolean;\r\n showNavPanel: boolean;\r\n activeCompanyId: string;\r\n authorizationLevelId: string;\r\n authorizationLevelFilters: IIdTitle[];\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n settingsActions: IPageNavMenuItemActionsAction[];\r\n // Filters\r\n userGroupFilterIsSet: boolean;\r\n showUserGroupFilterDialog: boolean;\r\n userGroupFilterDialogFilter: IListFilterItem;\r\n filters: IListFilterItem[];\r\n savedFilters: IListFilterItem[];\r\n activeFilterId: string;\r\n activeSavedFilterId: string;\r\n showListFilterSaveDialog: boolean;\r\n listFilterSaveDialogFilter: IListFilterItem;\r\n listFilterSaveDialogGeneralFilter: any;\r\n listFilterSaveDialogReservedNames: string[];\r\n listFilterSaveDialogOnGetGeneralFilter: () => any;\r\n // Properties\r\n dataId: number;\r\n showUnitNodePermissionsDialog: boolean;\r\n unitNodePermissions: IUnitNodePermissions;\r\n}\r\n\r\nexport class UserGroupPage extends React.Component {\r\n getAuthorizationLevelFilters(authorizationLevels: INumberTitle[]): IIdTitle[] {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(\"\", \"'\" + Translations.All + \"'\"));\r\n if (authorizationLevels) {\r\n for (const authorizationLevel of authorizationLevels) {\r\n result.push(IdTitle.createIdTitle(authorizationLevel.number.toString(10), authorizationLevel.title));\r\n }\r\n }\r\n return result;\r\n }\r\n \r\n getFilters = (): IListFilterItem[] => {\r\n const result: IListFilterItem[] = [];\r\n result.push(ListFilterItem.createListFilterItem(Translations.UserGroups, Translations.UserGroups,\r\n {\r\n authorizationLevelId: \"\"\r\n }, \"name\", true));\r\n ListFilterItem.sortListFilterItems(result);\r\n return result;\r\n };\r\n\r\n getSavedFilters = (props: UserGroupPageProp): IListFilterItem[] => {\r\n const result: IListFilterItem[] = [];\r\n if (!props || !props.userGroupPage) return result;\r\n for (const companyFilter of props.userGroupPage.companyFilters) {\r\n result.push(ListFilterItem.createListFilterItemFromSavedListFilter(companyFilter, true));\r\n }\r\n for (const userFilter of props.userGroupPage.userFilters) {\r\n result.push(ListFilterItem.createListFilterItemFromSavedListFilter(userFilter, false));\r\n }\r\n ListFilterItem.sortListFilterItems(result);\r\n return result;\r\n };\r\n\r\n getUserGroupFilterIsSet = (state: IUserGroupPageState): boolean => {\r\n return UserGroupFilterDrawer.filterIsSet(state.authorizationLevelFilters,\r\n state.authorizationLevelId);\r\n };\r\n\r\n getSettingsActions = (): IPageNavMenuItemActionsAction[] => {\r\n const props = this.props;\r\n const sessionState = props.appState.state;\r\n const result: IPageNavMenuItemActionsAction[] = [];\r\n if (sessionState.isCompanyAdmin) {\r\n result.push({ title: Translations.Permissions, onClick: this.handleOpenPermissions });\r\n }\r\n return result;\r\n };\r\n\r\n constructor(props: UserGroupPageProp) {\r\n super(props);\r\n abortManager.abortAll(); //Abort all abortable calls regardless of module\r\n const sessionState = props.appState.state;\r\n const filters = this.getFilters();\r\n const filterProps = ListFilterItem.getFilterProps(filters[0], \"\", true, this.getStateFilterPropsFromGeneralFilter);\r\n const state = {\r\n ...filterProps,\r\n initialized: !!props.userGroupPage,\r\n showNavPanel: sessionState.getShowPageNavigation(),\r\n activeCompanyId: sessionState.companyId,\r\n authorizationLevelId: \"\",\r\n authorizationLevelFilters: this.getAuthorizationLevelFilters(props.userGroupPage ? props.userGroupPage.authorizationLevels : []),\r\n settingsActions: this.getSettingsActions(),\r\n // Filters\r\n userGroupFilterIsSet: false,\r\n activeFilterId: filters[0].id,\r\n activeSavedFilterId: \"\",\r\n filters,\r\n savedFilters: this.getSavedFilters(props),\r\n showUserGroupFilterDialog: false,\r\n userGroupFilterDialogFilter: null,\r\n showListFilterSaveDialog: false,\r\n listFilterSaveDialogFilter: null,\r\n listFilterSaveDialogGeneralFilter: null,\r\n listFilterSaveDialogReservedNames: [],\r\n listFilterSaveDialogOnGetGeneralFilter: null,\r\n // Properties\r\n dataId: props.dataId,\r\n showUnitNodePermissionsDialog: false,\r\n unitNodePermissions: null\r\n };\r\n this.state = {\r\n ...state,\r\n userGroupFilterIsSet: this.getUserGroupFilterIsSet(state)\r\n };\r\n }\r\n\r\n componentDidMount(): void {\r\n this.props.onGetUserGroupsPage();\r\n }\r\n\r\n componentDidUpdate(prevProps: UserGroupPageProp, prevState: IUserGroupPageState): void {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n const prevCompanyIds = (prevProps.userGroupPage ? prevProps.userGroupPage.companies.map(i => i.id) : []).join(\",\");\r\n const companyIds = (props.userGroupPage ? props.userGroupPage.companies.map(i => i.id) : []).join(\",\");\r\n const prevCompanyId = prevProps.userGroupPage && prevProps.userGroupPage.companies.length > 0 ? prevProps.userGroupPage.companies[0].id : Base.emptyGuid;\r\n const companyId = props.userGroupPage && props.userGroupPage.companies.length > 0 ? props.userGroupPage.companies[0].id : Base.emptyGuid;\r\n if (prevProps.dataId === props.dataId && prevCompanyId === companyId && prevCompanyIds === companyIds) return;\r\n const savedFilters = this.getSavedFilters(props);\r\n const activeSavedFilterId = savedFilters.find(i => i.id === state.activeSavedFilterId)\r\n ? state.activeSavedFilterId\r\n : \"\";\r\n const stateChange = {\r\n dataId: props.dataId,\r\n initialized: !!props.userGroupPage,\r\n showNavPanel: state.initialized ? state.showNavPanel : sessionState.getShowPageNavigation(),\r\n activeCompanyId: companyId,\r\n authorizationLevelFilters: this.getAuthorizationLevelFilters(props.userGroupPage ? props.userGroupPage.authorizationLevels : []),\r\n savedFilters,\r\n activeSavedFilterId\r\n };\r\n const newState = { ...state, ...stateChange };\r\n this.setState({\r\n ...stateChange,\r\n userGroupFilterIsSet: this.getUserGroupFilterIsSet(newState),\r\n settingsActions: this.getSettingsActions(),\r\n });\r\n }\r\n\r\n handleToggleShowNavPanel = () => {\r\n this.setState({ showNavPanel: !this.state.showNavPanel });\r\n };\r\n\r\n handleChangeActiveCompanyId = async (companyId: string) => {\r\n if (this.state.activeCompanyId === companyId) return;\r\n const userGroupPageAuthorizationLevels = await userGroupService.getUserGroupPageAuthorizationLevels(companyId);\r\n this.setState({\r\n activeCompanyId: companyId,\r\n authorizationLevelFilters: this.getAuthorizationLevelFilters(userGroupPageAuthorizationLevels.authorizationLevels),\r\n authorizationLevelId: \"\"\r\n });\r\n };\r\n \r\n handleSetAuthorizationLevelId = (authorizationLevelId: string, checked: boolean) => {\r\n if (!checked) return;\r\n this.setState({ authorizationLevelId });\r\n };\r\n\r\n // #region Saved Filter\r\n getGeneralFilterFromState = (state: IUserGroupPageState): any => {\r\n return {\r\n authorizationLevelId: state.authorizationLevelId ? parseInt(state.authorizationLevelId, 10) : null\r\n };\r\n };\r\n\r\n getStateFilterPropsFromGeneralFilter = (generalFilter: any): any => {\r\n return {\r\n authorizationLevelId: generalFilter && !Base.isNullOrUndefined(generalFilter.authorizationLevelId) && !isNaN(generalFilter.authorizationLevelId) ? generalFilter.authorizationLevelId.toString(10) : \"\"\r\n };\r\n };\r\n \r\n getFilterPropsWithState = (listItemFilter: IListFilterItem) => {\r\n const state = this.state;\r\n let result = {\r\n authorizationLevelId: state.authorizationLevelId,\r\n sortColumn: state.sortColumn,\r\n sortOrderIsAsc: state.sortOrderIsAsc\r\n };\r\n if (listItemFilter) {\r\n result = ListFilterItem.getFilterProps(listItemFilter, result.sortColumn, result.sortOrderIsAsc, this.getStateFilterPropsFromGeneralFilter);\r\n }\r\n return result;\r\n };\r\n\r\n handleChangeActiveFilter = (activeFilterId: string) => {\r\n const state = this.state;\r\n const filter = state.filters.find(i => i.id === activeFilterId);\r\n if (!filter) return;\r\n const filterProps = this.getFilterPropsWithState(filter);\r\n const activeSavedFilterId = \"\";\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId };\r\n this.setState({\r\n ...filterProps,\r\n activeFilterId,\r\n activeSavedFilterId: \"\",\r\n userGroupFilterIsSet: this.getUserGroupFilterIsSet(newState)\r\n });\r\n };\r\n\r\n handleChangeActiveSavedFilter = (activeSavedFilterId: string) => {\r\n const state = this.state;\r\n const savedFilter = state.savedFilters.find(i => i.id === activeSavedFilterId);\r\n if (!savedFilter) return;\r\n const filterProps = this.getFilterPropsWithState(savedFilter);\r\n const activeFilterId = \"\";\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId };\r\n this.setState({\r\n ...filterProps,\r\n activeFilterId,\r\n activeSavedFilterId,\r\n userGroupFilterIsSet: this.getUserGroupFilterIsSet(newState)\r\n });\r\n };\r\n\r\n handleRemoveSavedFilter = async (savedFilterId: string) => {\r\n const state = this.state;\r\n const savedFilter = state.savedFilters.find(i => i.id === savedFilterId);\r\n if (!savedFilter) return;\r\n const result = await ListFilterSaveDialog.removeListFilterFromDb(state.savedFilters, state.activeCompanyId, savedFilterId, savedFilter.isShared, ApplicationPermissionType.UserGroup);\r\n if (!result) return;\r\n const savedFilters = state.savedFilters.filter(i => i.id !== savedFilterId);\r\n let activeFilterId = \"\";\r\n let activeSavedFilterId = \"\";\r\n let newfilter: IListFilterItem = null;\r\n if (savedFilters.length > 0) {\r\n newfilter = savedFilters[0];\r\n activeSavedFilterId = newfilter.id;\r\n } else if (state.filters.length > 0) {\r\n newfilter = state.filters[0];\r\n activeFilterId = newfilter.id;\r\n }\r\n const filterProps = this.getFilterPropsWithState(newfilter);\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId, savedFilters };\r\n this.setState({\r\n ...filterProps,\r\n showUserGroupFilterDialog: false,\r\n activeFilterId,\r\n activeSavedFilterId,\r\n savedFilters,\r\n userGroupFilterIsSet: this.getUserGroupFilterIsSet(newState)\r\n });\r\n };\r\n\r\n handleFilterSortData = (sortColumn: string, sortOrderIsAsc: boolean) => {\r\n this.setState({\r\n sortColumn,\r\n sortOrderIsAsc,\r\n });\r\n };\r\n\r\n updateFiltersAfterSave = (orgFilterId: string, savedListFilter: ISavedListFilter, isShared: boolean) => {\r\n if (!savedListFilter) return;\r\n const state = this.state;\r\n const savedFilters = state.savedFilters.filter(i => i.id !== orgFilterId || i.isShared !== isShared);\r\n const filter = ListFilterItem.createListFilterItemFromSavedListFilter(savedListFilter, isShared);\r\n savedFilters.push(filter);\r\n ListFilterItem.sortListFilterItems(savedFilters);\r\n this.setState({\r\n showListFilterSaveDialog: false,\r\n savedFilters,\r\n activeFilterId: \"\",\r\n activeSavedFilterId: savedListFilter.id,\r\n userGroupFilterDialogFilter: filter\r\n });\r\n };\r\n\r\n getActiveFilter = (): IListFilterItem => {\r\n const state = this.state;\r\n return state.activeFilterId\r\n ? state.filters.find(i => i.id === state.activeFilterId)\r\n : state.savedFilters.find(i => i.id === state.activeSavedFilterId);\r\n };\r\n\r\n handleSaveListFilter = async (saveAs: boolean, onGetGeneralFilter: () => any) => {\r\n const state = this.state;\r\n const filter = this.getActiveFilter();\r\n if (!filter) return;\r\n if (!saveAs) {\r\n const savedListFilter = await ListFilterSaveDialog.saveListFilterToDb(filter, this.getGeneralFilterFromState(state), state.sortColumn, state.sortOrderIsAsc, state.activeCompanyId, ApplicationPermissionType.UserGroup);\r\n this.updateFiltersAfterSave(filter.id, savedListFilter, filter.isShared);\r\n } else {\r\n this.setState({\r\n showListFilterSaveDialog: true,\r\n listFilterSaveDialogFilter: filter,\r\n listFilterSaveDialogReservedNames: state.savedFilters.map(i => i.id).concat(state.filters.map(i => i.title)),\r\n listFilterSaveDialogGeneralFilter: this.getGeneralFilterFromState(state),\r\n listFilterSaveDialogOnGetGeneralFilter: onGetGeneralFilter\r\n });\r\n }\r\n };\r\n\r\n handleSaveListFilterDialogOk = (savedListFilter: ISavedListFilter, isShared: boolean) => {\r\n this.updateFiltersAfterSave(\"\", savedListFilter, isShared);\r\n };\r\n\r\n handleSaveListFilterDialogCancel = () => {\r\n this.setState({\r\n showListFilterSaveDialog: false\r\n });\r\n };\r\n // #endregion Saved Filter\r\n\r\n // #region UserGroup Filter\r\n handleOpenUserGroupFilterDialog = () => {\r\n const filter = this.getActiveFilter();\r\n if (!filter) return;\r\n this.setState({\r\n showUserGroupFilterDialog: true,\r\n userGroupFilterDialogFilter: filter\r\n });\r\n };\r\n\r\n onUserGroupFilterDialogOk = (closeDialog: boolean, authorizationLevelId: string): any => {\r\n const newState = { ...this.state, authorizationLevelId };\r\n this.setState({\r\n showUserGroupFilterDialog: !closeDialog,\r\n authorizationLevelId,\r\n userGroupFilterIsSet: this.getUserGroupFilterIsSet(newState)\r\n });\r\n return this.getGeneralFilterFromState(newState);\r\n };\r\n \r\n onUserGroupFilterDialogCancel = () => {\r\n this.setState({ showUserGroupFilterDialog: false });\r\n };\r\n // #endregion UserGroup Filter\r\n\r\n handleOpenPermissions = async () => {\r\n const result = await AppUtils.callService(() => userGroupService.getUnitNodePermissions(this.state.activeCompanyId), false);\r\n if (!result) return;\r\n this.setState({\r\n showUnitNodePermissionsDialog: true,\r\n unitNodePermissions: result\r\n });\r\n };\r\n\r\n handlePermissionsDialogOk = () => {\r\n this.setState({\r\n dataId: Base.getRandomIntInteger(1000000),\r\n showUnitNodePermissionsDialog: false\r\n });\r\n };\r\n\r\n handlePermissionsDialogCancel = () => {\r\n this.setState({\r\n showUnitNodePermissionsDialog: false\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n const companies = props.userGroupPage ? props.userGroupPage.companies : [];\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n i.id === state.activeSavedFilterId) : null}\r\n sessionState={sessionState}\r\n dataId={state.dataId.toString(10)}\r\n preloaded={true}\r\n waitingPreloadedData={true}\r\n list={props.userGroupPage ? props.userGroupPage.list : null}\r\n listFilterIsSet={state.userGroupFilterIsSet}\r\n authorizationLevelIds={[state.authorizationLevelId]}\r\n companyId={state.activeCompanyId}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n onRefreshSessionState={props.onRefreshSessionState}\r\n onSetSortData={this.handleFilterSortData}\r\n settingsActions={state.settingsActions}\r\n onToggleSettingsDialog={this.handleOpenPermissions}\r\n onOpenFiltersDialog={this.handleOpenUserGroupFilterDialog}\r\n reportTabs={\r\n \r\n }\r\n />\r\n \r\n {state.showUnitNodePermissionsDialog &&\r\n \r\n }\r\n \r\n {state.showListFilterSaveDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","/* eslint-disable no-unused-vars */\r\nimport * as React from \"react\";\r\n/* eslint-enable no-unused-vars */\r\nimport { connect } from \"react-redux\";\r\nimport { IApplicationState } from \"../../models/store/storeTypes\";\r\nimport * as storeEffects from \"../../models/store/storeEffects\";\r\nimport { IUserGroupPageOwnProps, IUserGroupPageStateProps, IUserGroupPageDispatchProps, UserGroupPage } from \"../../components/userGroup/UserGroupPage\";\r\nimport { ITypedOption } from \"../../models/common/typedOption\";\r\n\r\nexport function mapStateToProps(applicationState: IApplicationState, ownProps: IUserGroupPageOwnProps): IUserGroupPageStateProps {\r\n if (!applicationState || !applicationState.front) {\r\n return {\r\n appState: null,\r\n dataId: -1,\r\n userGroupPage: null\r\n };\r\n }\r\n const userGroups = applicationState.userGroups;\r\n return {\r\n appState: applicationState.session,\r\n dataId: userGroups.dataId,\r\n userGroupPage: userGroups.userGroupPage\r\n };\r\n}\r\n\r\nexport function mapDispatchToProps(dispatch: storeEffects.LogThunkDispatch): IUserGroupPageDispatchProps {\r\n return {\r\n onGetUserGroupsPage: () => dispatch(storeEffects.getUserGroupsPage()),\r\n onLogout: () => dispatch(storeEffects.logout()),\r\n onSetCulture: (culture: string) => dispatch(storeEffects.setCulture(culture)),\r\n onSaveUserParameters: (parameters: ITypedOption[]) => dispatch(storeEffects.saveUserParameters(parameters)),\r\n onRefreshSessionState: () => dispatch(storeEffects.refreshSessionState()),\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(UserGroupPage);","//WhistleBlowArchiveSelectTypeDialog\r\n//***********************************************************************************************************************\r\nimport { FormControlLabel, Radio, RadioGroup } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { WhistleBlowArchivingType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\n\r\n//WhistleBlowArchiveSelectTypeDialog\r\nexport interface IWhistleBlowArchiveSelectTypeDialogProps {\r\n classes?: string;\r\n type1Disabled?: boolean;\r\n type2Disabled?: boolean;\r\n onOk: (archivingType: WhistleBlowArchivingType) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IWhistleBlowArchiveSelectTypeDialogState {\r\n archivingType: WhistleBlowArchivingType;\r\n}\r\n\r\nexport class WhistleBlowArchiveSelectTypeDialog extends React.Component {\r\n constructor(props: IWhistleBlowArchiveSelectTypeDialogProps) {\r\n super(props);\r\n this.state = {\r\n archivingType: WhistleBlowArchivingType.ChangeStateAndRemoveAllData\r\n };\r\n }\r\n\r\n handleChange = (checked: boolean, archivingType: WhistleBlowArchivingType) => {\r\n if (!checked) return;\r\n this.setState({\r\n archivingType\r\n });\r\n };\r\n\r\n handleCancel = () => {\r\n this.props.onCancel();\r\n };\r\n\r\n handleOk = async () => {\r\n const state = this.state;\r\n this.props.onOk(state.archivingType);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n {!props.type1Disabled &&\r\n }\r\n label={Translations.WhistleBlowArchivingTypeChangeState}\r\n onClick={() => this.handleChange(true, WhistleBlowArchivingType.ChangeState)}\r\n />\r\n }\r\n {!props.type2Disabled &&\r\n }\r\n label={Translations.WhistleBlowArchivingTypeChangeStateAndRemoveInformantData}\r\n onClick={() => this.handleChange(true, WhistleBlowArchivingType.ChangeStateAndRemoveInformantData)}\r\n />\r\n }\r\n }\r\n label={Translations.WhistleBlowArchivingTypeChangeStateAndRemoveAllData}\r\n onClick={() => this.handleChange(true, WhistleBlowArchivingType.ChangeStateAndRemoveAllData)}\r\n />\r\n \r\n }\r\n buttons={[\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: this.handleCancel },\r\n { title: Translations.OK, variant: \"confirmation\", onClick: this.handleOk },\r\n ]}\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","import { TextField } from \"@mui/material\";\r\nimport React, { ReactNode } from \"react\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\ninterface SearchFieldProps {\r\n value?: string;\r\n name?: string;\r\n disabled?: boolean;\r\n buttonVisible?: boolean;\r\n buttonTitle?: string;\r\n buttonIcon?: ReactNode;\r\n buttonDisabled?: boolean;\r\n buttonVariant?: \"text\" | \"outlined\" | \"contained\";\r\n maxLength?: number;\r\n onChange?: React.ChangeEventHandler;\r\n onSubmit?: React.MouseEventHandler;\r\n}\r\n\r\nexport const SearchField = ({ value, name, disabled, buttonTitle, buttonIcon, buttonDisabled, buttonVariant = \"outlined\", buttonVisible = true, maxLength, onChange, onSubmit }: SearchFieldProps) => {\r\n return (\r\n {buttonTitle || buttonIcon}\r\n )\r\n }} />\r\n );\r\n};\r\n","// WhistleBlowEditDialogLogList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { whistleBlowSystemUserCode } from \"ui/Scripts/source/models/consts\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IWhistleBlowEventLogListItem } from \"ui/Scripts/source/models/whistleBlow/whistleBlowEventLogListItem\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { infiniteListPageSize } from \"../../../models/common/webConsts\";\r\nimport * as whistleBlowService from \"../../../models/services/whistleBlowService\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\n\r\n// WhistleBlowEditDialogLogList\r\nexport interface IWhistleBlowEditDialogLogListProp {\r\n whistleBlowId: string;\r\n}\r\n\r\ninterface IWhistleBlowEditDialogLogListState {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n pageSize: number;\r\n page: number;\r\n hasMore: boolean;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n items: IWhistleBlowEventLogListItem[];\r\n selectedId: string;\r\n}\r\n\r\nexport class WhistleBlowEditDialogLogList extends React.Component {\r\n constructor(props: IWhistleBlowEditDialogLogListProp) {\r\n super(props);\r\n this.state = {\r\n intialized: false,\r\n isLoading: false,\r\n page: 1,\r\n hasMore: true,\r\n filter: \"\",\r\n pageSize: infiniteListPageSize,\r\n sortColumn: \"modifyDate\",\r\n sortOrderIsAsc: false,\r\n items: [],\r\n selectedId: null,\r\n };\r\n }\r\n\r\n searchItems = async (pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean, moveNext: boolean = false) => {\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => whistleBlowService.getWhistleBlowEventLogListItems(this.props.whistleBlowId, !refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1, filter, sortColumn, sortOrderIsAsc), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const state = this.state;\r\n const items = List.getListItems(state.items, state.selectedId, [], result.items, resetItems, refreshList);\r\n let selectedId = items.selectedId;\r\n let index = items.items.findIndex(i => i.id === selectedId);\r\n let detailsItem = index > -1 ? items.items[index] : null;\r\n if (moveNext && detailsItem && index < items.items.length - 1) {\r\n index = index + 1;\r\n detailsItem = items.items[index];\r\n selectedId = items.items[index].id;\r\n }\r\n this.setState({\r\n intialized: true,\r\n isLoading: false,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n selectedId,\r\n });\r\n };\r\n\r\n refreshList = async () => {\r\n const state = this.state;\r\n await this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, true, false);\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly, _prevState: Readonly): void {\r\n const state = this.state;\r\n const props = this.props;\r\n\r\n if (prevProps.whistleBlowId !== props.whistleBlowId) {\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId\r\n });\r\n };\r\n\r\n render() {\r\n const state = this.state;\r\n return (\r\n \r\n \r\n }\r\n />\r\n {\r\n return {\r\n columns: [\r\n { size: 2, content: Base.timeToDateTimeStr(item.modifyUser.date) },\r\n { size: 2, content: item.eventTypeStr },\r\n { size: 6, content: item.description },\r\n { size: 2, content: item.modifyUser.code === whistleBlowSystemUserCode ? Translations.WhistleBlowInformant : item.modifyUser.name },\r\n ],\r\n id: item.id\r\n };\r\n })}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n />\r\n \r\n );\r\n }\r\n}","import downloadjs from \"downloadjs\";\r\nimport * as React from \"react\";\r\nimport MessageListLine from \"source/components/framework/Message/MessageLine/MessageLine\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IWhistleBlowEditItemMessage } from \"ui/Scripts/source/models/whistleBlow/whistleBlowEditItemMessage\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as attachmentService from \"../../../models/services/attachmentService\";\r\n\r\n//WhistleBlowEditDialogMessageListLine\r\nexport interface IWhistleBlowEditDialogMessageListLineProp {\r\n observer: IntersectionObserver;\r\n message: IWhistleBlowEditItemMessage;\r\n selectedId: string;\r\n onClick: (id: string) => void;\r\n}\r\n\r\nexport class WhistleBlowEditDialogMessageListLine extends React.Component {\r\n private observer: IntersectionObserver = null;\r\n private lineDiv = React.createRef();\r\n\r\n registerToObserver = () => {\r\n const props = this.props;\r\n if (!props.observer || !this.lineDiv || !props.message || props.message.myMessage) return;\r\n this.observer = props.observer;\r\n this.observer.observe(this.lineDiv.current);\r\n };\r\n\r\n unregisterFromObserver = () => {\r\n if (!this.observer || !this.lineDiv) return;\r\n this.observer.unobserve(this.lineDiv.current);\r\n };\r\n\r\n componentDidMount(): void {\r\n this.registerToObserver();\r\n }\r\n\r\n componentDidUpdate(prevProps: IWhistleBlowEditDialogMessageListLineProp) {\r\n const props = this.props;\r\n const prevObserverExists = !!prevProps.observer;\r\n const observerExists = !!props.observer;\r\n if (prevObserverExists === observerExists) return;\r\n this.unregisterFromObserver();\r\n if (observerExists) {\r\n this.registerToObserver();\r\n }\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this.unregisterFromObserver();\r\n }\r\n\r\n handleAttachmentClick = async (id: string) => {\r\n if (!id) return;\r\n const props = this.props;\r\n const attachment = props.message.attachments.find(i => i.id === id);\r\n if (!attachment) return;\r\n if (attachment.file) {\r\n downloadjs(attachment.file, attachment.name);\r\n return;\r\n }\r\n if (attachment.isNew()) return;\r\n const fileName = await AppUtils.callService(() => attachmentService.getAttachment(id));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.AttachmentParameterDownloaded, fileName));\r\n };\r\n \r\n render() {\r\n const props = this.props;\r\n const message = props.message;\r\n return (\r\n \r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { FileAttachment, IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { ConfirmationDialogResult, FileType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IWhistleBlowEditItemMessage, WhistleBlowEditItemMessage } from \"ui/Scripts/source/models/whistleBlow/whistleBlowEditItemMessage\";\r\nimport { SaveAttachmentBase64 } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/saveAttachmentBase64\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as whistleBlowService from \"../../../models/services/whistleBlowService\";\r\nimport { StoreUtils } from \"../../../models/store/storeUtils\";\r\nimport { NewMessage } from \"../../framework/Message/NewMessage\";\r\n\r\n// WhistleBlowEditDialogMessageListNewAttachmentImage\r\nexport interface IWhistleBlowEditDialogMessageListNewAttachmentImageProp {\r\n attachment: IFileAttachment;\r\n selectedId: string;\r\n onClick: (id: string) => void;\r\n onDropAttachments?: (e: any) => Promise;\r\n onDragOverAttachments?: (e: any) => void;\r\n onDragEnterAttachments?: (e: any) => void;\r\n onDragLeaveAttachments?: (e: any) => void;\r\n}\r\n\r\nexport class WhistleBlowEditDialogMessageListNewAttachmentImage extends React.Component {\r\n render() {\r\n const props = this.props;\r\n const attachment = props.attachment;\r\n return (\r\n
    { props.onClick(attachment.id); }} title={attachment.name + \" (\" + Base.intToFileSizeStr(attachment.size, false) + \", \" + Base.timeToDateStr(attachment.modifyDate) + \")\"}\r\n onDrop={props.onDropAttachments} onDragOver={props.onDragOverAttachments} onDragEnter={props.onDragEnterAttachments} onDragLeave={props.onDragLeaveAttachments}>\r\n {attachment.name}\r\n
    \r\n );\r\n }\r\n}\r\n\r\n// WhistleBlowEditDialogMessageListNewAttachment\r\nexport interface IWhistleBlowEditDialogMessageListNewAttachmentProp {\r\n attachment: IFileAttachment;\r\n selectedId: string;\r\n onClick: (id: string) => void;\r\n onDropAttachments?: (e: any) => Promise;\r\n onDragOverAttachments?: (e: any) => void;\r\n onDragEnterAttachments?: (e: any) => void;\r\n onDragLeaveAttachments?: (e: any) => void;\r\n}\r\n\r\nexport class WhistleBlowEditDialogMessageListNewAttachment extends React.Component {\r\n render() {\r\n const props = this.props;\r\n const attachment = props.attachment;\r\n return (\r\n
    { e.stopPropagation(); props.onClick(attachment.id); }} title={attachment.name + \" (\" + Base.intToFileSizeStr(attachment.size, false) + \", \" + Base.timeToDateStr(attachment.modifyDate) + \")\"}\r\n onDrop={props.onDropAttachments} onDragOver={props.onDragOverAttachments} onDragEnter={props.onDragEnterAttachments} onDragLeave={props.onDragLeaveAttachments}>\r\n \r\n {attachment.name + \" (\" + Base.intToFileSizeStr(attachment.size, false) + \")\"}\r\n
    \r\n );\r\n }\r\n}\r\n// WhistleBlowEditDialogMessageListNew\r\nexport interface IWhistleBlowEditDialogMessageListNewProp {\r\n classes?: string;\r\n isReadOnly: boolean;\r\n whistleBlowId: string;\r\n internalMessages: boolean;\r\n maxAttachmentsTotalSize: number;\r\n onSetMessagesContainerMargin: (margin: number) => void;\r\n onWhistleBlowMessageSaved: (item: IWhistleBlowEditItemMessage) => void;\r\n}\r\n\r\ninterface IWhistleBlowEditDialogMessageListNewState {\r\n content: string;\r\n attachments: FileAttachment[];\r\n sending: boolean;\r\n}\r\n\r\nexport class WhistleBlowEditDialogMessageListNew extends React.Component {\r\n private newMessageContainerDiv: HTMLDivElement;\r\n private attachmentsContainerDiv: HTMLDivElement;\r\n private attachmentsContainerDivSizeHash: string;\r\n private attachmentsContainerResizeObserver: ResizeObserver = null;\r\n\r\n constructor(props: IWhistleBlowEditDialogMessageListNewProp) {\r\n super(props);\r\n this.state = {\r\n content: \"\",\r\n attachments: [],\r\n sending: false\r\n };\r\n }\r\n\r\n updateAttachmentsContainerSize = Base.debounce((obj: WhistleBlowEditDialogMessageListNew) => {\r\n if (!obj.newMessageContainerDiv || !obj.attachmentsContainerDiv) return;\r\n const attachmentsContainerRect = obj.attachmentsContainerDiv.getBoundingClientRect();\r\n const attachmentsContainerDivSizeHash = attachmentsContainerRect.height.toString(10);\r\n if (attachmentsContainerDivSizeHash === obj.attachmentsContainerDivSizeHash) return;\r\n obj.newMessageContainerDiv.style.marginTop = (attachmentsContainerRect.height + 10).toString(10) + \"px\";\r\n obj.props.onSetMessagesContainerMargin(-1 * attachmentsContainerRect.height);\r\n obj.attachmentsContainerDivSizeHash = attachmentsContainerDivSizeHash;\r\n obj.newMessageContainerDiv.scrollIntoView();\r\n }, 25);\r\n\r\n updateAttachmentsContainerResizeHandler = (entries) => {\r\n this.updateAttachmentsContainerSize(this);\r\n };\r\n\r\n destroyResizeObserver = () => {\r\n if (!this.attachmentsContainerResizeObserver) return;\r\n this.attachmentsContainerResizeObserver.disconnect();\r\n this.attachmentsContainerResizeObserver = null;\r\n };\r\n\r\n createResizeObserver = () => {\r\n this.destroyResizeObserver();\r\n if (this.attachmentsContainerDiv) {\r\n this.attachmentsContainerResizeObserver = new ResizeObserver(this.updateAttachmentsContainerResizeHandler);\r\n this.attachmentsContainerResizeObserver.observe(this.attachmentsContainerDiv);\r\n }\r\n };\r\n\r\n componentDidMount(): void {\r\n this.createResizeObserver();\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this.destroyResizeObserver();\r\n }\r\n\r\n getSendingDisabled = (): boolean => {\r\n const state = this.state;\r\n return state.sending || !state.content && state.attachments.length < 1;\r\n };\r\n\r\n getSaveDataFromState = async (props: IWhistleBlowEditDialogMessageListNewProp, state: IWhistleBlowEditDialogMessageListNewState): Promise => {\r\n const result = new SaveDataObj();\r\n result.append(\"whistleBlowId\", props.whistleBlowId);\r\n result.append(\"content\", state.content);\r\n result.append(\"internalMessage\", props.internalMessages);\r\n result.append(\"attachments\", await SaveAttachmentBase64.fromFileAttachments(state.attachments));\r\n return result;\r\n };\r\n\r\n updateSavedMessageToList = (id: string) => {\r\n const props = this.props;\r\n const state = this.state;\r\n const newMessage = new WhistleBlowEditItemMessage();\r\n newMessage.id = id;\r\n newMessage.date = Base.getNowTicks();\r\n newMessage.content = state.content;\r\n newMessage.myMessage = true;\r\n newMessage.isRead = false;\r\n newMessage.isInternal = props.internalMessages;\r\n newMessage.modifyUser = StoreUtils.getNowModifyUser();\r\n newMessage.attachments = state.attachments.slice(0);\r\n props.onWhistleBlowMessageSaved(newMessage);\r\n };\r\n\r\n saveWhistleBlowMessage = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (this.getSendingDisabled()) return;\r\n const confirmation = await AppUtils.showConfirmationDialog(props.internalMessages\r\n ? Translations.WhistleBlowInternalMessageConfirmation\r\n : Translations.WhistleBlowInformantMessageConfirmation);\r\n if (confirmation !== ConfirmationDialogResult.Yes) return;\r\n if (!props.internalMessages) {\r\n if (!AppUtils.validateFileAttachments(state.attachments, Translations.MaximumTotalSizeOfAttachmentsIsParameterMB, props.maxAttachmentsTotalSize)) return;\r\n }\r\n this.setState({ sending: true });\r\n try {\r\n const saveData = await this.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = await AppUtils.callService(() => whistleBlowService.whistleBlowEditAddMessage(saveData.obj), false, true);\r\n if (!result) return null;\r\n this.updateSavedMessageToList(result.id);\r\n this.setState({\r\n content: \"\",\r\n attachments: [],\r\n });\r\n } finally {\r\n this.setState({ sending: false });\r\n }\r\n };\r\n\r\n // #region Attachments\r\n checkAttachments = (fileList: FileList): boolean => {\r\n if (this.props.internalMessages) return true;\r\n const invalidAttachmentNames: string[] = [];\r\n for (let i = 0; i < fileList.length; i++) {\r\n const file = fileList[i];\r\n if (Base.isNullOrUndefined(file)) continue;\r\n const fileType: FileType = Base.getFileType(file.name);\r\n if (fileType !== FileType.Image && fileType !== FileType.Pdf) {\r\n invalidAttachmentNames.push(file.name);\r\n }\r\n }\r\n if (invalidAttachmentNames.length < 1) return true;\r\n AppUtils.showErrorMessage(String.format(Translations.OnlyImageAndPdfAttachmentsAreAllowedInvalidAttachmentParamater, invalidAttachmentNames.join(\", \")));\r\n return false;\r\n };\r\n\r\n handleAddAttachment = async (fileList: FileList) => {\r\n if (!this.checkAttachments(fileList)) return false;\r\n const state = this.state;\r\n const attachments = await FileAttachment.addFileListToFileAttachments(state.attachments, fileList, 0);\r\n if (attachments.length < 1) return;\r\n for (const attachment of attachments) {\r\n if (!AppUtils.validateFileAttachment(attachment, Translations.MaximumSizeOfInstantMessageAttachmentIsParameterMB)) return;\r\n }\r\n if (!AppUtils.validateFileAttachments(attachments)) return;\r\n this.setState({\r\n attachments\r\n });\r\n };\r\n\r\n handleAddAttachments = (newAttachments: FileAttachment[]) => {\r\n if (!newAttachments || newAttachments.length < 1) return;\r\n const attachments = this.state.attachments.slice(0);\r\n for (const newAttachment of newAttachments) {\r\n if (!newAttachment) return;\r\n attachments.push(newAttachment);\r\n }\r\n if (attachments.length < 1 || !AppUtils.validateFileAttachments(attachments)) return;\r\n this.setState({\r\n attachments\r\n });\r\n };\r\n\r\n //handleSetAttachmentDropZone = (value: boolean) => {\r\n // if (!this.inputElement) return;\r\n // if (value) {\r\n // this.inputElement.classList.add(\"draggingOver\");\r\n // } else {\r\n // this.inputElement.classList.remove(\"draggingOver\");\r\n // }\r\n //};\r\n\r\n //handlePasteAttachments = async (e: any) => {\r\n // if (!e.clipboardData.files) {\r\n // return;\r\n // }\r\n // const clipboardItems = e.clipboardData.files;\r\n // const attachments = this.state.attachments.slice(0);\r\n // for (const clipboardItem of clipboardItems) {\r\n // const attachment = await this.props.getFileAttachment(clipboardItem, 0);\r\n // if (!attachment) return;\r\n // attachments.push(attachment);\r\n // }\r\n // if (attachments.length < 1 || !AppUtils.validateFileAttachments(attachments)) return;\r\n // this.setState({\r\n // attachments\r\n // });\r\n //};\r\n\r\n handleRemoveAttachment = (id: string) => {\r\n const state = this.state;\r\n if (!id) return;\r\n const attachments = state.attachments.filter(i => i.id !== id);\r\n this.setState({\r\n attachments\r\n });\r\n };\r\n // #endregion Attachments\r\n\r\n //# region General\r\n handleChange = (event) => {\r\n this.setState({ content: event.target.value });\r\n };\r\n // #endregion General\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const imageAttachments = state.attachments.filter(i => i.type === FileType.Image);\r\n const fileAttachments = state.attachments.filter(i => i.type !== FileType.Image);\r\n return (\r\n this.handleChange(e)}\r\n onSend={this.saveWhistleBlowMessage}\r\n onAddAttachment={this.handleAddAttachment}\r\n onRemoveAttachment={this.handleRemoveAttachment}\r\n fileAttachments={fileAttachments}\r\n imageAttachments={imageAttachments}\r\n disabled={props.isReadOnly}\r\n sendDisabled={props.isReadOnly || this.getSendingDisabled()}\r\n sendButtonTooltip={props.internalMessages ? Translations.SaveMessage : Translations.SendMessage}\r\n />\r\n );\r\n }\r\n}","import { Alert } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { MessageContainer } from \"source/components/framework/Message/MessageContainer\";\r\nimport { MessageListContainer } from \"source/components/framework/Message/MessageListContainer\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IWhistleBlowEditItemMessage } from \"ui/Scripts/source/models/whistleBlow/whistleBlowEditItemMessage\";\r\nimport * as whistleBlowService from \"../../../models/services/whistleBlowService\";\r\nimport { WhistleBlowEditDialogMessageListLine } from \"../WhistleBlowEditDialogMessageListLine\";\r\nimport { WhistleBlowEditDialogMessageListNew } from \"../WhistleBlowEditDialogMessageListNew\";\r\n\r\n//WhistleBlowEditDialogMessageList\r\nexport interface IWhistleBlowEditDialogMessageListProp {\r\n classes?: string;\r\n whistleBlowId: string;\r\n internalMessages: boolean;\r\n maxAttachmentsTotalSize: number;\r\n isReadOnly: boolean;\r\n messages: IWhistleBlowEditItemMessage[];\r\n onWhistleBlowMessageSaved: (internal: boolean, newMessage: IWhistleBlowEditItemMessage) => void;\r\n onWhistleBlowMessageRead: (internal: boolean, id: string) => void;\r\n}\r\n\r\ninterface IWhistleBlowEditDialogMessageListState {\r\n selectedId: string;\r\n observer: IntersectionObserver;\r\n}\r\n\r\nexport class WhistleBlowEditDialogMessageList extends React.Component {\r\n private messagesContainerDiv = React.createRef();\r\n private readReceiptProcessingIds: string[] = [];\r\n private readReceiptProcessedIds: string[] = [];\r\n\r\n intersectionCallback = (entries: IntersectionObserverEntry[], observer: IntersectionObserver) => {\r\n const props = this.props;\r\n for (const entry of entries) {\r\n if (!entry.isIntersecting || entry.intersectionRatio < 0.75) continue;\r\n const line = entry.target as HTMLDivElement;\r\n if (!line) continue;\r\n //line.style.backgroundColor = \"#FFD800\"\r\n const id = line.getAttribute(\"data-id\");\r\n if (!id) return;\r\n const item = this.props.messages.find(i => i.id === id);\r\n if (!item || item.myMessage || item.isRead) continue;\r\n const processing = this.readReceiptProcessingIds.indexOf(id) > -1;\r\n if (processing) continue;\r\n const processed = this.readReceiptProcessedIds.indexOf(id) > -1;\r\n if (processed) continue;\r\n this.readReceiptProcessingIds.push(id);\r\n whistleBlowService.sendWhistleBlowMessageReadReceipts(this.props.whistleBlowId, [id], this.props.internalMessages)\r\n .then(result => {\r\n if (result) {\r\n this.readReceiptProcessedIds.push(id);\r\n props.onWhistleBlowMessageRead(props.internalMessages, id);\r\n }\r\n })\r\n .finally(() => {\r\n this.readReceiptProcessingIds = this.readReceiptProcessingIds.filter(i => i !== id);\r\n });\r\n }\r\n };\r\n\r\n createObserver = (): IntersectionObserver => {\r\n const observer = new IntersectionObserver(this.intersectionCallback, {\r\n root: this.messagesContainerDiv.current,\r\n rootMargin: \"0px\",\r\n threshold: 0.9\r\n });\r\n this.setState({\r\n observer\r\n });\r\n return observer;\r\n };\r\n\r\n removeObserver = () => {\r\n const state = this.state;\r\n if (!state.observer) return;\r\n state.observer.disconnect();\r\n this.setState({\r\n observer: null\r\n });\r\n };\r\n\r\n scrollToBottom = () => {\r\n this.messagesContainerDiv.current.scrollTo({\r\n top: this.messagesContainerDiv.current.scrollHeight,\r\n left: 0,\r\n behavior: \"auto\"\r\n });\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n observer: null,\r\n selectedId: null\r\n };\r\n }\r\n\r\n componentDidMount(): void {\r\n //Observer\r\n this.createObserver();\r\n this.scrollToBottom();\r\n }\r\n\r\n componentWillUnmount(): void {\r\n //Observer\r\n this.removeObserver();\r\n }\r\n \r\n handleMessageClick = (id: string) => {\r\n this.setState({\r\n selectedId: id\r\n });\r\n };\r\n\r\n handleSetMessagesContainerMargin = (margin: number) => {\r\n if (!this.messagesContainerDiv) return;\r\n this.messagesContainerDiv.current.style.marginBottom = (margin).toString(10) + \"px\";\r\n };\r\n\r\n handleWhistleBlowMessageSaved = (item: IWhistleBlowEditItemMessage) => {\r\n const props = this.props;\r\n props.onWhistleBlowMessageSaved(props.internalMessages, item);\r\n window.setTimeout(() => {\r\n this.scrollToBottom();\r\n }, 50);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const messages = props.messages;\r\n return (\r\n \r\n \r\n {!props.isReadOnly && messages.length < 1 &&\r\n {Translations.WhistleBlowDoesNotContainAnyMessage}\r\n }\r\n {messages.map((message) =>\r\n \r\n )}\r\n \r\n \r\n \r\n );\r\n }\r\n}","// WhistleBlowEditDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport CheckCircleIcon from \"@mui/icons-material/CheckCircle\";\r\nimport CircleIcon from \"@mui/icons-material/Circle\";\r\nimport InboxIcon from \"@mui/icons-material/Inbox\";\r\nimport MoveToInboxIcon from \"@mui/icons-material/MoveToInbox\";\r\nimport WatchLaterIcon from \"@mui/icons-material/WatchLater\";\r\nimport { Alert, Box, Checkbox, FormControlLabel, Grid, MenuItem, Select, TextField, Typography } from \"@mui/material\";\r\nimport downloadjs from \"downloadjs\";\r\nimport * as React from \"react\";\r\nimport { Dropdown, IDropdownAction } from \"ui/Scripts/source/components/framework/Dropdown/Dropdown\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { EditItem } from \"ui/Scripts/source/models/common/editItem\";\r\nimport { FileAttachment, IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { ConfirmationDialogResult, EnumHelper, WhistleBlowArchiveState, WhistleBlowArchivingType, WhistleBlowResolution, WhistleBlowSeverity, WhistleBlowSource, WhistleBlowState } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { IWhistleBlowEditItem } from \"ui/Scripts/source/models/whistleBlow/whistleBlowEditItem\";\r\nimport { IWhistleBlowEditItemMessage, WhistleBlowEditItemMessage } from \"ui/Scripts/source/models/whistleBlow/whistleBlowEditItemMessage\";\r\nimport { IWhistleBlowCategoryListItem } from \"ui/Scripts/source/models/whistleBlowCategory/whistleBlowCategoryListItem\";\r\nimport { SaveAttachmentBase64 } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/common/saveAttachmentBase64\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as attachmentService from \"../../../models/services/attachmentService\";\r\nimport * as whistleBlowService from \"../../../models/services/whistleBlowService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { UserListItems } from \"../../../models/user/userListItems\";\r\nimport { AttachmentList } from \"../../attachments/AttachmentList\";\r\n// import { DatePicker } from \"../../framework/DateTime/DatePicker\";\r\n// import { TimePicker } from \"../../framework/DateTime/TimePicker\";\r\nimport { ConfirmationButton } from \"../../framework/Button/ConfirmationButton\";\r\nimport { DangerButton } from \"../../framework/Button/DangerButton\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { DialogSectionCard } from \"../../framework/Dialog/DialogSectionCard\";\r\nimport { DialogTabs } from \"../../framework/Dialog/DialogTabs\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { SearchField } from \"../../framework/SearchField\";\r\nimport { SelectUnitDialog } from \"../../framework/Unit/SelectUnitDialog\";\r\nimport { UserBlocks } from \"../../user/UserBlocks/UserBlocks\";\r\nimport { WhistleBlowArchiveDialog } from \"../WhistleBlowArchiveDialog\";\r\nimport { WhistleBlowArchiveSelectTypeDialog } from \"../WhistleBlowArchiveSelectTypeDialog\";\r\nimport { WhistleBlowEditDialogLogList } from \"../WhistleBlowEditDialogLogList\";\r\nimport { WhistleBlowEditDialogMessageList } from \"../WhistleBlowEditDialogMessageList\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum WhistleBlowEditDialogMenuItem {\r\n Informant = \"1\",\r\n Company = \"2\",\r\n Log = \"3\",\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n//WhistleBlowEditDialog\r\nexport interface IWhistleBlowEditDialogProp {\r\n sessionState: ISessionState;\r\n maxAttachmentsTotalSize: number;\r\n whistleBlowId: string;\r\n classes?: string;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onOk: () => void;\r\n onCancel: () => void;\r\n onRefreshList: () => Promise;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n}\r\n\r\nexport interface IWhistleBlowEditDialogState {\r\n activeMenuItem: WhistleBlowEditDialogMenuItem;\r\n whistleBlowStateOptions: IDropdownAction[];\r\n isLoading: boolean;\r\n whistleBlow: IWhistleBlowEditItem;\r\n canReadInformantData: boolean;\r\n canEditInformantData: boolean;\r\n isResolved: boolean;\r\n isArchived: boolean;\r\n archiveState: WhistleBlowArchiveState;\r\n units: IIdTitleNode[];\r\n categories: IWhistleBlowCategoryListItem[];\r\n unitId: string;\r\n unitCode: string;\r\n categoryId: string;\r\n state: WhistleBlowState;\r\n stateStr: string;\r\n severity: WhistleBlowSeverity;\r\n resolution: WhistleBlowResolution;\r\n resolutionComment: string;\r\n source: WhistleBlowSource;\r\n sourceComment: string;\r\n code: string;\r\n anonymous: boolean;\r\n title: string;\r\n dateStr: string;\r\n timeStr: string;\r\n description: string;\r\n informantName: string;\r\n informantEmail: string;\r\n informantPhone: string;\r\n informantPasswordConfirmed: boolean;\r\n attachments: IFileAttachment[];\r\n publicMessages: IWhistleBlowEditItemMessage[];\r\n internalMessages: IWhistleBlowEditItemMessage[];\r\n handlers: IModifyUser[];\r\n showSelectUnitDialog: boolean;\r\n showWhistleBlowArchiveSelectTypeDialog: boolean;\r\n}\r\n\r\nconst getStateChipIcon = (state: WhistleBlowState) => {\r\n switch (state) {\r\n case WhistleBlowState.New:\r\n return ;\r\n case WhistleBlowState.Received:\r\n return ;\r\n case WhistleBlowState.InProgress:\r\n return ;\r\n case WhistleBlowState.Resolved:\r\n return ;\r\n case WhistleBlowState.Archived:\r\n case WhistleBlowState.Archived1:\r\n case WhistleBlowState.Archived2:\r\n case WhistleBlowState.Archived3:\r\n return ;\r\n }\r\n};\r\n\r\nexport class WhistleBlowEditDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n getWhistleBlowStateOption = (whistleBlowState: WhistleBlowState, classes: string = null): IDropdownAction => {\r\n const text = EnumHelper.WhistleBlowStateToStr(whistleBlowState);\r\n return {\r\n title: {getStateChipIcon(whistleBlowState)}{text},\r\n textTitle: text,\r\n classes,\r\n onClick: () => this.handleStateChane(whistleBlowState)\r\n };\r\n };\r\n\r\n getWhistleBlowStateOptions = (whistleBlow: IWhistleBlowEditItem): IDropdownAction[] => {\r\n if (!whistleBlow) {\r\n return [\r\n this.getWhistleBlowStateOption(WhistleBlowState.New),\r\n this.getWhistleBlowStateOption(WhistleBlowState.Received),\r\n this.getWhistleBlowStateOption(WhistleBlowState.InProgress),\r\n this.getWhistleBlowStateOption(WhistleBlowState.Resolved)\r\n ];\r\n }\r\n const result: IDropdownAction[] = [];\r\n if (EnumHelper.isLessThan(whistleBlow.state, WhistleBlowState.Received)) {\r\n result.push(this.getWhistleBlowStateOption(WhistleBlowState.New));\r\n }\r\n if (EnumHelper.isLessThan(whistleBlow.state, WhistleBlowState.InProgress)) {\r\n result.push(this.getWhistleBlowStateOption(WhistleBlowState.Received));\r\n }\r\n if (EnumHelper.isLessThan(whistleBlow.state, WhistleBlowState.Archived)) {\r\n result.push(this.getWhistleBlowStateOption(WhistleBlowState.InProgress));\r\n }\r\n result.push(this.getWhistleBlowStateOption(WhistleBlowState.Resolved));\r\n if (EnumHelper.isEqual(whistleBlow.state, WhistleBlowState.Archived)) {\r\n result.push(this.getWhistleBlowStateOption(WhistleBlowState.Archived, \"darkSelect\"));\r\n }\r\n return result;\r\n };\r\n\r\n constructor(props: IWhistleBlowEditDialogProp) {\r\n super(props);\r\n const state = WhistleBlowState.New;\r\n this.state = {\r\n activeMenuItem: WhistleBlowEditDialogMenuItem.Informant,\r\n whistleBlowStateOptions: this.getWhistleBlowStateOptions(null),\r\n isLoading: false,\r\n whistleBlow: null,\r\n canReadInformantData: false,\r\n canEditInformantData: false,\r\n isResolved: false,\r\n isArchived: false,\r\n archiveState: WhistleBlowArchiveState.NotArchived,\r\n units: [],\r\n categories: [],\r\n unitId: \"\",\r\n unitCode: \"\",\r\n categoryId: \"\",\r\n state,\r\n stateStr: EnumHelper.WhistleBlowStateToStr(state),\r\n severity: WhistleBlowSeverity.Unspecified,\r\n resolution: WhistleBlowResolution.Unspecified,\r\n resolutionComment: \"\",\r\n source: WhistleBlowSource.Unspecified,\r\n sourceComment: \"\",\r\n code: \"\",\r\n anonymous: true,\r\n title: \"\",\r\n dateStr: \"\",\r\n timeStr: \"\",\r\n description: \"\",\r\n informantName: \"\",\r\n informantEmail: \"\",\r\n informantPhone: \"\",\r\n informantPasswordConfirmed: false,\r\n attachments: [],\r\n publicMessages: [],\r\n internalMessages: [],\r\n handlers: [],\r\n showSelectUnitDialog: false,\r\n showWhistleBlowArchiveSelectTypeDialog: false\r\n };\r\n }\r\n\r\n loadWhistleBlow = async (whistleBlowId: string): Promise => {\r\n const props = this.props;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => whistleBlowService.getWhistleBlowEdit(whistleBlowId), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return false;\r\n const whistleBlow = result.whistleBlow;\r\n const state = {\r\n ...this.state,\r\n activeMenuItem: this.state.activeMenuItem === WhistleBlowEditDialogMenuItem.Informant && !result.canReadInformantData\r\n ? WhistleBlowEditDialogMenuItem.Company\r\n : this.state.activeMenuItem,\r\n whistleBlowStateOptions: this.getWhistleBlowStateOptions(whistleBlow),\r\n whistleBlow,\r\n canReadInformantData: result.canReadInformantData,\r\n canEditInformantData: result.canEditInformantData,\r\n isResolved: EnumHelper.isEqual(whistleBlow.state, WhistleBlowState.Resolved),\r\n isArchived: EnumHelper.isEqual(whistleBlow.state, WhistleBlowState.Archived),\r\n archiveState: whistleBlow.archiveState,\r\n units: result.units,\r\n categories: result.categories,\r\n unitId: whistleBlow.unitId,\r\n unitCode: whistleBlow.unitCode,\r\n categoryId: whistleBlow.categoryId,\r\n state: whistleBlow.state,\r\n stateStr: EnumHelper.WhistleBlowStateToStr(whistleBlow.state),\r\n severity: whistleBlow.severity,\r\n resolution: whistleBlow.resolution,\r\n resolutionComment: whistleBlow.resolutionComment,\r\n source: whistleBlow.source,\r\n sourceComment: whistleBlow.sourceComment,\r\n code: whistleBlow.code,\r\n anonymous: whistleBlow.anonymous,\r\n title: whistleBlow.title,\r\n dateStr: Base.timeToDateStr(whistleBlow.date),\r\n timeStr: Base.timeToTimeStr(whistleBlow.date),\r\n description: whistleBlow.description,\r\n informantName: whistleBlow.informantName,\r\n informantEmail: whistleBlow.informantEmail,\r\n informantPhone: whistleBlow.informantPhone,\r\n informantPasswordConfirmed: whistleBlow.informantPasswordConfirmed,\r\n attachments: whistleBlow.attachments,\r\n publicMessages: whistleBlow.messages.filter(i => !i.isInternal),\r\n internalMessages: whistleBlow.messages.filter(i => i.isInternal),\r\n handlers: whistleBlow.handlers\r\n };\r\n this.setState(state);\r\n const saveData = this.getSaveDataFromState(props, state);\r\n this.orgStateHash = saveData.hash;\r\n return result.canReadInformantData;\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadWhistleBlow(this.props.whistleBlowId);\r\n }\r\n\r\n async componentDidUpdate(prevProps: IWhistleBlowEditDialogProp, prevState: IWhistleBlowEditDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if (prevProps.whistleBlowId === props.whistleBlowId) return;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb()) return;\r\n if (!props.onRefreshList) {\r\n await props.onRefreshList();\r\n }\r\n }\r\n const canReadInformantData = await this.loadWhistleBlow(props.whistleBlowId);\r\n if (prevState.canReadInformantData !== canReadInformantData) {\r\n this.setState({\r\n activeMenuItem: canReadInformantData\r\n ? WhistleBlowEditDialogMenuItem.Informant\r\n : WhistleBlowEditDialogMenuItem.Company\r\n });\r\n }\r\n }\r\n\r\n handleToggleActiveMenuItem = (tabId: WhistleBlowEditDialogMenuItem) => {\r\n this.setState({ activeMenuItem: tabId });\r\n };\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"title\") {\r\n this.setState({ title: value });\r\n } else if (name === \"description\") {\r\n this.setState({ description: value });\r\n } else if (name === \"unitId\") {\r\n this.setState({ unitId: value });\r\n } else if (name === \"categoryId\") {\r\n this.setState({ categoryId: value });\r\n } else if (name === \"severity\") {\r\n this.setState({ severity: value.toInteger() });\r\n } else if (name === \"resolution\") {\r\n this.setState({ resolution: value.toInteger() });\r\n } else if (name === \"resolutionComment\") {\r\n this.setState({ resolutionComment: value });\r\n } else if (name === \"source\") {\r\n this.setState({ source: value.toInteger() });\r\n } else if (name === \"sourceComment\") {\r\n this.setState({ sourceComment: value });\r\n } else if (name === \"informantName\") {\r\n this.setState({ informantName: value });\r\n } else if (name === \"informantEmail\") {\r\n this.setState({ informantEmail: value });\r\n } else if (name === \"informantPhone\") {\r\n this.setState({ informantPhone: value });\r\n }\r\n };\r\n\r\n handleStateChane = (state: WhistleBlowState) => {\r\n this.setState({\r\n state,\r\n stateStr: EnumHelper.WhistleBlowStateToStr(state)\r\n });\r\n };\r\n\r\n handleDateChange = (value: string) => {\r\n this.setState({ dateStr: value });\r\n };\r\n\r\n handleTimeChange = (value: string) => {\r\n this.setState({ timeStr: value });\r\n };\r\n\r\n // #region Attachments\r\n handleAttachmentDownload = async (id: string) => {\r\n if (!id) return;\r\n const state = this.state;\r\n const attachment = state.attachments.find(i => i.id === id);\r\n if (!attachment) return;\r\n if (attachment.file) {\r\n downloadjs(attachment.file, attachment.name);\r\n return;\r\n }\r\n if (attachment.isNew()) return;\r\n const fileName = await AppUtils.callService(() => attachmentService.getAttachment(id));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.AttachmentParameterDownloaded, fileName));\r\n };\r\n\r\n getRemoveAttachmentsSaveData = (state: IWhistleBlowEditDialogState, category: number, attachmentIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.whistleBlow.id);\r\n result.append(\"category\", category);\r\n result.append(\"ids\", attachmentIds);\r\n return result;\r\n };\r\n\r\n handleAttachmentRemove = async (category: number, id: string) => {\r\n if (!id) return;\r\n const state = this.state;\r\n if (category === 0 && !state.canEditInformantData) return;\r\n const saveData = this.getRemoveAttachmentsSaveData(state, category, [id]);\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveAttachmentParameter, state.attachments.find(x => x.id === id)?.name), false) === ConfirmationDialogResult.No) return;\r\n const result = AppUtils.callService(() => whistleBlowService.whistleBlowEditRemoveAttachments(saveData.obj));\r\n if (!result) return;\r\n this.setState({\r\n attachments: state.attachments.filter(i => i.id !== id)\r\n });\r\n };\r\n\r\n getAddAttachmentsSaveData = async (state: IWhistleBlowEditDialogState, category: number, attachments: IFileAttachment[]): Promise => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.whistleBlow.id);\r\n result.append(\"category\", category);\r\n result.append(\"attachments\", await SaveAttachmentBase64.fromFileAttachments(attachments));\r\n return result;\r\n };\r\n \r\n handleAttachmentsAdd = async (category: number, fileList: FileList) => {\r\n if (category === 0 && !this.state.canEditInformantData) return;\r\n const state = this.state;\r\n const attachments = await FileAttachment.addFileListToFileAttachments([], fileList, category);\r\n if (attachments.length < 1) return;\r\n if (category < 1) {\r\n if (!AppUtils.validateFileAttachments(state.attachments.concat(attachments), Translations.MaximumTotalSizeOfAttachmentsIsParameterMB, this.props.maxAttachmentsTotalSize)) return;\r\n }\r\n const saveData = await this.getAddAttachmentsSaveData(state, category, attachments);\r\n const result = await AppUtils.callService(() => whistleBlowService.whistleBlowEditAddAttachments(saveData.obj));\r\n if (!result) return;\r\n EditItem.setItemIdsFromIds(attachments, result.ids);\r\n this.setState({\r\n attachments: state.attachments.concat(attachments)\r\n });\r\n };\r\n // #endregion Attachments\r\n\r\n // #region Messages\r\n handleMessageAdded = (internal: boolean, newMessage: IWhistleBlowEditItemMessage) => {\r\n if (!newMessage) return;\r\n const state = this.state;\r\n if (internal) {\r\n this.setState({\r\n internalMessages: WhistleBlowEditItemMessage.sortWhistleBlowEditItemMessages(state.internalMessages.concat([newMessage]))\r\n });\r\n } else {\r\n this.setState({\r\n publicMessages: WhistleBlowEditItemMessage.sortWhistleBlowEditItemMessages(state.publicMessages.concat([newMessage]))\r\n });\r\n }\r\n };\r\n\r\n handleMessageRead = (internal: boolean, id: string) => {\r\n if (!id) return;\r\n const state = this.state;\r\n if (internal) {\r\n const internalMessages = state.internalMessages.slice(0);\r\n const message = internalMessages.find(i => i.id === id && !i.isRead);\r\n message.isRead = true;\r\n this.setState({\r\n internalMessages\r\n });\r\n } else {\r\n const publicMessages = state.publicMessages.slice(0);\r\n const message = publicMessages.find(i => i.id === id && !i.isRead);\r\n message.isRead = true;\r\n this.setState({\r\n publicMessages\r\n });\r\n }\r\n };\r\n // #endregion Messages\r\n\r\n // #region Select Unit\r\n handleSelectUnit = () => {\r\n this.setState({\r\n showSelectUnitDialog: true\r\n });\r\n };\r\n\r\n handleSelectUnitDialogOk = async (node: IIdTitleNode) => {\r\n const state = this.state;\r\n if (!node) return;\r\n const result = await AppUtils.callService(() => whistleBlowService.getDefaultWhistleBlowHandlersForUnit(node.id));\r\n if (!result) return null;\r\n const oldHandlerCodes = state.handlers.map(i => i.code);\r\n this.setState({\r\n showSelectUnitDialog: false,\r\n unitId: node.id,\r\n unitCode: node.title\r\n });\r\n //Save added handlers\r\n this.addHandlers(result.items.filter(i => oldHandlerCodes.indexOf(i.code) < 0), false);\r\n };\r\n\r\n handleSelectUnitDialogCancel = () => {\r\n this.setState({\r\n showSelectUnitDialog: false\r\n });\r\n };\r\n // #endregion Select Unit\r\n\r\n // #region Handlers\r\n addHandlers = async (users: IModifyUser[], showSuccessMessage: boolean): Promise => {\r\n const state = this.state;\r\n if (!users || users.length < 1) return null;\r\n const result = await AppUtils.callService(() => whistleBlowService.whistleBlowEditAddHandlers(state.whistleBlow.id, users.map(i => i.code)), showSuccessMessage);\r\n if (!result) return null;\r\n this.setState({\r\n handlers: ModifyUser.sortModifyUsers(state.handlers.concat(users))\r\n });\r\n return result;\r\n };\r\n\r\n handleAddHandlers = async (users: IModifyUser[]): Promise => {\r\n return this.addHandlers(users, true);\r\n };\r\n\r\n handleRemoveHandlers = async (userCodes: string[]): Promise => {\r\n const state = this.state;\r\n if (!userCodes || userCodes.length < 1) return null;\r\n const result = await AppUtils.callService(() => whistleBlowService.whistleBlowEditRemoveHandlers(state.whistleBlow.id, userCodes));\r\n if (!result) return null;\r\n this.setState({\r\n handlers: state.handlers.filter(i => userCodes.indexOf(i.code) < 0)\r\n });\r\n return result;\r\n };\r\n \r\n handleGetHandlersSelectListItems = (companyId: string, pageSize: number, page: number, filter: string,\r\n ignoreUserIds: string[], ignoreUserCodes: string[], activityState: number, ignoreRecordUserConnected: boolean,\r\n doNotIgnoreRecordUserConnectedUserCode: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n const state = this.state;\r\n return whistleBlowService.getHandlersSelectUserListItems(state.whistleBlow.id, state.unitId, pageSize, page, filter,\r\n ignoreUserIds, ignoreUserCodes, activityState, ignoreRecordUserConnected, doNotIgnoreRecordUserConnectedUserCode,\r\n sortColumn, sortOrderIsAsc);\r\n };\r\n // #endregion Handlers\r\n\r\n getArchiveStateText = () => {\r\n const state = this.state;\r\n const whistleBlow = state.whistleBlow;\r\n const result = state.stateStr;\r\n if (state.state !== WhistleBlowState.Archived || whistleBlow.state !== WhistleBlowState.Archived) return result;\r\n return result + \" (\" + Translations.AType.toLocaleLowerCase() + \" \" + whistleBlow.archiveState.toString(10) + \")\";\r\n };\r\n\r\n getSaveDataFromState = (props: IWhistleBlowEditDialogProp, state: IWhistleBlowEditDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n const whistleBlow = state.whistleBlow;\r\n result.append(\"rowId\", whistleBlow.rowId);\r\n result.append(\"id\", whistleBlow.id);\r\n result.append(\"unitId\", state.unitId);\r\n result.append(\"categoryId\", state.categoryId ? state.categoryId : null);\r\n result.append(\"title\", state.title);\r\n result.append(\"description\", state.description);\r\n result.append(\"state\", state.state);\r\n result.append(\"severity\", state.severity);\r\n result.append(\"resolution\", state.resolution);\r\n result.append(\"resolutionComment\", state.resolutionComment);\r\n result.append(\"source\", state.source);\r\n result.append(\"sourceComment\", state.sourceComment);\r\n result.append(\"date\", Base.getDateTime(state.dateStr, state.timeStr).getTime());\r\n result.append(\"anonymous\", state.anonymous);\r\n result.append(\"informantName\", state.informantName);\r\n result.append(\"informantEmail\", state.informantEmail);\r\n result.append(\"informantPhone\", state.informantPhone);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (state.canEditInformantData && !state.title) {\r\n AppUtils.showErrorMessage(Translations.TitleMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (state.canEditInformantData && !state.dateStr) {\r\n AppUtils.showErrorMessage(Translations.DateMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (state.canEditInformantData && !state.timeStr) {\r\n AppUtils.showErrorMessage(Translations.TimeMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (state.canEditInformantData && !state.description) {\r\n AppUtils.showErrorMessage(Translations.DescriptionMustBeDefined);\r\n return resolve(false);\r\n }\r\n const dateTime = Base.getDateTime(state.dateStr, state.timeStr).getTime();\r\n if (dateTime > Base.getNowTicks()) {\r\n AppUtils.showErrorMessage(Translations.WhistleBlowDateAndTimeCannotBeInFuture);\r\n return resolve(false);\r\n }\r\n if (EnumHelper.isEqual(state.state, WhistleBlowState.Resolved)) {\r\n if (EnumHelper.isEqual(state.resolution, WhistleBlowResolution.Unspecified)) {\r\n AppUtils.showErrorMessage(Translations.WhistleBlowResolutionTypeMustBeDefined);\r\n return resolve(false);\r\n }\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = await AppUtils.callService(() => whistleBlowService.saveWhistleBlowEdit(saveData.obj));\r\n if (!result) return null;\r\n this.orgStateHash = saveData.hash;\r\n return result;\r\n };\r\n\r\n handleSave = async () => {\r\n const props = this.props;\r\n const result = await this.saveToDb();\r\n if (!result) return;\r\n this.loadWhistleBlow(result.id);\r\n props.onOk();\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut(this.getSaveDataFromState(props, this.state).hash, this.orgStateHash, async () => !!await this.saveToDb(), props.onRefreshList);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n // #region Archiving Type\r\n handleArchive = async () => {\r\n this.setState({\r\n showWhistleBlowArchiveSelectTypeDialog: true\r\n });\r\n };\r\n\r\n handleWhistleBlowArchiveSelectTypeDialogOk = async (archivingType: WhistleBlowArchivingType) => {\r\n const state = this.state;\r\n const result = await WhistleBlowArchiveDialog.archiveWhistleBlows(archivingType, [state.whistleBlow.id]);\r\n if (!result) return;\r\n this.props.onCancel();\r\n };\r\n \r\n handleWhistleBlowArchiveSelectTypeDialogCancel = () => {\r\n this.setState({\r\n showWhistleBlowArchiveSelectTypeDialog: false\r\n });\r\n };\r\n // #endregion Archiving Type\r\n\r\n getAlertSeverity = (severity: string) => {\r\n switch (severity) {\r\n case \"0\":\r\n return \"error\";\r\n case \"1\":\r\n return \"warning\";\r\n default:\r\n return \"info\";\r\n }\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const whistleBlow = state.whistleBlow;\r\n if (!whistleBlow) return null;\r\n const newIsResolved = EnumHelper.isEqual(state.state, WhistleBlowState.Resolved);\r\n const canEditInformantData = !state.isResolved && !state.isArchived && state.canEditInformantData;\r\n const arhivedOnlyStateChange = EnumHelper.isEqual(whistleBlow.archiveState, WhistleBlowArchiveState.OnlyStateChange);\r\n const arhivedInformantDataRemoved = EnumHelper.isEqual(whistleBlow.archiveState, WhistleBlowArchiveState.InformantDataRemoved);\r\n const arhivedAllDataRemoved = EnumHelper.isEqual(whistleBlow.archiveState, WhistleBlowArchiveState.AllDataRemoved);\r\n const canBeSaved = !arhivedInformantDataRemoved && !arhivedAllDataRemoved;\r\n const canBeArchived = whistleBlow && (state.isResolved || arhivedOnlyStateChange || arhivedInformantDataRemoved);\r\n return (\r\n \r\n }\r\n body={\r\n \r\n \r\n {(state.activeMenuItem === WhistleBlowEditDialogMenuItem.Informant) &&\r\n (state.canReadInformantData\r\n ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {Base.timeToDateTimeStr(whistleBlow.createDate)}\r\n \r\n \r\n \r\n \r\n \r\n {state.dateStr + \" \" + state.timeStr}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {canEditInformantData &&\r\n \r\n , checked: boolean) => {\r\n this.setState({ anonymous: checked });\r\n }}\r\n />\r\n }\r\n slotProps={{ typography: { variant: \"body2\" } }}\r\n />\r\n \r\n }\r\n {!state.anonymous &&\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {Translations.Attachments}}\r\n attachments={state.attachments.filter(i => i.category === 0)}\r\n onRemoveAttachment={(id) => this.handleAttachmentRemove(0, id)}\r\n onDownloadAttachment={this.handleAttachmentDownload}\r\n onAddAttachments={(fileList) => this.handleAttachmentsAdd(0, fileList)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n {\r\n return { ...whistleBlowStateOption, selected: state.stateStr === whistleBlowStateOption.textTitle };\r\n })}\r\n />\r\n \r\n {whistleBlow.toBeReceivedDate > 0 &&\r\n \r\n {String.format(Translations.WhistleBlowMustBeReceivedLatestAtParameter, Base.timeToDateStr(whistleBlow.toBeReceivedDate))}\r\n \r\n }\r\n {whistleBlow.toBeRespondedDate > 0 &&\r\n \r\n {String.format(Translations.WhistleBlowInformantMustBeNotifiedLatestAtParameter, Base.timeToDateStr(whistleBlow.toBeRespondedDate))}\r\n \r\n }\r\n {!state.isArchived && whistleBlow.resolvedDate > 0 &&\r\n \r\n {Translations.WhistleBlowStateResolved + \" \" + Base.timeToDateStr(whistleBlow.resolvedDate)}\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n : (\r\n \r\n {Translations.UserNotAllowedToViewNotifier}\r\n \r\n )\r\n )\r\n }\r\n {state.activeMenuItem === WhistleBlowEditDialogMenuItem.Company &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {Translations.InternalAttachments}}\r\n isReadOnly={state.isArchived}\r\n margin={0}\r\n attachments={state.attachments.filter(i => i.category !== 0)}\r\n onRemoveAttachment={(id) => this.handleAttachmentRemove(1, id)}\r\n onDownloadAttachment={this.handleAttachmentDownload}\r\n onAddAttachments={(fileList) => this.handleAttachmentsAdd(1, fileList)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {state.activeMenuItem === WhistleBlowEditDialogMenuItem.Log &&\r\n \r\n }\r\n \r\n {state.showSelectUnitDialog &&\r\n \r\n }\r\n {state.showWhistleBlowArchiveSelectTypeDialog &&\r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n {canBeArchived && (\r\n {Translations.Archive}\r\n )}\r\n {Translations.Close}\r\n {Translations.Save}\r\n \r\n \r\n }\r\n />\r\n );\r\n }\r\n}","// WhistleBlowNewDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Checkbox, FormControlLabel, Grid, MenuItem, Select, TextField } from \"@mui/material\";\r\nimport downloadjs from \"downloadjs\";\r\nimport * as React from \"react\";\r\nimport { DialogSectionCard } from \"source/components/framework/Dialog/DialogSectionCard\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { FileAttachment, IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { SaveAttachmentBase64 } from \"ui/Scripts/source/models/common/saveAttachmentBase64\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { ConfirmationDialogResult, EnumHelper, WhistleBlowSource } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IModifyUser, ModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { IWhistleBlowEditItem } from \"ui/Scripts/source/models/whistleBlow/whistleBlowEditItem\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as attachmentService from \"../../../models/services/attachmentService\";\r\nimport * as whistleBlowService from \"../../../models/services/whistleBlowService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport { UserListItems } from \"../../../models/user/userListItems\";\r\nimport { AttachmentList } from \"../../attachments/AttachmentList\";\r\nimport { DatePicker } from \"../../framework/DateTime/DatePicker\";\r\nimport { TimePicker } from \"../../framework/DateTime/TimePicker\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { SearchField } from \"../../framework/SearchField\";\r\nimport { SelectUnitDialog } from \"../../framework/Unit/SelectUnitDialog\";\r\nimport { UserBlocks } from \"../../user/UserBlocks/UserBlocks\";\r\n\r\n//WhistleBlowNewDialog\r\nexport interface IWhistleBlowNewDialogProp {\r\n sessionState: ISessionState;\r\n classes?: string;\r\n onOk: (whistleBlowId: string) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IWhistleBlowNewDialogState {\r\n isLoading: boolean;\r\n whistleBlow: IWhistleBlowEditItem;\r\n canReadInformantData: boolean;\r\n units: IIdTitleNode[];\r\n unitId: string;\r\n unitCode: string;\r\n source: WhistleBlowSource;\r\n sourceComment: string;\r\n anonymous: boolean;\r\n title: string;\r\n dateStr: string;\r\n timeStr: string;\r\n description: string;\r\n informantName: string;\r\n informantEmail: string;\r\n informantPhone: string;\r\n informantPasswordConfirmed: boolean;\r\n attachments: IFileAttachment[];\r\n handlers: IModifyUser[];\r\n showSelectUnitDialog: boolean;\r\n}\r\n\r\nexport class WhistleBlowNewDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IWhistleBlowNewDialogProp) {\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n whistleBlow: null,\r\n canReadInformantData: false,\r\n units: [],\r\n unitId: \"\",\r\n unitCode: \"\",\r\n source: WhistleBlowSource.Unspecified,\r\n sourceComment: \"\",\r\n anonymous: true,\r\n title: \"\",\r\n dateStr: \"\",\r\n timeStr: \"\",\r\n description: \"\",\r\n informantName: \"\",\r\n informantEmail: \"\",\r\n informantPhone: \"\",\r\n informantPasswordConfirmed: false,\r\n attachments: [],\r\n handlers: [],\r\n showSelectUnitDialog: false\r\n };\r\n }\r\n\r\n loadWhistleBlow = async (): Promise => {\r\n const props = this.props;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => whistleBlowService.getWhistleBlowEdit(Base.emptyGuid), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return false;\r\n const whistleBlow = result.whistleBlow;\r\n const state = {\r\n ...this.state,\r\n whistleBlow,\r\n canReadInformantData: result.canReadInformantData,\r\n units: result.units,\r\n categories: result.categories,\r\n unitId: whistleBlow.unitId,\r\n unitCode: whistleBlow.unitCode,\r\n categoryId: whistleBlow.categoryId,\r\n state: whistleBlow.state,\r\n stateStr: EnumHelper.WhistleBlowStateToStr(whistleBlow.state),\r\n severity: whistleBlow.severity,\r\n resolution: whistleBlow.resolution,\r\n resolutionComment: whistleBlow.resolutionComment,\r\n source: whistleBlow.source,\r\n sourceComment: whistleBlow.sourceComment,\r\n code: whistleBlow.code,\r\n anonymous: whistleBlow.anonymous,\r\n title: whistleBlow.title,\r\n dateStr: Base.timeToDateStr(whistleBlow.date),\r\n timeStr: Base.timeToTimeStr(whistleBlow.date),\r\n description: whistleBlow.description,\r\n informantName: whistleBlow.informantName,\r\n informantEmail: whistleBlow.informantEmail,\r\n informantPhone: whistleBlow.informantPhone,\r\n informantPasswordConfirmed: whistleBlow.informantPasswordConfirmed,\r\n attachments: whistleBlow.attachments,\r\n publicMessages: whistleBlow.messages.filter(i => !i.isInternal),\r\n internalMessages: whistleBlow.messages.filter(i => i.isInternal),\r\n handlers: ModifyUser.sortModifyUsers(whistleBlow.handlers, { currentUserCode: props.sessionState.code })\r\n };\r\n this.setState(state);\r\n const saveData = await this.getSaveDataFromState(props, state);\r\n this.orgStateHash = saveData.hash;\r\n return result.canReadInformantData;\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadWhistleBlow();\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"title\") {\r\n this.setState({ title: value });\r\n } else if (name === \"description\") {\r\n this.setState({ description: value });\r\n } else if (name === \"unitId\") {\r\n this.setState({ unitId: value });\r\n } else if (name === \"source\") {\r\n this.setState({ source: value.toInteger() });\r\n } else if (name === \"sourceComment\") {\r\n this.setState({ sourceComment: value });\r\n } else if (name === \"informantName\") {\r\n this.setState({ informantName: value });\r\n } else if (name === \"informantEmail\") {\r\n this.setState({ informantEmail: value });\r\n } else if (name === \"informantPhone\") {\r\n this.setState({ informantPhone: value });\r\n }\r\n };\r\n\r\n handleDateChange = (value: string) => {\r\n this.setState({ dateStr: value });\r\n };\r\n\r\n handleTimeChange = (value: string) => {\r\n this.setState({ timeStr: value });\r\n };\r\n\r\n // #region Attachments\r\n handleAttachmentDownload = async (id: string) => {\r\n if (!id) return;\r\n const state = this.state;\r\n const attachment = state.attachments.find(i => i.id === id);\r\n if (!attachment) return;\r\n if (attachment.file) {\r\n downloadjs(attachment.file, attachment.name);\r\n return;\r\n }\r\n if (attachment.isNew()) return;\r\n const fileName = await AppUtils.callService(() => attachmentService.getAttachment(id));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.AttachmentParameterDownloaded, fileName));\r\n };\r\n\r\n handleAttachmentRemove = async (category: number, id: string) => {\r\n if (!id) return;\r\n const state = this.state;\r\n this.setState({\r\n attachments: state.attachments.filter(i => i.id !== id)\r\n });\r\n };\r\n \r\n handleAttachmentsAdd = async (category: number, fileList: FileList) => {\r\n const state = this.state;\r\n const attachments = await FileAttachment.addFileListToFileAttachments([], fileList, category);\r\n if (attachments.length < 1) return;\r\n this.setState({\r\n attachments: state.attachments.concat(attachments)\r\n });\r\n };\r\n // #endregion Attachments\r\n\r\n // #region Select Unit\r\n handleSelectUnit = () => {\r\n this.setState({\r\n showSelectUnitDialog: true\r\n });\r\n };\r\n\r\n handleSelectUnitDialogOk = async (node: IIdTitleNode) => {\r\n if (!node) return;\r\n const result = await AppUtils.callService(() => whistleBlowService.getDefaultWhistleBlowHandlersForUnit(node.id));\r\n if (!result) return null;\r\n this.setState({\r\n showSelectUnitDialog: false,\r\n unitId: node.id,\r\n unitCode: node.title,\r\n handlers: ModifyUser.sortModifyUsers(result.items, { currentUserCode: this.props.sessionState.code })\r\n });\r\n };\r\n\r\n handleSelectUnitDialogCancel = () => {\r\n this.setState({\r\n showSelectUnitDialog: false\r\n });\r\n };\r\n // #endregion Select Unit\r\n\r\n // #region Handlers\r\n handleAddHandlers = async (users: IModifyUser[]): Promise => {\r\n const state = this.state;\r\n if (!users || users.length < 1) return null;\r\n this.setState({\r\n handlers: ModifyUser.sortModifyUsers(state.handlers.concat(users), { currentUserCode: this.props.sessionState.code })\r\n });\r\n return Base.getPromiseResult(new ApiSuccess());\r\n };\r\n\r\n handleRemoveHandlers = async (userCodes: string[]): Promise => {\r\n const state = this.state;\r\n if (!userCodes || userCodes.length < 1) return null;\r\n this.setState({\r\n handlers: state.handlers.filter(i => userCodes.indexOf(i.code) < 0)\r\n });\r\n return Base.getPromiseResult(new ApiSuccess());\r\n };\r\n \r\n handleGetHandlersSelectListItems = (companyId: string, pageSize: number, page: number, filter: string,\r\n ignoreUserIds: string[], ignoreUserCodes: string[], activityState: number, ignoreRecordUserConnected: boolean,\r\n doNotIgnoreRecordUserConnectedUserCode: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n const state = this.state;\r\n return whistleBlowService.getHandlersSelectUserListItems(state.whistleBlow.id, state.unitId, pageSize, page, filter,\r\n ignoreUserIds, ignoreUserCodes, activityState, ignoreRecordUserConnected, doNotIgnoreRecordUserConnectedUserCode,\r\n sortColumn, sortOrderIsAsc);\r\n };\r\n // #endregion Handlers\r\n\r\n getSaveDataFromState = async (props: IWhistleBlowNewDialogProp, state: IWhistleBlowNewDialogState): Promise => {\r\n const result = new SaveDataObj();\r\n result.append(\"unitId\", state.unitId);\r\n result.append(\"date\", Base.getDateTime(state.dateStr, state.timeStr)?.getTime() ?? 0);\r\n result.append(\"title\", state.title);\r\n result.append(\"description\", state.description);\r\n result.append(\"source\", state.source);\r\n result.append(\"sourceComment\", state.sourceComment);\r\n result.append(\"anonymous\", state.anonymous);\r\n result.append(\"informantName\", state.informantName);\r\n result.append(\"informantEmail\", state.informantEmail);\r\n result.append(\"informantPhone\", state.informantPhone);\r\n result.append(\"handlerUserCodes\", state.handlers.map(i => i.code));\r\n result.append(\"attachments\", await SaveAttachmentBase64.fromFileAttachments(state.attachments));\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.title) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.TitleMustBeDefined));\r\n return resolve(false);\r\n }\r\n if (!state.dateStr) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.DateMustBeDefined));\r\n return resolve(false);\r\n }\r\n if (!state.timeStr) {\r\n AppUtils.showErrorMessage(Translations.TimeMustBeDefined);\r\n return resolve(false);\r\n }\r\n if (!state.description) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.DescriptionMustBeDefined));\r\n return resolve(false);\r\n }\r\n if (state.handlers.length < 1) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.HandlersMustBeDefined));\r\n return resolve(false);\r\n }\r\n const dateTime = Base.getDateTime(state.dateStr, state.timeStr).getTime();\r\n if (dateTime > Base.getNowTicks()) {\r\n AppUtils.showErrorMessage(Translations.WhistleBlowDateAndTimeCannotBeInFuture);\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n const saveData = await this.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = await AppUtils.callService(() => whistleBlowService.saveWhistleBlowNew(saveData.obj));\r\n if (!result) return null;\r\n this.orgStateHash = saveData.hash;\r\n return result;\r\n };\r\n\r\n handleSave = async () => {\r\n const props = this.props;\r\n const result = await this.saveToDb();\r\n if (!result) return;\r\n props.onOk(result.id);\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel((await this.getSaveDataFromState(props, state)).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const whistleBlow = state.whistleBlow;\r\n if (!whistleBlow) return null;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.setState({ anonymous: checked });\r\n }}\r\n />\r\n }\r\n slotProps={{ typography: { variant: \"body2\" } }}\r\n />\r\n \r\n {!state.anonymous &&\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {Translations.Attachments}}\r\n attachments={state.attachments.filter(i => i.category === 0)}\r\n onRemoveAttachment={(id) => this.handleAttachmentRemove(0, id)}\r\n onDownloadAttachment={this.handleAttachmentDownload}\r\n onAddAttachments={(fileList) => this.handleAttachmentsAdd(0, fileList)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {state.showSelectUnitDialog &&\r\n \r\n }\r\n \r\n }\r\n buttons={[\r\n { title: Translations.Close, variant: \"outlined\", onClick: this.handleCancel },\r\n { title: Translations.Save, variant: \"confirmation\", onClick: this.handleSave },\r\n ]}\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","// WhistleBlowPageDashboardChart - MODULE\r\n// ***********************************************************************************************************************\r\n/// \r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { WhistleBlowStateFilter } from \"ui/Scripts/source/models/enums\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IChartItem } from \"../../../models/chart/chartItem\";\r\nimport { ISavedChartPanel } from \"../../../models/chart/savedChartPanel\";\r\nimport { IReportParameterValue } from \"../../../models/report/reportParameterValue\";\r\nimport * as whistleBlowService from \"../../../models/services/whistleBlowService\";\r\nimport { IReportChartData } from \"source/models/report/reportChartData\";\r\nimport { DashboardChart } from \"source/components/framework/DashboardChart\";\r\n\r\nexport interface IWhistleBlowPageFilterState {\r\n selectedStartDate: number;\r\n selectedEndDate: number\r\n selectedUnitIds: string[];\r\n selectedCategoryIds: string[];\r\n selectedHandlerUserCodes: string[];\r\n selectedStateFilterId: string;\r\n selectedSeverityFilterId: string;\r\n selectedResolutionFilterId: string;\r\n selectedSourceFilterId: string;\r\n selectedAnonymityFilterId: string;\r\n selectedDynamicTimeFilterId: string;\r\n}\r\n\r\nexport interface IWhistleBlowGeneralFilter {\r\n startDate: number;\r\n endDate: number;\r\n unitIds: string[];\r\n categoryIds: string[];\r\n handlerUserCodes: string[];\r\n stateFilterId: number;\r\n severityFilterId: number;\r\n resolutionFilterId: number;\r\n sourceFilterId: number;\r\n anonymityFilterId: number;\r\n dynamicTimeFilterId: number;\r\n}\r\n\r\nexport interface IWhistleBlowGeneralFilterChange extends IWhistleBlowGeneralFilter {\r\n notChanged: boolean;\r\n}\r\n\r\n// WhistleBlowPageDashboardChart\r\nexport interface IWhistleBlowPageDashboardChartProp {\r\n chartPanel: ISavedChartPanel;\r\n chartItems: IChartItem[];\r\n onShowChartPanelPropertiesDialog: (panelId: string) => void;\r\n}\r\n\r\nexport interface IWhistleBlowPageDashboardChartState {\r\n isLoading: boolean;\r\n chartData: IReportChartData;\r\n chartId: string;\r\n startDate: number;\r\n endDate: number;\r\n unitIds: string[];\r\n categoryIds: string[];\r\n handlerUserCodes: string[];\r\n state: number;\r\n severity: number;\r\n resolution: number;\r\n source: number;\r\n anonymity: number;\r\n dynamicTime: number;\r\n parameterValues: IReportParameterValue[]\r\n}\r\n\r\nexport class WhistleBlowPageDashboardChart extends React.Component {\r\n static getGeneralFilterFromState = (state: IWhistleBlowPageFilterState): IWhistleBlowGeneralFilter => {\r\n return {\r\n startDate: state.selectedStartDate ? state.selectedStartDate : null,\r\n endDate: state.selectedEndDate ? state.selectedEndDate : null,\r\n unitIds: state.selectedUnitIds ? state.selectedUnitIds.filter(i => i !== Base.emptyGuid) : [],\r\n categoryIds: state.selectedCategoryIds ? state.selectedCategoryIds.filter(i => i !== Base.emptyGuid) : [],\r\n handlerUserCodes: state.selectedHandlerUserCodes ? state.selectedHandlerUserCodes.filter(i => !!i) : [],\r\n stateFilterId: state.selectedStateFilterId ? parseInt(state.selectedStateFilterId, 10) : -2,\r\n severityFilterId: state.selectedSeverityFilterId ? parseInt(state.selectedSeverityFilterId, 10) : null,\r\n resolutionFilterId: state.selectedResolutionFilterId ? parseInt(state.selectedResolutionFilterId, 10) : null,\r\n sourceFilterId: state.selectedSourceFilterId ? parseInt(state.selectedSourceFilterId, 10) : null,\r\n anonymityFilterId: state.selectedAnonymityFilterId ? parseInt(state.selectedAnonymityFilterId, 10) : null,\r\n dynamicTimeFilterId: state.selectedDynamicTimeFilterId ? parseInt(state.selectedDynamicTimeFilterId, 10) : 0\r\n };\r\n };\r\n\r\n static getStateFilterPropsFromGeneralFilter = (generalFilter: any, defaultStateFilterId: string = \"-2\"): IWhistleBlowPageFilterState => {\r\n return {\r\n selectedStartDate: generalFilter && generalFilter.startDate ? generalFilter.startDate : 0,\r\n selectedEndDate: generalFilter && generalFilter.endDate ? generalFilter.endDate : 0,\r\n selectedUnitIds: generalFilter && generalFilter.unitIds && generalFilter.unitIds.length > 0 ? generalFilter.unitIds : [Base.emptyGuid],\r\n selectedCategoryIds: generalFilter && generalFilter.categoryIds && generalFilter.categoryIds.length > 0 ? generalFilter.categoryIds : [Base.emptyGuid],\r\n selectedHandlerUserCodes: generalFilter && generalFilter.handlerUserCodes && generalFilter.handlerUserCodes.length > 0 ? generalFilter.handlerUserCodes : [\"\"],\r\n selectedStateFilterId: generalFilter && !Base.isNullOrUndefined(generalFilter.stateFilterId) ? generalFilter.stateFilterId.toString(10) : defaultStateFilterId,\r\n selectedSeverityFilterId: generalFilter && !Base.isNullOrUndefined(generalFilter.severityFilterId) ? generalFilter.severityFilterId.toString(10) : \"\",\r\n selectedResolutionFilterId: generalFilter && !Base.isNullOrUndefined(generalFilter.resolutionFilterId) ? generalFilter.resolutionFilterId.toString(10) : \"\",\r\n selectedSourceFilterId: generalFilter && !Base.isNullOrUndefined(generalFilter.sourceFilterId) ? generalFilter.sourceFilterId.toString(10) : \"\",\r\n selectedAnonymityFilterId: generalFilter && !Base.isNullOrUndefined(generalFilter.anonymityFilterId) ? generalFilter.anonymityFilterId.toString(10) : \"\",\r\n selectedDynamicTimeFilterId: generalFilter && !Base.isNullOrUndefined(generalFilter.dynamicTimeFilterId) ? generalFilter.dynamicTimeFilterId.toString(10) : \"0\",\r\n };\r\n };\r\n\r\n static getWhistleBlowGeneralFilterChange(prevProps: IWhistleBlowPageFilterState, props: IWhistleBlowPageFilterState): IWhistleBlowGeneralFilterChange {\r\n const prevValues = WhistleBlowPageDashboardChart.getGeneralFilterFromState(prevProps);\r\n const values = WhistleBlowPageDashboardChart.getGeneralFilterFromState(props);\r\n return {\r\n ...values,\r\n notChanged: (prevValues.startDate ?? -99).toString(10) === (values.startDate ?? -99).toString(10) &&\r\n (prevValues.endDate ?? -99).toString(10) === (values.endDate ?? -99).toString(10) &&\r\n prevValues.stateFilterId.toString(10) === values.stateFilterId.toString(10) &&\r\n (prevValues.severityFilterId ?? -99).toString(10) === (values.severityFilterId ?? -99).toString(10) &&\r\n (prevValues.resolutionFilterId ?? -99).toString(10) === (values.resolutionFilterId ?? -99).toString(10) &&\r\n (prevValues.sourceFilterId ?? -99).toString(10) === (values.sourceFilterId ?? -99).toString(10) &&\r\n (prevValues.anonymityFilterId ?? -99).toString(10) === (values.anonymityFilterId ?? -99).toString(10) &&\r\n prevValues.dynamicTimeFilterId.toString(10) === values.dynamicTimeFilterId.toString(10) &&\r\n Base.equalStrArrays(prevValues.categoryIds, values.categoryIds) &&\r\n Base.equalStrArrays(prevValues.handlerUserCodes, values.handlerUserCodes) &&\r\n Base.equalStrArrays(prevValues.unitIds, values.unitIds)\r\n };\r\n }\r\n\r\n getStateChangeFromProps = (props: IWhistleBlowPageDashboardChartProp): any => {\r\n const chartItem = props.chartPanel && props.chartItems\r\n ? props.chartItems.find(i => i.reportName === props.chartPanel.reportId)\r\n : null;\r\n const reportFilterProps = WhistleBlowPageDashboardChart.getStateFilterPropsFromGeneralFilter(props.chartPanel?.generalFilter, WhistleBlowStateFilter.All.toString(10));\r\n const result = {\r\n startDate: reportFilterProps.selectedStartDate ? reportFilterProps.selectedStartDate : null,\r\n endDate: reportFilterProps.selectedEndDate ? reportFilterProps.selectedEndDate : null,\r\n unitIds: reportFilterProps.selectedUnitIds ? reportFilterProps.selectedUnitIds.filter(i => i !== Base.emptyGuid) : [],\r\n categoryIds: reportFilterProps.selectedCategoryIds ? reportFilterProps.selectedCategoryIds.filter(i => i !== Base.emptyGuid) : [],\r\n handlerUserCodes: reportFilterProps.selectedHandlerUserCodes ? reportFilterProps.selectedHandlerUserCodes.filter(i => !!i) : [],\r\n state: reportFilterProps.selectedStateFilterId ? reportFilterProps.selectedStateFilterId.toInteger(true, -2) : null,\r\n severity: reportFilterProps.selectedSeverityFilterId ? reportFilterProps.selectedSeverityFilterId.toInteger() : null,\r\n resolution: reportFilterProps.selectedResolutionFilterId ? reportFilterProps.selectedResolutionFilterId.toInteger() : null,\r\n source: reportFilterProps.selectedSourceFilterId ? reportFilterProps.selectedSourceFilterId.toInteger() : null,\r\n anonymity: reportFilterProps.selectedAnonymityFilterId ? reportFilterProps.selectedAnonymityFilterId.toInteger() : null,\r\n dynamicTime: reportFilterProps.selectedDynamicTimeFilterId ? reportFilterProps.selectedDynamicTimeFilterId.toInteger() : 0,\r\n chartId: props.chartPanel?.chartId ?? \"\",\r\n parameterValues: props.chartPanel && chartItem ? props.chartPanel.getReportParameterValues(chartItem) : []\r\n };\r\n return result;\r\n };\r\n\r\n constructor(props: IWhistleBlowPageDashboardChartProp) {\r\n super(props);\r\n this.state = {\r\n ...this.getStateChangeFromProps(props),\r\n chart: \"\",\r\n isLoading: true\r\n };\r\n }\r\n\r\n createChart = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!props.chartPanel || !props.chartItems || state.parameterValues.length < 1) return;\r\n this.setState({ isLoading: true });\r\n const chartData = await AppUtils.callService(() => whistleBlowService.getChart(props.chartPanel.reportId, props.chartPanel.chartId,\r\n state.startDate, state.endDate, state.dynamicTime, state.unitIds, state.categoryIds, state.handlerUserCodes, state.state, state.severity, state.resolution,\r\n state.source, state.anonymity, state.parameterValues), false, true, () => { this.setState({ isLoading: false }); });\r\n this.setState({\r\n chartData\r\n });\r\n };\r\n\r\n componentDidUpdate(prevProps: IWhistleBlowPageDashboardChartProp) {\r\n const state = this.state;\r\n const newState = this.getStateChangeFromProps(this.props);\r\n const prevChartId = state.chartId;\r\n const chartId = newState.chartId;\r\n const prevStartDate = state.startDate ?? -99;\r\n const startDate = newState.startDate ?? -99;\r\n const prevEndDate = state.endDate ?? -99;\r\n const endDate = newState.endDate ?? -99;\r\n const prevUnitIds = state.unitIds ? state.unitIds : [];\r\n const unitIds = newState.unitIds ? newState.unitIds : [];\r\n const prevCategoryIds = state.categoryIds ? state.categoryIds : [];\r\n const categoryIds = newState.categoryIds ? newState.categoryIds : [];\r\n const prevHandlerUserCodes = state.handlerUserCodes ? state.handlerUserCodes : [];\r\n const handlerUserCodes = newState.handlerUserCodes ? newState.handlerUserCodes : [];\r\n const prevAState = state.state ?? -99;\r\n const aState = newState.state ?? -99;\r\n const prevSeverity = state.severity ?? -99;\r\n const severity = newState.severity ?? -99;\r\n const prevResolution = state.resolution ?? -99;\r\n const resolution = newState.resolution ?? -99;\r\n const prevSource = state.source ?? -99;\r\n const source = newState.source ?? -99;\r\n const prevAnonymity = state.anonymity ?? -99;\r\n const anonymity = newState.anonymity ?? -99;\r\n const prevDynamicTime = state.dynamicTime ?? 0;\r\n const dynamicTime = newState.dynamicTime ?? 0;\r\n const prevParameterValues = state.parameterValues ?? [];\r\n const parameterValues = newState.parameterValues ?? [];\r\n if (prevChartId === chartId &&\r\n prevStartDate.toString(10) === startDate.toString(10) &&\r\n prevEndDate.toString(10) === endDate.toString(10) &&\r\n prevAState.toString(10) === aState.toString(10) &&\r\n prevSeverity.toString(10) === severity.toString(10) &&\r\n prevResolution.toString(10) === resolution.toString(10) &&\r\n prevSource.toString(10) === source.toString(10) &&\r\n prevAnonymity.toString(10) === anonymity.toString(10) &&\r\n prevDynamicTime.toString(10) === dynamicTime.toString(10) &&\r\n Base.equalStrArrays(prevCategoryIds, categoryIds) &&\r\n Base.equalStrArrays(prevHandlerUserCodes, handlerUserCodes) &&\r\n Base.equalStrArrays(prevUnitIds, unitIds) &&\r\n JSON.stringify(prevParameterValues) === JSON.stringify(parameterValues)) return;\r\n this.setState({\r\n ...newState\r\n }, this.createChart);\r\n }\r\n\r\n componentDidMount(): void {\r\n this.createChart();\r\n }\r\n \r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const chartPanel = props.chartPanel;\r\n if (!chartPanel) return null;\r\n return (\r\n \r\n );\r\n }\r\n}","/* global JSX */\r\n// WhistleBlowList - MODULE\r\n// ***********************************************************************************************************************\r\nimport AccountCircleIcon from \"@mui/icons-material/AccountCircle\";\r\nimport CheckCircleIcon from \"@mui/icons-material/CheckCircle\";\r\nimport CircleIcon from \"@mui/icons-material/Circle\";\r\nimport InboxIcon from \"@mui/icons-material/Inbox\";\r\nimport MessageIcon from \"@mui/icons-material/Message\";\r\nimport MoveToInboxIcon from \"@mui/icons-material/MoveToInbox\";\r\nimport SmsIcon from \"@mui/icons-material/Sms\";\r\nimport WatchLaterIcon from \"@mui/icons-material/WatchLater\";\r\nimport { Box, Chip, Grid, Stack, Tooltip } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ToolButtonDropdown } from \"ui/Scripts/source/components/framework/Button/ToolButtonDropdown\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { EnumHelper, WhistleBlowState } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IWhistleBlowListItem } from \"ui/Scripts/source/models/whistleBlow/whistleBlowListItem\";\r\nimport { IWhistleBlowListItems } from \"ui/Scripts/source/models/whistleBlow/whistleBlowListItems\";\r\nimport { ModifyUser } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/user/modifyUser\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { infiniteListPageSize } from \"../../../models/common/webConsts\";\r\nimport * as whistleBlowService from \"../../../models/services/whistleBlowService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { AddButton } from \"../../framework/Button/AddButton\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow/GridRow\";\r\nimport { IListUsingComponentState, List } from \"../../framework/List/List\";\r\nimport { ListActionButtons } from \"../../framework/List/ListActionButtons\";\r\nimport { ListCardField } from \"../../framework/List/ListCardField\";\r\nimport { ListContainer } from \"../../framework/List/ListContainer\";\r\nimport { ListDetailsButton } from \"../../framework/List/ListDetailsButton\";\r\nimport { ListLinkValue } from \"../../framework/List/ListLinkValue\";\r\nimport { ListToggleButtons } from \"../../framework/List/ListToggleButtons\";\r\nimport { PageListActionContainer } from \"../../framework/List/PageListActionContainer\";\r\nimport { PageTitle } from \"../../framework/Page/PageTitle\";\r\nimport { ClipTypography } from \"../../framework/Typography/ClipTypography\";\r\nimport { WhistleBlowEditDialog } from \"../WhistleBlowEditDialog\";\r\nimport { WhistleBlowNewDialog } from \"../WhistleBlowNewDialog\";\r\nimport { IWhistleBlowGeneralFilter, IWhistleBlowPageFilterState, WhistleBlowPageDashboardChart } from \"../WhistleBlowPageDashboardChart\";\r\nimport { AppMoreIcon } from \"source/components/framework/Icon/AppMoreIcon\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum WhistleBlowEditViewMode {\r\n Informant = \"1\",\r\n Company = \"2\"\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n// WhistleBlowListStateCol\r\nexport interface IWhistleBlowListStateColProp {\r\n item: IWhistleBlowListItem;\r\n}\r\n\r\nconst getStateChipColor = (state: WhistleBlowState) => {\r\n switch (state) {\r\n case WhistleBlowState.New:\r\n return \"#FFEEED\";\r\n case WhistleBlowState.Received:\r\n return \"#FFFAE2\";\r\n case WhistleBlowState.InProgress:\r\n return \"#F1F7FF\";\r\n case WhistleBlowState.Resolved:\r\n return \"#E0FAEF\";\r\n case WhistleBlowState.Archived:\r\n case WhistleBlowState.Archived1:\r\n case WhistleBlowState.Archived2:\r\n case WhistleBlowState.Archived3:\r\n return \"rgba(0, 0, 0, 0.08)\";\r\n }\r\n};\r\n\r\nconst getStateChipIcon = (state: WhistleBlowState) => {\r\n switch (state) {\r\n case WhistleBlowState.New:\r\n return ;\r\n case WhistleBlowState.Received:\r\n return ;\r\n case WhistleBlowState.InProgress:\r\n return ;\r\n case WhistleBlowState.Resolved:\r\n return ;\r\n case WhistleBlowState.Archived:\r\n case WhistleBlowState.Archived1:\r\n case WhistleBlowState.Archived2:\r\n case WhistleBlowState.Archived3:\r\n return ;\r\n }\r\n};\r\n\r\nexport class WhistleBlowListStateCol extends React.Component {\r\n render() {\r\n const item = this.props.item;\r\n return (\r\n \r\n {!(item.state === WhistleBlowState.Resolved && item.resolvedDate > 0) &&\r\n \r\n // {item.stateStr}\r\n // {item.state === WhistleBlowState.Archived && item.archiveState < WhistleBlowArchiveState.AllDataRemoved &&\r\n // \r\n // \r\n // {item.archiveState < WhistleBlowArchiveState.InformantDataRemoved &&\r\n // \r\n // }\r\n // \r\n // }\r\n // \r\n }\r\n {item.state === WhistleBlowState.Resolved && item.resolvedDate > 0 &&\r\n \r\n }\r\n {item.toBeReceivedDate > 0 &&\r\n \r\n }\r\n label={Base.timeToDateStr(item.toBeReceivedDate)}\r\n size=\"small\"\r\n sx={{ backgroundColor: \"#FFEEED\", marginRight: \".25rem\" }}\r\n />\r\n \r\n }\r\n {item.toBeRespondedDate > 0 &&\r\n \r\n }\r\n label={Base.timeToDateStr(item.toBeRespondedDate)}\r\n size=\"small\"\r\n sx={{ backgroundColor: \"#FFEEED\", marginRight: \".25rem\" }}\r\n />\r\n \r\n }\r\n {item.unreadMessageCount > 0 &&\r\n \r\n }\r\n label={item.unreadMessageCount.toString(10)}\r\n size=\"small\"\r\n sx={{ backgroundColor: \"#FFEEED\", marginRight: \".25rem\" }}\r\n />\r\n \r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\n// WhistleBlowListHandlersCol\r\nexport interface IWhistleBlowListHandlersColProp {\r\n item: IWhistleBlowListItem;\r\n}\r\n\r\nexport class WhistleBlowListHandlersCol extends React.Component {\r\n render() {\r\n const item = this.props.item;\r\n const isArchivedAndCleaned = EnumHelper.isEqual(item.state, WhistleBlowState.Archived) && !item.title;\r\n if (isArchivedAndCleaned) {\r\n return (
    {\"-\"}
    );\r\n }\r\n const otherHandlers = item.handlers.length > 1 ? item.handlers.slice(1) : [];\r\n return (\r\n i.name).join(\", \")}>\r\n \r\n {item.handlers.length > 0 &&\r\n {item.handlers[0].name}\r\n }\r\n {otherHandlers.length > 0 &&\r\n \r\n }\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\n// WhistleBlowList\r\nexport interface IWhistleBlowListProp extends IWhistleBlowPageFilterState {\r\n sessionState: ISessionState;\r\n savedFilter: IListFilterItem;\r\n companyId: string;\r\n maxAttachmentsTotalSize: number;\r\n disableGlobalLoading?: boolean;\r\n preloaded?: boolean;\r\n waitingPreloadedData?: boolean;\r\n list?: IWhistleBlowListItems;\r\n units: IIdTitleNode[];\r\n dataId?: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n titleSuffix?: JSX.Element;\r\n reportTabs?: React.ReactNode;\r\n onSetSortData: (sortColumn: string, sortOrderIsAsc: boolean) => void;\r\n onLoadPageData: () => void;\r\n onArchive: () => void;\r\n onOpenFiltersDialog: () => void;\r\n}\r\n\r\ninterface IWhistleBlowListState extends IListUsingComponentState, IWhistleBlowGeneralFilter {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n waitingPreloadedData: boolean;\r\n pageSize: number;\r\n page: number;\r\n filter: string;\r\n\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n listModeIsLine: boolean;\r\n items: IWhistleBlowListItem[];\r\n checkedIds: string[];\r\n\r\n // New Dialog\r\n showNewWhistleBlowDialog: boolean;\r\n}\r\n\r\nexport class WhistleBlowList extends React.Component {\r\n sortHandlers = (items: IWhistleBlowListItem[]): IWhistleBlowListItem[] => {\r\n for (const item of items) {\r\n item.handlers = ModifyUser.sortModifyUsers(item.handlers, { currentUserCode: this.props.sessionState.code });\r\n }\r\n return items;\r\n };\r\n\r\n constructor(props: IWhistleBlowListProp) {\r\n super(props);\r\n const generalFilterValues = WhistleBlowPageDashboardChart.getGeneralFilterFromState(props);\r\n this.state = {\r\n ...generalFilterValues,\r\n intialized: props.list && !!props.preloaded,\r\n isLoading: false,\r\n waitingPreloadedData: !Base.isNullOrUndefined(props.waitingPreloadedData) ? props.waitingPreloadedData : (props.list ? false : props.preloaded),\r\n page: props.list ? props.list.page : 1,\r\n hasMore: props.list ? props.list.hasMore : true,\r\n filter: \"\",\r\n pageSize: props.list ? props.list.pageSize : infiniteListPageSize,\r\n sortColumn: props.sortColumn,\r\n sortOrderIsAsc: props.sortOrderIsAsc,\r\n listModeIsLine: true,\r\n items: this.sortHandlers(props.list ? props.list.items : []),\r\n selectedId: null,\r\n checkedIds: [],\r\n // Details\r\n detailsItem: null,\r\n // New Dialog\r\n showNewWhistleBlowDialog: false,\r\n // Dialog\r\n showEditDialog: false,\r\n editDialogId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false\r\n };\r\n }\r\n\r\n searchItems = async (pageSize: number, page: number, filter: string, startDate: number, endDate: number, unitIds: string[], categoryIds: string[], handlerUserCodes: string[], stateFilterId: number, severityFilterId: number, resolutionFilterId: number,\r\n sourceFilterId: number, anonymityFilterId: number, dynamicTimeFilterId: number, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean, moveNext: boolean = false, setDialogData: boolean = true) => {\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => whistleBlowService.getWhistleBlowListItems(this.props.companyId, !refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1, filter,\r\n startDate, endDate, unitIds, categoryIds, handlerUserCodes, stateFilterId, severityFilterId, resolutionFilterId, sourceFilterId, anonymityFilterId, dynamicTimeFilterId, sortColumn, sortOrderIsAsc), false, this.props.disableGlobalLoading, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const items = List.getListItems(this.state.items, this.state.selectedId, this.state.checkedIds, this.sortHandlers(result.items), resetItems, refreshList);\r\n let selectedId = items.selectedId;\r\n let index = items.items.findIndex(i => i.id === selectedId);\r\n let detailsItem = index > -1 ? items.items[index] : null;\r\n if (moveNext && detailsItem && index < items.items.length - 1) {\r\n index = index + 1;\r\n detailsItem = items.items[index];\r\n selectedId = items.items[index].id;\r\n }\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n unitIds,\r\n categoryIds,\r\n handlerUserCodes,\r\n stateFilterId,\r\n severityFilterId,\r\n resolutionFilterId,\r\n sourceFilterId,\r\n anonymityFilterId,\r\n dynamicTimeFilterId,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n selectedId,\r\n checkedIds: items.checkedIds,\r\n detailsItem,\r\n editDialogId: setDialogData ? (moveNext && detailsItem ? detailsItem.id : \"\") : this.state.editDialogId,\r\n editDialogHasPrevious: setDialogData ? index > 0 : this.state.editDialogHasPrevious,\r\n editDialogHasNext: setDialogData ? (index < items.items.length - 1 || result.hasMore) : this.state.editDialogHasNext,\r\n });\r\n this.props.onSetSortData(sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n refreshList = async (setDialogData: boolean = true) => {\r\n const state = this.state;\r\n await this.searchItems(state.pageSize, state.page, state.filter, state.startDate, state.endDate, state.unitIds, state.categoryIds, state.handlerUserCodes, state.stateFilterId,\r\n state.severityFilterId, state.resolutionFilterId, state.sourceFilterId, state.anonymityFilterId, state.dynamicTimeFilterId, state.sortColumn, state.sortOrderIsAsc, false, true, false, setDialogData);\r\n };\r\n\r\n componentDidMount(): void {\r\n const props = this.props;\r\n const state = this.state;\r\n if (props.preloaded && !props.savedFilter) return;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.startDate, state.endDate, state.unitIds, state.categoryIds, state.handlerUserCodes, state.stateFilterId,\r\n state.severityFilterId, state.resolutionFilterId, state.sourceFilterId, state.anonymityFilterId, state.dynamicTimeFilterId, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: IWhistleBlowListProp, prevState: IWhistleBlowListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.waitingPreloadedData) {\r\n if (!props.list || (props.dataId ?? \"\") === (prevProps.dataId ?? \"\")) return;\r\n this.setState({\r\n intialized: true,\r\n waitingPreloadedData: false,\r\n page: props.list.page,\r\n hasMore: props.list.hasMore,\r\n items: props.list.items,\r\n pageSize: props.list.pageSize\r\n });\r\n } else {\r\n const prevDataId = prevProps.dataId ? prevProps.dataId : \"\";\r\n const dataId = props.dataId ? props.dataId : \"\";\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n const filterStateChange = WhistleBlowPageDashboardChart.getWhistleBlowGeneralFilterChange(prevProps, props);\r\n const prevSortColumn = prevProps.sortColumn;\r\n const sortColumn = props.sortColumn;\r\n const prevSortOrderIsAsc = prevProps.sortOrderIsAsc;\r\n const sortOrderIsAsc = props.sortOrderIsAsc;\r\n if (dataId === prevDataId && companyId === prevCompanyId &&\r\n filterStateChange.notChanged &&\r\n prevSortColumn === sortColumn && prevSortOrderIsAsc === sortOrderIsAsc) return;\r\n this.searchItems(state.pageSize, state.page, state.filter, filterStateChange.startDate, filterStateChange.endDate, filterStateChange.unitIds, filterStateChange.categoryIds, filterStateChange.handlerUserCodes,\r\n filterStateChange.stateFilterId, filterStateChange.severityFilterId, filterStateChange.resolutionFilterId, filterStateChange.sourceFilterId, filterStateChange.anonymityFilterId,\r\n filterStateChange.dynamicTimeFilterId, sortColumn, sortOrderIsAsc, true, false);\r\n }\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, filter, state.startDate, state.endDate, state.unitIds, state.categoryIds, state.handlerUserCodes, state.stateFilterId,\r\n state.severityFilterId, state.resolutionFilterId, state.sourceFilterId, state.anonymityFilterId, state.dynamicTimeFilterId, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, state.startDate, state.endDate, state.unitIds, state.categoryIds, state.handlerUserCodes, state.stateFilterId,\r\n state.severityFilterId, state.resolutionFilterId, state.sourceFilterId, state.anonymityFilterId, state.dynamicTimeFilterId, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds,\r\n detailsItem: this.state.items.find(i => i.id === selectedId)\r\n });\r\n };\r\n \r\n handleListModeToggle = (_event: React.MouseEvent, listModeIsLine: boolean) => {\r\n this.setState({\r\n listModeIsLine,\r\n });\r\n };\r\n\r\n // #region Edit dialog\r\n handleOpenLine = (id: string) => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, id));\r\n };\r\n\r\n handleWhistleBlowDialogOk = () => {\r\n this.refreshList(false);\r\n this.props.onLoadPageData();\r\n };\r\n\r\n handleWhistleBlowDialogCancel = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n this.refreshList();\r\n this.props.onLoadPageData();\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n this.setState(List.getEditDialogItemByIndexStateChange(this.state, index, () => this.searchItems(state.pageSize, state.page + 1, state.filter, state.startDate, state.endDate, state.unitIds, state.categoryIds, state.handlerUserCodes, state.stateFilterId,\r\n state.severityFilterId, state.resolutionFilterId, state.sourceFilterId, state.anonymityFilterId, state.dynamicTimeFilterId, state.sortColumn, state.sortOrderIsAsc, false, false, true)));\r\n };\r\n // #endregion Edit dialog\r\n\r\n // #region Add dialog\r\n handleAdd = () => {\r\n this.setState({\r\n showNewWhistleBlowDialog: true\r\n });\r\n };\r\n\r\n handleEditNewRecordDialogOk = (whistleBlowId: string) => {\r\n this.setState({\r\n selectedId: whistleBlowId,\r\n showNewWhistleBlowDialog: false\r\n });\r\n this.refreshList();\r\n };\r\n\r\n handleEditNewRecordDialogCancel = () => {\r\n this.setState({\r\n showNewWhistleBlowDialog: false\r\n });\r\n };\r\n // #endregion Add dialog\r\n\r\n handlePrint = async () => {\r\n const state = this.state;\r\n if (!state.selectedId) return;\r\n const fileName = await AppUtils.callService(() => whistleBlowService.getWhistleblowPrint(state.selectedId));\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.PrintParameterDownloaded, fileName));\r\n };\r\n\r\n // #region Additional functions: ArchiveWhistleBlows\r\n handleArchiveWhistleBlows = () => {\r\n this.props.onArchive();\r\n };\r\n // #endregion Additional functions: ArchiveWhistleBlows\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n \r\n {Translations.AddWhistleBlow}\r\n \r\n \r\n \r\n \r\n this.changeFilter(\"\")}\r\n />\r\n \r\n }\r\n tooltip={Translations.AdditionalFunctions}\r\n menuRight={true}\r\n />\r\n \r\n }\r\n />\r\n {\r\n return {\r\n columns: [\r\n { size: 1, content: item.unitCode },\r\n {\r\n size: 1,\r\n content:\r\n this.handleOpenLine(item.id)} sx={{ overflow: \"hidden\" }}>\r\n \r\n {item.code}\r\n \r\n {!item.anonymous &&\r\n \r\n \r\n \r\n }\r\n \r\n },\r\n { size: 1, content: Base.timeToDateTimeStr(item.date) },\r\n { size: 2, content: item.title ? item.title : \"-\" },\r\n {\r\n size: 2,\r\n content: \r\n },\r\n {\r\n size: 2,\r\n content: \r\n },\r\n { size: 2, content: item.categoryCode },\r\n { size: 1, content: item.severityStr }\r\n ],\r\n id: item.id\r\n };\r\n })\r\n : null\r\n }\r\n cards={!state.listModeIsLine\r\n ? state.items.map((item) => {\r\n return {\r\n sm: 4,\r\n rows: [\r\n {\r\n cols: [\r\n {\r\n size: 6,\r\n title: Translations.Code,\r\n value:\r\n this.handleOpenLine(item.id)}>\r\n {item.code}\r\n {item.unreadMessageCount\r\n ? \r\n : null\r\n }\r\n {!item.anonymous\r\n ? \r\n \r\n \r\n : null\r\n }\r\n \r\n },\r\n { size: 6, title: Translations.Date, value: Base.timeToDateStr(item.date) }\r\n ]\r\n },\r\n {\r\n cols: [\r\n { title: Translations.Title, value: item.title },\r\n ]\r\n },\r\n {\r\n cols: [\r\n { size: 6, title: Translations.State, value: },\r\n { size: 6, title: Translations.Unit, value: item.unitCode }\r\n ]\r\n },\r\n {\r\n cols: [\r\n { size: 6, title: Translations.Category, value: item.categoryCode },\r\n { size: 6, title: Translations.Severity, value: item.severityStr },\r\n ]\r\n }],\r\n id: item.id\r\n };\r\n })\r\n : null\r\n }\r\n lineDetails={state.detailsItem\r\n ? \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.handleOpenLine(state.selectedId)}\r\n />\r\n \r\n : null}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpenLine}\r\n />\r\n {state.showNewWhistleBlowDialog &&\r\n \r\n }\r\n {(state.showEditDialog && !!state.editDialogId) &&\r\n this.refreshList(false)}\r\n onPrevious={() => List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n />\r\n }\r\n \r\n \r\n );\r\n }\r\n}","//WhistleBlowArchiveWhistleBlowList\r\n//***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport * as whistleBlowService from \"../../../models/services/whistleBlowService\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IWhistleBlowListItem } from \"ui/Scripts/source/models/whistleBlow/whistleBlowListItem\";\r\nimport { WhistleBlowListStateCol } from \"../WhistleBlowList\";\r\nimport { WhistleBlowState } from \"ui/Scripts/source/models/enums\";\r\nimport { IWhistleBlowPageFilterState, WhistleBlowPageDashboardChart } from \"../WhistleBlowPageDashboardChart\";\r\n\r\n//WhistleBlowArchiveWhistleBlowList\r\nexport interface IWhistleBlowArchiveWhistleBlowListProps extends IWhistleBlowPageFilterState {\r\n classes?: string;\r\n companyId: string;\r\n selectedId?: string;\r\n checkedIds?: string[];\r\n dataId?: string;\r\n sortColumn?: string;\r\n sortOrderIsAsc?: boolean;\r\n onSetSelectedIds?: (selectedId: string, checkedIds: string[]) => void;\r\n onSetSortData?: (sortColumn: string, sortOrderIsAsc: boolean) => void;\r\n}\r\n\r\nexport interface IWhistleBlowArchiveWhistleBlowListState {\r\n //List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n pageSize: number;\r\n page: number;\r\n hasMore: boolean;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n items: IWhistleBlowListItem[];\r\n}\r\n\r\nexport class WhistleBlowArchiveWhistleBlowList extends React.Component {\r\n constructor(props: IWhistleBlowArchiveWhistleBlowListProps) {\r\n super(props);\r\n this.state = {\r\n //List\r\n intialized: false,\r\n isLoading: false,\r\n pageSize: 10000,\r\n page: 1,\r\n hasMore: true,\r\n sortColumn: props.sortColumn ? props.sortColumn : \"state\",\r\n sortOrderIsAsc: props.sortColumn ? props.sortOrderIsAsc : true,\r\n items: []\r\n };\r\n }\r\n\r\n searchItems = async (pageSize: number, page: number, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean, initialLoad: boolean = false) => {\r\n const props = this.props;\r\n const state = this.state;\r\n this.setState({ isLoading: true });\r\n const severity = !Base.isNullOrUndefined(props.selectedSeverityFilterId) ? parseInt(props.selectedSeverityFilterId, 10) : null;\r\n const resolution = !Base.isNullOrUndefined(props.selectedResolutionFilterId) ? parseInt(props.selectedResolutionFilterId, 10) : null;\r\n const source = !Base.isNullOrUndefined(props.selectedSourceFilterId) ? parseInt(props.selectedSourceFilterId, 10) : null;\r\n const anonymity = !Base.isNullOrUndefined(props.selectedAnonymityFilterId) ? parseInt(props.selectedAnonymityFilterId, 10) : null;\r\n const dynamicTime = !Base.isNullOrUndefined(props.selectedDynamicTimeFilterId) ? parseInt(props.selectedDynamicTimeFilterId, 10) : 0;\r\n const result = await AppUtils.callService(() => whistleBlowService.getWhistleBlowListItems(this.props.companyId, !refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1, null,\r\n props.selectedStartDate, props.selectedEndDate, props.selectedUnitIds.filter(i => i !== Base.emptyGuid), props.selectedCategoryIds.filter(i => i !== Base.emptyGuid),\r\n props.selectedHandlerUserCodes.filter(i => !!i), WhistleBlowState.Resolved,\r\n severity, resolution, source, anonymity, dynamicTime, sortColumn, sortOrderIsAsc), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const items = List.getListItems(state.items, props.selectedId ?? \"\", props.checkedIds ?? [], result.items, resetItems, refreshList);\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items\r\n });\r\n if (props.onSetSelectedIds) {\r\n props.onSetSelectedIds(items.selectedId, !initialLoad ? items.checkedIds : items.items.map(i => i.id));\r\n }\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, state.sortColumn, state.sortOrderIsAsc, true, false, true);\r\n }\r\n\r\n componentDidUpdate(prevProps: IWhistleBlowArchiveWhistleBlowListProps, prevState: IWhistleBlowArchiveWhistleBlowListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevDataId = prevProps.dataId ? prevProps.dataId : \"\";\r\n const dataId = props.dataId ? props.dataId : \"\";\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n const filterStateChange = WhistleBlowPageDashboardChart.getWhistleBlowGeneralFilterChange(prevProps, props);\r\n const prevSortColumn = prevProps.sortColumn ? prevProps.sortColumn : state.sortColumn;\r\n const sortColumn = props.sortColumn ? props.sortColumn : state.sortColumn;\r\n const prevSortOrderIsAsc = prevProps.sortColumn ? prevProps.sortOrderIsAsc : state.sortOrderIsAsc;\r\n const sortOrderIsAsc = props.sortColumn ? props.sortOrderIsAsc : state.sortOrderIsAsc;\r\n if (dataId === prevDataId && companyId === prevCompanyId &&\r\n filterStateChange.notChanged &&\r\n prevSortColumn === sortColumn && prevSortOrderIsAsc === sortOrderIsAsc) return;\r\n this.searchItems(state.pageSize, 1, sortColumn, sortOrderIsAsc, true, false, true);\r\n }\r\n\r\n handleSearchLinesDialog = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n {\r\n return {\r\n columns: [\r\n { size: 2, content: item.unitCode },\r\n {\r\n size: 2,\r\n content:\r\n
    \r\n
    {item.code}
    \r\n {!item.anonymous &&\r\n \r\n }\r\n
    \r\n },\r\n { size: 1, content: Base.timeToDateTimeStr(item.date) },\r\n { size: 2, content: item.title },\r\n {\r\n size: 2,\r\n content: \r\n },\r\n //{\r\n // classes: \"col-2 whistleBlowHandlersCol \",\r\n // content: \r\n //},\r\n { size: 2, content: item.categoryCode },\r\n { size: 1, content: item.severityStr }\r\n ],\r\n id: item.id\r\n };\r\n })\r\n }\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={props.selectedId}\r\n checkedIds={props.checkedIds}\r\n onSetSelectedIds={props.onSetSelectedIds}\r\n onSearchLines={this.handleSearchLinesDialog}\r\n />\r\n );\r\n }\r\n}","// WhistleBlowFilterSettings - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Grid, MenuItem, Select } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { CheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/CheckboxDropdown\";\r\nimport { TreeCheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/TreeCheckboxDropdown\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { DatePicker } from \"../../framework/DateTime/DatePicker\";\r\nimport { FilterButtons } from \"../../framework/Filters/FilterButtons\";\r\nimport { FilterSearchField } from \"../../framework/Filters/FilterSearchField\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\n\r\n//WhistleBlowFilterSettings\r\nexport interface IWhistleBlowFilterSettingsProp {\r\n classes?: string;\r\n filter: IListFilterItem;\r\n units: IIdTitleNode[];\r\n categories: IIdTitle[];\r\n handlers: IIdTitle[];\r\n stateFilters: IIdTitle[];\r\n severityFilters: IIdTitle[];\r\n resolutionFilters: IIdTitle[];\r\n sourceFilters: IIdTitle[];\r\n anonymityFilters: IIdTitle[];\r\n dynamicTimeFilters: IIdTitle[];\r\n size: \"sm\" | \"lg\";\r\n selectedStartDate: number;\r\n selectedEndDate: number;\r\n selectedUnitIds: string[];\r\n selectedCategoryIds: string[];\r\n selectedHandlerUserCodes: string[];\r\n selectedStateFilterId: string;\r\n selectedSeverityFilterId: string;\r\n selectedResolutionFilterId: string;\r\n selectedSourceFilterId: string;\r\n selectedAnonymityFilterId: string;\r\n selectedDynamicTimeFilterId: string;\r\n canRemoveSharedFilters: boolean;\r\n stateIsReadOnly?: boolean;\r\n onSaveFilter: (saveAs: boolean, onGetGeneralFilter: () => any) => void;\r\n onRemoveFilter: (filterId: string) => void;\r\n onOk: (closeDialog: boolean, startDate: number, endDate: number, selectedStateFilterId: string, selectedSeverityFilterId: string, selectedResolutionFilterId: string,\r\n selectedSourceFilterId: string, selectedAnonymityFilterId: string, selectedDynamicTimeFilterId: string, selectedCategoryIds: string[], selectedHandlerUserCodes: string[],\r\n selectedUnitIds: string[]) => any;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IWhistleBlowFilterSettingsState {\r\n startDateStr: string;\r\n endDateStr: string;\r\n selectedStateFilterId: string;\r\n selectedSeverityFilterId: string;\r\n selectedResolutionFilterId: string;\r\n selectedSourceFilterId: string;\r\n selectedAnonymityFilterId: string;\r\n selectedDynamicTimeFilterId: string;\r\n selectedCategoryIds: string[];\r\n selectedHandlerUserCodes: string[];\r\n selectedUnitIds: string[];\r\n startEndDateDisabled: boolean;\r\n}\r\n\r\nexport class WhistleBlowFilterSettings extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n getStateFromProps = (props: IWhistleBlowFilterSettingsProp): IWhistleBlowFilterSettingsState => {\r\n return {\r\n startDateStr: props.selectedStartDate ? Base.timeToDateStr(props.selectedStartDate) : \"\",\r\n endDateStr: props.selectedEndDate ? Base.timeToDateStr(props.selectedEndDate) : \"\",\r\n selectedStateFilterId: props.selectedStateFilterId,\r\n selectedSeverityFilterId: props.selectedSeverityFilterId,\r\n selectedResolutionFilterId: props.selectedResolutionFilterId,\r\n selectedSourceFilterId: props.selectedSourceFilterId,\r\n selectedAnonymityFilterId: props.selectedAnonymityFilterId,\r\n selectedDynamicTimeFilterId: props.selectedDynamicTimeFilterId,\r\n selectedCategoryIds: props.selectedCategoryIds.slice(0),\r\n selectedHandlerUserCodes: props.selectedHandlerUserCodes.slice(0),\r\n selectedUnitIds: props.selectedUnitIds.slice(0),\r\n startEndDateDisabled: props.selectedDynamicTimeFilterId !== props.dynamicTimeFilters[0].id\r\n };\r\n };\r\n\r\n constructor(props: IWhistleBlowFilterSettingsProp) {\r\n super(props);\r\n this.state = this.getStateFromProps(props);\r\n this.orgStateHash = this.getSaveDataFromState(props, this.state).hash;\r\n }\r\n\r\n componentDidUpdate(prevProps: IWhistleBlowFilterSettingsProp, prevState: IWhistleBlowFilterSettingsState): void {\r\n const props = this.props;\r\n if (!prevProps || prevProps.filter?.getHash() === props.filter?.getHash()) return;\r\n const state = this.getStateFromProps(props);\r\n this.setState(state);\r\n this.orgStateHash = this.getSaveDataFromState(props, state).hash;\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"selectedStateFilterId\") {\r\n this.setState({ selectedStateFilterId: value });\r\n } else if (name === \"selectedSeverityFilterId\") {\r\n this.setState({ selectedSeverityFilterId: value });\r\n } else if (name === \"selectedResolutionFilterId\") {\r\n this.setState({ selectedResolutionFilterId: value });\r\n } else if (name === \"selectedSourceFilterId\") {\r\n this.setState({ selectedSourceFilterId: value });\r\n } else if (name === \"selectedAnonymityFilterId\") {\r\n this.setState({ selectedAnonymityFilterId: value });\r\n } else if (name === \"selectedDynamicTimeFilterId\") {\r\n if (value.toInteger() > 0) {\r\n this.setState({ selectedDynamicTimeFilterId: value, startDateStr: \"\", endDateStr: \"\", startEndDateDisabled: true });\r\n } else {\r\n this.setState({ selectedDynamicTimeFilterId: value, startEndDateDisabled: false });\r\n }\r\n }\r\n };\r\n\r\n handleChangeUnitIds = (selectedUnitIds: string[]) => {\r\n this.setState({\r\n selectedUnitIds\r\n });\r\n };\r\n\r\n handleChangeCategoryIds = (selectedCategoryIds: string[]) => {\r\n this.setState({\r\n selectedCategoryIds\r\n });\r\n };\r\n\r\n handleChangeHandlerUserCodes = (selectedHandlerUserCodes: string[]) => {\r\n this.setState({\r\n selectedHandlerUserCodes\r\n });\r\n };\r\n\r\n handleStartDateChange = (value: string) => {\r\n this.setState({ startDateStr: value });\r\n };\r\n\r\n handleEndDateChange = (value: string) => {\r\n this.setState({ endDateStr: value });\r\n };\r\n\r\n getSaveDataFromState = (_props: IWhistleBlowFilterSettingsProp, state: IWhistleBlowFilterSettingsState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"startDate\", state.startDateStr);\r\n result.append(\"endDate\", state.endDateStr);\r\n result.append(\"selectedStateFilterId\", state.selectedStateFilterId ? state.selectedStateFilterId : null);\r\n result.append(\"selectedSeverityFilterId\", state.selectedSeverityFilterId ? state.selectedSeverityFilterId : null);\r\n result.append(\"selectedResolutionFilterId\", state.selectedResolutionFilterId ? state.selectedResolutionFilterId : null);\r\n result.append(\"selectedSourceFilterId\", state.selectedSourceFilterId ? state.selectedSourceFilterId : null);\r\n result.append(\"selectedAnonymityFilterId\", state.selectedAnonymityFilterId ? state.selectedAnonymityFilterId : null);\r\n result.append(\"selectedDynamicTimeFilterId\", state.selectedDynamicTimeFilterId ? state.selectedDynamicTimeFilterId : null);\r\n result.append(\"selectedCategoryIds\", state.selectedCategoryIds);\r\n result.append(\"selectedHandlerUserCodes\", state.selectedHandlerUserCodes);\r\n result.append(\"selectedUnitIds\", state.selectedUnitIds);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n static filterIsSet = (units: IIdTitleNode[], categories: IIdTitle[], handlers: IIdTitle[], stateFilters: IIdTitle[], severityFilters: IIdTitle[], resolutionFilters: IIdTitle[], sourceFilters: IIdTitle[],\r\n anonymityFilters: IIdTitle[], dynamicTimeFilters: IIdTitle[],\r\n startDate: number, endDate: number, selectedUnitIds: string[], selectedCategoryIds: string[], selectedHandlerUserCodes: string[], selectedStateFilterId: string, selectedSeverityFilterId: string,\r\n selectedResolutionFilterId: string, selectedSourceFilterId: string, selectedAnonymityFilterId: string, selectedDynamicTimeFilterId: string,\r\n defaultStateFilterIndex: number = 0): boolean => {\r\n return !!startDate || !!endDate ||\r\n !(selectedStateFilterId === stateFilters[defaultStateFilterIndex].id &&\r\n selectedSeverityFilterId === severityFilters[0].id &&\r\n selectedResolutionFilterId === resolutionFilters[0].id &&\r\n selectedSourceFilterId === sourceFilters[0].id &&\r\n selectedAnonymityFilterId === anonymityFilters[0].id &&\r\n selectedDynamicTimeFilterId === dynamicTimeFilters[0].id &&\r\n Base.equalStrArrays(selectedCategoryIds, [categories[0].id]) &&\r\n Base.equalStrArrays(selectedHandlerUserCodes, [handlers[0].id]) &&\r\n Base.equalStrArrays(selectedUnitIds, [units[0].id]));\r\n };\r\n\r\n handleSaveFilter = async (saveAs: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n const startDate = state.startDateStr ? state.startDateStr.toDate().getTime() : null;\r\n const endDate = state.endDateStr ? state.endDateStr.toDate().getTime() : null;\r\n if (!saveAs) {\r\n props.onOk(false, startDate, endDate,\r\n state.selectedStateFilterId, state.selectedSeverityFilterId, state.selectedResolutionFilterId,\r\n state.selectedSourceFilterId, state.selectedAnonymityFilterId, state.selectedDynamicTimeFilterId,\r\n state.selectedCategoryIds, state.selectedHandlerUserCodes, state.selectedUnitIds);\r\n await this.props.onSaveFilter(false, null);\r\n } else {\r\n await this.props.onSaveFilter(true, () => {\r\n return props.onOk(false, startDate, endDate,\r\n state.selectedStateFilterId, state.selectedSeverityFilterId, state.selectedResolutionFilterId,\r\n state.selectedSourceFilterId, state.selectedAnonymityFilterId, state.selectedDynamicTimeFilterId,\r\n state.selectedCategoryIds, state.selectedHandlerUserCodes, state.selectedUnitIds);\r\n });\r\n }\r\n };\r\n\r\n handleClear = () => {\r\n const props = this.props;\r\n this.setState({\r\n startDateStr: \"\",\r\n endDateStr: \"\",\r\n selectedStateFilterId: props.onSaveFilter && props.onRemoveFilter ? props.stateFilters[0].id : this.state.selectedStateFilterId,\r\n selectedSeverityFilterId: props.severityFilters[0].id,\r\n selectedResolutionFilterId: props.resolutionFilters[0].id,\r\n selectedSourceFilterId: props.sourceFilters[0].id,\r\n selectedAnonymityFilterId: props.anonymityFilters[0].id,\r\n selectedDynamicTimeFilterId: props.dynamicTimeFilters[0].id,\r\n selectedCategoryIds: [props.categories[0].id],\r\n selectedHandlerUserCodes: [props.handlers[0].id],\r\n selectedUnitIds: [props.units[0].id]\r\n });\r\n };\r\n\r\n handleSave = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n props.onOk(true, state.startDateStr ? state.startDateStr.toDate().getTime() : null,\r\n state.endDateStr ? state.endDateStr.toDate().getTime() : null,\r\n state.selectedStateFilterId, state.selectedSeverityFilterId, state.selectedResolutionFilterId,\r\n state.selectedSourceFilterId, state.selectedAnonymityFilterId, state.selectedDynamicTimeFilterId,\r\n state.selectedCategoryIds, state.selectedHandlerUserCodes, state.selectedUnitIds);\r\n };\r\n\r\n handleCancel = async (checkChanges: boolean) => {\r\n AppUtils.cancelEditDialog(checkChanges, this.getSaveDataFromState(this.props, this.state).hash, this.orgStateHash, this.handleSave, this.props.onCancel, Translations.YouHaveUnapprovedChangesDoYouWantApproveChanges);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n \r\n {!!props.onSaveFilter && !!props.onRemoveFilter &&\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}","//WhistleBlowArchiveDialog\r\n//***********************************************************************************************************************\r\nimport { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { WhistleBlowArchivingType, WhistleBlowState } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IListFilterItem, ListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport * as whistleBlowService from \"../../../models/services/whistleBlowService\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { ListActionButtons } from \"../../framework/List/ListActionButtons\";\r\nimport { WhistleBlowArchiveSelectTypeDialog } from \"../WhistleBlowArchiveSelectTypeDialog/WhistleBlowArchiveSelectTypeDialog\";\r\nimport { WhistleBlowArchiveWhistleBlowList } from \"../WhistleBlowArchiveWhistleBlowList\";\r\nimport { WhistleBlowFilterSettings } from \"../WhistleBlowFilterSettings\";\r\nimport { IWhistleBlowPageFilterState, WhistleBlowPageDashboardChart } from \"../WhistleBlowPageDashboardChart\";\r\nimport { List } from \"source/components/framework/List/List\";\r\n\r\n//WhistleBlowArchiveDialog\r\nexport interface IWhistleBlowArchiveDialogProps {\r\n classes?: string;\r\n companyId: string;\r\n units: IIdTitleNode[];\r\n categories: IIdTitle[];\r\n handlers: IIdTitle[];\r\n stateFilters: IIdTitle[];\r\n severityFilters: IIdTitle[];\r\n resolutionFilters: IIdTitle[];\r\n sourceFilters: IIdTitle[];\r\n anonymityFilters: IIdTitle[];\r\n dynamicTimeFilters: IIdTitle[];\r\n onOk: () => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IWhistleBlowArchiveDialogState extends IWhistleBlowPageFilterState {\r\n selectedId: string;\r\n checkedIds: string[];\r\n showWhistleBlowFilterDialog: boolean;\r\n whistleBlowFilterDialogFilter: IListFilterItem;\r\n whistleBlowFilterIsSet: boolean;\r\n showWhistleBlowArchiveSelectTypeDialog: boolean;\r\n}\r\n\r\nexport class WhistleBlowArchiveDialog extends React.Component {\r\n constructor(props: IWhistleBlowArchiveDialogProps) {\r\n super(props);\r\n this.state = {\r\n selectedId: null,\r\n checkedIds: [],\r\n selectedStartDate: null,\r\n selectedEndDate: null,\r\n selectedUnitIds: [props.units[0].id],\r\n selectedCategoryIds: [props.categories[0].id],\r\n selectedHandlerUserCodes: [props.handlers[0].id],\r\n selectedStateFilterId: WhistleBlowState.Resolved.toString(10),\r\n selectedSeverityFilterId: props.severityFilters[0].id,\r\n selectedResolutionFilterId: props.resolutionFilters[0].id,\r\n selectedSourceFilterId: props.sourceFilters[0].id,\r\n selectedAnonymityFilterId: props.anonymityFilters[0].id,\r\n selectedDynamicTimeFilterId: props.dynamicTimeFilters[0].id,\r\n showWhistleBlowFilterDialog: false,\r\n whistleBlowFilterDialogFilter: null,\r\n whistleBlowFilterIsSet: false,\r\n showWhistleBlowArchiveSelectTypeDialog: false\r\n };\r\n }\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n handleCancel = () => {\r\n this.props.onCancel();\r\n };\r\n\r\n static getSaveData = (archivingType: WhistleBlowArchivingType, whistleBlowIds: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"ids\", whistleBlowIds);\r\n result.append(\"archivingType\", archivingType);\r\n return result;\r\n };\r\n\r\n static archiveWhistleBlows = async (archivingType: WhistleBlowArchivingType, whistleBlowIds: string[]): Promise => {\r\n if (whistleBlowIds.length < 1) return;\r\n const saveData = WhistleBlowArchiveDialog.getSaveData(archivingType, whistleBlowIds);\r\n // Call server\r\n return await AppUtils.callService(() => whistleBlowService.archiveWhistleBlows(saveData.obj));\r\n };\r\n\r\n // #region Archiving Type\r\n handleOk = async () => {\r\n this.setState({\r\n showWhistleBlowArchiveSelectTypeDialog: true\r\n });\r\n };\r\n\r\n handleWhistleBlowArchiveSelectTypeDialogOk = async (archivingType: WhistleBlowArchivingType) => {\r\n const state = this.state;\r\n const result = await WhistleBlowArchiveDialog.archiveWhistleBlows(archivingType, List.getSelectedIds(state.selectedId, state.checkedIds));\r\n if (!result) return null;\r\n this.props.onOk();\r\n };\r\n \r\n handleWhistleBlowArchiveSelectTypeDialogCancel = () => {\r\n this.setState({\r\n showWhistleBlowArchiveSelectTypeDialog: false\r\n });\r\n };\r\n \r\n // #endregion Archiving Type\r\n\r\n // #region Record Filter\r\n getWhistleBlowFilterIsSet = (state: IWhistleBlowArchiveDialogState): boolean => {\r\n const props = this.props;\r\n return WhistleBlowFilterSettings.filterIsSet(props.units, props.categories, props.handlers, props.stateFilters, props.severityFilters, props.resolutionFilters, props.sourceFilters, props.anonymityFilters, props.dynamicTimeFilters,\r\n state.selectedStartDate, state.selectedEndDate, state.selectedUnitIds, state.selectedCategoryIds, state.selectedHandlerUserCodes, props.stateFilters[0].id, state.selectedSeverityFilterId,\r\n state.selectedResolutionFilterId, state.selectedSourceFilterId, state.selectedAnonymityFilterId, state.selectedDynamicTimeFilterId);\r\n };\r\n\r\n handleOpenWhistleBlowFilterDialog = () => {\r\n this.setState({\r\n showWhistleBlowFilterDialog: true,\r\n whistleBlowFilterDialogFilter: ListFilterItem.createListFilterItem(Base.getGuid(), Translations.ArchiveWhistleBlows, WhistleBlowPageDashboardChart.getGeneralFilterFromState(this.state), \"state\", true)\r\n });\r\n };\r\n\r\n onWhistleBlowFilterDialogOk = (closeDialog: boolean, selectedStartDate: number, selectedEndDate: number, selectedStateFilterId: string, selectedSeverityFilterId: string, selectedResolutionFilterId: string,\r\n selectedSourceFilterId: string, selectedAnonymityFilterId: string, selectedDynamicTimeFilterId: string, selectedCategoryIds: string[], selectedUnitIds: string[]): any => {\r\n const newState = { ...this.state, selectedStartDate, selectedEndDate, selectedStateFilterId, selectedSeverityFilterId, selectedResolutionFilterId, selectedSourceFilterId, selectedAnonymityFilterId, selectedDynamicTimeFilterId, selectedCategoryIds, selectedUnitIds };\r\n this.setState({\r\n showWhistleBlowFilterDialog: !closeDialog,\r\n selectedStartDate,\r\n selectedEndDate,\r\n //selectedStateFilterId,\r\n selectedSeverityFilterId,\r\n selectedResolutionFilterId,\r\n selectedSourceFilterId,\r\n selectedAnonymityFilterId,\r\n selectedDynamicTimeFilterId,\r\n selectedCategoryIds,\r\n selectedUnitIds,\r\n whistleBlowFilterIsSet: this.getWhistleBlowFilterIsSet(newState),\r\n //whistleBlowFilterActions: this.getWhistleBlowFilterActions(newState)\r\n });\r\n return WhistleBlowPageDashboardChart.getGeneralFilterFromState(newState);\r\n };\r\n \r\n onWhistleBlowFilterDialogCancel = () => {\r\n this.setState({ showWhistleBlowFilterDialog: false });\r\n };\r\n // #endregion Record Filter\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n\r\n return (\r\n \r\n \r\n }\r\n />\r\n \r\n {state.showWhistleBlowFilterDialog &&\r\n \r\n }\r\n onClose={this.handleCancel}\r\n />\r\n }\r\n {state.showWhistleBlowArchiveSelectTypeDialog &&\r\n \r\n }\r\n \r\n }\r\n buttons={[\r\n { title: Translations.Cancel, variant: \"outlined\", onClick: this.handleCancel },\r\n { title: Translations.OK, variant: \"confirmation\", onClick: this.handleOk },\r\n ]}\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","// WhistleBlowCategoryDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Checkbox, FormControlLabel, Grid, TextField } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IRecordFamiliarizationEditItem } from \"../../../models/recordFamiliarization/recordFamiliarizationEditItem\";\r\nimport * as whistleBlowService from \"../../../models/services/whistleBlowService\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport { ConfirmationButton } from \"../../framework/Button/ConfirmationButton\";\r\nimport { DangerButton } from \"../../framework/Button/DangerButton\";\r\nimport { Dialog } from \"../../framework/Dialog/Dialog\";\r\nimport { DialogItemsNav } from \"../../framework/Dialog/DialogItemsNav\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { ModifyUserInfo } from \"../../framework/User/ModifyUserInfo\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\n//WhistleBlowCategoryDialog\r\nexport interface IWhistleBlowCategoryDialogProp {\r\n classes?: string;\r\n id: string;\r\n companyId: string;\r\n hasPrevious: boolean;\r\n hasNext: boolean;\r\n onPrevious: () => void;\r\n onNext: () => void;\r\n onOk: () => void;\r\n onCancel: () => void;\r\n onRemove: (ids: string[]) => Promise;\r\n onRefreshList: () => Promise;\r\n}\r\n\r\nexport interface IWhistleBlowCategoryDialogState {\r\n code: string;\r\n comment: string;\r\n activeState: number;\r\n item: IRecordFamiliarizationEditItem;\r\n rowId: string;\r\n}\r\n\r\nexport class WhistleBlowCategoryDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n constructor(props: IWhistleBlowCategoryDialogProp) {\r\n super(props);\r\n this.state = {\r\n item: null,\r\n code: \"\",\r\n comment: \"\",\r\n activeState: 0,\r\n rowId: \"\",\r\n };\r\n }\r\n\r\n loadWhistleBlowCategory = async () => {\r\n const props = this.props;\r\n const result = await AppUtils.callService(() => whistleBlowService.getWhistleBlowCategoryEdit(props.companyId, props.id), false);\r\n if (!result) return;\r\n const item = result.familiarization;\r\n const state = {\r\n ...this.state,\r\n item,\r\n code: item.code,\r\n comment: item.comment,\r\n activeState: item.activeState,\r\n rowId: item.rowId\r\n };\r\n this.setState(state);\r\n const saveData = this.getSaveDataFromState(this.props, state);\r\n this.orgStateHash = saveData.hash;\r\n };\r\n\r\n componentDidMount(): void {\r\n this.loadWhistleBlowCategory();\r\n }\r\n\r\n async componentDidUpdate(prevProps: IWhistleBlowCategoryDialogProp, prevState: IWhistleBlowCategoryDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if (prevProps.companyId === props.companyId && prevProps.id === props.id) return;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb()) return;\r\n props.onRefreshList();\r\n }\r\n this.loadWhistleBlowCategory();\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"code\") {\r\n this.setState({ code: value });\r\n } else if (name === \"comment\") {\r\n this.setState({ comment: value });\r\n }\r\n };\r\n\r\n getSaveDataFromState = (props: IWhistleBlowCategoryDialogProp, state: IWhistleBlowCategoryDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", state.item.id);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"rowId\", state.rowId);\r\n result.append(\"code\", state.code);\r\n result.append(\"comment\", state.comment);\r\n result.append(\"activeState\", state.activeState);\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (!state.code) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.NameMustBeDefined));\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n return !!(await AppUtils.callService(() => whistleBlowService.saveWhistleBlowCategoryEdit(saveData.obj)));\r\n };\r\n\r\n handleSave = async () => {\r\n if (!await this.saveToDb()) return;\r\n this.props.onOk();\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (state.item.isNew()) return;\r\n if (await AppUtils.showConfirmationDialog(String.format(Translations.DoYouReallyWantToRemoveWhistleBlowCategoryParameter, state.item.code), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n const result = await props.onRemove([state.item.id]);\r\n if (!result) return;\r\n props.onOk();\r\n }\r\n };\r\n\r\n handleCancel = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n props.onCancel();\r\n }\r\n };\r\n\r\n canMoveOut = async (): Promise => {\r\n const props = this.props;\r\n return await AppUtils.canMoveOut(this.getSaveDataFromState(props, this.state).hash, this.orgStateHash, this.saveToDb, props.onRefreshList);\r\n };\r\n\r\n handlePrevious = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onPrevious();\r\n };\r\n\r\n handleNext = async () => {\r\n if (!await this.canMoveOut()) return;\r\n this.props.onNext();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.item) return null;\r\n const isNew = state.item.isNew();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0}\r\n onChange={(_e, checked: boolean) => {\r\n this.setState({ activeState: checked ? 1 : 0 });\r\n }}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n {!isNew &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n actions={\r\n \r\n \r\n \r\n {Translations.Remove}\r\n {Translations.Cancel}\r\n {Translations.Save}\r\n \r\n \r\n }\r\n onClose={this.handleCancel}\r\n />\r\n );\r\n }\r\n}","// WhistleBlowCategoryList - MODULE\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IWhistleBlowCategoryListItem } from \"ui/Scripts/source/models/whistleBlowCategory/whistleBlowCategoryListItem\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { infiniteListPageSize } from \"../../../models/common/webConsts\";\r\nimport * as whistleBlowService from \"../../../models/services/whistleBlowService\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { DialogSettingsCard } from \"../../framework/Container/DialogSettingsCard\";\r\nimport { IListUsingComponentState, List } from \"../../framework/List/List\";\r\nimport { ListIconButtonsItem } from \"../../framework/List/ListIconButtons/ListIconButtonsItem/ListIconButtonsItem\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { WhistleBlowCategoryDialog } from \"../WhistleBlowCategoryDialog\";\r\n\r\n// WhistleBlowCategoryList\r\nexport interface IWhistleBlowCategoryListProp {\r\n companyId: string;\r\n}\r\n\r\ninterface IWhistleBlowCategoryListState extends IListUsingComponentState {\r\n // List\r\n intialized: boolean;\r\n isLoading: boolean;\r\n pageSize: number;\r\n page: number;\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n checkedIds: string[];\r\n}\r\n\r\nexport class WhistleBlowCategoryList extends React.Component {\r\n constructor(props: IWhistleBlowCategoryListProp) {\r\n super(props);\r\n this.state = {\r\n intialized: false,\r\n isLoading: false,\r\n page: 1,\r\n hasMore: true,\r\n filter: \"\",\r\n pageSize: infiniteListPageSize,\r\n sortColumn: \"code\",\r\n sortOrderIsAsc: true,\r\n items: [],\r\n selectedId: null,\r\n checkedIds: [],\r\n showEditDialog: false,\r\n editDialogId: \"\",\r\n editDialogHasPrevious: false,\r\n editDialogHasNext: false,\r\n detailsItem: null\r\n };\r\n }\r\n\r\n searchItems = async (pageSize: number, page: number, filter: string, sortColumn: string, sortOrderIsAsc: boolean, resetItems: boolean, refreshList: boolean, moveNext: boolean = false, setEditDialogData: boolean = true) => {\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => whistleBlowService.getWhistleBlowCategoryListItems(this.props.companyId, !refreshList ? pageSize : (page * pageSize), !refreshList ? page : 1, filter, sortColumn, sortOrderIsAsc), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const state = this.state;\r\n const items = List.getListItems(state.items, state.selectedId, state.checkedIds, result.items, resetItems, refreshList);\r\n let selectedId = items.selectedId;\r\n let index = items.items.findIndex(i => i.id === selectedId);\r\n let selectedItem = index > -1 ? items.items[index] : null;\r\n if (moveNext && selectedItem && index < items.items.length - 1) {\r\n index = index + 1;\r\n selectedItem = items.items[index];\r\n selectedId = items.items[index].id;\r\n }\r\n this.setState({\r\n intialized: true,\r\n page: !refreshList ? result.page : page,\r\n hasMore: result.hasMore,\r\n filter,\r\n sortColumn,\r\n sortOrderIsAsc,\r\n items: items.items,\r\n selectedId,\r\n checkedIds: items.checkedIds,\r\n editDialogId: setEditDialogData ? (moveNext && selectedItem ? selectedItem.id : \"\") : state.editDialogId,\r\n editDialogHasPrevious: setEditDialogData ? index > 0 : state.editDialogHasPrevious,\r\n editDialogHasNext: setEditDialogData ? (index < items.items.length - 1 || result.hasMore) : state.editDialogHasNext,\r\n });\r\n };\r\n\r\n refreshList = async (setEducationDialogData: boolean = true) => {\r\n const state = this.state;\r\n await this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, true, false, setEducationDialogData);\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false);\r\n }\r\n\r\n componentDidUpdate(prevProps: IWhistleBlowCategoryListProp, prevState: IWhistleBlowCategoryListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n if (companyId === prevCompanyId) return;\r\n this.searchItems(state.pageSize, state.page, state.filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, 1, filter, state.sortColumn, state.sortOrderIsAsc, true, false);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.searchItems(state.pageSize, !nextPage ? 1 : state.page + 1, state.filter, sortColumn, sortOrderIsAsc, !nextPage, false);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n handleAdd = () => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, Base.emptyGuid));\r\n };\r\n\r\n handleOpenLine = (id: string) => {\r\n this.setState(List.getShowEditDialogStateChange(this.state, id));\r\n };\r\n\r\n handleEditDialogOk = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n this.refreshList();\r\n };\r\n\r\n handleEditDialogCancel = () => {\r\n this.setState({\r\n showEditDialog: false\r\n });\r\n };\r\n\r\n getRemoveSaveData = (props: IWhistleBlowCategoryListProp, ids: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"ids\", ids);\r\n return result;\r\n };\r\n\r\n remove = async (ids: string[]): Promise => {\r\n const props = this.props;\r\n if (ids.length < 1) return;\r\n const saveData = this.getRemoveSaveData(props, ids);\r\n // Call server\r\n const result = await AppUtils.callService(() => whistleBlowService.removeWhistleBlowCategories(saveData.obj));\r\n if (!result) return null;\r\n this.refreshList();\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds);\r\n const selectedItems = state.items.filter(i => selectedIds.indexOf(i.id) > -1);\r\n if (selectedItems.length < 1) return;\r\n if (await AppUtils.showConfirmationDialog(selectedItems.length > 1\r\n ? Translations.DoYouReallyWantToRemoveSelectedRecordFamiliarizations\r\n : String.format(Translations.DoYouReallyWantToRemoveRecordFamiliarizationParameter, selectedItems[0].code), false) === ConfirmationDialogResult.Yes) {\r\n // Call server\r\n this.remove(selectedIds);\r\n }\r\n };\r\n\r\n setEditDialogItemByIndex = (index: number) => {\r\n const state = this.state;\r\n this.setState(List.getEditDialogItemByIndexStateChange(state, index, () => this.searchItems(state.pageSize, state.page + 1, state.filter, state.sortColumn, state.sortOrderIsAsc, false, false, true)));\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n <>\r\n \r\n }\r\n rightItems={\r\n \r\n }\r\n />\r\n }\r\n content={\r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 6,\r\n column: \"code\",\r\n content: this.handleOpenLine(item.id)}>{item.code}\r\n },\r\n { size: 6, column: \"comments\", content: item.comment }\r\n ],\r\n id: item.id,\r\n classes: item.activeState < 1 ? \"disabled\" : \"\"\r\n };\r\n })}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n onOpenLine={this.handleOpenLine}\r\n />\r\n } />\r\n {(state.showEditDialog && !!state.editDialogId) &&\r\n this.refreshList(false)}\r\n onPrevious={() => List.moveToPrevious(state, this.setEditDialogItemByIndex)}\r\n onNext={() => List.moveToNext(state, this.setEditDialogItemByIndex)}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}","// WhistleBlowChannelEditDialogUserList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Alert, Box, Typography } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { Base } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/framework/base\";\r\nimport { IModifyUser, ModifyUser } from \"../../../../../../QTeamSystems.QTeamIntra.Ui/Scripts/source/models/user/modifyUser\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as whistleBlowService from \"../../../models/services/whistleBlowService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport { IUserListItem } from \"../../../models/user/userListItem\";\r\nimport { ActionContainer } from \"../../framework/ActionContainer\";\r\nimport { DialogSettingsCard } from \"../../framework/Container/DialogSettingsCard\";\r\nimport { List } from \"../../framework/List/List\";\r\nimport { ListSearchFilter } from \"../../framework/List/ListSearchFilter\";\r\nimport { SelectUserDialog } from \"../../user/SelectUserDialog/SelectUserDialog\";\r\nimport { AddUserToolButton } from \"source/components/framework/Button/AddUserToolButton\";\r\nimport { RemoveUserToolButton } from \"source/components/framework/Button/RemoveUserToolButton\";\r\n\r\n// WhistleBlowChannelEditDialogUserList\r\nexport interface IWhistleBlowChannelEditDialogUserListProp {\r\n isReadOnly?: boolean;\r\n sessionState: ISessionState;\r\n whistleBlowChannelId: string;\r\n companyId: string;\r\n title: string;\r\n users: IModifyUser[];\r\n onRemoved: (ids: string[]) => void;\r\n onAdded: (users: IModifyUser[]) => void;\r\n onRefreshSessionState: () => void;\r\n}\r\n\r\ninterface IWhistleBlowChannelEditDialogUserListState {\r\n // List\r\n isLoading: boolean;\r\n users: IModifyUser[];\r\n filter: string;\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n selectedId: string;\r\n checkedIds: string[];\r\n\r\n // Dialog\r\n showSelectUserDialog: boolean;\r\n}\r\n\r\nexport class WhistleBlowChannelEditDialogUserList extends React.Component {\r\n constructor(props: IWhistleBlowChannelEditDialogUserListProp) {\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n users: props.users ? props.users.slice(0) : [],\r\n filter: \"\",\r\n sortColumn: \"code\",\r\n sortOrderIsAsc: true,\r\n selectedId: null,\r\n checkedIds: [],\r\n showSelectUserDialog: false,\r\n };\r\n }\r\n\r\n filteredList = (filter: string, column: string, asc: boolean) => {\r\n const props = this.props;\r\n let users = props.users ? props.users.slice(0) : [];\r\n if (filter) {\r\n const lowFilter = filter.toLowerCase();\r\n users = users.filter(i => i.code.toLowerCase().indexOf(lowFilter) > -1 || i.name.toLowerCase().indexOf(lowFilter) > -1);\r\n }\r\n ModifyUser.sortModifyUsers(users, { column, asc });\r\n this.setState({\r\n filter,\r\n sortColumn: column,\r\n sortOrderIsAsc: asc,\r\n users,\r\n });\r\n };\r\n\r\n componentDidUpdate(prevProps: IWhistleBlowChannelEditDialogUserListProp, prevState: IWhistleBlowChannelEditDialogUserListState) {\r\n const props = this.props;\r\n const state = this.state;\r\n if (Base.equalStrArrays(prevProps.users ? prevProps.users.map(i => i.code) : [], props.users ? props.users.map(i => i.code) : [])) return;\r\n this.filteredList(state.filter, state.sortColumn, state.sortOrderIsAsc);\r\n }\r\n\r\n changeFilter = (filter: string) => {\r\n const state = this.state;\r\n this.filteredList(filter, state.sortColumn, state.sortOrderIsAsc);\r\n };\r\n\r\n handleSearchLines = (sortColumn: string, sortOrderIsAsc: boolean, nextPage: boolean) => {\r\n const state = this.state;\r\n this.filteredList(state.filter, sortColumn, sortOrderIsAsc);\r\n };\r\n\r\n handleSetSelectedIds = (selectedId: string, checkedIds: string[]) => {\r\n this.setState({\r\n selectedId,\r\n checkedIds\r\n });\r\n };\r\n\r\n getRemoveSaveData = (props: IWhistleBlowChannelEditDialogUserListProp, userCodes: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.whistleBlowChannelId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"userCodes\", userCodes);\r\n return result;\r\n };\r\n\r\n handleRemove = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const selectedIds = List.getSelectedIds(state.selectedId, state.checkedIds).filter(i => i !== props.sessionState.code);\r\n if (selectedIds.length < 1) return;\r\n const users = props.users.filter(i => selectedIds.indexOf(i.code) < 0);\r\n if (users.length < 1) {\r\n AppUtils.showErrorMessage(Translations.WhistleBlowChannelMustHaveAtLeastOneAdministrator);\r\n return;\r\n }\r\n const saveData = this.getRemoveSaveData(props, selectedIds);\r\n // Call server\r\n const result = await AppUtils.callService(() => whistleBlowService.whistleChannelRemoveAdmins(saveData.obj));\r\n if (!result) return;\r\n props.onRemoved(selectedIds);\r\n if (result.refreshSessionState) {\r\n props.onRefreshSessionState();\r\n }\r\n };\r\n \r\n handleAdd = () => {\r\n this.setState({\r\n showSelectUserDialog: true\r\n });\r\n };\r\n\r\n getAddSaveData = (props: IWhistleBlowChannelEditDialogUserListProp, userCodes: string[]): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"id\", props.whistleBlowChannelId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"userCodes\", userCodes);\r\n return result;\r\n };\r\n\r\n onSelectUserDialogOk = async (users: IUserListItem[]) => {\r\n const props = this.props;\r\n if (!users || users.length < 1) return;\r\n this.setState({\r\n showSelectUserDialog: false\r\n });\r\n const saveData = this.getAddSaveData(this.props, users.map(i => i.code));\r\n // Call server\r\n const result = await AppUtils.callService(() => whistleBlowService.whistleChannelAddAdmins(saveData.obj));\r\n if (!result) return;\r\n props.onAdded(users.map(i => ModifyUser.createModifyUser(i.code, i.getName(), 0, i.picture)));\r\n if (result.refreshSessionState) {\r\n props.onRefreshSessionState();\r\n }\r\n };\r\n\r\n onSelectUserDialogCancel = () => {\r\n this.setState({\r\n showSelectUserDialog: false\r\n });\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const removableUserCodes = List.getSelectedIds(state.selectedId, state.checkedIds).filter(i => i !== props.sessionState.code);\r\n return (\r\n
    \r\n \r\n }\r\n rightItems={\r\n <>\r\n \r\n \r\n \r\n }\r\n />\r\n }\r\n content={\r\n <>\r\n {!!props.isReadOnly &&\r\n {Translations.NewUserGroupMustBeSavedBeforeUsersCanBeAdded}\r\n }\r\n {!props.isReadOnly &&\r\n {\r\n return {\r\n columns: [\r\n {\r\n size: 6,\r\n column: \"code\",\r\n content:\r\n \r\n \r\n {user.code}\r\n \r\n },\r\n { size: 6, column: \"name\", content: user.name }\r\n ],\r\n id: user.code\r\n };\r\n })\r\n }\r\n noDataMessage={Translations.AddUsers}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n selectedId={state.selectedId}\r\n checkedIds={state.checkedIds}\r\n onSetSelectedIds={this.handleSetSelectedIds}\r\n onSearchLines={this.handleSearchLines}\r\n />\r\n }\r\n \r\n }\r\n />\r\n {state.showSelectUserDialog &&\r\n i.code)}\r\n onOk={this.onSelectUserDialogOk}\r\n onCancel={this.onSelectUserDialogCancel}\r\n />\r\n }\r\n
    \r\n );\r\n }\r\n}","// WhistleBlowChannelEditDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Checkbox, FormControlLabel, Grid, Tab, Tabs } from \"@mui/material\";\r\nimport { CKEditor } from \"ckeditor4-react\";\r\nimport * as React from \"react\";\r\nimport { GridRow } from \"source/components/framework/Grid/GridRow\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiSuccess } from \"ui/Scripts/source/models/common/apiSuccess\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { SaveSuccess } from \"ui/Scripts/source/models/common/saveSuccess\";\r\nimport { ApplicationPermissionType, ConfirmationDialogResult, WhistleBlowChannelResourceType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IModifyUser } from \"ui/Scripts/source/models/user/modifyUser\";\r\nimport { IWhistleBlowChannelEditItem } from \"ui/Scripts/source/models/whistleBlowChannel/whistleBlowChannelEditItem\";\r\nimport { IWhistleBlowChannelEditResourceItem, WhistleBlowChannelEditResourceItem, WhistleBlowChannelEditResourceItemSave } from \"ui/Scripts/source/models/whistleBlowChannel/whistleBlowChannelEditResourceItem\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport * as store from \"../../../framework/customStore\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport * as whistleBlowService from \"../../../models/services/whistleBlowService\";\r\nimport { ISessionState } from \"../../../models/session/sessionState\";\r\nimport * as storeActions from \"../../../models/store/storeActions\";\r\nimport { IUnitDefaultHandlersNode } from \"../../../models/unit/unitDefaultHandlersNode\";\r\nimport { IUnitModuleNode } from \"../../../models/unit/unitModuleNode\";\r\nimport { IUnitNodePermissions } from \"../../../models/unit/unitNodePermissions\";\r\nimport { UserListItems } from \"../../../models/user/userListItems\";\r\nimport { DialogSettingsCard } from \"../../framework/Container/DialogSettingsCard\";\r\nimport { CkEditorDialog } from \"../../framework/Dialog/Dialog\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { IPageNavMenuItem, PageNavMenuItems } from \"../../framework/PageNav/PageNavMenuItems\";\r\nimport { SearchField } from \"../../framework/SearchField\";\r\nimport { ModifyUserInfo } from \"../../framework/User/ModifyUserInfo\";\r\nimport { UnitDefaultHandlersSettings } from \"../../unit/Unit/UnitDefaultHandlersSettings\";\r\nimport { UnitModuleSettings } from \"../../unit/Unit/UnitModuleSettings\";\r\nimport { UnitPermissionSettings } from \"../../unit/Unit/UnitPermissionSettings\";\r\nimport { WhistleBlowCategoryList } from \"../WhistleBlowCategoryList\";\r\nimport { WhistleBlowChannelEditDialogUserList } from \"../WhistleBlowChannelEditDialogUserList/WhistleBlowChannelEditDialogUserList\";\r\nimport { UnitModuleSaveResult } from \"source/models/unit/unitModuleSaveResult\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum WhistleBlowChannelDialogMenuItem {\r\n General = \"1\",\r\n Admins = \"2\",\r\n Texts = \"3\",\r\n Infos = \"4\",\r\n Permissions = \"5\",\r\n Units = \"6\",\r\n Handlers = \"7\",\r\n Categories = \"8\",\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n//WhistleBlowChannelEditDialog\r\nexport interface IWhistleBlowChannelEditDialogProp {\r\n sessionState: ISessionState;\r\n companyId: string;\r\n classes?: string;\r\n whistleBlowSettingsActions: IPageNavMenuItem[];\r\n unitModuleNode: IUnitModuleNode;\r\n unitDefaultHandlersNode: IUnitDefaultHandlersNode;\r\n unitNodePermissions: IUnitNodePermissions;\r\n validAdditionalPermissions?: number[]\r\n onRefreshSessionState: () => void;\r\n onOk: () => void;\r\n onCancel: (whistleBlowChannelDataWasModified: boolean, closeDialog: boolean) => void;\r\n onUnitModuleDialogOk: () => void;\r\n onUnitModuleDialogOpen: () => void;\r\n onUnitModuleDialogSave: (obj: any) => Promise;\r\n onUnitModuleDialogCancel: (closeDialog: boolean) => void;\r\n onDefaultHandlersSave: (obj: any) => Promise;\r\n onDefaultHandlersOk: () => void;\r\n onDefaultHandlersOpen: () => void;\r\n onDefaultHandlersCancel: (closeDialog: boolean) => void;\r\n onGetUserSelectListItems: (companyId: string, unitId: string, pageSize: number, page: number, filter: string,\r\n ignoreUserIds: string[], ignoreUserCodes: string[], activityState: number, ignoreRecordUserConnected: boolean,\r\n doNotIgnoreRecordUserConnectedUserCode: string, sortColumn: string, sortOrderIsAsc: boolean) => Promise;\r\n onPermissionsSave: (obj: any) => Promise;\r\n onPermissionsOk: () => void;\r\n onPermissionsOpen: () => Promise;\r\n onPermissionsCancel: (closeDialog: boolean) => void;\r\n}\r\n\r\nexport interface IWhistleBlowChannelEditDialogState {\r\n dataId: number;\r\n activeMenuItem: WhistleBlowChannelDialogMenuItem;\r\n activeResource: IWhistleBlowChannelEditResourceItem;\r\n isLoading: boolean;\r\n whistleBlowApplicationUrl: string;\r\n cultures: IIdTitle[];\r\n whistleBlowChannel: IWhistleBlowChannelEditItem;\r\n id: string;\r\n pageName: string;\r\n privacyPolicyUrl: string;\r\n adminUsers: IModifyUser[];\r\n resources: IWhistleBlowChannelEditResourceItem[];\r\n whistleBlowChannelDataWasModified: boolean;\r\n}\r\n\r\nexport class WhistleBlowChannelEditDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n private editor: any = null;\r\n private ckEditorContainerDiv: HTMLDivElement;\r\n private unitsRef;\r\n private permissionsRef;\r\n private handlersRef;\r\n\r\n constructor(props: IWhistleBlowChannelEditDialogProp) {\r\n super(props);\r\n this.state = {\r\n dataId: 0,\r\n activeMenuItem: WhistleBlowChannelDialogMenuItem.Units,\r\n activeResource: null,\r\n isLoading: false,\r\n whistleBlowApplicationUrl: \"\",\r\n cultures: [],\r\n whistleBlowChannel: null,\r\n id: \"\",\r\n pageName: \"\",\r\n privacyPolicyUrl: \"\",\r\n adminUsers: [],\r\n resources: [],\r\n whistleBlowChannelDataWasModified: false,\r\n };\r\n this.unitsRef = React.createRef();\r\n this.permissionsRef = React.createRef();\r\n this.handlersRef = React.createRef();\r\n }\r\n\r\n handleSetActiveWhistleBlowRespource = (activeResource: IWhistleBlowChannelEditResourceItem) => {\r\n this.setState({\r\n activeResource\r\n });\r\n this.setCkEditorContent(activeResource);\r\n };\r\n\r\n loadWhistleBlowChannel = async () => {\r\n const props = this.props;\r\n this.setState({ isLoading: true });\r\n const result = await AppUtils.callService(() => whistleBlowService.getWhistleBlowChannelEdit(props.companyId), false, false, () => this.setState({ isLoading: false }));\r\n if (!result) return;\r\n const whistleBlowChannel = result.whistleBlowChannel;\r\n const state = {\r\n ...this.state,\r\n whistleBlowChannel,\r\n whistleBlowApplicationUrl: result.whistleBlowApplicationUrl,\r\n id: whistleBlowChannel.id,\r\n pageName: whistleBlowChannel.pageName,\r\n privacyPolicyUrl: whistleBlowChannel.privacyPolicyUrl,\r\n adminUsers: whistleBlowChannel.adminUsers,\r\n cultures: result.cultures,\r\n resources: WhistleBlowChannelEditResourceItem.sortWhistleBlowChannelEditResourceItems(result.resources, result.cultures),\r\n };\r\n const saveData = this.getSaveDataFromState(props, state);\r\n this.orgStateHash = saveData.hash;\r\n this.setState(state);\r\n };\r\n\r\n async componentDidMount(): Promise {\r\n await this.props.onUnitModuleDialogOpen();\r\n this.loadWhistleBlowChannel();\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this.destroyCkEditor();\r\n }\r\n\r\n async componentDidUpdate(prevProps: IWhistleBlowChannelEditDialogProp, prevState: IWhistleBlowChannelEditDialogState): Promise {\r\n const props = this.props;\r\n const state = this.state;\r\n if (prevProps.companyId === props.companyId) return;\r\n const cancelResult = await AppUtils.cancel(this.getSaveDataFromState(props, state).hash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await this.saveToDb()) return;\r\n }\r\n await this.loadWhistleBlowChannel();\r\n }\r\n\r\n setCkEditorContent = (activeResource: IWhistleBlowChannelEditResourceItem) => {\r\n if (!this.editor || !activeResource) return;\r\n this.editor.setData(activeResource.content, { callback: this.editor.resetDirty });\r\n Base.setCkEditorStyles(this.ckEditorContainerDiv, false);\r\n };\r\n\r\n destroyCkEditor = () => {\r\n if (!this.editor) return;\r\n if (this.editor.destroy) {\r\n this.editor.destroy();\r\n }\r\n this.editor = null;\r\n };\r\n\r\n handleToggleActiveMenuItem = async (menuItem: WhistleBlowChannelDialogMenuItem) => {\r\n const state = this.state;\r\n\r\n if (state.activeMenuItem === menuItem) return;\r\n if (state.activeMenuItem === WhistleBlowChannelDialogMenuItem.Units) {\r\n const res = await this.unitsRef.current.handleCancel(false);\r\n if (!res) return;\r\n } else if (state.activeMenuItem === WhistleBlowChannelDialogMenuItem.Permissions) {\r\n const res = await this.permissionsRef.current.handleCancel(false);\r\n if (!res) return;\r\n } else if (state.activeMenuItem === WhistleBlowChannelDialogMenuItem.Handlers) {\r\n const res = await this.handlersRef.current.handleCancel(false);\r\n if (!res) return;\r\n } else {\r\n await this.handleCancel(false);\r\n }\r\n\r\n if (menuItem === WhistleBlowChannelDialogMenuItem.Units) {\r\n await this.props.onUnitModuleDialogOpen();\r\n }\r\n\r\n if (menuItem === WhistleBlowChannelDialogMenuItem.Handlers) {\r\n await this.props.onDefaultHandlersOpen();\r\n }\r\n \r\n if (menuItem === WhistleBlowChannelDialogMenuItem.Permissions) {\r\n await this.props.onPermissionsOpen();\r\n }\r\n\r\n let activeResource: IWhistleBlowChannelEditResourceItem = null;\r\n if (menuItem === WhistleBlowChannelDialogMenuItem.Texts || menuItem === WhistleBlowChannelDialogMenuItem.Infos) {\r\n activeResource = state.resources.find(i => menuItem === WhistleBlowChannelDialogMenuItem.Texts\r\n ? i.resourceType === WhistleBlowChannelResourceType.Text\r\n : i.resourceType === WhistleBlowChannelResourceType.Info);\r\n } else {\r\n this.destroyCkEditor();\r\n }\r\n this.setState({\r\n activeMenuItem: menuItem,\r\n activeResource\r\n });\r\n this.setCkEditorContent(activeResource);\r\n };\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"pageName\") {\r\n this.setState({ pageName: value });\r\n } else if (name === \"privacyPolicyUrl\") {\r\n this.setState({ privacyPolicyUrl: value });\r\n }\r\n };\r\n\r\n // #region PageName\r\n handleTestPageName = () => {\r\n const state = this.state;\r\n if (!state.whistleBlowApplicationUrl || !state.pageName) return;\r\n window.open(state.whistleBlowApplicationUrl + state.pageName, \"_blank\");\r\n };\r\n // #endregion PageName\r\n\r\n // #region PrivacyPolicy\r\n handleTestPrivacyPolicyUrl = () => {\r\n const state = this.state;\r\n if (!state.privacyPolicyUrl) return;\r\n window.open(state.privacyPolicyUrl, \"_blank\");\r\n };\r\n // #endregion PrivacyPolicy\r\n\r\n // #region Resources\r\n handleCkEditorInstanceReady = (ev) => {\r\n this.editor = ev.editor;\r\n Base.setCkEditorStyles(this.ckEditorContainerDiv, false);\r\n // TODO: see why it causes re-render loop\r\n // this.setState({\r\n // dataId: this.state.dataId + 1\r\n // });\r\n };\r\n\r\n handleCkEditorChange = (ev) => {\r\n const state = this.state;\r\n if (!state.activeResource) return;\r\n const value: string = ev.editor.getData();\r\n const resources = state.resources.slice(0);\r\n const resource = resources.find(i => i.id === state.activeResource.id);\r\n if (!resource) return;\r\n resource.content = value;\r\n this.setState({\r\n resources: WhistleBlowChannelEditResourceItem.sortWhistleBlowChannelEditResourceItems(resources, state.cultures)\r\n });\r\n };\r\n\r\n handleResourceActiveStateChange = (value: number) => {\r\n const state = this.state;\r\n if (!state.activeResource) return;\r\n const resources = state.resources.slice(0);\r\n const resource = resources.find(i => i.id === state.activeResource.id);\r\n if (!resource) return;\r\n resource.activeState = value;\r\n this.setState({\r\n resources: WhistleBlowChannelEditResourceItem.sortWhistleBlowChannelEditResourceItems(resources, state.cultures)\r\n });\r\n };\r\n // #endregion Resources\r\n\r\n // #region Admins\r\n handleUsersRemoved = (codes: string[]) => {\r\n if (!codes || codes.length < 1) return;\r\n this.setState({\r\n adminUsers: this.state.adminUsers.filter(i => codes.indexOf(i.code) < 0),\r\n whistleBlowChannelDataWasModified: true\r\n });\r\n };\r\n\r\n handleUsersAdded = (newAdminUsers: IModifyUser[]) => {\r\n if (!newAdminUsers || newAdminUsers.length < 1) return;\r\n this.setState({\r\n adminUsers: this.state.adminUsers.concat(newAdminUsers),\r\n whistleBlowChannelDataWasModified: true\r\n });\r\n };\r\n // #endregion Admins\r\n\r\n getSaveDataFromState = (props: IWhistleBlowChannelEditDialogProp, state: IWhistleBlowChannelEditDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"rowId\", state.whistleBlowChannel.rowId);\r\n result.append(\"companyId\", props.companyId);\r\n result.append(\"id\", state.id);\r\n result.append(\"pageName\", state.pageName);\r\n result.append(\"privacyPolicyUrl\", state.privacyPolicyUrl);\r\n result.append(\"resources\", state.resources.map(i => new WhistleBlowChannelEditResourceItemSave(i)));\r\n return result;\r\n };\r\n\r\n checkErrors = (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n return new Promise((resolve) => {\r\n if (props.sessionState.isSuperAdmin && !state.pageName) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(Translations.PageNameMustBeDefined));\r\n return resolve(false);\r\n }\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n saveToDb = async (): Promise => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return null;\r\n const saveData = this.getSaveDataFromState(props, state);\r\n //Call server\r\n const result = await AppUtils.callService(() => whistleBlowService.saveWhistleBlowChannelEdit(saveData.obj));\r\n if (!result) return null;\r\n this.orgStateHash = saveData.hash;\r\n await this.loadWhistleBlowChannel();\r\n return result;\r\n };\r\n\r\n handleSave = async () => {\r\n const props = this.props;\r\n const result = await this.saveToDb();\r\n if (!result) return;\r\n props.onOk();\r\n };\r\n\r\n handleCancel = async (closeDialog: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n const newHash = this.getSaveDataFromState(props, state).hash;\r\n \r\n const cancelResult = await AppUtils.cancel(newHash, this.orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n this.handleSave();\r\n } else {\r\n if (newHash !== this.orgStateHash) {\r\n await this.loadWhistleBlowChannel();\r\n }\r\n props.onCancel(state.whistleBlowChannelDataWasModified, closeDialog);\r\n }\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!state.whistleBlowChannel) return null;\r\n const isSuperAdmin = props.sessionState.isSuperAdmin;\r\n const activeResourceCulture = state.activeResource\r\n ? state.cultures.find(i => i.id === state.activeResource.cultureCode)\r\n : null;\r\n return (\r\n this.handleCancel(true)}\r\n body={\r\n \r\n \r\n \r\n \r\n \r\n {state.activeMenuItem === WhistleBlowChannelDialogMenuItem.General &&\r\n \r\n \r\n {isSuperAdmin &&\r\n \r\n \r\n \r\n \r\n }\r\n {!isSuperAdmin && !!state.whistleBlowApplicationUrl && !!state.pageName &&\r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n }\r\n {state.activeMenuItem === WhistleBlowChannelDialogMenuItem.Admins &&\r\n \r\n }\r\n
    \r\n \r\n \r\n {state.resources.filter(i => i.resourceType === WhistleBlowChannelResourceType.Text).map((resource) => {\r\n const culture = state.cultures.find(i => i.id === resource.cultureCode);\r\n return this.handleSetActiveWhistleBlowRespource(resource)}\r\n />;\r\n })}\r\n \r\n {!!state.activeResource &&\r\n 0}\r\n onChange={(_event, checked: boolean) => this.handleResourceActiveStateChange(checked ? 1 : 0)}\r\n />\r\n }\r\n />\r\n }\r\n {!!state.activeResource &&\r\n \r\n
    { this.ckEditorContainerDiv = elem; }}>\r\n \r\n
    \r\n
    \r\n }\r\n \r\n }\r\n />\r\n
    \r\n \r\n {state.activeMenuItem === WhistleBlowChannelDialogMenuItem.Permissions && (\r\n \r\n )}\r\n {(state.activeMenuItem === WhistleBlowChannelDialogMenuItem.Units) && (\r\n \r\n )}\r\n {state.activeMenuItem === WhistleBlowChannelDialogMenuItem.Handlers && (\r\n \r\n )}\r\n {state.activeMenuItem === WhistleBlowChannelDialogMenuItem.Categories && (\r\n \r\n )}\r\n \r\n
    \r\n
    \r\n }\r\n buttons={(state.activeMenuItem !== WhistleBlowChannelDialogMenuItem.Units && state.activeMenuItem !== WhistleBlowChannelDialogMenuItem.Permissions && state.activeMenuItem !== WhistleBlowChannelDialogMenuItem.Handlers)\r\n ? [\r\n { title: Translations.Close, variant: \"outlined\", onClick: () => this.handleCancel(true) },\r\n { title: Translations.Save, variant: \"confirmation\", onClick: (state.activeMenuItem !== WhistleBlowChannelDialogMenuItem.Admins && state.activeMenuItem !== WhistleBlowChannelDialogMenuItem.Categories) ? this.handleSave : null, disabled: this.getSaveDataFromState(props, state).hash === this.orgStateHash },\r\n ]\r\n : null}\r\n />\r\n );\r\n }\r\n}","// WhistleBlowReportFilterDialog - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box, Checkbox, FormControlLabel, Grid, MenuItem, Select } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { CheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/CheckboxDropdown\";\r\nimport { TreeCheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/TreeCheckboxDropdown\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IIdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { IIdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { FrontPagePanelSize } from \"ui/Scripts/source/models/enums\";\r\nimport { ITaskDataRow, TaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { ITaskEditTypeItem } from \"ui/Scripts/source/models/task/taskEditTypeItem\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { SaveDataObj } from \"../../../framework/saveData\";\r\nimport { IReportItem } from \"../../../models/report/reportItem\";\r\nimport { ConfirmationButton } from \"../../framework/Button/ConfirmationButton\";\r\nimport { DatePicker } from \"../../framework/DateTime/DatePicker\";\r\nimport { FilterSearchField } from \"../../framework/Filters/FilterSearchField\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { GridRow } from \"../../framework/Grid/GridRow\";\r\nimport { WhistleBlowFilterSettings } from \"../WhistleBlowFilterSettings\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\nimport { ISaveReportFilters } from \"source/components/report/PageNavMenuItemReportList/SaveReportDialog\";\r\nimport { ReportFilterPanelExtraParameters } from \"source/components/framework/Report/ReportFilterPanelExtraParameters\";\r\n\r\n//WhistleBlowReportFilterDialog\r\nexport interface IWhistleBlowReportFilterDialogProp {\r\n classes?: string;\r\n chartPanelPropertiesMode?: boolean;\r\n report: IReportItem;\r\n units: IIdTitleNode[];\r\n charts?: IIdTitle[];\r\n categories: IIdTitle[];\r\n handlers: IIdTitle[];\r\n stateFilters: IIdTitle[];\r\n severityFilters: IIdTitle[];\r\n resolutionFilters: IIdTitle[];\r\n sourceFilters: IIdTitle[];\r\n anonymityFilters: IIdTitle[];\r\n dynamicTimeFilters: IIdTitle[];\r\n panelsDynamicTimeFilters: IIdTitle[];\r\n panelSize?: number;\r\n panelVisible?: boolean;\r\n selectedChartId?: string;\r\n selectedStartDate: number;\r\n selectedEndDate: number;\r\n selectedUnitIds: string[];\r\n selectedCategoryIds: string[];\r\n selectedHandlerUserCodes: string[];\r\n selectedStateFilterId: string;\r\n selectedSeverityFilterId: string;\r\n selectedResolutionFilterId: string;\r\n selectedSourceFilterId: string;\r\n selectedAnonymityFilterId: string;\r\n selectedDynamicTimeFilterId: string;\r\n canRemoveSharedReports: boolean;\r\n onSaveReport: (saveAs: boolean, onGetReportSaveFilters: () => ISaveReportFilters) => void;\r\n onRemoveReport: (filterId: string) => void;\r\n onOk: (closeDialog: boolean, startDate: number, endDate: number, selectedChartId: string, selectedStateFilterId: string, selectedSeverityFilterId: string, selectedResolutionFilterId: string,\r\n selectedSourceFilterId: string, selectedAnonymityFilterId: string, selectedDynamicTimeFilterId: string, selectedCategoryIds: string[], selectedHandlerUserCodes: string[], selectedUnitIds: string[],\r\n parameters: ITaskDataRow) => ISaveReportFilters;\r\n onOkChart?: (startDate: number, endDate: number, selectedChartId: string, selectedStateFilterId: string, selectedSeverityFilterId: string, selectedResolutionFilterId: string,\r\n selectedSourceFilterId: string, selectedAnonymityFilterId: string, selectedDynamicTimeFilterId: string, selectedCategoryIds: string[], selectedHandlerUserCodes: string[], selectedUnitIds: string[],\r\n parameters: ITaskDataRow,\r\n panelSize: number, panelVisible: boolean) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IWhistleBlowReportFilterDialogState {\r\n panelSize: string;\r\n panelVisible: boolean;\r\n startDateStr: string;\r\n endDateStr: string;\r\n selectedChartId: string;\r\n selectedStateFilterId: string;\r\n selectedSeverityFilterId: string;\r\n selectedResolutionFilterId: string;\r\n selectedSourceFilterId: string;\r\n selectedAnonymityFilterId: string;\r\n selectedDynamicTimeFilterId: string;\r\n selectedCategoryIds: string[];\r\n selectedHandlerUserCodes: string[];\r\n selectedUnitIds: string[];\r\n extraParameters: ITaskDataRow;\r\n startEndDateDisabled: boolean;\r\n}\r\n\r\nexport class WhistleBlowReportFilterDialog extends React.Component {\r\n private orgStateHash: string = \"\";\r\n\r\n getStateFromProps = (props: IWhistleBlowReportFilterDialogProp): IWhistleBlowReportFilterDialogState => {\r\n return {\r\n panelSize: ((props.chartPanelPropertiesMode ? props.panelSize : null) ?? FrontPagePanelSize.OneXOne).toString(10),\r\n panelVisible: (props.chartPanelPropertiesMode ? props.panelVisible : null) ?? false,\r\n startDateStr: props.selectedStartDate ? Base.timeToDateStr(props.selectedStartDate) : \"\",\r\n endDateStr: props.selectedEndDate ? Base.timeToDateStr(props.selectedEndDate) : \"\",\r\n selectedChartId: props.chartPanelPropertiesMode ? props.selectedChartId : \"\",\r\n selectedStateFilterId: props.selectedStateFilterId,\r\n selectedSeverityFilterId: props.selectedSeverityFilterId,\r\n selectedResolutionFilterId: props.selectedResolutionFilterId,\r\n selectedSourceFilterId: props.selectedSourceFilterId,\r\n selectedAnonymityFilterId: props.selectedAnonymityFilterId,\r\n selectedDynamicTimeFilterId: props.selectedDynamicTimeFilterId,\r\n selectedCategoryIds: props.selectedCategoryIds.slice(0),\r\n selectedHandlerUserCodes: props.selectedHandlerUserCodes.slice(0),\r\n selectedUnitIds: props.selectedUnitIds.slice(0),\r\n extraParameters: props.report.taskType && props.report.taskDataRow ? new TaskDataRow(props.report.taskDataRow) : null,\r\n startEndDateDisabled: props.selectedDynamicTimeFilterId !== props.dynamicTimeFilters[0].id\r\n };\r\n };\r\n\r\n constructor(props: IWhistleBlowReportFilterDialogProp) {\r\n super(props);\r\n this.state = this.getStateFromProps(props);\r\n this.orgStateHash = this.getSaveDataFromState(props, this.state).hash;\r\n }\r\n\r\n componentDidUpdate(prevProps: IWhistleBlowReportFilterDialogProp, prevState: IWhistleBlowReportFilterDialogState): void {\r\n const props = this.props;\r\n if (!prevProps || prevProps.report.getHash() === props.report.getHash()) return;\r\n const state = this.getStateFromProps(props);\r\n this.setState(state);\r\n this.orgStateHash = this.getSaveDataFromState(props, state).hash;\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"selectedChartId\") {\r\n this.setState({ selectedChartId: value });\r\n } else if (name === \"selectedStateFilterId\") {\r\n this.setState({ selectedStateFilterId: value });\r\n } else if (name === \"selectedSeverityFilterId\") {\r\n this.setState({ selectedSeverityFilterId: value });\r\n } else if (name === \"selectedResolutionFilterId\") {\r\n this.setState({ selectedResolutionFilterId: value });\r\n } else if (name === \"selectedSourceFilterId\") {\r\n this.setState({ selectedSourceFilterId: value });\r\n } else if (name === \"selectedAnonymityFilterId\") {\r\n this.setState({ selectedAnonymityFilterId: value });\r\n } else if (name === \"panelSize\") {\r\n this.setState({ panelSize: value });\r\n } else if (name === \"selectedDynamicTimeFilterId\") {\r\n if (value.toInteger() > 0) {\r\n this.setState({ selectedDynamicTimeFilterId: value, startDateStr: \"\", endDateStr: \"\", startEndDateDisabled: true });\r\n } else {\r\n this.setState({ selectedDynamicTimeFilterId: value, startEndDateDisabled: false });\r\n }\r\n }\r\n };\r\n\r\n handleTogglePanelVisible = () => {\r\n this.setState({ panelVisible: !this.state.panelVisible });\r\n };\r\n\r\n handleChangeUnitIds = (selectedUnitIds: string[]) => {\r\n this.setState({\r\n selectedUnitIds\r\n });\r\n };\r\n\r\n handleChangeCategoryIds = (selectedCategoryIds: string[]) => {\r\n this.setState({\r\n selectedCategoryIds\r\n });\r\n };\r\n\r\n handleChangeHandlerUserCodes = (selectedHandlerUserCodes: string[]) => {\r\n this.setState({\r\n selectedHandlerUserCodes\r\n });\r\n };\r\n\r\n handleStartDateChange = (value: string) => {\r\n this.setState({ startDateStr: value });\r\n };\r\n\r\n handleEndDateChange = (value: string) => {\r\n this.setState({ endDateStr: value });\r\n };\r\n\r\n getSaveDataFromState = (props: IWhistleBlowReportFilterDialogProp, state: IWhistleBlowReportFilterDialogState): SaveDataObj => {\r\n const result = new SaveDataObj();\r\n result.append(\"panelSize\", state.panelSize);\r\n result.append(\"panelVisible\", state.panelVisible);\r\n result.append(\"startDate\", state.startDateStr);\r\n result.append(\"endDate\", state.endDateStr);\r\n result.append(\"selectedChartId\", state.selectedChartId ? state.selectedChartId : null);\r\n result.append(\"selectedStateFilterId\", state.selectedStateFilterId ? state.selectedStateFilterId : null);\r\n result.append(\"selectedSeverityFilterId\", state.selectedSeverityFilterId ? state.selectedSeverityFilterId : null);\r\n result.append(\"selectedResolutionFilterId\", state.selectedResolutionFilterId ? state.selectedResolutionFilterId : null);\r\n result.append(\"selectedSourceFilterId\", state.selectedSourceFilterId ? state.selectedSourceFilterId : null);\r\n result.append(\"selectedAnonymityFilterId\", state.selectedAnonymityFilterId ? state.selectedAnonymityFilterId : null);\r\n result.append(\"selectedDynamicTimeFilterId\", state.selectedDynamicTimeFilterId ? state.selectedDynamicTimeFilterId : null);\r\n result.append(\"selectedCategoryIds\", state.selectedCategoryIds);\r\n result.append(\"selectedHandlerUserCodes\", state.selectedHandlerUserCodes);\r\n result.append(\"selectedUnitIds\", state.selectedUnitIds);\r\n if (props.report.taskType && props.report.taskDataRow) {\r\n result.append(\"parameters\", state.extraParameters.cols.map(i => state.extraParameters.getTaskDataRowColUiValue(i.field, props.report.taskType)));\r\n }\r\n return result;\r\n };\r\n \r\n checkErrors = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(true);\r\n });\r\n };\r\n\r\n getWarningMessage = (): Promise => {\r\n return new Promise((resolve) => {\r\n return resolve(\"\");\r\n });\r\n };\r\n\r\n static filterIsSet = (units: IIdTitleNode[], categories: IIdTitle[], handlers: IIdTitle[], stateFilters: IIdTitle[], severityFilters: IIdTitle[], resolutionFilters: IIdTitle[],\r\n sourceFilters: IIdTitle[], anonymityFilters: IIdTitle[], dynamicTimeFilters: IIdTitle[],\r\n startDate: number, endDate: number, selectedUnitIds: string[], selectedCategoryIds: string[], selectedHandlerUserCodes: string[], selectedStateFilterId: string, selectedSeverityFilterId: string,\r\n selectedResolutionFilterId: string, selectedSourceFilterId: string, selectedAnonymityFilterId: string, selectedDynamicTimeFilterId: string,\r\n taskType: ITaskEditTypeItem, taskDataRow: ITaskDataRow): boolean => {\r\n return WhistleBlowFilterSettings.filterIsSet(units, categories, handlers, stateFilters, severityFilters, resolutionFilters, sourceFilters, anonymityFilters, dynamicTimeFilters,\r\n startDate, endDate, selectedUnitIds, selectedCategoryIds, selectedHandlerUserCodes, selectedStateFilterId, selectedSeverityFilterId,\r\n selectedResolutionFilterId, selectedSourceFilterId, selectedAnonymityFilterId, selectedDynamicTimeFilterId, 1) ||\r\n (taskDataRow && taskType ? !taskDataRow.hasDefaultValues(taskType) : false);\r\n };\r\n\r\n handleSaveReport = async (saveAs: boolean) => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n const startDate = state.startDateStr ? state.startDateStr.toDate().getTime() : null;\r\n const endDate = state.endDateStr ? state.endDateStr.toDate().getTime() : null;\r\n if (!saveAs) {\r\n props.onOk(false, startDate, endDate, state.selectedChartId, state.selectedStateFilterId, state.selectedSeverityFilterId,\r\n state.selectedResolutionFilterId, state.selectedSourceFilterId, state.selectedAnonymityFilterId, state.selectedDynamicTimeFilterId,\r\n state.selectedCategoryIds, state.selectedHandlerUserCodes, state.selectedUnitIds, state.extraParameters);\r\n await this.props.onSaveReport(false, null);\r\n } else {\r\n await this.props.onSaveReport(true, () => {\r\n return props.onOk(false, startDate, endDate, state.selectedChartId, state.selectedStateFilterId, state.selectedSeverityFilterId,\r\n state.selectedResolutionFilterId, state.selectedSourceFilterId, state.selectedAnonymityFilterId, state.selectedDynamicTimeFilterId,\r\n state.selectedCategoryIds, state.selectedHandlerUserCodes, state.selectedUnitIds, this.state.extraParameters);\r\n });\r\n }\r\n };\r\n\r\n handleClear = () => {\r\n const props = this.props;\r\n const state = this.state;\r\n const extraParameters = state.extraParameters ? new TaskDataRow(state.extraParameters) : null;\r\n if (extraParameters) {\r\n extraParameters.initializeToTaskType(props.report.taskType);\r\n }\r\n this.setState({\r\n startDateStr: \"\",\r\n endDateStr: \"\",\r\n selectedChartId: props.chartPanelPropertiesMode ? props.charts[0].id : \"\",\r\n selectedStateFilterId: props.stateFilters[1].id,\r\n selectedSeverityFilterId: props.severityFilters[0].id,\r\n selectedResolutionFilterId: props.resolutionFilters[0].id,\r\n selectedSourceFilterId: props.sourceFilters[0].id,\r\n selectedAnonymityFilterId: props.anonymityFilters[0].id,\r\n selectedCategoryIds: [props.categories[0].id],\r\n selectedHandlerUserCodes: [props.handlers[0].id],\r\n selectedUnitIds: [props.units[0].id],\r\n extraParameters\r\n });\r\n };\r\n\r\n handleSave = async () => {\r\n const props = this.props;\r\n const state = this.state;\r\n if (!await AppUtils.validate(this.checkErrors, this.getWarningMessage, null)) return false;\r\n const startDate = state.startDateStr ? state.startDateStr.toDate().getTime() : null;\r\n const endDate = state.endDateStr ? state.endDateStr.toDate().getTime() : null;\r\n if (props.onOk) {\r\n props.onOk(true, startDate, endDate, state.selectedChartId, state.selectedStateFilterId, state.selectedSeverityFilterId,\r\n state.selectedResolutionFilterId, state.selectedSourceFilterId, state.selectedAnonymityFilterId, state.selectedDynamicTimeFilterId,\r\n state.selectedCategoryIds, state.selectedHandlerUserCodes, state.selectedUnitIds, state.extraParameters);\r\n } else if (props.onOkChart) {\r\n props.onOkChart(startDate, endDate, state.selectedChartId, state.selectedStateFilterId, state.selectedSeverityFilterId,\r\n state.selectedResolutionFilterId, state.selectedSourceFilterId, state.selectedAnonymityFilterId, state.selectedDynamicTimeFilterId,\r\n state.selectedCategoryIds, state.selectedHandlerUserCodes, state.selectedUnitIds, state.extraParameters, state.panelSize.toInteger(), state.panelVisible);\r\n }\r\n };\r\n\r\n handleCancel = async (checkChanges: boolean) => {\r\n AppUtils.cancelEditDialog(checkChanges, this.getSaveDataFromState(this.props, this.state).hash, this.orgStateHash, this.handleSave, this.props.onCancel, Translations.YouHaveUnapprovedChangesDoYouWantApproveChanges);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n \r\n \r\n {!!props.onSaveReport && !!props.onRemoveReport &&\r\n \r\n }\r\n {!!props.chartPanelPropertiesMode &&\r\n <>\r\n \r\n \r\n } />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n {!props.chartPanelPropertiesMode &&\r\n \r\n \r\n \r\n }\r\n {!props.chartPanelPropertiesMode &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!!state.extraParameters &&\r\n \r\n this.setState({ extraParameters })}\r\n />\r\n \r\n }\r\n \r\n \r\n \r\n {Translations.Clear}\r\n \r\n \r\n this.handleCancel(false)} sx={{ marginRight: \".5rem\" }}>\r\n {Translations.Cancel}\r\n \r\n \r\n {!props.chartPanelPropertiesMode ? Translations.Search : Translations.Save}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}","/* global JSX */\r\n// WhistleBlowReportList - MODULE\r\n// ***********************************************************************************************************************\r\nimport { Box } from \"@mui/material\";\r\nimport downloadjs from \"downloadjs\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { downloadMimeType } from \"ui/Scripts/source/models/consts\";\r\nimport { ReportType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IReportGenerated, ReportGenerated } from \"../../../models/report/reportGenerated\";\r\nimport { IReportItem } from \"../../../models/report/reportItem\";\r\nimport { IReportParameterValue } from \"../../../models/report/reportParameterValue\";\r\nimport * as whistleBlowService from \"../../../models/services/whistleBlowService\";\r\nimport { DownloadButton } from \"../../framework/Button/DownloadButton/DownloadButton\";\r\nimport { PageTitle } from \"../../framework/Page/PageTitle\";\r\nimport { ReportContainer } from \"../../framework/ReportContainer\";\r\nimport { IWhistleBlowGeneralFilter, WhistleBlowPageDashboardChart } from \"../WhistleBlowPageDashboardChart\";\r\n\r\n// WhistleBlowReportList\r\nexport interface IWhistleBlowReportListProp {\r\n companyId: string;\r\n reports: IReportItem[];\r\n reportId: string;\r\n selectedStartDate: number;\r\n selectedEndDate: number;\r\n selectedUnitIds: string[];\r\n selectedCategoryIds: string[];\r\n selectedHandlerUserCodes: string[];\r\n selectedStateFilterId: string;\r\n selectedSeverityFilterId: string;\r\n selectedResolutionFilterId: string;\r\n selectedSourceFilterId: string;\r\n selectedAnonymityFilterId: string;\r\n selectedDynamicTimeFilterId: string;\r\n dataId?: string;\r\n titleSuffix?: JSX.Element;\r\n onSetSortData: (sortColumn: string, sortOrderIsAsc: boolean) => void;\r\n}\r\n\r\ninterface IWhistleBlowReportListState extends IWhistleBlowGeneralFilter {\r\n isLoading: boolean;\r\n intialized: boolean;\r\n report: IReportItem;\r\n reportGenerated: IReportGenerated;\r\n reportDataUri: string;\r\n}\r\n\r\nexport class WhistleBlowReportList extends React.Component {\r\n parameterValues: IReportParameterValue[] = [];\r\n\r\n constructor(props: IWhistleBlowReportListProp) {\r\n super(props);\r\n const report = props.reportId ? props.reports.find(i => i.id === props.reportId) : null;\r\n this.parameterValues = report ? report.getReportParameterValues() : [];\r\n const generalFilterValues = WhistleBlowPageDashboardChart.getGeneralFilterFromState(props);\r\n this.state = {\r\n ...generalFilterValues,\r\n isLoading: false,\r\n intialized: false,\r\n reportGenerated: null,\r\n reportDataUri: \"\",\r\n report,\r\n };\r\n }\r\n\r\n createReport = async (report: IReportItem, startDate: number, endDate: number, unitIds: string[], categoryIds: string[], handlerUserCodes: string[], stateFilterId: number, severityFilterId: number, resolutionFilterId: number,\r\n sourceFilterId: number, anonymityFilterId: number, dynamicTimeFilterId: number) => {\r\n if (!report) return;\r\n let reportGenerated: ReportGenerated = null;\r\n if (report.type !== ReportType.Html) {\r\n this.setState({ isLoading: true });\r\n reportGenerated = await AppUtils.callService(() => whistleBlowService.getReportGenerated(report.reportId, report.title, startDate, endDate, unitIds, categoryIds, handlerUserCodes,\r\n stateFilterId, severityFilterId, resolutionFilterId, sourceFilterId, anonymityFilterId, dynamicTimeFilterId, this.parameterValues), false, false, () => { this.setState({ isLoading: false }); });\r\n if (!reportGenerated) return;\r\n }\r\n const reportBlob = reportGenerated && reportGenerated.content ? Base.base64ToBlob(reportGenerated.content, reportGenerated.mediaType) : null;\r\n const reportDataUri = reportBlob ? await Base.blobToBase64(reportBlob) : \"\";\r\n this.setState({\r\n intialized: true,\r\n report,\r\n reportGenerated,\r\n reportDataUri,\r\n startDate,\r\n endDate,\r\n unitIds,\r\n categoryIds,\r\n handlerUserCodes,\r\n stateFilterId,\r\n severityFilterId,\r\n resolutionFilterId,\r\n sourceFilterId,\r\n anonymityFilterId,\r\n dynamicTimeFilterId\r\n });\r\n };\r\n\r\n componentDidMount(): void {\r\n const state = this.state;\r\n this.createReport(state.report, state.startDate, state.endDate, state.unitIds, state.categoryIds, state.handlerUserCodes, state.stateFilterId,\r\n state.severityFilterId, state.resolutionFilterId, state.sourceFilterId, state.anonymityFilterId, state.dynamicTimeFilterId);\r\n }\r\n\r\n componentDidUpdate(prevProps: IWhistleBlowReportListProp, prevState: IWhistleBlowReportListState) {\r\n const props = this.props;\r\n const prevDataId = prevProps.dataId ? prevProps.dataId : \"\";\r\n const dataId = props.dataId ? props.dataId : \"\";\r\n const prevReportId = prevProps.reportId ? prevProps.reportId : \"\";\r\n const reportId = props.reportId ? props.reportId : \"\";\r\n const prevCompanyId = prevProps.companyId ? prevProps.companyId : \"\";\r\n const companyId = props.companyId ? props.companyId : \"\";\r\n const filterStateChange = WhistleBlowPageDashboardChart.getWhistleBlowGeneralFilterChange(prevProps, props);\r\n const report = props.reportId ? props.reports.find(i => i.id === props.reportId) : null;\r\n const parameterValues = report ? report.getReportParameterValues() : [];\r\n if (dataId === prevDataId && reportId === prevReportId && companyId === prevCompanyId &&\r\n filterStateChange.notChanged &&\r\n Base.equalStrArrays(prevProps.reports ? prevProps.reports.map(i => i.id) : [], props.reports ? props.reports.map(i => i.id) : []) &&\r\n JSON.stringify(this.parameterValues) === JSON.stringify(parameterValues)) return;\r\n this.parameterValues = parameterValues;\r\n this.createReport(reportId ? props.reports.find(i => i.id === reportId) : null, filterStateChange.startDate, filterStateChange.endDate, filterStateChange.unitIds, filterStateChange.categoryIds,\r\n filterStateChange.handlerUserCodes, filterStateChange.stateFilterId, filterStateChange.severityFilterId, filterStateChange.resolutionFilterId, filterStateChange.sourceFilterId,\r\n filterStateChange.anonymityFilterId, filterStateChange.dynamicTimeFilterId);\r\n }\r\n\r\n handleDownload = () => {\r\n const state = this.state;\r\n if (!state.reportGenerated || !state.reportGenerated.content) return;\r\n const blob = Base.base64ToBlob(state.reportGenerated.content, downloadMimeType);\r\n if (!blob) return;\r\n downloadjs(blob, state.reportGenerated.fileName);\r\n };\r\n\r\n render() {\r\n const state = this.state;\r\n const report = state.report;\r\n const reportGenerated = state.reportGenerated;\r\n return (\r\n \r\n \r\n \r\n {report.type === ReportType.Pdf ? Translations.DownloadPdf : Translations.ExportToExcel}\r\n \r\n \r\n {(!!report && report.type !== ReportType.Html) &&\r\n \r\n {(!!reportGenerated && !!report && report.type === ReportType.Pdf) &&\r\n \r\n }\r\n {(!!reportGenerated && !!report && report.type === ReportType.Excel) &&\r\n
    \r\n }\r\n
    \r\n }\r\n {(!!report && report.type === ReportType.Html) &&\r\n
    \r\n }\r\n
    \r\n );\r\n }\r\n}","import { Box } from \"@mui/material\";\r\nimport * as React from \"react\";\r\nimport { ToolButton } from \"ui/Scripts/source/components/framework/toolButton\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IIdTitle, IdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { IIdTitleNode, IdTitleNode } from \"ui/Scripts/source/models/common/idTitleNode\";\r\nimport { ApplicationPermissionType, ContentPagePanelType, FrontPagePanelSize, ReportSharingType, ReportType, WhistleBlowAnonymity, WhistleBlowResolution, WhistleBlowSeverity, WhistleBlowSource, WhistleBlowState, WhistleBlowStateFilter } from \"ui/Scripts/source/models/enums\";\r\nimport { ITaskDataRow } from \"ui/Scripts/source/models/task/taskDataRow\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IWhistleBlowCategoryListItem } from \"ui/Scripts/source/models/whistleBlowCategory/whistleBlowCategoryListItem\";\r\nimport { AppUtils } from \"../../../framework/appUtils\";\r\nimport { IChartItem } from \"../../../models/chart/chartItem\";\r\nimport { ISavedChartPanel, SavedChartPanel } from \"../../../models/chart/savedChartPanel\";\r\nimport { IListFilterItem, ListFilterItem } from \"../../../models/common/listFilterItem\";\r\nimport { IPagePanel, PagePanel } from \"../../../models/common/pagePanel\";\r\nimport { ISavedListFilter } from \"../../../models/common/savedListFilter\";\r\nimport { ITypedOption } from \"../../../models/common/typedOption\";\r\nimport { IReportItem, ReportItem } from \"../../../models/report/reportItem\";\r\nimport { ReportItems } from \"../../../models/report/reportItems\";\r\nimport { ISavedReport } from \"../../../models/report/savedReport\";\r\nimport { recordLockManager } from \"../../../models/services/recordLockService\";\r\nimport * as whistleBlowService from \"../../../models/services/whistleBlowService\";\r\nimport { IAppSessionState } from \"../../../models/store/storeTypes\";\r\nimport { IUnitDefaultHandlersNode } from \"../../../models/unit/unitDefaultHandlersNode\";\r\nimport { IUnitModuleNode } from \"../../../models/unit/unitModuleNode\";\r\nimport { IUnitNodePermissions } from \"../../../models/unit/unitNodePermissions\";\r\nimport { UserListItems } from \"../../../models/user/userListItems\";\r\nimport { IWhistleBlowPage } from \"../../../models/whistleBlow/whistleBlowPage\";\r\nimport { DashboardPanelList } from \"../../app/DashboardPanelList\";\r\nimport { HeaderMenuItem, NavigationMenu } from \"../../app/NavigationMenu\";\r\nimport { UserMenu } from \"../../app/UserMenu\";\r\nimport { SettingsButton } from \"../../framework/Button/SettingsButton\";\r\nimport { ListFilterSaveDialog } from \"../../framework/Filters/ListFilterSaveDialog\";\r\nimport { PageContainer } from \"../../framework/Page/PageContainer\";\r\nimport { PageContent } from \"../../framework/Page/PageContent\";\r\nimport { PageDashboard } from \"../../framework/Page/PageDashboard\";\r\nimport { PageDrawer } from \"../../framework/Page/PageDrawer\";\r\nimport { PageFilterConditionDrawer } from \"../../framework/Page/PageFilterConditionDrawer\";\r\nimport { PageListAndReportsContainer } from \"../../framework/Page/PageListAndReportsContainer\";\r\nimport { PageReportsContainer } from \"../../framework/Page/PageReportsContainer\";\r\nimport { PageTabs } from \"../../framework/Page/PageTabs\";\r\nimport { PageTitle } from \"../../framework/Page/PageTitle\";\r\nimport { PageTopBar } from \"../../framework/Page/PageTopBar\";\r\nimport { IPageNavMenuItem } from \"../../framework/PageNav/PageNavMenuItems\";\r\nimport { FilterTabs } from \"../../framework/PageNavMenuItem/FilterTabs\";\r\nimport { ReportSettings } from \"../../framework/ReportSettings\";\r\nimport { PageNavMenuReportList } from \"../../report/PageNavMenuItemReportList/PageNavMenuItemReportList\";\r\nimport { ISaveReportFilters } from \"../../report/PageNavMenuItemReportList/SaveReportDialog\";\r\nimport { SaveReportDialog } from \"../../report/PageNavMenuItemReportList/SaveReportDialog/SaveReportDialog\";\r\nimport { WhistleBlowArchiveDialog } from \"../WhistleBlowArchiveDialog\";\r\nimport { WhistleBlowChannelDialogMenuItem, WhistleBlowChannelEditDialog } from \"../WhistleBlowChannelEditDialog\";\r\nimport { WhistleBlowFilterSettings } from \"../WhistleBlowFilterSettings\";\r\nimport { WhistleBlowList } from \"../WhistleBlowList\";\r\nimport { IWhistleBlowPageFilterState, WhistleBlowPageDashboardChart } from \"../WhistleBlowPageDashboardChart\";\r\nimport { WhistleBlowReportFilterDialog } from \"../WhistleBlowReportFilterDialog\";\r\nimport { WhistleBlowReportList } from \"../WhistleBlowReportList\";\r\nimport { AppChartIcon } from \"source/components/framework/Icon/AppChartIcon\";\r\nimport { abortManager } from \"source/models/services/tokenService\";\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport const enum WhistleBlowPageViewTypeId {\r\n Records = \"0\",\r\n Reports = \"1\",\r\n Dashboard = \"2\",\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\n// WhistleBlowPage\r\nexport interface IWhistleBlowPageOwnProps {\r\n}\r\n\r\nexport interface IWhistleBlowPageStateProps {\r\n appState: IAppSessionState;\r\n dataId: number;\r\n whistleBlowPage: IWhistleBlowPage;\r\n}\r\n\r\nexport interface IWhistleBlowPageDispatchProps {\r\n onGetWhistleBlowPage: () => void;\r\n onLogout: () => void;\r\n onSetCulture: (culture: string) => void;\r\n onSaveUserParameters: (parameters: ITypedOption[]) => void;\r\n onRefreshSessionState: () => void;\r\n}\r\n\r\ntype WhistleBlowPageProp = IWhistleBlowPageOwnProps & IWhistleBlowPageStateProps & IWhistleBlowPageDispatchProps;\r\n\r\ninterface IWhistleBlowPageState extends IWhistleBlowPageFilterState {\r\n initialized: boolean;\r\n listDataPreloaded: boolean;\r\n units: IIdTitleNode[];\r\n categories: IIdTitle[];\r\n handlers: IIdTitle[];\r\n stateFilters: IIdTitle[];\r\n severityFilters: IIdTitle[];\r\n resolutionFilters: IIdTitle[];\r\n sourceFilters: IIdTitle[];\r\n anonymityFilters: IIdTitle[];\r\n dynamicTimeFilters: IIdTitle[];\r\n panelsDynamicTimeFilters: IIdTitle[];\r\n\r\n activeViewTypeId: WhistleBlowPageViewTypeId;\r\n activeCompanyId: string;\r\n\r\n sortColumn: string;\r\n sortOrderIsAsc: boolean;\r\n whistleBlowSettingsActions: IPageNavMenuItem[];\r\n // Filters\r\n showWhistleBlowFilterDialog: boolean;\r\n whistleBlowFilterDialogFilter: IListFilterItem;\r\n filters: IListFilterItem[];\r\n savedFilters: IListFilterItem[];\r\n activeFilterId: string;\r\n activeSavedFilterId: string;\r\n showListFilterSaveDialog: boolean;\r\n listFilterSaveDialogFilter: IListFilterItem;\r\n listFilterSaveDialogGeneralFilter: any;\r\n listFilterSaveDialogReservedNames: string[];\r\n listFilterSaveDialogOnGetGeneralFilter: () => any;\r\n // Permissions\r\n dataId: number;\r\n unitNodePermissions: IUnitNodePermissions;\r\n // DefaultHandlers\r\n unitDefaultHandlersNode: IUnitDefaultHandlersNode;\r\n // Channel Settings\r\n showChannelSettingsDialog: boolean;\r\n // Unit Module\r\n unitModuleDialogNode: IUnitModuleNode;\r\n // Archive\r\n showArchiveWhistleBlowsDialog: boolean;\r\n // Reports\r\n whistleBlowReportFilterIsSet: boolean;\r\n loadingReports: boolean;\r\n reports: IReportItem[];\r\n savedReports: IReportItem[];\r\n chartItems: IChartItem[];\r\n activeReportId: string;\r\n activeSavedReportId: string;\r\n reportPanelFilterReport: IReportItem;\r\n showReportSaveDialog: boolean;\r\n reportSaveDialogReport: IReportItem;\r\n reportSaveDialogGeneralFilter: any;\r\n reportSaveDialogReservedNames: string[];\r\n reportSaveDialogOnGetReportSaveFilters: () => ISaveReportFilters;\r\n // Dashboard\r\n showDashBoardNavPanel: boolean;\r\n dashBoardPanels: IPagePanel[];\r\n showDashBoardChartPanelDialog: boolean;\r\n dashBoardChartPanelDialogFilter: IWhistleBlowPageFilterState;\r\n dashBoardChartPanelDialogVisible: boolean;\r\n dashBoardChartPanelDialogPanelSize: number;\r\n dashBoardChartPanelDialogCharts: IIdTitle[];\r\n dashBoardChartPanelDialogChartId: string;\r\n dashBoardChartPanelId: string;\r\n}\r\n\r\nexport class WhistleBlowPage extends React.Component {\r\n _isMounted: boolean;\r\n\r\n getUnits = (units: IIdTitleNode[]): IIdTitleNode[] => {\r\n const result: IIdTitleNode[] = [];\r\n result.push(IdTitleNode.createIdTitleNode(Base.emptyGuid, \"'\" + Translations.All + \"'\", []));\r\n return result.concat(units);\r\n };\r\n \r\n getCategories = (categories: IWhistleBlowCategoryListItem[]): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(Base.emptyGuid, \"'\" + Translations.All + \"'\"));\r\n return result.concat(categories.map(i => IdTitle.createIdTitle(i.id, i.code)));\r\n };\r\n \r\n getHandlers = (handlers: IIdTitle[]): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(\"\", \"'\" + Translations.All + \"'\"));\r\n return result.concat(handlers);\r\n };\r\n \r\n getStateFilters = (): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(WhistleBlowStateFilter.Active.toString(10), \"'\" + Translations.ActivePlural + \"'\"));\r\n result.push(IdTitle.createIdTitle(WhistleBlowStateFilter.All.toString(10), \"'\" + Translations.All + \"'\"));\r\n result.push(IdTitle.createIdTitle(WhistleBlowState.New.toString(10), Translations.WhistleBlowStateNew));\r\n result.push(IdTitle.createIdTitle(WhistleBlowState.Received.toString(10), Translations.WhistleBlowStateReceived));\r\n result.push(IdTitle.createIdTitle(WhistleBlowState.InProgress.toString(10), Translations.WhistleBlowStateInProgress));\r\n result.push(IdTitle.createIdTitle(WhistleBlowState.Resolved.toString(10), Translations.WhistleBlowStateResolved));\r\n result.push(IdTitle.createIdTitle(WhistleBlowState.Archived.toString(10), Translations.WhistleBlowStateArchived));\r\n result.push(IdTitle.createIdTitle(WhistleBlowState.Archived3.toString(10), Translations.WhistleBlowStateArchived + \" (\" + Translations.AType.toLocaleLowerCase() + \" 1)\"));\r\n result.push(IdTitle.createIdTitle(WhistleBlowState.Archived2.toString(10), Translations.WhistleBlowStateArchived + \" (\" + Translations.AType.toLocaleLowerCase() + \" 2)\"));\r\n result.push(IdTitle.createIdTitle(WhistleBlowState.Archived1.toString(10), Translations.WhistleBlowStateArchived + \" (\" + Translations.AType.toLocaleLowerCase() + \" 3)\"));\r\n return result;\r\n };\r\n \r\n getSeverityFilters = (): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(\"\", \"'\" + Translations.All + \"'\"));\r\n result.push(IdTitle.createIdTitle(WhistleBlowSeverity.Unspecified.toString(10), Translations.WhistleBlowSeverityUnspecified));\r\n result.push(IdTitle.createIdTitle(WhistleBlowSeverity.VeryLow.toString(10), Translations.WhistleBlowSeverityVeryLow));\r\n result.push(IdTitle.createIdTitle(WhistleBlowSeverity.Low.toString(10), Translations.WhistleBlowSeverityLow));\r\n result.push(IdTitle.createIdTitle(WhistleBlowSeverity.Normal.toString(10), Translations.WhistleBlowSeverityNormal));\r\n result.push(IdTitle.createIdTitle(WhistleBlowSeverity.High.toString(10), Translations.WhistleBlowSeverityHigh));\r\n result.push(IdTitle.createIdTitle(WhistleBlowSeverity.Critical.toString(10), Translations.WhistleBlowSeverityCritical));\r\n return result;\r\n };\r\n \r\n getResolutionFilters = (): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(\"\", \"'\" + Translations.All + \"'\"));\r\n result.push(IdTitle.createIdTitle(WhistleBlowResolution.Unspecified.toString(10), Translations.WhistleBlowResolutionUnspecified));\r\n result.push(IdTitle.createIdTitle(WhistleBlowResolution.Resolved.toString(10), Translations.WhistleBlowResolutionResolved));\r\n result.push(IdTitle.createIdTitle(WhistleBlowResolution.Rejected.toString(10), Translations.WhistleBlowResolutionRejected));\r\n result.push(IdTitle.createIdTitle(WhistleBlowResolution.Canceled.toString(10), Translations.WhistleBlowResolutionCanceled));\r\n result.push(IdTitle.createIdTitle(WhistleBlowResolution.Junk.toString(10), Translations.WhistleBlowResolutionJunk));\r\n result.push(IdTitle.createIdTitle(WhistleBlowResolution.Other.toString(10), Translations.WhistleBlowResolutionOther));\r\n return result;\r\n };\r\n \r\n getSourceFilters = (): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(\"\", \"'\" + Translations.All + \"'\"));\r\n result.push(IdTitle.createIdTitle(WhistleBlowSource.Unspecified.toString(10), Translations.WhistleBlowSourceUnspecified));\r\n result.push(IdTitle.createIdTitle(WhistleBlowSource.System.toString(10), Translations.WhistleBlowSourceSystem));\r\n result.push(IdTitle.createIdTitle(WhistleBlowSource.Phone.toString(10), Translations.WhistleBlowSourcePhone));\r\n result.push(IdTitle.createIdTitle(WhistleBlowSource.Email.toString(10), Translations.WhistleBlowSourceEmail));\r\n result.push(IdTitle.createIdTitle(WhistleBlowSource.Mail.toString(10), Translations.WhistleBlowSourceMail));\r\n result.push(IdTitle.createIdTitle(WhistleBlowSource.Oral.toString(10), Translations.WhistleBlowSourceOral));\r\n result.push(IdTitle.createIdTitle(WhistleBlowSource.Other.toString(10), Translations.WhistleBlowSourceOther));\r\n return result;\r\n };\r\n\r\n getAnonymityFilters = (): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(\"\", \"'\" + Translations.All + \"'\"));\r\n result.push(IdTitle.createIdTitle(WhistleBlowAnonymity.Anonymous.toString(10), Translations.WhistleBlowAnonymityAnonymous));\r\n result.push(IdTitle.createIdTitle(WhistleBlowAnonymity.NonAnonymous.toString(10), Translations.WhistleBlowAnonymityNonAnonymous));\r\n return result;\r\n };\r\n \r\n getDynamicTimeFilters = (allLabelText: string): IIdTitle[] => {\r\n const result: IIdTitle[] = [];\r\n result.push(IdTitle.createIdTitle(\"0\", \"'\" + allLabelText + \"'\"));\r\n result.push(IdTitle.createIdTitle(\"1\", Translations.Last30Days));\r\n result.push(IdTitle.createIdTitle(\"2\", Translations.Last120Days));\r\n result.push(IdTitle.createIdTitle(\"3\", Translations.Last180Days));\r\n result.push(IdTitle.createIdTitle(\"4\", Translations.LastYear));\r\n return result;\r\n };\r\n\r\n getHtlmlReportItems = (): IReportItem[] => {\r\n const result: IReportItem[] = [];\r\n return result;\r\n };\r\n \r\n getFilters = (): IListFilterItem[] => {\r\n const result: IListFilterItem[] = [];\r\n result.push(ListFilterItem.createListFilterItem(Translations.WhistleBlowActiveReports, Translations.WhistleBlowActiveReports,\r\n {\r\n stateFilterId: WhistleBlowStateFilter.Active.toString(10),\r\n severityFilterId: null,\r\n resolutionFilterId: null,\r\n sourceFilterId: null,\r\n anonymityFilterId: null,\r\n categoryIds: [Base.emptyGuid],\r\n unitIds: [Base.emptyGuid]\r\n }, \"state\", true, 0));\r\n result.push(ListFilterItem.createListFilterItem(Translations.WhistleBlowStateNew, Translations.WhistleBlowStateNew,\r\n {\r\n stateFilterId: WhistleBlowState.New.toString(10),\r\n severityFilterId: null,\r\n resolutionFilterId: null,\r\n sourceFilterId: null,\r\n anonymityFilterId: null,\r\n categoryIds: [Base.emptyGuid],\r\n unitIds: [Base.emptyGuid]\r\n }, \"state\", true, 1));\r\n result.push(ListFilterItem.createListFilterItem(Translations.WhistleBlowStateReceived, Translations.WhistleBlowStateReceived,\r\n {\r\n stateFilterId: WhistleBlowState.Received.toString(10),\r\n severityFilterId: null,\r\n resolutionFilterId: null,\r\n sourceFilterId: null,\r\n anonymityFilterId: null,\r\n categoryIds: [Base.emptyGuid],\r\n unitIds: [Base.emptyGuid]\r\n }, \"state\", true, 2));\r\n result.push(ListFilterItem.createListFilterItem(Translations.WhistleBlowStateInProgress, Translations.WhistleBlowStateInProgress,\r\n {\r\n stateFilterId: WhistleBlowState.InProgress.toString(10),\r\n severityFilterId: null,\r\n resolutionFilterId: null,\r\n sourceFilterId: null,\r\n anonymityFilterId: null,\r\n categoryIds: [Base.emptyGuid],\r\n unitIds: [Base.emptyGuid]\r\n }, \"state\", true, 3));\r\n result.push(ListFilterItem.createListFilterItem(Translations.WhistleBlowStateResolved, Translations.WhistleBlowStateResolved,\r\n {\r\n stateFilterId: WhistleBlowState.Resolved.toString(10),\r\n severityFilterId: null,\r\n resolutionFilterId: null,\r\n sourceFilterId: null,\r\n anonymityFilterId: null,\r\n categoryIds: [Base.emptyGuid],\r\n unitIds: [Base.emptyGuid]\r\n }, \"state\", true, 4));\r\n result.push(ListFilterItem.createListFilterItem(Translations.WhistleBlowStateArchived, Translations.WhistleBlowStateArchived,\r\n {\r\n stateFilterId: WhistleBlowState.Archived.toString(10),\r\n severityFilterId: null,\r\n resolutionFilterId: null,\r\n sourceFilterId: null,\r\n anonymityFilterId: null,\r\n categoryIds: [Base.emptyGuid],\r\n unitIds: [Base.emptyGuid]\r\n }, \"state\", true, 5));\r\n ListFilterItem.sortListFilterItems(result);\r\n return result;\r\n };\r\n\r\n getSavedFilters = (props: WhistleBlowPageProp): IListFilterItem[] => {\r\n const result: IListFilterItem[] = [];\r\n if (!props || !props.whistleBlowPage) return result;\r\n for (const companyFilter of props.whistleBlowPage.companyFilters) {\r\n result.push(ListFilterItem.createListFilterItemFromSavedListFilter(companyFilter, true));\r\n }\r\n for (const userFilter of props.whistleBlowPage.userFilters) {\r\n result.push(ListFilterItem.createListFilterItemFromSavedListFilter(userFilter, false));\r\n }\r\n ListFilterItem.sortListFilterItems(result);\r\n return result;\r\n };\r\n\r\n getWhistleBlowReportFilterIsSet = (state: IWhistleBlowPageState): boolean => {\r\n let taskType = null;\r\n let taskDataRow = null;\r\n if (state.activeReportId) {\r\n const report = state.reports.find(i => i.id === state.activeReportId);\r\n if (report && report.taskType && report.taskDataRow && report.taskDataRow.cols.length > 0) {\r\n taskType = report.taskType;\r\n taskDataRow = report.taskDataRow;\r\n }\r\n } else {\r\n const savedReport = state.savedReports.find(i => i.id === state.activeSavedReportId);\r\n if (savedReport && savedReport.taskType && savedReport.taskDataRow && savedReport.taskDataRow.cols.length > 0) {\r\n taskType = savedReport.taskType;\r\n taskDataRow = savedReport.taskDataRow;\r\n }\r\n }\r\n return WhistleBlowReportFilterDialog.filterIsSet(state.units, state.categories, state.handlers, state.stateFilters, state.severityFilters, state.resolutionFilters, state.sourceFilters, state.anonymityFilters, state.dynamicTimeFilters,\r\n state.selectedStartDate, state.selectedEndDate, state.selectedUnitIds, state.selectedCategoryIds, state.selectedHandlerUserCodes, state.selectedStateFilterId, state.selectedSeverityFilterId,\r\n state.selectedResolutionFilterId, state.selectedSourceFilterId, state.selectedAnonymityFilterId, state.selectedDynamicTimeFilterId, taskType, taskDataRow);\r\n };\r\n\r\n getWhistleBlowSettingsActions = (): IPageNavMenuItem[] => {\r\n const props = this.props;\r\n const sessionState = props.appState.state;\r\n const result: IPageNavMenuItem[] = [];\r\n const canChangeProperties = sessionState?.isSuperAdmin || sessionState?.isCompanyWhistleBlowAdmin;\r\n if (canChangeProperties) {\r\n result.push({ id: WhistleBlowChannelDialogMenuItem.Units, title: Translations.Units });\r\n }\r\n if (props.whistleBlowPage?.canEditPermssions) {\r\n result.push({ id: WhistleBlowChannelDialogMenuItem.Permissions, title: Translations.Permissions });\r\n }\r\n if (canChangeProperties) {\r\n result.push({ id: WhistleBlowChannelDialogMenuItem.General, title: Translations.BasicInformation });\r\n result.push({ id: WhistleBlowChannelDialogMenuItem.Admins, title: Translations.Admins });\r\n result.push({ id: WhistleBlowChannelDialogMenuItem.Texts, title: Translations.WhistleBlowFrontPage });\r\n result.push({ id: WhistleBlowChannelDialogMenuItem.Infos, title: Translations.WhistleBlowGuide });\r\n }\r\n if (canChangeProperties) {\r\n result.push({ id: WhistleBlowChannelDialogMenuItem.Handlers, title: Translations.DefaultHandlers });\r\n result.push({ id: WhistleBlowChannelDialogMenuItem.Categories, title: Translations.WhistleBlowCategories });\r\n }\r\n return result;\r\n };\r\n\r\n constructor(props: WhistleBlowPageProp) {\r\n super(props);\r\n abortManager.abortAll(); //Abort all abortable calls regardless of module\r\n const sessionState = props.appState.state;\r\n const filters = this.getFilters();\r\n const filterProps = ListFilterItem.getFilterProps(filters[0], \"\", true, WhistleBlowPageDashboardChart.getStateFilterPropsFromGeneralFilter);\r\n const stateFilters = this.getStateFilters();\r\n const severityFilters = this.getSeverityFilters();\r\n const resolutionFilters = this.getResolutionFilters();\r\n const sourceFilters = this.getSourceFilters();\r\n const anonymityFilters = this.getAnonymityFilters();\r\n const dynamicTimeFilters = this.getDynamicTimeFilters(Translations.SpecifedTimeFrame);\r\n const panelsDynamicTimeFilters = this.getDynamicTimeFilters(Translations.All);\r\n\r\n const state = {\r\n ...filterProps,\r\n initialized: !!props.whistleBlowPage,\r\n activeViewTypeId: WhistleBlowPageViewTypeId.Dashboard,\r\n activeCompanyId: sessionState.companyId,\r\n listDataPreloaded: true,\r\n units: this.getUnits(props.whistleBlowPage ? props.whistleBlowPage.units : []),\r\n categories: this.getCategories(props.whistleBlowPage ? props.whistleBlowPage.categories : []),\r\n handlers: this.getHandlers(props.whistleBlowPage ? props.whistleBlowPage.handlers : []),\r\n stateFilters,\r\n severityFilters,\r\n resolutionFilters,\r\n sourceFilters,\r\n anonymityFilters,\r\n dynamicTimeFilters,\r\n panelsDynamicTimeFilters,\r\n selectedStartDate: 0,\r\n selectedEndDate: 0,\r\n selectedHandlerUserCodes: [\"\"],\r\n selectedStateFilterId: stateFilters[0].id,\r\n selectedSeverityFilterId: severityFilters[0].id,\r\n selectedResolutionFilterId: resolutionFilters[0].id,\r\n selectedSourceFilterId: sourceFilters[0].id,\r\n selectedAnonymityFilterId: anonymityFilters[0].id,\r\n selectedDynamicTimeFilterId: dynamicTimeFilters[0].id,\r\n whistleBlowSettingsActions: this.getWhistleBlowSettingsActions(),\r\n // Filters\r\n activeFilterId: filters[0].id,\r\n activeSavedFilterId: \"\",\r\n filters,\r\n savedFilters: this.getSavedFilters(props),\r\n showWhistleBlowFilterDialog: false,\r\n whistleBlowFilterDialogFilter: null,\r\n showListFilterSaveDialog: false,\r\n listFilterSaveDialogFilter: null,\r\n listFilterSaveDialogGeneralFilter: null,\r\n listFilterSaveDialogReservedNames: [],\r\n listFilterSaveDialogOnGetGeneralFilter: null,\r\n // Permissions\r\n dataId: props.dataId,\r\n unitNodePermissions: null,\r\n // DefaultHandlers\r\n unitDefaultHandlersNode: null,\r\n // Channel Settings\r\n showChannelSettingsDialog: false,\r\n // Unit Module\r\n unitModuleDialogNode: null,\r\n // Archive\r\n showArchiveWhistleBlowsDialog: false,\r\n // Reports\r\n whistleBlowReportFilterIsSet: false,\r\n loadingReports: true,\r\n reports: this.getHtlmlReportItems(),\r\n savedReports: [],\r\n chartItems: [],\r\n activeReportId: \"\",\r\n activeSavedReportId: \"\",\r\n reportPanelFilterReport: null,\r\n showReportSaveDialog: false,\r\n reportSaveDialogReport: null,\r\n reportSaveDialogGeneralFilter: null,\r\n reportSaveDialogReservedNames: [],\r\n reportSaveDialogOnGetReportSaveFilters: null,\r\n // Dashboard\r\n showDashBoardNavPanel: false,\r\n dashBoardPanels: [],\r\n showDashBoardChartPanelDialog: false,\r\n dashBoardChartPanelDialogFilter: null,\r\n dashBoardChartPanelDialogVisible: false,\r\n dashBoardChartPanelDialogPanelSize: FrontPagePanelSize.OneXOne,\r\n dashBoardChartPanelDialogCharts: [],\r\n dashBoardChartPanelDialogChartId: \"\",\r\n dashBoardChartPanelId: \"\"\r\n };\r\n this.state = {\r\n ...state,\r\n dashBoardPanels: this.getDashBoardPanels(state.chartItems),\r\n whistleBlowReportFilterIsSet: this.getWhistleBlowReportFilterIsSet(state),\r\n };\r\n }\r\n\r\n getDashBoardPanels = (chartItems: IChartItem[]): IPagePanel[] => {\r\n const props = this.props;\r\n const result = (props.whistleBlowPage ? props.whistleBlowPage.panels : []);\r\n const chartPanels = props.whistleBlowPage ? props.whistleBlowPage.chartPanels : [];\r\n const newChartPanels: ISavedChartPanel[] = [];\r\n //Set chart panel titles and add missing chart panels\r\n for (const chartItem of chartItems) {\r\n let chartPanel = chartPanels.find(i => i.reportId === chartItem.reportName);\r\n if (chartPanel) {\r\n chartPanel.reportTitle = chartItem.reportDescription;\r\n } else {\r\n chartPanel = SavedChartPanel.CreateSavedChartPanel(chartItem, result.length, ApplicationPermissionType.WhistleBlow);\r\n }\r\n newChartPanels.push(chartPanel);\r\n }\r\n return PagePanel.sortPagePanels(result.concat(newChartPanels));\r\n };\r\n\r\n getWhistleBlowReports = async (companyId: string) => {\r\n const state = this.state;\r\n const newState = await ReportItems.getReportsState(companyId, state.activeReportId, this.getHtlmlReportItems(), whistleBlowService.getWhistleBlowPageReportItems,\r\n () => {\r\n if (!this._isMounted) return;\r\n this.setState({ loadingReports: true });\r\n },\r\n () => {\r\n if (!this._isMounted) return;\r\n this.setState({ loadingReports: false });\r\n });\r\n if (!this._isMounted || !newState) return;\r\n this.setState({ ...newState, dashBoardPanels: this.getDashBoardPanels(newState.chartItems) });\r\n };\r\n\r\n componentDidMount(): void {\r\n const sessionState = this.props.appState.state;\r\n recordLockManager.unlockAll(sessionState?.companyId, sessionState?.code);\r\n this.props.onGetWhistleBlowPage();\r\n this.getWhistleBlowReports(null);\r\n this._isMounted = true;\r\n }\r\n\r\n componentDidUpdate(prevProps: WhistleBlowPageProp, prevState: IWhistleBlowPageState): void {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n const equalCompanyIds = Base.equalStrArrays(prevProps.whistleBlowPage ? prevProps.whistleBlowPage.companies.map(i => i.id) : [], props.whistleBlowPage ? props.whistleBlowPage.companies.map(i => i.id) : []);\r\n const prevCompanyId = prevProps.whistleBlowPage && prevProps.whistleBlowPage.companies.length > 0 ? prevProps.whistleBlowPage.companies[0].id : Base.emptyGuid;\r\n const companyId = props.whistleBlowPage && props.whistleBlowPage.companies.length > 0 ? props.whistleBlowPage.companies[0].id : Base.emptyGuid;\r\n const prevCanEditPermssions = prevProps.whistleBlowPage?.canEditPermssions ?? false;\r\n const canEditPermssions = props.whistleBlowPage?.canEditPermssions ?? false;\r\n const unitsData = props.whistleBlowPage ? props.whistleBlowPage.units : [];\r\n const equalUnits = Base.equalStrArrays(prevProps.whistleBlowPage ? prevProps.whistleBlowPage.units.map(i => i.id) : [], unitsData.map(i => i.id));\r\n const units = this.getUnits(unitsData);\r\n const prevCategoriesHash = prevProps.whistleBlowPage ? IdTitle.getHash(prevProps.whistleBlowPage.categories.map(i => IdTitle.createIdTitle(i.id, i.code))) : \"\";\r\n const categoriesData = props.whistleBlowPage ? props.whistleBlowPage.categories : [];\r\n const categoriesHash = IdTitle.getHash(categoriesData.map(i => IdTitle.createIdTitle(i.id, i.code)));\r\n const categories = this.getCategories(categoriesData);\r\n const prevHandlersHash = prevProps.whistleBlowPage ? IdTitle.getHash(prevProps.whistleBlowPage.handlers) : \"\";\r\n const handlersData = props.whistleBlowPage ? props.whistleBlowPage.handlers : [];\r\n const handlersHash = IdTitle.getHash(handlersData);\r\n const handlers = this.getHandlers(handlersData);\r\n if (prevProps.dataId === props.dataId && prevCompanyId === companyId && prevCanEditPermssions === canEditPermssions &&\r\n equalCompanyIds && equalUnits && prevCategoriesHash === categoriesHash && prevHandlersHash === handlersHash) return;\r\n const savedFilters = this.getSavedFilters(props);\r\n const selectedUnitIds = equalUnits ? state.selectedUnitIds : [Base.emptyGuid];\r\n const selectedCategoryIds = prevCategoriesHash === categoriesHash ? state.selectedCategoryIds : [Base.emptyGuid];\r\n const selectedHandlerUserCodes = prevHandlersHash === handlersHash ? state.selectedHandlerUserCodes : [\"\"];\r\n const activeSavedFilterId = savedFilters.find(i => i.id === state.activeSavedFilterId)\r\n ? state.activeSavedFilterId\r\n : \"\";\r\n const stateChange = {\r\n dataId: props.dataId,\r\n initialized: !!props.whistleBlowPage,\r\n dashBoardPanels: this.getDashBoardPanels(state.chartItems),\r\n activeViewTypeId: companyId !== sessionState.companyId ? WhistleBlowPageViewTypeId.Records : state.activeViewTypeId,\r\n activeCompanyId: companyId,\r\n units,\r\n categories,\r\n handlers,\r\n selectedUnitIds,\r\n selectedCategoryIds,\r\n selectedHandlerUserCodes,\r\n savedFilters,\r\n activeSavedFilterId,\r\n whistleBlowSettingsActions: this.getWhistleBlowSettingsActions()\r\n };\r\n const newState = { ...state, ...stateChange };\r\n this.setState({\r\n ...stateChange,\r\n whistleBlowReportFilterIsSet: this.getWhistleBlowReportFilterIsSet(newState),\r\n });\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this._isMounted = false;\r\n }\r\n \r\n // #region Saved Filter\r\n getFilterPropsWithState = (listItemFilter: IListFilterItem) => {\r\n const state = this.state;\r\n let result = {\r\n selectedStartDate: state.selectedStartDate,\r\n selectedEndDate: state.selectedEndDate,\r\n selectedUnitIds: state.selectedUnitIds,\r\n selectedCategoryIds: state.selectedCategoryIds,\r\n selectedHandlerUserCodes: state.selectedHandlerUserCodes,\r\n selectedStateFilterId: state.selectedStateFilterId,\r\n selectedSeverityFilterId: state.selectedSeverityFilterId,\r\n selectedResolutionFilterId: state.selectedResolutionFilterId,\r\n selectedSourceFilterId: state.selectedSourceFilterId,\r\n selectedAnonymityFilterId: state.selectedAnonymityFilterId,\r\n selectedDynamicTimeFilterId: state.selectedDynamicTimeFilterId,\r\n sortColumn: state.sortColumn,\r\n sortOrderIsAsc: state.sortOrderIsAsc\r\n };\r\n if (listItemFilter) {\r\n result = ListFilterItem.getFilterProps(listItemFilter, result.sortColumn, result.sortOrderIsAsc, WhistleBlowPageDashboardChart.getStateFilterPropsFromGeneralFilter);\r\n }\r\n return result;\r\n };\r\n\r\n handleChangeActiveCompanyId = async (companyId: string) => {\r\n if (this.state.activeCompanyId === companyId) return;\r\n await this.handleRefreshUnitsAndCategories(companyId);\r\n };\r\n\r\n getStateChangeAfterChangeActiveFilter = (activeFilterId: string): any => {\r\n const state = this.state;\r\n const filter = state.filters.find(i => i.id === activeFilterId);\r\n if (!filter) return;\r\n const filterProps = this.getFilterPropsWithState(filter);\r\n const activeSavedFilterId = \"\";\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId };\r\n return {\r\n ...filterProps,\r\n activeFilterId,\r\n activeSavedFilterId: \"\",\r\n whistleBlowReportFilterIsSet: this.getWhistleBlowReportFilterIsSet(newState)\r\n };\r\n };\r\n\r\n handleChangeActiveFilter = (activeFilterId: string) => {\r\n this.setState(this.getStateChangeAfterChangeActiveFilter(activeFilterId));\r\n };\r\n\r\n getStateChangeAfterChangeActiveSavedFilter = (activeSavedFilterId: string): any => {\r\n const state = this.state;\r\n const savedFilter = state.savedFilters.find(i => i.id === activeSavedFilterId);\r\n if (!savedFilter) return;\r\n const filterProps = this.getFilterPropsWithState(savedFilter);\r\n const activeFilterId = \"\";\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId };\r\n return {\r\n ...filterProps,\r\n activeFilterId,\r\n activeSavedFilterId,\r\n whistleBlowReportFilterIsSet: this.getWhistleBlowReportFilterIsSet(newState)\r\n };\r\n };\r\n\r\n handleChangeActiveSavedFilter = (activeSavedFilterId: string) => {\r\n this.setState(this.getStateChangeAfterChangeActiveSavedFilter(activeSavedFilterId));\r\n };\r\n\r\n handleRemoveSavedFilter = async (savedFilterId: string) => {\r\n const state = this.state;\r\n const savedFilter = state.savedFilters.find(i => i.id === savedFilterId);\r\n if (!savedFilter) return;\r\n const result = await ListFilterSaveDialog.removeListFilterFromDb(state.savedFilters, state.activeCompanyId, savedFilterId, savedFilter.isShared, ApplicationPermissionType.WhistleBlow);\r\n if (!result) return;\r\n const savedFilters = state.savedFilters.filter(i => i.id !== savedFilterId);\r\n let activeFilterId = \"\";\r\n let activeSavedFilterId = \"\";\r\n let newfilter: IListFilterItem = null;\r\n if (savedFilters.length > 0) {\r\n newfilter = savedFilters[0];\r\n activeSavedFilterId = newfilter.id;\r\n } else if (state.filters.length > 0) {\r\n newfilter = state.filters[0];\r\n activeFilterId = newfilter.id;\r\n }\r\n const filterProps = this.getFilterPropsWithState(newfilter);\r\n const newState = { ...state, ...filterProps, activeFilterId, activeSavedFilterId, savedFilters };\r\n this.setState({\r\n ...filterProps,\r\n showWhistleBlowFilterDialog: false,\r\n activeFilterId,\r\n activeSavedFilterId,\r\n savedFilters,\r\n whistleBlowReportFilterIsSet: this.getWhistleBlowReportFilterIsSet(newState)\r\n });\r\n };\r\n\r\n handleFilterSortData = (sortColumn: string, sortOrderIsAsc: boolean) => {\r\n this.setState({\r\n sortColumn,\r\n sortOrderIsAsc,\r\n });\r\n };\r\n\r\n updateFiltersAfterSave = (orgFilterId: string, savedListFilter: ISavedListFilter, isShared: boolean) => {\r\n if (!savedListFilter) return;\r\n const state = this.state;\r\n const savedFilters = state.savedFilters.filter(i => i.id !== orgFilterId || i.isShared !== isShared);\r\n const filter = ListFilterItem.createListFilterItemFromSavedListFilter(savedListFilter, isShared);\r\n savedFilters.push(filter);\r\n ListFilterItem.sortListFilterItems(savedFilters);\r\n this.setState({\r\n showListFilterSaveDialog: false,\r\n savedFilters,\r\n activeFilterId: \"\",\r\n activeSavedFilterId: savedListFilter.id,\r\n whistleBlowFilterDialogFilter: filter\r\n });\r\n };\r\n\r\n getActiveFilter = (): IListFilterItem => {\r\n const state = this.state;\r\n return state.activeFilterId\r\n ? state.filters.find(i => i.id === state.activeFilterId)\r\n : state.savedFilters.find(i => i.id === state.activeSavedFilterId);\r\n };\r\n\r\n handleSaveListFilter = async (saveAs: boolean, onGetGeneralFilter: () => any) => {\r\n const state = this.state;\r\n const filter = this.getActiveFilter();\r\n if (!filter) return;\r\n if (!saveAs) {\r\n const savedListFilter = await ListFilterSaveDialog.saveListFilterToDb(filter, WhistleBlowPageDashboardChart.getGeneralFilterFromState(state), state.sortColumn, state.sortOrderIsAsc, state.activeCompanyId, ApplicationPermissionType.WhistleBlow);\r\n this.updateFiltersAfterSave(filter.id, savedListFilter, filter.isShared);\r\n } else {\r\n this.setState({\r\n showListFilterSaveDialog: true,\r\n listFilterSaveDialogFilter: filter,\r\n listFilterSaveDialogReservedNames: state.savedFilters.map(i => i.id).concat(state.filters.map(i => i.title)),\r\n listFilterSaveDialogGeneralFilter: WhistleBlowPageDashboardChart.getGeneralFilterFromState(state),\r\n listFilterSaveDialogOnGetGeneralFilter: onGetGeneralFilter\r\n });\r\n }\r\n };\r\n\r\n handleSaveListFilterDialogOk = (savedListFilter: ISavedListFilter, isShared: boolean) => {\r\n this.updateFiltersAfterSave(\"\", savedListFilter, isShared);\r\n };\r\n\r\n handleSaveListFilterDialogCancel = () => {\r\n this.setState({\r\n showListFilterSaveDialog: false\r\n });\r\n };\r\n // #endregion Saved Filter\r\n\r\n // #region Record Filter\r\n handleOpenWhistleBlowFilterDialog = () => {\r\n const filter = this.getActiveFilter();\r\n if (!filter) return;\r\n this.setState({\r\n showWhistleBlowFilterDialog: this.state.activeViewTypeId !== WhistleBlowPageViewTypeId.Reports,\r\n whistleBlowFilterDialogFilter: filter\r\n });\r\n };\r\n\r\n onWhistleBlowFilterDialogOk = (closeDialog: boolean, selectedStartDate: number, selectedEndDate: number, selectedStateFilterId: string, selectedSeverityFilterId: string, selectedResolutionFilterId: string,\r\n selectedSourceFilterId: string, selectedAnonymityFilterId: string, selectedDynamicTimeFilterId: string, selectedCategoryIds: string[], selectedHandlerUserCodes: string[], selectedUnitIds: string[]): any => {\r\n const newState = {\r\n ...this.state,\r\n selectedStartDate,\r\n selectedEndDate,\r\n selectedStateFilterId,\r\n selectedSeverityFilterId,\r\n selectedResolutionFilterId,\r\n selectedSourceFilterId,\r\n selectedAnonymityFilterId,\r\n selectedDynamicTimeFilterId,\r\n selectedCategoryIds,\r\n selectedHandlerUserCodes,\r\n selectedUnitIds\r\n };\r\n this.setState({\r\n showWhistleBlowFilterDialog: !closeDialog,\r\n selectedStartDate,\r\n selectedEndDate,\r\n selectedStateFilterId,\r\n selectedSeverityFilterId,\r\n selectedResolutionFilterId,\r\n selectedSourceFilterId,\r\n selectedAnonymityFilterId,\r\n selectedDynamicTimeFilterId,\r\n selectedCategoryIds,\r\n selectedHandlerUserCodes,\r\n selectedUnitIds,\r\n whistleBlowReportFilterIsSet: this.getWhistleBlowReportFilterIsSet(newState)\r\n });\r\n return WhistleBlowPageDashboardChart.getGeneralFilterFromState(newState);\r\n };\r\n \r\n onWhistleBlowFilterDialogCancel = () => {\r\n this.setState({ showWhistleBlowFilterDialog: false });\r\n };\r\n // #endregion Record Filter\r\n\r\n // #region Report Filter\r\n getStateChangeAfterChangeActiveReport = (activeReportId: string) => {\r\n const state = this.state;\r\n const reports = state.reports.slice(0);\r\n const report = reports.find(i => i.id === activeReportId);\r\n if (!report) return;\r\n report.resetTaskDataRowToOrg();\r\n const activeSavedReportId = \"\";\r\n const reportFilterProps = WhistleBlowPageDashboardChart.getStateFilterPropsFromGeneralFilter(report.generalFilter, WhistleBlowStateFilter.All.toString(10)); //Reset filter parameters\r\n const updatedState = {\r\n ...reportFilterProps,\r\n reports,\r\n activeReportId,\r\n activeSavedReportId,\r\n reportPanelFilterReport: report,\r\n };\r\n return {\r\n ...updatedState,\r\n whistleBlowReportFilterIsSet: this.getWhistleBlowReportFilterIsSet({ ...state, ...updatedState })\r\n };\r\n };\r\n\r\n handleChangeActiveReport = (activeReportId: string) => {\r\n this.setState(this.getStateChangeAfterChangeActiveReport(activeReportId));\r\n };\r\n\r\n getStateChangeAfterChangeActiveSavedReport = (activeSavedReportId: string): any => {\r\n const state = this.state;\r\n const savedReports = state.savedReports.slice(0);\r\n const savedReport = savedReports.find(i => i.id === activeSavedReportId);\r\n if (!savedReport) return;\r\n savedReport.resetTaskDataRowToOrg();\r\n const activeReportId = \"\";\r\n const reportFilterProps = WhistleBlowPageDashboardChart.getStateFilterPropsFromGeneralFilter(savedReport.generalFilter, WhistleBlowStateFilter.All.toString(10));\r\n const updatedState = {\r\n ...reportFilterProps,\r\n savedReports,\r\n activeReportId,\r\n activeSavedReportId,\r\n reportPanelFilterReport: savedReport,\r\n };\r\n return {\r\n ...updatedState,\r\n whistleBlowReportFilterIsSet: this.getWhistleBlowReportFilterIsSet({ ...state, ...updatedState })\r\n };\r\n };\r\n\r\n handleChangeActiveSavedReport = (activeSavedReportId: string) => {\r\n this.setState(this.getStateChangeAfterChangeActiveSavedReport(activeSavedReportId));\r\n };\r\n\r\n handleRemoveSavedReport = async (reportId: string) => {\r\n const state = this.state;\r\n const savedReport = state.savedReports.find(i => i.id === reportId);\r\n if (!savedReport) return;\r\n const result = await SaveReportDialog.removeReportFromDb(state.savedReports, state.activeCompanyId, reportId, savedReport.reportSharingType, ApplicationPermissionType.WhistleBlow);\r\n if (!result) return;\r\n const savedReports = state.savedReports.filter(i => i.id !== reportId);\r\n let activeReportId = \"\";\r\n let activeSavedReportId = \"\";\r\n let newReport: IReportItem = null;\r\n if (savedReports.length > 0) {\r\n newReport = savedReports[0];\r\n activeSavedReportId = newReport.id;\r\n } else if (state.reports.length > 0) {\r\n newReport = state.reports[0];\r\n activeReportId = newReport.id;\r\n }\r\n const reportFilterProps = WhistleBlowPageDashboardChart.getStateFilterPropsFromGeneralFilter(newReport?.generalFilter, WhistleBlowStateFilter.All.toString(10));\r\n const newState = { ...state, ...reportFilterProps, activeReportId, activeSavedReportId, savedReports };\r\n this.setState({\r\n ...reportFilterProps,\r\n activeReportId,\r\n activeSavedReportId,\r\n savedReports,\r\n whistleBlowReportFilterIsSet: this.getWhistleBlowReportFilterIsSet(newState),\r\n reportPanelFilterReport: newReport,\r\n });\r\n };\r\n // #endregion Report\r\n\r\n handleSetActiveViewType = (itemId: WhistleBlowPageViewTypeId) => {\r\n const state = this.state;\r\n //To reset filter when filter/report is activated\r\n let newState = {};\r\n if (itemId === WhistleBlowPageViewTypeId.Reports) {\r\n if (state.activeReportId) {\r\n newState = this.getStateChangeAfterChangeActiveReport(state.activeReportId);\r\n } else if (state.activeSavedReportId) {\r\n newState = this.getStateChangeAfterChangeActiveSavedReport(state.activeSavedReportId);\r\n }\r\n const report = this.getActiveReport();\r\n if (!report) return;\r\n newState = { reportPanelFilterReport: report };\r\n } else if (itemId === WhistleBlowPageViewTypeId.Records) {\r\n if (state.activeFilterId) {\r\n newState = this.getStateChangeAfterChangeActiveFilter(state.activeFilterId);\r\n } else if (state.activeSavedFilterId) {\r\n newState = this.getStateChangeAfterChangeActiveSavedFilter(state.activeSavedFilterId);\r\n }\r\n }\r\n this.setState({\r\n ...newState,\r\n activeViewTypeId: itemId,\r\n listDataPreloaded: false\r\n });\r\n };\r\n\r\n // #region Permissions\r\n handleOpenPermissions = async () => {\r\n const result = await AppUtils.callService(() => whistleBlowService.getUnitNodePermissions(this.state.activeCompanyId), false);\r\n if (!result) return;\r\n this.setState({\r\n unitNodePermissions: result\r\n });\r\n };\r\n\r\n handlePermissionsDialogSave = async (obj: any) => {\r\n const result = await whistleBlowService.saveUnitNodePermissions(obj);\r\n this.handleOpenPermissions();\r\n\r\n return result;\r\n };\r\n\r\n handlePermissionsDialogOk = () => {\r\n this.setState({\r\n dataId: Base.getRandomIntInteger(1000000),\r\n });\r\n };\r\n\r\n handlePermissionsDialogCancel = (closeDialog: boolean) => {\r\n if (closeDialog) {\r\n this.setState({\r\n showChannelSettingsDialog: false\r\n });\r\n }\r\n };\r\n // #endregion Permissions\r\n\r\n // #region Units\r\n handleOpenUnits = async () => {\r\n const result = await AppUtils.callService(() => whistleBlowService.getUnits(this.state.activeCompanyId), false);\r\n if (!result) return;\r\n this.setState({\r\n unitModuleDialogNode: result.unitModuleNode\r\n });\r\n };\r\n\r\n handleRefreshUnitsAndCategories = async (companyId: string) => {\r\n const state = this.state;\r\n const whistleBlowPageData = await whistleBlowService.getWhistleBlowPageData(companyId);\r\n //Units and unit filter ids\r\n const units = this.getUnits(whistleBlowPageData.units);\r\n let selectedUnitIds = state.selectedUnitIds.slice(0);\r\n if (selectedUnitIds.length > 0 && selectedUnitIds[0] !== Base.emptyGuid) {\r\n const unitIds = units.map(i => i.id);\r\n selectedUnitIds = selectedUnitIds.filter(i => unitIds.indexOf(i) > -1);\r\n }\r\n //Categories and Category filter ids\r\n const categories = this.getCategories(whistleBlowPageData.categories);\r\n let selectedCategoryIds = state.selectedCategoryIds.slice(0);\r\n if (selectedCategoryIds.length > 0 && selectedCategoryIds[0] !== Base.emptyGuid) {\r\n const categoryIds = categories.map(i => i.id);\r\n selectedCategoryIds = selectedCategoryIds.filter(i => categoryIds.indexOf(i) > -1);\r\n }\r\n //Handlers and Handler filter user codes\r\n const handlers = this.getHandlers(whistleBlowPageData.handlers);\r\n let selectedHandlerUserCodes = state.selectedHandlerUserCodes.slice(0);\r\n if (selectedHandlerUserCodes.length > 0 && selectedHandlerUserCodes[0] !== \"\") {\r\n const handlerUserCodes = handlers.map(i => i.id);\r\n selectedHandlerUserCodes = selectedHandlerUserCodes.filter(i => handlerUserCodes.indexOf(i) > -1);\r\n }\r\n const stateChange = {\r\n activeCompanyId: companyId,\r\n units,\r\n selectedUnitIds,\r\n categories: this.getCategories(whistleBlowPageData.categories),\r\n selectedCategoryIds,\r\n handlers,\r\n selectedHandlerUserCodes\r\n };\r\n //const newState = { ...state, ...stateChange };\r\n this.setState({\r\n ...stateChange,\r\n //whistleBlowReportFilterIsSet: this.getWhistleBlowReportFilterIsSet(newState),\r\n });\r\n //DO NOT REFRESH FILTER OR REPORTS BECAUSE THEY ARE NOT VISIBLE TO OTHER COMPANIES\r\n };\r\n\r\n handleUnitModuleDialogSave = async (obj: any) => {\r\n const result = await whistleBlowService.saveUnits(obj);\r\n return result;\r\n };\r\n\r\n handleUnitModuleDialogOk = async () => {\r\n await this.handleRefreshUnitsAndCategories(this.state.activeCompanyId);\r\n // this.setState({\r\n // showUnitModuleDialog: false\r\n // });\r\n };\r\n\r\n handleUnitModuleDialogCancel = (closeDialog: boolean) => {\r\n if (closeDialog) {\r\n this.setState({\r\n showChannelSettingsDialog: false\r\n });\r\n }\r\n };\r\n // #endregion Units\r\n\r\n // #region ChannelSettings\r\n handleOpenWhistleBlowChannelSettings = () => {\r\n this.handleOpenPermissions();\r\n this.handleOpenUnits();\r\n this.handleOpenWhistleDefaultHandlersDialog();\r\n this.setState({\r\n showChannelSettingsDialog: true\r\n });\r\n };\r\n \r\n handleWhistleBlowChannelEditDialogOk = () => {\r\n // this.setState({\r\n // showChannelSettingsDialog: false\r\n // });\r\n };\r\n\r\n handleWhistleBlowChannelEditDialogCancel = (_whistleBlowChannelDataWasModified: boolean, closeDialog: boolean) => {\r\n if (closeDialog) {\r\n this.setState({\r\n showChannelSettingsDialog: false\r\n });\r\n }\r\n };\r\n // #endregion ChannelSettings\r\n\r\n // #region DefaultHandlers\r\n handleOpenWhistleDefaultHandlersDialog = async () => {\r\n const result = await AppUtils.callService(() => whistleBlowService.getUnitNodeDefaultHandlers(this.state.activeCompanyId), false);\r\n if (!result) return;\r\n this.setState({\r\n unitDefaultHandlersNode: result.unitNode\r\n\r\n });\r\n };\r\n\r\n handleWhistleDefaultHandlersDialogSave = async (obj: any) => {\r\n const result = await whistleBlowService.saveUnitNodeDefaultHandlers(obj);\r\n this.handleOpenWhistleDefaultHandlersDialog();\r\n\r\n return result;\r\n };\r\n\r\n handleWhistleDefaultHandlersDialogOk = () => {\r\n this.setState({\r\n dataId: Base.getRandomIntInteger(1000000),\r\n });\r\n };\r\n\r\n handleWhistleDefaultHandlersDialogCancel = (closeDialog: boolean) => {\r\n if (closeDialog) {\r\n this.setState({\r\n showChannelSettingsDialog: false\r\n });\r\n }\r\n };\r\n\r\n handleWhistleDefaultHandlersSelectListItems = (companyId: string, unitId: string, pageSize: number, page: number, filter: string,\r\n ignoreUserIds: string[], ignoreUserCodes: string[], activityState: number, ignoreRecordUserConnected: boolean,\r\n doNotIgnoreRecordUserConnectedUserCode: string, sortColumn: string, sortOrderIsAsc: boolean): Promise => {\r\n return whistleBlowService.defaultHandlersGetSelectUserListItems(companyId, unitId, pageSize, page, filter,\r\n ignoreUserIds, ignoreUserCodes, activityState, ignoreRecordUserConnected, doNotIgnoreRecordUserConnectedUserCode,\r\n sortColumn, sortOrderIsAsc);\r\n };\r\n // #endregion DefaultHandlers\r\n\r\n // #region ArchiveWhistleBlows\r\n handleArchiveWhistleBlows = () => {\r\n this.setState({\r\n showArchiveWhistleBlowsDialog: true\r\n });\r\n };\r\n\r\n handleArchiveWhistleBlowsDialogOk = () => {\r\n this.setState({\r\n dataId: Base.getRandomIntInteger(1000000),\r\n showArchiveWhistleBlowsDialog: false\r\n });\r\n };\r\n\r\n handleArchiveWhistleBlowsDialogCancel = () => {\r\n this.setState({\r\n showArchiveWhistleBlowsDialog: false\r\n });\r\n };\r\n // #endregion ArchiveWhistleBlows\r\n\r\n // #region Report Filter\r\n getActiveReport = (): IReportItem => {\r\n const state = this.state;\r\n return state.activeReportId\r\n ? state.reports.find(i => i.id === state.activeReportId)\r\n : state.savedReports.find(i => i.id === state.activeSavedReportId);\r\n };\r\n\r\n handleOpenReportFilterDialog = () => {\r\n const report = this.getActiveReport();\r\n if (!report) return;\r\n this.setState({\r\n reportPanelFilterReport: report\r\n });\r\n };\r\n\r\n onRecordReportFilterDialogOk = (closeDialog: boolean, selectedStartDate: number, selectedEndDate: number, _: string, selectedStateFilterId: string, selectedSeverityFilterId: string, selectedResolutionFilterId: string,\r\n selectedSourceFilterId: string, selectedAnonymityFilterId: string, selectedDynamicTimeFilterId, selectedCategoryIds: string[], selectedHandlerUserCodes: string[], selectedUnitIds: string[], parameters: ITaskDataRow): ISaveReportFilters => {\r\n const state = this.state;\r\n const reports = state.reports.slice(0);\r\n const savedReports = state.savedReports.slice(0);\r\n const index = state.activeReportId\r\n ? reports.findIndex(i => i.id === state.activeReportId)\r\n : savedReports.findIndex(i => i.id === state.activeSavedReportId);\r\n if (index < 0) return;\r\n let reportFilter = null;\r\n if (state.activeReportId) {\r\n const report = new ReportItem(reports[index]);\r\n report.taskDataRow = parameters;\r\n reportFilter = SaveReportDialog.getReportFilter(report);\r\n reports[index] = report;\r\n } else {\r\n const savedReport = new ReportItem(savedReports[index]);\r\n savedReport.taskDataRow = parameters;\r\n savedReport.reportFilter = SaveReportDialog.getReportFilter(savedReport);\r\n reportFilter = savedReport.reportFilter;\r\n savedReports[index] = savedReport;\r\n }\r\n const newState = {\r\n ...this.state,\r\n selectedStartDate,\r\n selectedEndDate,\r\n selectedStateFilterId,\r\n selectedSeverityFilterId,\r\n selectedResolutionFilterId,\r\n selectedSourceFilterId,\r\n selectedAnonymityFilterId,\r\n selectedDynamicTimeFilterId,\r\n selectedCategoryIds,\r\n selectedHandlerUserCodes,\r\n selectedUnitIds,\r\n reports,\r\n savedReports\r\n };\r\n this.setState({\r\n selectedStartDate,\r\n selectedEndDate,\r\n selectedStateFilterId,\r\n selectedSeverityFilterId,\r\n selectedResolutionFilterId,\r\n selectedSourceFilterId,\r\n selectedAnonymityFilterId,\r\n selectedDynamicTimeFilterId,\r\n selectedCategoryIds,\r\n selectedHandlerUserCodes,\r\n selectedUnitIds,\r\n reports,\r\n savedReports,\r\n whistleBlowReportFilterIsSet: this.getWhistleBlowReportFilterIsSet(newState)\r\n });\r\n return {\r\n generalFilter: WhistleBlowPageDashboardChart.getGeneralFilterFromState(newState),\r\n reportFilter,\r\n showInFrontPage: false\r\n };\r\n };\r\n // #endregion Report Filter\r\n\r\n // #region Report Save\r\n handleSetSortData = (sortColumn: string, sortOrderIsAsc: boolean) => {\r\n const state = this.state;\r\n if (state.activeReportId) {\r\n const reports = state.reports.slice(0);\r\n const index = reports.findIndex(i => i.id === state.activeReportId);\r\n if (index < 0) return;\r\n const report = new ReportItem(reports[index]);\r\n report.sortColumn = sortColumn;\r\n report.sortOrderIsAsc = sortOrderIsAsc;\r\n reports[index] = report;\r\n const newState = { ...this.state, reports };\r\n this.setState({\r\n reports,\r\n whistleBlowReportFilterIsSet: this.getWhistleBlowReportFilterIsSet(newState)\r\n });\r\n } else if (state.activeSavedReportId) {\r\n const savedReports = state.savedReports.slice(0);\r\n const index = savedReports.findIndex(i => i.id === state.activeSavedReportId);\r\n if (index < 0) return;\r\n const savedReport = new ReportItem(savedReports[index]);\r\n savedReport.sortColumn = sortColumn;\r\n savedReport.sortOrderIsAsc = sortOrderIsAsc;\r\n savedReports[index] = savedReport;\r\n const newState = { ...this.state, savedReports };\r\n this.setState({\r\n savedReports,\r\n whistleBlowReportFilterIsSet: this.getWhistleBlowReportFilterIsSet(newState)\r\n });\r\n }\r\n };\r\n\r\n handleSaveAsReportsModifiedReport = async (saveAs: boolean, onGetReportSaveFilters: () => ISaveReportFilters) => {\r\n const state = this.state;\r\n const report = this.getActiveReport();\r\n if (!report) return;\r\n if (!saveAs) {\r\n const savedReport = await SaveReportDialog.saveReportToDb(report, WhistleBlowPageDashboardChart.getGeneralFilterFromState(state), state.activeCompanyId, ApplicationPermissionType.WhistleBlow);\r\n this.setState(SaveReportDialog.getReportStateChangeAfterReportSave(this.state, report.id, savedReport, report.reportSharingType));\r\n } else {\r\n this.setState({\r\n showReportSaveDialog: true,\r\n reportSaveDialogReport: report,\r\n reportSaveDialogReservedNames: state.savedReports.map(i => i.id).concat(state.reports.map(i => i.title)),\r\n reportSaveDialogGeneralFilter: WhistleBlowPageDashboardChart.getGeneralFilterFromState(state),\r\n reportSaveDialogOnGetReportSaveFilters: onGetReportSaveFilters\r\n });\r\n }\r\n };\r\n\r\n handleReportSaveDialogOk = (savedReport: ISavedReport, reportSharingType: ReportSharingType) => {\r\n this.setState(SaveReportDialog.getReportStateChangeAfterReportSave(this.state, \"\", savedReport, reportSharingType));\r\n };\r\n\r\n handleReportSaveDialogCancel = () => {\r\n this.setState({\r\n showReportSaveDialog: false\r\n });\r\n };\r\n // #endregion Report Save\r\n\r\n // #region Dashboard\r\n handleToggleShowDashboardNavPanel = () => {\r\n this.setState({ showDashBoardNavPanel: !this.state.showDashBoardNavPanel });\r\n };\r\n\r\n handleUpdateDashBoardPanels = async (panels: IPagePanel[]) => {\r\n this.setState({\r\n dashBoardPanels: panels\r\n });\r\n };\r\n\r\n handleSaveDashBoardPanels = async (panels: IPagePanel[]) => {\r\n const pagePanels = panels.filter(i => i.panelType !== ContentPagePanelType.Chart);\r\n await whistleBlowService.saveWhistleBlowPanels(pagePanels);\r\n const chartPanels = panels.filter(i => i.panelType === ContentPagePanelType.Chart).map(i => i as SavedChartPanel);\r\n await whistleBlowService.saveWhistleBlowChartPanels(chartPanels);\r\n this.setState({\r\n dashBoardPanels: panels\r\n });\r\n };\r\n\r\n handleDashboardSavedFilterClick = (filterId: string) => {\r\n this.handleChangeActiveSavedFilter(filterId);\r\n this.setState({\r\n activeViewTypeId: WhistleBlowPageViewTypeId.Records,\r\n listDataPreloaded: false\r\n });\r\n };\r\n\r\n handleDashboardFilterClick = (filterId: string) => {\r\n this.handleChangeActiveFilter(filterId);\r\n this.setState({\r\n activeViewTypeId: WhistleBlowPageViewTypeId.Records,\r\n listDataPreloaded: false\r\n });\r\n };\r\n\r\n handleDashboardSavedReportClick = (reportId: string) => {\r\n this.handleChangeActiveSavedReport(reportId);\r\n this.setState({\r\n activeViewTypeId: WhistleBlowPageViewTypeId.Reports,\r\n listDataPreloaded: false\r\n });\r\n };\r\n\r\n handleDashboardReportClick = (reportId: string) => {\r\n this.handleChangeActiveReport(reportId);\r\n this.setState({\r\n activeViewTypeId: WhistleBlowPageViewTypeId.Reports,\r\n listDataPreloaded: false\r\n });\r\n };\r\n\r\n handleShowChartPanelPropertiesDialog = (panelId: string) => {\r\n if (!panelId) return;\r\n const state = this.state;\r\n const chartPanels = state.dashBoardPanels.filter(i => i.panelType === ContentPagePanelType.Chart).map(i => i as SavedChartPanel);\r\n const chartPanel = chartPanels.find(i => i.id === panelId);\r\n if (!chartPanel) return;\r\n const chartItem = state.chartItems.find(i => i.reportName === chartPanel.reportId);\r\n if (!chartItem) return;\r\n const reportItem = ReportItem.createReportItem(chartItem.id, chartPanel.getTitle(), ReportType.Pdf, chartItem.taskType);\r\n reportItem.taskDataRow = chartItem.taskDataRow;\r\n reportItem.generalFilter = chartPanel.generalFilter;\r\n reportItem.reportFilter = chartPanel.reportFilter;\r\n reportItem.copyReportParameterValuesFromSavedValues();\r\n this.setState({\r\n showDashBoardChartPanelDialog: true,\r\n dashBoardChartPanelId: panelId,\r\n reportPanelFilterReport: reportItem,\r\n dashBoardChartPanelDialogFilter: WhistleBlowPageDashboardChart.getStateFilterPropsFromGeneralFilter(chartPanel.generalFilter, WhistleBlowStateFilter.All.toString(10)),\r\n dashBoardChartPanelDialogVisible: chartPanel.visible,\r\n dashBoardChartPanelDialogPanelSize: chartPanel.size,\r\n dashBoardChartPanelDialogCharts: chartItem.chartNames.map(i => IdTitle.createIdTitle(i, i)),\r\n dashBoardChartPanelDialogChartId: chartPanel.chartId,\r\n });\r\n };\r\n \r\n onChartPanelReportFilterDialogOk = async (selectedStartDate: number, selectedEndDate: number, selectedChartId: string, selectedStateFilterId: string, selectedSeverityFilterId: string, selectedResolutionFilterId: string,\r\n selectedSourceFilterId: string, selectedAnonymityFilterId: string, selectedDynamicTimeFilterId: string, selectedCategoryIds: string[], selectedHandlerUserCodes: string[], selectedUnitIds: string[], parameters: ITaskDataRow,\r\n panelSize: number, panelVisible: boolean) => {\r\n const state = this.state;\r\n const pagePanels = state.dashBoardPanels.filter(i => i.panelType !== ContentPagePanelType.Chart);\r\n const chartPanels = state.dashBoardPanels.filter(i => i.panelType === ContentPagePanelType.Chart).map(i => i as SavedChartPanel);\r\n const chartPanel = chartPanels.find(i => i.id === state.dashBoardChartPanelId);\r\n if (!chartPanel) return;\r\n const chartItem = state.chartItems.find(i => i.reportName === chartPanel.reportId);\r\n if (!chartItem) return;\r\n const newState = {\r\n ...this.state,\r\n selectedStartDate,\r\n selectedEndDate,\r\n selectedStateFilterId,\r\n selectedSeverityFilterId,\r\n selectedResolutionFilterId,\r\n selectedSourceFilterId,\r\n selectedAnonymityFilterId,\r\n selectedDynamicTimeFilterId,\r\n selectedCategoryIds,\r\n selectedHandlerUserCodes,\r\n selectedUnitIds\r\n };\r\n chartPanel.size = panelSize;\r\n chartPanel.visible = panelVisible;\r\n chartPanel.chartId = selectedChartId;\r\n chartPanel.generalFilter = WhistleBlowPageDashboardChart.getGeneralFilterFromState(newState);\r\n chartPanel.reportFilter = SaveReportDialog.getReportFilterFromTaskType(chartItem.taskType, parameters);\r\n this.setState({\r\n showDashBoardChartPanelDialog: false,\r\n dashBoardPanels: PagePanel.sortPagePanels(pagePanels.concat(chartPanels))\r\n });\r\n await whistleBlowService.saveWhistleBlowChartPanels([chartPanel]);\r\n };\r\n \r\n onChartPanelReportFilterDialogCancel = () => {\r\n this.setState({\r\n showDashBoardChartPanelDialog: false\r\n });\r\n };\r\n // #endregion Dashboard\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const sessionState = props.appState.state;\r\n const companies = props.whistleBlowPage ? props.whistleBlowPage.companies : [];\r\n const userCompanyIsActiveCompany = state.activeCompanyId === sessionState.companyId;\r\n const dashboardViewIsActive = state.activeViewTypeId === WhistleBlowPageViewTypeId.Dashboard;\r\n const recordsViewIsActive = state.activeViewTypeId === WhistleBlowPageViewTypeId.Records;\r\n const reportsViewIsActive = state.activeViewTypeId === WhistleBlowPageViewTypeId.Reports;\r\n const settingsVisible = state.whistleBlowSettingsActions?.length > 0;\r\n return (\r\n // TODO: Remove margin\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!userCompanyIsActiveCompany &&\r\n \r\n \r\n {settingsVisible\r\n ? (\r\n \r\n {Translations.Settings}\r\n \r\n )\r\n : null}\r\n \r\n \r\n }\r\n {!dashboardViewIsActive &&\r\n \r\n {userCompanyIsActiveCompany && recordsViewIsActive &&\r\n i.id === state.activeSavedFilterId) : null}\r\n sessionState={sessionState}\r\n dataId={state.dataId.toString(10)}\r\n preloaded={state.listDataPreloaded}\r\n waitingPreloadedData={state.listDataPreloaded}\r\n maxAttachmentsTotalSize={props.whistleBlowPage?.maxAttachmentsTotalSize}\r\n list={props.whistleBlowPage?.list}\r\n units={state.units}\r\n selectedStartDate={state.selectedStartDate}\r\n selectedEndDate={state.selectedEndDate}\r\n selectedUnitIds={state.selectedUnitIds}\r\n selectedCategoryIds={state.selectedCategoryIds}\r\n selectedHandlerUserCodes={state.selectedHandlerUserCodes}\r\n selectedStateFilterId={state.selectedStateFilterId}\r\n selectedSeverityFilterId={state.selectedSeverityFilterId}\r\n selectedResolutionFilterId={state.selectedResolutionFilterId}\r\n selectedSourceFilterId={state.selectedSourceFilterId}\r\n selectedAnonymityFilterId={state.selectedAnonymityFilterId}\r\n selectedDynamicTimeFilterId={state.selectedDynamicTimeFilterId}\r\n companyId={state.activeCompanyId}\r\n sortColumn={state.sortColumn}\r\n sortOrderIsAsc={state.sortOrderIsAsc}\r\n onOpenFiltersDialog={this.handleOpenWhistleBlowFilterDialog}\r\n onSetSortData={this.handleFilterSortData}\r\n onLoadPageData={() => this.handleRefreshUnitsAndCategories(state.activeCompanyId)}\r\n onArchive={this.handleArchiveWhistleBlows}\r\n reportTabs={(\r\n \r\n )}\r\n />\r\n }\r\n {userCompanyIsActiveCompany && reportsViewIsActive &&\r\n \r\n \r\n }\r\n />\r\n \r\n }\r\n reports={\r\n \r\n } />\r\n \r\n }\r\n \r\n }\r\n {userCompanyIsActiveCompany && dashboardViewIsActive &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n {state.showListFilterSaveDialog &&\r\n \r\n }\r\n {state.showDashBoardChartPanelDialog &&\r\n }\r\n title={state.reportPanelFilterReport.title}\r\n parentTitle={Translations.Panels}\r\n onClose={this.onChartPanelReportFilterDialogCancel}\r\n >\r\n \r\n \r\n \r\n \r\n }\r\n {state.showReportSaveDialog &&\r\n \r\n }\r\n {state.showChannelSettingsDialog &&\r\n \r\n }\r\n {state.showArchiveWhistleBlowsDialog &&\r\n \r\n }\r\n \r\n );\r\n }\r\n}","/* eslint-disable no-unused-vars */\r\nimport * as React from \"react\";\r\n/* eslint-enable no-unused-vars */\r\nimport { connect } from \"react-redux\";\r\nimport { IApplicationState } from \"../../models/store/storeTypes\";\r\nimport * as storeEffects from \"../../models/store/storeEffects\";\r\nimport { IWhistleBlowPageOwnProps, IWhistleBlowPageStateProps, IWhistleBlowPageDispatchProps, WhistleBlowPage } from \"../../components/whistleBlow/WhistleBlowPage/WhistleBlowPage\";\r\nimport { ITypedOption } from \"../../models/common/typedOption\";\r\n\r\nexport function mapStateToProps(applicationState: IApplicationState, ownProps: IWhistleBlowPageOwnProps): IWhistleBlowPageStateProps {\r\n if (!applicationState || !applicationState.front) {\r\n return {\r\n appState: null,\r\n dataId: -1,\r\n whistleBlowPage: null\r\n };\r\n }\r\n const whistleBlow = applicationState.whistleBlow;\r\n return {\r\n appState: applicationState.session,\r\n dataId: whistleBlow.dataId,\r\n whistleBlowPage: whistleBlow.whistleBlowPage\r\n };\r\n}\r\n\r\nexport function mapDispatchToProps(dispatch: storeEffects.WhistleBlowThunkDispatch): IWhistleBlowPageDispatchProps {\r\n return {\r\n onGetWhistleBlowPage: () => dispatch(storeEffects.getWhistleBlowPage()),\r\n onLogout: () => dispatch(storeEffects.logout()),\r\n onSetCulture: (culture: string) => dispatch(storeEffects.setCulture(culture)),\r\n onSaveUserParameters: (parameters: ITypedOption[]) => dispatch(storeEffects.saveUserParameters(parameters)),\r\n onRefreshSessionState: () => dispatch(storeEffects.refreshSessionState()),\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(WhistleBlowPage);","// AppNotification\r\n// ***********************************************************************************************************************\r\nimport { useSnackbar } from \"notistack\";\r\nimport * as React from \"react\";\r\nimport { ISignalrNotification } from \"ui/Scripts/source/models/common/signalrNotification\";\r\n\r\nexport interface IAppNotificationProp {\r\n classes?: string;\r\n item: ISignalrNotification;\r\n onClick?: () => void;\r\n onCloseClick?: () => void;\r\n}\r\n\r\nexport const AppNotification = (props: IAppNotificationProp) => {\r\n const { enqueueSnackbar } = useSnackbar();\r\n\r\n React.useEffect(() => {\r\n enqueueSnackbar(\r\n {\r\n message: props.item.body,\r\n key: props.item.id,\r\n instantMessage: props.item,\r\n onCloseClick: props.onCloseClick,\r\n }\r\n );\r\n }, [props.item]);\r\n\r\n return <>;\r\n};\r\n","/* global JSX */\r\n// ConfirmationDialog\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport { DialogActions, DialogContent, DialogTitle, Grid, IconButton, TextField, Typography } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { ConfirmationDialogType } from \"source/models/store/storeTypes\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ConfirmationButton } from \"../../Button/ConfirmationButton\";\r\nimport { DraggablePaper } from \"../DraggablePaper\";\r\nimport { GridRow } from \"../../Grid/GridRow\";\r\nimport { AppBaseDialog } from \"../AppBaseDialog\";\r\nimport { AppButton } from \"ui/Scripts/source/components/framework/Button/AppButton\";\r\n\r\n// ***********************************************************************************************************************\r\nexport interface IConfirmationDialogCallback {\r\n (): void;\r\n}\r\n\r\nexport interface IConfirmationDialogCall {\r\n (title: string, text: any, yesCallback: IConfirmationDialogCallback, noCallback: IConfirmationDialogCallback): void;\r\n}\r\n\r\nexport interface IConfirmationDialogProp {\r\n classes?: string;\r\n type: ConfirmationDialogType;\r\n title: string;\r\n text: string | JSX.Element;\r\n yesConfirmationText?: string;\r\n onYes: IConfirmationDialogCallback;\r\n onNo: IConfirmationDialogCallback;\r\n onCancel: IConfirmationDialogCallback;\r\n}\r\n\r\nexport interface IConfirmationDialogState {\r\n confirmation: string;\r\n}\r\n\r\nexport class ConfirmationDialog extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { confirmation: \"\" };\r\n }\r\n\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const value: string = target.value;\r\n const name: string = target.name;\r\n if (name === \"confimation\") {\r\n this.setState({ confirmation: value });\r\n }\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n return (\r\n }>\r\n {props.title}\r\n \r\n {Base.isString(props.text) && props.yesConfirmationText\r\n ? \r\n \r\n {props.text}\r\n \r\n \r\n {String.format(Translations.WriteBelowFieldWordParameterToConfirmTheOperation, props.yesConfirmationText)}\r\n \r\n \r\n \r\n : props.text\r\n }\r\n \r\n theme.palette.grey[500],\r\n }}\r\n >\r\n \r\n \r\n \r\n {!Base.isNullOrUndefined(props.onCancel) && (\r\n \r\n {Translations.Cancel}\r\n \r\n )}\r\n \r\n {Translations.No}\r\n \r\n \r\n {Translations.Yes}\r\n \r\n \r\n \r\n );\r\n }\r\n}","import { Box, Paper, Typography } from \"@mui/material\";\r\nimport { CustomContentProps, SnackbarContent, SnackbarKey, useSnackbar } from \"notistack\";\r\nimport React, { forwardRef } from \"react\";\r\nimport { AvatarImage } from \"ui/Scripts/source/components/framework/Avatar/AvatarImage\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ISignalrNotification } from \"ui/Scripts/source/models/common/signalrNotification\";\r\nimport { EnumHelper, SignalRModuleType } from \"ui/Scripts/source/models/enums\";\r\nimport { customHistory } from \"../../../../framework/customHistory\";\r\n\r\ninterface InstantMessageNotificationProps extends CustomContentProps {\r\n id: SnackbarKey;\r\n instantMessage: ISignalrNotification;\r\n onCloseClick?: () => void;\r\n}\r\n\r\nconst InstantMessageNotification = forwardRef<\r\n HTMLDivElement,\r\n InstantMessageNotificationProps\r\n>(({ id, instantMessage, onCloseClick, ...props }, ref) => {\r\n const { closeSnackbar } = useSnackbar();\r\n\r\n const handleClick = () => {\r\n if (EnumHelper.isEqual(instantMessage.module, SignalRModuleType.InstantMessage)) {\r\n customHistory.push(\r\n \"/new/instantmessage\" + (instantMessage.recordId ? \"/\" + instantMessage.recordId : \"\")\r\n );\r\n if (onCloseClick) {\r\n closeSnackbar(id);\r\n }\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {instantMessage.body}\r\n \r\n {instantMessage.modifyUser.name + \" \" + Base.timeToTimeStr(instantMessage.modifyUser.date)}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n\r\nInstantMessageNotification.displayName = \"InstantMessageNotification\";\r\n\r\nexport default InstantMessageNotification;\r\n","import * as React from \"react\";\r\nimport { Route, Redirect, RouteProps } from \"react-router-dom\";\r\nimport { ISessionState } from \"../../models/session/sessionState\";\r\n\r\ninterface IPrivateRouteProps extends RouteProps {\r\n // tslint:disable-next-line:no-any\r\n sessionState: ISessionState;\r\n component: any;\r\n}\r\n\r\ninterface IPrivateRouteState {\r\n canUseSystem: boolean;\r\n}\r\n\r\nexport class PrivateRoute extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { canUseSystem: props.sessionState.canUseSystem() || props.sessionState.canExternalSystems() };\r\n }\r\n\r\n render() {\r\n const { component: Component, ...rest } = this.props;\r\n const state = this.state;\r\n return (\r\n {\r\n return state.canUseSystem\r\n ? \r\n : ;\r\n }} />\r\n );\r\n }\r\n}","/// \r\nimport { Alert, Box, CssBaseline, IconButton, Snackbar, ThemeProvider } from \"@mui/material\";\r\nimport { SnackbarProvider } from \"notistack\";\r\nimport * as React from \"react\";\r\nimport { Dispatch } from \"react\";\r\nimport * as ReactDOM from \"react-dom\";\r\nimport { Provider, connect } from \"react-redux\";\r\nimport { Redirect, Route, Router, Switch } from \"react-router-dom\";\r\nimport { muiTheme } from \"source/shared/styles\";\r\nimport \"ui/Js/array.js\";\r\nimport \"ui/Js/date.js\";\r\nimport \"ui/Js/fetch.js\";\r\nimport \"ui/Js/number.js\";\r\nimport \"ui/Js/string.js\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ISignalrNotification } from \"ui/Scripts/source/models/common/signalrNotification\";\r\nimport { SignalRConnectionManager } from \"ui/Scripts/source/models/signalR/signalRConnectionManager\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport CalendarTaskConnected from \"../../containers/calendarTask/calendarTaskConnected\";\r\nimport CompanyConnected from \"../../containers/company/companyConnected\";\r\nimport CompanyGroupConnected from \"../../containers/companyGroup/companyGroupConnected\";\r\nimport DocumentConnected from \"../../containers/document/documentConnected\";\r\nimport EventConnected from \"../../containers/event/eventConnected\";\r\nimport FrontConnected from \"../../containers/front/frontConnected\";\r\nimport InstantMessageConnected from \"../../containers/instantMessage/instantMessageConnected\";\r\nimport LogConnected from \"../../containers/log/logConnected\";\r\nimport MessageConnected from \"../../containers/message/messageConnected\";\r\nimport RecordConnected from \"../../containers/record/recordConnected\";\r\nimport TaskConnected from \"../../containers/task/taskConnected\";\r\nimport UserConnected from \"../../containers/user/userConnected\";\r\nimport UserInvitationConnected from \"../../containers/user/userInvitationConnected\";\r\nimport UserForgotPasswordConnected from \"../../containers/user/userForgotPasswordConnected\";\r\nimport UserGroupConnected from \"../../containers/userGroup/userGroupConnected\";\r\nimport WhistleBlowConnected from \"../../containers/whistleBlow/whistleBlowConnected\";\r\nimport { customHistory } from \"../../framework/customHistory\";\r\nimport * as store from \"../../framework/customStore\";\r\nimport * as baseService from \"../../models/services/baseService\";\r\nimport { ISessionState } from \"../../models/session/sessionState\";\r\nimport * as storeActions from \"../../models/store/storeActions\";\r\nimport * as storeEffects from \"../../models/store/storeEffects\";\r\nimport { IAlertState, IApplicationState, IAutoLogoutState, IConfirmationState, IUserState } from \"../../models/store/storeTypes\";\r\nimport { AppNotification } from \"../framework/AppNotification/AppNotification\";\r\nimport { ConfirmationDialog as ConfirmationDialogNew } from \"../framework/Dialog/ConfirmationDialog\";\r\nimport { CircularLoading } from \"../framework/Loading/CircularLoading\";\r\nimport { InstantMessageNotification } from \"../framework/Notification/InstantMessageNotification\";\r\nimport \"./../../../../node_modules/bootstrap/dist/css/bootstrap-grid.min.css\";\r\nimport \"./../../../../node_modules/bootstrap/dist/css/bootstrap-reboot.min.css\";\r\nimport \"./../../../../node_modules/bootstrap/dist/css/bootstrap.min.css\";\r\nimport \"./../../../../node_modules/react-datetime/css/react-datetime.css\";\r\nimport { PrivateRoute } from \"./privateRoute\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport { initializeChartJs } from \"../framework/GenericChart/chartInitialize\";\r\nimport moment from \"moment\";\r\n\r\nexport interface IAppOwnProps {\r\n}\r\n\r\nexport interface IAppStateProps {\r\n fetchCount: number,\r\n alert: IAlertState;\r\n confirmation: IConfirmationState;\r\n autoLogout: IAutoLogoutState;\r\n sessionState: ISessionState;\r\n user: IUserState;\r\n}\r\n\r\nexport interface IAppDispatchProps {\r\n clearAlerts: () => void;\r\n clearSuccess: () => void;\r\n clearInfo: () => void;\r\n clearConfirmation: () => void;\r\n clearAutoLogout: () => void;\r\n onLogout: () => void;\r\n}\r\n\r\ntype AppProps = IAppOwnProps & IAppStateProps & IAppDispatchProps;\r\n\r\ninterface IAppState {\r\n autoLogoutPercent: number;\r\n signalRNotifications: ISignalrNotification[];\r\n}\r\n\r\nconst notificationAction = (onClick: () => void) => (\r\n \r\n \r\n \r\n);\r\n\r\nexport class App extends React.Component {\r\n private successTimeOut: number;\r\n private infoTimeOut: number;\r\n private errorTimeOut: number;\r\n private autoLogoutInterval: number;\r\n private autoLogoutIndex: number;\r\n private signalRConnectionManager: SignalRConnectionManager;\r\n\r\n constructor(props: AppProps) {\r\n super(props);\r\n this.state = {\r\n autoLogoutPercent: 100,\r\n signalRNotifications: []\r\n };\r\n }\r\n \r\n // #region SignalR\r\n removeSignalRNotification = (id: string) => {\r\n this.setState({\r\n signalRNotifications: this.state.signalRNotifications.filter(i => i.id !== id)\r\n });\r\n };\r\n\r\n addSignalRNotification = (item: ISignalrNotification) => {\r\n if (!item?.modifyUser || item.modifyUser.code === this.props.sessionState.code) return;\r\n const signalRNotifications = this.state.signalRNotifications.slice(0);\r\n signalRNotifications.unshift(item);\r\n this.setState({\r\n signalRNotifications\r\n });\r\n window.setTimeout(() => {\r\n this.removeSignalRNotification(item.id);\r\n }, appConfig.signalRNotificationDuration * 1000);\r\n };\r\n // #endregion SignalR\r\n\r\n componentDidMount(): void {\r\n initializeChartJs();\r\n baseService.resetAutoLogoutTimer();\r\n moment.updateLocale(\"en\", {\r\n week: {\r\n dow: 1\r\n }\r\n });\r\n moment.locale(appConfig.culture.replace(\"-US\", \"\"));\r\n //SignalR\r\n this.signalRConnectionManager = new SignalRConnectionManager();\r\n if (this.props.sessionState.canUseSystem) {\r\n this.signalRConnectionManager.openConnection(appConfig.rootUrl, { onShowNotification: this.addSignalRNotification });\r\n }\r\n }\r\n\r\n componentWillUnmount(): void {\r\n clearTimeout(this.successTimeOut);\r\n clearTimeout(this.infoTimeOut);\r\n clearTimeout(this.errorTimeOut);\r\n clearInterval(this.autoLogoutInterval);\r\n this.signalRConnectionManager.closeConnection();\r\n }\r\n\r\n componentDidUpdate(prevProps: AppProps, prevState: IAppState): void {\r\n //SignalR\r\n if (this.props.sessionState.canUseSystem) {\r\n this.signalRConnectionManager.openConnection(appConfig.rootUrl, { onShowNotification: this.addSignalRNotification });\r\n }\r\n }\r\n\r\n getShowSuccessMessage = (): boolean => {\r\n const props = this.props;\r\n const result = props.alert && !!props.alert.message;\r\n if (result) {\r\n clearTimeout(this.successTimeOut);\r\n this.successTimeOut = window.setTimeout(() => {\r\n props.clearSuccess();\r\n }, 2500);\r\n //Base.logTest(\"test\");\r\n }\r\n return result;\r\n };\r\n\r\n getShowInfoMessage = (): boolean => {\r\n const props = this.props;\r\n const result = props.alert && !!props.alert.info;\r\n if (result) {\r\n clearTimeout(this.infoTimeOut);\r\n this.infoTimeOut = window.setTimeout(() => {\r\n props.clearInfo();\r\n }, 5000);\r\n }\r\n return result;\r\n };\r\n\r\n getShowErrorMessage = (): boolean => {\r\n const props = this.props;\r\n const result = props.alert && !!props.alert.error;\r\n if (result) {\r\n clearTimeout(this.errorTimeOut);\r\n this.errorTimeOut = window.setTimeout(() => {\r\n props.clearAlerts();\r\n }, 5000);\r\n }\r\n return result;\r\n };\r\n\r\n getShowLoadingImage = (): boolean => {\r\n return this.props.fetchCount > 0;\r\n };\r\n\r\n getShowAutoLgout = (): boolean => {\r\n const props = this.props;\r\n //console.log(\"getShowAutoLgout\", props.autoLogout);\r\n const result = props.autoLogout && props.autoLogout.show;\r\n if (!result) {\r\n clearInterval(this.autoLogoutInterval);\r\n return false;\r\n }\r\n const pathname = location.pathname.toLowerCase();\r\n if (pathname.indexOf(\"/login\") > -1 ||\r\n pathname.indexOf(\"/invitation\") > -1 ||\r\n pathname.indexOf(\"/changepassword\") > -1) {\r\n clearInterval(this.autoLogoutInterval);\r\n baseService.resetAutoLogoutTimer();\r\n return false;\r\n }\r\n //Set autologout timer if it is not set\r\n if (!this.autoLogoutInterval) {\r\n this.autoLogoutIndex = baseService.autoLogoutDialogDuration;\r\n clearInterval(this.autoLogoutInterval);\r\n this.autoLogoutInterval = window.setInterval(() => {\r\n this.setState({ autoLogoutPercent: Math.floor(100 * (this.autoLogoutIndex / baseService.autoLogoutDialogDuration)) });\r\n if (this.autoLogoutIndex === 0) {\r\n props.clearAutoLogout();\r\n props.onLogout();\r\n } else {\r\n this.autoLogoutIndex = this.autoLogoutIndex - 1;\r\n }\r\n }, 1000);\r\n this.setState({ autoLogoutPercent: 100 });\r\n }\r\n return true;\r\n };\r\n\r\n handleSuccessClick = () => {\r\n clearTimeout(this.successTimeOut);\r\n this.props.clearSuccess();\r\n };\r\n\r\n handleInfoClick = () => {\r\n this.props.clearInfo();\r\n };\r\n\r\n handleErrorClick = () => {\r\n clearTimeout(this.errorTimeOut);\r\n this.props.clearAlerts();\r\n };\r\n\r\n handleAutoLogoutClick = () => {\r\n clearInterval(this.autoLogoutInterval);\r\n this.props.clearAutoLogout();\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const state = this.state;\r\n const showSuccessMessage = this.getShowSuccessMessage();\r\n const showInfoMessage = this.getShowInfoMessage();\r\n const showErrorMessage = this.getShowErrorMessage();\r\n const showLoadingImage = this.getShowLoadingImage();\r\n const showAutoLogout = this.getShowAutoLgout();\r\n\r\n return (\r\n
    \r\n \r\n \r\n {props.alert.message}\r\n \r\n \r\n \r\n \r\n {props.alert.info}\r\n \r\n \r\n \r\n \r\n {props.alert.error}\r\n \r\n \r\n {state.signalRNotifications.length > 0 && state.signalRNotifications.map((signalRNotification) =>\r\n this.removeSignalRNotification(signalRNotification.id)}\r\n />\r\n )}\r\n {showLoadingImage &&\r\n \r\n \r\n \r\n }\r\n {showAutoLogout &&\r\n
    \r\n
    {Translations.ClickToCancelAutomaticLogout}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n \r\n \r\n \r\n \r\n \r\n (\r\n \r\n )}/>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.confirmation.show &&\r\n
    }\r\n yesConfirmationText={props.confirmation.yesConfirmationText}\r\n onYes={props.confirmation.onYes}\r\n onNo={props.confirmation.onNo}\r\n onCancel={props.confirmation.onCancel}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\nexport function mapStateToProps(state: IApplicationState): IAppStateProps {\r\n return {\r\n fetchCount: state.fetchCount,\r\n alert: state.alert,\r\n confirmation: state.confirmation,\r\n autoLogout: state.autoLogout,\r\n sessionState: state.session.state,\r\n user: state.user\r\n };\r\n}\r\n\r\nexport function mapDispatchToProps(dispatch: Dispatch): IAppDispatchProps {\r\n return {\r\n clearAlerts: () => dispatch(storeActions.clearMessages()),\r\n clearSuccess: () => dispatch(storeActions.clearSuccessMessage()),\r\n clearInfo: () => dispatch(storeActions.clearInfoMessage()),\r\n clearConfirmation: () => dispatch(storeActions.clearConfirmation()),\r\n clearAutoLogout: () => dispatch(storeActions.autoLogoutClear()),\r\n onLogout: () => dispatch(storeEffects.logout()),\r\n };\r\n}\r\n\r\nexport const AppConnected = connect(mapStateToProps, mapDispatchToProps)(App);\r\n\r\nif (!window.Promise) {\r\n window.Promise = Promise;\r\n}\r\n\r\nif (!(\"geolocation\" in navigator)) {\r\n console.log(\"[App] geolocation IS NOT available\");\r\n}\r\n\r\n// Registering service worker\r\nif (!(\"serviceWorker\" in navigator)) {\r\n console.log(\"[App] serviceWorker IS NOT available\");\r\n}\r\n\r\nconst ConnectedApp = () => (\r\n \r\n \r\n \r\n);\r\n\r\n// Set culture from cookie, do not cache\r\n//const xMLHttpRequest = new XMLHttpRequest();\r\n//const url = appConfig.rootUrl + \"api/culture?_=\" + new Date().getTime();\r\n//xMLHttpRequest.onreadystatechange = function() {\r\n// if (this.readyState === 4 && this.status === 200) {\r\n// const result = JSON.parse(this.responseText);\r\n// appConfig.culture = result.culture;\r\n// Translations.setCulture(appConfig.culture);\r\n// }\r\n//};\r\n//xMLHttpRequest.open(\"GET\", url, true);\r\n//xMLHttpRequest.setRequestHeader(\"Accept\", \"application/json\");\r\n//xMLHttpRequest.setRequestHeader(\"Content-Type\", \"application/json;charset=utf-8\");\r\n//xMLHttpRequest.send();\r\n\r\ndeclare module \"notistack\" {\r\n // eslint-disable-next-line no-unused-vars\r\n interface VariantOverrides {\r\n instantMessage: true;\r\n }\r\n }\r\n \r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById(\"appContent\")\r\n);\r\n","import { LocalizationProvider, DatePicker as MuiDatePicker } from \"@mui/x-date-pickers\";\r\nimport { AdapterMoment } from \"@mui/x-date-pickers/AdapterMoment\";\r\nimport * as moment from \"moment\";\r\nimport * as React from \"react\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\n\r\n// DatePicker\r\n// ***********************************************************************************************************************\r\nexport interface IDatePickerProp {\r\n autoFocus?: boolean;\r\n classes?: string;\r\n clearable?: boolean;\r\n disabled?: boolean;\r\n required?: boolean;\r\n title?: string | React.ReactNode;\r\n titleClasses?: string;\r\n value?: string;\r\n minDate?: string;\r\n onChange(value: string);\r\n}\r\n\r\nexport const DatePicker = ({ title, value, autoFocus, clearable, disabled, required, minDate, onChange }: IDatePickerProp) => {\r\n const handleChange = (value: moment.Moment | string) => {\r\n onChange(typeof value === \"string\"\r\n ? (value ?? \"\")\r\n : Base.timeToDateStr(value));\r\n };\r\n\r\n const getLanguageLocale = (culture: string) => {\r\n switch (culture) {\r\n case \"fi\":\r\n return \"fi\";\r\n case \"en\":\r\n case \"en-US\":\r\n return \"en\";\r\n case \"sv\":\r\n return \"se\";\r\n }\r\n };\r\n\r\n const getLocaleDate = (stringDate: string) => {\r\n if (!stringDate?.length) return undefined;\r\n const parts = stringDate.split(\".\");\r\n return moment.utc(`${Base.padZeros(parts[2], 4)}-${Base.padZeros(parts[1], 2)}-${Base.padZeros(parts[0], 2)}`);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};","/* global JSX */\r\n// TimePicker\r\n// ***********************************************************************************************************************\r\nimport * as React from \"react\";\r\nimport * as moment from \"moment\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { LocalizationProvider, TimePicker as MuiTimePicker } from \"@mui/x-date-pickers\";\r\nimport { AdapterMoment } from \"@mui/x-date-pickers/AdapterMoment\";\r\n\r\nexport interface ITimePickerProp {\r\n autoFocus?: boolean;\r\n disabled?: boolean;\r\n required?: boolean;\r\n title?: string | JSX.Element;\r\n value: string;\r\n minTime?: string;\r\n onChange(value: string);\r\n}\r\n\r\nexport const TimePicker = ({ title, value, disabled, required, autoFocus, minTime, onChange }: ITimePickerProp) => {\r\n const handleChange = (value: moment.Moment | string) => {\r\n const isString = Base.isString(value);\r\n onChange(isString\r\n ? (value ?? \"\")\r\n : Base.timeToTimeStr(value));\r\n };\r\n\r\n const getLanguageLocale = (culture: string) => {\r\n switch (culture) {\r\n case \"fi\":\r\n return \"fi\";\r\n case \"en\":\r\n case \"en-US\":\r\n return \"en\";\r\n case \"sv\":\r\n return \"se\";\r\n }\r\n };\r\n\r\n const getLocaleTime = (stringTime: string) => {\r\n if (!stringTime) return null;\r\n return moment.utc(stringTime.toUtcTime());\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","// eslint-disable-next-line no-unused-vars\r\nimport * as React from \"react\";\r\nimport styled from \"@emotion/styled\";\r\nimport { Typography } from \"@mui/material\";\r\n\r\nexport const Label = styled.div`\r\n margin-bottom: 0.5rem;\r\n`;\r\n\r\nexport const Error = styled(Typography)`\r\n margin: 0 0 -1.21875rem 1rem;\r\n`;","import React, { MouseEventHandler, ReactNode } from \"react\";\r\nimport * as Styled from \"./FormField.styles\";\r\nimport { Box, FormControl, Tooltip, Typography } from \"@mui/material\";\r\nimport { AppInfoIcon } from \"../Icon/AppInfoIcon\";\r\nimport { AppUtils } from \"source/framework/appUtils\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\n\r\ninterface FormFieldProps {\r\n children?: ReactNode;\r\n title: string | ReactNode;\r\n titleColor?: string;\r\n required?: boolean;\r\n color?: string;\r\n fullWidth?: boolean;\r\n error?: string;\r\n keepLineBreaks?: boolean;\r\n margin?: string | number;\r\n padding?: string | number;\r\n overflow?: \"hidden\" | \"auto\" | \"visible\";\r\n getInfoDocument?: () => Promise;\r\n onClick?: MouseEventHandler;\r\n}\r\n\r\nexport const FormField = ({\r\n children,\r\n title,\r\n titleColor,\r\n required = false,\r\n fullWidth = true,\r\n error,\r\n keepLineBreaks = false,\r\n margin,\r\n padding,\r\n color,\r\n overflow = \"hidden\",\r\n getInfoDocument,\r\n onClick\r\n}: FormFieldProps) => {\r\n const handleInfoClick = async () => {\r\n const fileName = await AppUtils.callService(() => getInfoDocument());\r\n if (!fileName) return;\r\n AppUtils.showSuccessMessage(String.format(Translations.DocumentParameterDownloaded, fileName));\r\n };\r\n\r\n return (\r\n \r\n {!!title && (\r\n \r\n \r\n \r\n {title}\r\n {\" \"}\r\n {required\r\n ? (\r\n \r\n *\r\n \r\n )\r\n : null}\r\n {!!getInfoDocument &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n )}\r\n {children}\r\n {error\r\n ? (\r\n \r\n {error}\r\n \r\n )\r\n : null}\r\n \r\n );\r\n};\r\n","import { Box, Checkbox, FormControlLabel, InputAdornment, MenuItem, Select, TextField, Typography } from \"@mui/material\";\r\nimport * as moment from \"moment\";\r\nimport * as React from \"react\";\r\nimport { CheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/CheckboxDropdown\";\r\nimport { TreeCheckboxDropdown } from \"ui/Scripts/source/components/framework/Dropdown/TreeCheckboxDropdown\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IdTitle } from \"ui/Scripts/source/models/common/idTitle\";\r\nimport { EnumHelper, TaskDataRowDataType, TaskTypeClassPreWrap, TaskTypeClassTextAreaSize, TaskTypeClassTextSize } from \"ui/Scripts/source/models/enums\";\r\nimport { ITaskDataRowCol, TaskDataRowCol } from \"ui/Scripts/source/models/task/taskDataRowCol\";\r\nimport { ITaskTypeCol, TaskTypeCol } from \"ui/Scripts/source/models/task/taskTypeCol\";\r\nimport { FormField } from \"../../framework/FormField\";\r\nimport { DatePicker } from \"source/components/framework/DateTime/DatePicker\";\r\nimport { TimePicker } from \"source/components/framework/DateTime/TimePicker\";\r\nimport { Label } from \"source/components/framework/FormField/FormField.styles\";\r\n\r\nconst FormFieldMargin = \"0.5rem 0 1rem 0\";\r\n\r\nexport interface IDisabledInputClickEnablerProp {\r\n input: React.ReactNode;\r\n disabled: boolean;\r\n}\r\n\r\nclass DisabledInputClickEnabler extends React.Component {\r\n render() {\r\n const props = this.props;\r\n return (props.disabled\r\n ? \r\n {props.input}\r\n \r\n \r\n : props.input\r\n );\r\n }\r\n}\r\n\r\n//TaskDynamicFormLabel\r\n//***************************************************************\r\nexport interface ITaskDynamicFormLabelProp {\r\n taskTypeCol: ITaskTypeCol;\r\n}\r\n\r\nexport class TaskDynamicFormLabel extends React.Component {\r\n render() {\r\n const props = this.props;\r\n const col = props.taskTypeCol;\r\n return (\r\n !Base.isNullOrEmpty(col.title) ? : null\r\n );\r\n }\r\n}\r\n\r\n//TaskDynamicFormString\r\n//***************************************************************\r\nexport interface ITaskDynamicFormStringProp {\r\n isReadOnly: boolean;\r\n colIsReadOnly: boolean;\r\n taskTypeCol: ITaskTypeCol;\r\n taskDataRowCol: ITaskDataRowCol;\r\n onChange: (dataCol: ITaskDataRowCol) => void;\r\n}\r\n\r\nexport class TaskDynamicFormString extends React.Component {\r\n handleChange = (event) => {\r\n const target = event.target;\r\n const valueStr: string = target.value;\r\n const newValue = new TaskDataRowCol(this.props.taskDataRowCol);\r\n newValue.valueStr = valueStr;\r\n this.props.onChange(newValue);\r\n };\r\n\r\n handleBlur = (event) => {\r\n const props = this.props;\r\n const typeCol = props.taskTypeCol;\r\n const target = event.target;\r\n const strValue: string = target.value;\r\n const newValue = new TaskDataRowCol(props.taskDataRowCol);\r\n newValue.valueStr = TaskDataRowCol.getTaskDataRowColUiValue(typeCol, strValue, newValue.valueNbr);\r\n this.props.onChange(newValue);\r\n };\r\n\r\n getTextAreaRowCount = (): number => {\r\n const props = this.props;\r\n let classnames = props.taskTypeCol.class ?? \"\";\r\n if (!classnames) return 2;\r\n classnames = \" \" + classnames + \" \";\r\n if (classnames.indexOf(\" \" + TaskTypeClassTextAreaSize.Small + \" \") > -1) return 2;\r\n if (classnames.indexOf(\" \" + TaskTypeClassTextAreaSize.Medium + \" \") > -1) return 5;\r\n if (classnames.indexOf(\" \" + TaskTypeClassTextAreaSize.Large + \" \") > -1) return 10;\r\n if (classnames.indexOf(\" \" + TaskTypeClassTextAreaSize.Extra + \" \") > -1) return 15;\r\n return 3;\r\n };\r\n\r\n getSelectListStyles = (): string => {\r\n const props = this.props;\r\n const classnames = props.taskTypeCol.class ?? \"\";\r\n if (!classnames) return null;\r\n const classes = classnames.split(\" \").filter(i => i && i.indexOf(\"col-\") < 0);\r\n return classes.join(\" \");\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const typeCol = props.taskTypeCol;\r\n const dataCol = props.taskDataRowCol;\r\n const options = !Base.isNullOrUndefined(typeCol.options) && typeCol.options.length > 0\r\n ? typeCol.options.map(i => IdTitle.createIdTitle(i, i))\r\n : (!Base.isNullOrUndefined(typeCol.idOptions) && typeCol.idOptions.length > 0\r\n ? typeCol.idOptions\r\n : null);\r\n const createSelectInput = !Base.isNullOrUndefined(options);\r\n return (\r\n \r\n {props.isReadOnly &&\r\n 499 ? TaskTypeClassPreWrap.PreWrap : \"\"}>{dataCol?.valueStr}\r\n }\r\n {!props.isReadOnly && !createSelectInput && typeCol.maxLength > 499 &&\r\n 0 ? typeCol.maxLength : null }}\r\n placeholder={typeCol.placeholder ? typeCol.placeholder : null}\r\n multiline\r\n onChange={this.handleChange}\r\n onBlur={this.handleBlur}\r\n size=\"small\"\r\n fullWidth\r\n rows={this.getTextAreaRowCount()}\r\n />}\r\n disabled={props.colIsReadOnly}\r\n />\r\n }\r\n {!props.isReadOnly && !createSelectInput && !(typeCol.maxLength > 499) &&\r\n 0 ? typeCol.maxLength : null }}\r\n placeholder={typeCol.placeholder ? typeCol.placeholder : null}\r\n autoComplete=\"off\"\r\n onChange={this.handleChange}\r\n onBlur={this.handleBlur}\r\n size=\"small\"\r\n fullWidth\r\n />}\r\n disabled={props.colIsReadOnly}\r\n />\r\n }\r\n {!props.isReadOnly && createSelectInput &&\r\n \r\n {!Base.isNullOrEmpty(typeCol.placeholder) &&\r\n {typeCol.placeholder}\r\n }\r\n {options.map((option) =>\r\n {option.title}\r\n )}\r\n }\r\n disabled={props.colIsReadOnly}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\n//TaskDynamicFormStringArray\r\n//***************************************************************\r\nexport interface ITaskDynamicFormStringArrayProp {\r\n isReadOnly: boolean;\r\n colIsReadOnly: boolean;\r\n taskTypeCol: ITaskTypeCol;\r\n taskDataRowCol: ITaskDataRowCol;\r\n onChange: (dataCol: ITaskDataRowCol) => void;\r\n}\r\n\r\nexport class TaskDynamicFormStringArray extends React.Component {\r\n handleChange = (selectedIds: string[]) => {\r\n const newValue = new TaskDataRowCol(this.props.taskDataRowCol);\r\n newValue.valueStr = JSON.stringify(selectedIds);\r\n this.props.onChange(newValue);\r\n };\r\n \r\n render() {\r\n const props = this.props;\r\n const typeCol = props.taskTypeCol;\r\n const dataCol = props.taskDataRowCol;\r\n const options = !Base.isNullOrUndefined(typeCol.options) && typeCol.options.length > 0\r\n ? typeCol.options.map(i => IdTitle.createIdTitle(i, i))\r\n : (!Base.isNullOrUndefined(typeCol.idOptions) && typeCol.idOptions.length > 0\r\n ? typeCol.idOptions\r\n : null);\r\n const valueIds: string[] = dataCol?.valueStr ? JSON.parse(dataCol?.valueStr) : [];\r\n return (\r\n \r\n {props.isReadOnly &&\r\n {valueIds.length > 0 ? options.filter(i => valueIds.indexOf(i.id) > -1).map(i => i.title).join(\", \") : \"\"}\r\n }\r\n {!props.isReadOnly &&\r\n }\r\n disabled={props.colIsReadOnly}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\n//TaskDynamicFormTreeStringArray\r\n//***************************************************************\r\nexport interface ITaskDynamicFormTreeStringArrayProp {\r\n isReadOnly: boolean;\r\n colIsReadOnly: boolean;\r\n taskTypeCol: ITaskTypeCol;\r\n taskDataRowCol: ITaskDataRowCol;\r\n onChange: (dataCol: ITaskDataRowCol) => void;\r\n}\r\n\r\nexport class TaskDynamicFormTreeStringArray extends React.Component {\r\n handleChange = (selectedIds: string[]) => {\r\n const newValue = new TaskDataRowCol(this.props.taskDataRowCol);\r\n newValue.valueStr = JSON.stringify(selectedIds);\r\n this.props.onChange(newValue);\r\n };\r\n \r\n render() {\r\n const props = this.props;\r\n const typeCol = props.taskTypeCol;\r\n const dataCol = props.taskDataRowCol;\r\n const options = !Base.isNullOrUndefined(typeCol.idNodeOptions) && typeCol.idNodeOptions.length > 0\r\n ? typeCol.idNodeOptions\r\n : null;\r\n const valueIds: string[] = dataCol?.valueStr ? JSON.parse(dataCol?.valueStr) : [];\r\n return (\r\n \r\n {props.isReadOnly &&\r\n {valueIds.length > 0 ? options.filter(i => valueIds.indexOf(i.id) > -1).map(i => i.title).join(\", \") : \"\"}\r\n }\r\n {!props.isReadOnly &&\r\n }\r\n disabled={props.colIsReadOnly}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\n//TaskDynamicFormNumber\r\n//***************************************************************\r\nexport interface ITaskDynamicFormNumberProp {\r\n isReadOnly: boolean;\r\n colIsReadOnly: boolean;\r\n showFieldName: boolean;\r\n showFieldNameColor: string;\r\n taskTypeCol: ITaskTypeCol;\r\n taskDataRowCol: ITaskDataRowCol;\r\n onChange: (dataCol: ITaskDataRowCol) => void;\r\n}\r\n\r\nexport class TaskDynamicFormNumber extends React.Component {\r\n handleChange = (event) => {\r\n const props = this.props;\r\n const typeCol = props.taskTypeCol;\r\n const target = event.target;\r\n const strValue: string = Base.filterDecimalStr(target.value, typeCol.minimum, typeCol.maximum, typeCol.decimals);\r\n const newValue = new TaskDataRowCol(props.taskDataRowCol);\r\n if (!typeCol.required && Base.isNullOrEmpty(strValue)) {\r\n newValue.valueStr = \"\";\r\n newValue.valueNbr = null;\r\n this.props.onChange(newValue);\r\n return;\r\n }\r\n newValue.valueStr = strValue;\r\n newValue.valueNbr = !Base.isNullOrEmpty(strValue) ? Base.strToNumber(strValue, typeCol.minimum, typeCol.maximum) : 0;\r\n props.onChange(newValue);\r\n };\r\n\r\n handleBlur = (event) => {\r\n const props = this.props;\r\n const typeCol = props.taskTypeCol;\r\n const target = event.target;\r\n const strValue: string = target.value;\r\n const newValue = new TaskDataRowCol(props.taskDataRowCol);\r\n if (!typeCol.required && Base.isNullOrEmpty(strValue)) {\r\n newValue.valueStr = \"\";\r\n newValue.valueNbr = null;\r\n this.props.onChange(newValue);\r\n return;\r\n }\r\n newValue.valueNbr = !Base.isNullOrEmpty(strValue) ? Base.strToNumber(strValue, typeCol.minimum, typeCol.maximum) : 0;\r\n newValue.valueStr = TaskDataRowCol.getTaskDataRowColUiValue(typeCol, newValue.valueStr, newValue.valueNbr);\r\n props.onChange(newValue);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const typeCol = props.taskTypeCol;\r\n const dataCol = props.taskDataRowCol;\r\n return (\r\n \r\n {props.isReadOnly &&\r\n {dataCol?.valueStr}\r\n }\r\n {!props.isReadOnly &&\r\n {typeCol.unitTitle}\r\n : null\r\n }}\r\n inputProps={{ maxLength: typeCol.maxLength > 0 ? typeCol.maxLength : null }}\r\n placeholder={typeCol.placeholder ? typeCol.placeholder : null}\r\n autoComplete=\"off\"\r\n onChange={this.handleChange}\r\n onBlur={this.handleBlur}\r\n size=\"small\"\r\n fullWidth\r\n />}\r\n disabled={props.colIsReadOnly}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\n// TaskDynamicFormInteger\r\n// ***************************************************************\r\n// interface IIntegerMaskInputProps {\r\n// onChange: (event: { target: { name: string; value: string } }) => void;\r\n// name: string;\r\n// min?: number;\r\n// max?: number;\r\n// }\r\n\r\n// const IntegerMaskInput = React.forwardRef(\r\n// function TextMaskCustom(props, ref) {\r\n// console.log(\"IntegerMaskInput\", props.min, props.max);\r\n// const { onChange, ...other } = props;\r\n// return (\r\n// onChange({ target: { name: props.name, value } })}\r\n// scale={0}\r\n// overwrite\r\n// />\r\n// );\r\n// },\r\n// );\r\n\r\n// IntegerMaskInput.displayName = \"IntegerMaskInput\";\r\n\r\nexport interface ITaskDynamicFormIntegerProp {\r\n isReadOnly: boolean;\r\n colIsReadOnly: boolean;\r\n showFieldName: boolean;\r\n showFieldNameColor: string;\r\n taskTypeCol: ITaskTypeCol;\r\n taskDataRowCol: ITaskDataRowCol;\r\n onChange: (dataCol: ITaskDataRowCol) => void;\r\n}\r\n\r\nexport class TaskDynamicFormInteger extends React.Component {\r\n handleChange = (event) => {\r\n const props = this.props;\r\n const typeCol = props.taskTypeCol;\r\n const target = event.target;\r\n const strValue: string = Base.filterIntegerStr(target.value, typeCol.minimum, typeCol.maximum);\r\n const newValue = new TaskDataRowCol(props.taskDataRowCol);\r\n if (!typeCol.required && Base.isNullOrEmpty(strValue)) {\r\n newValue.valueStr = \"\";\r\n newValue.valueNbr = null;\r\n this.props.onChange(newValue);\r\n return;\r\n }\r\n newValue.valueStr = strValue;\r\n newValue.valueNbr = !Base.isNullOrEmpty(strValue) ? Base.strToInteger(strValue, typeCol.minimum, typeCol.maximum) : 0;\r\n props.onChange(newValue);\r\n };\r\n\r\n handleBlur = (event) => {\r\n const props = this.props;\r\n const typeCol = props.taskTypeCol;\r\n const target = event.target;\r\n const strValue: string = target.value;\r\n const newValue = new TaskDataRowCol(props.taskDataRowCol);\r\n if (!typeCol.required && Base.isNullOrEmpty(strValue)) {\r\n newValue.valueStr = \"\";\r\n newValue.valueNbr = null;\r\n this.props.onChange(newValue);\r\n return;\r\n }\r\n newValue.valueNbr = !Base.isNullOrEmpty(strValue) ? Base.strToInteger(strValue, typeCol.minimum, typeCol.maximum) : 0;\r\n newValue.valueStr = TaskDataRowCol.getTaskDataRowColUiValue(typeCol, newValue.valueStr, newValue.valueNbr);\r\n props.onChange(newValue);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const typeCol = props.taskTypeCol;\r\n const dataCol = props.taskDataRowCol;\r\n return (\r\n \r\n {props.isReadOnly &&\r\n {dataCol?.valueStr}\r\n }\r\n {!props.isReadOnly &&\r\n {typeCol.unitTitle} : undefined\r\n }}\r\n inputProps={{ maxLength: typeCol.maxLength > 0 ? typeCol.maxLength : null }}\r\n placeholder={typeCol.placeholder ? typeCol.placeholder : null}\r\n autoComplete=\"off\"\r\n onChange={this.handleChange}\r\n onBlur={this.handleBlur}\r\n size=\"small\"\r\n fullWidth\r\n />}\r\n disabled={props.colIsReadOnly}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\n//TaskDynamicFormDate\r\n//***************************************************************\r\nexport interface ITaskDynamicFormDateProp {\r\n isReadOnly: boolean;\r\n colIsReadOnly: boolean;\r\n showFieldName: boolean;\r\n showFieldNameColor: string;\r\n taskTypeCol: ITaskTypeCol;\r\n taskDataRowCol: ITaskDataRowCol;\r\n onChange: (dataCol: ITaskDataRowCol) => void;\r\n}\r\n\r\nexport class TaskDynamicFormDate extends React.Component {\r\n handleChange = (value: moment.Moment | string) => {\r\n const props = this.props;\r\n const typeCol = props.taskTypeCol;\r\n const newValue = new TaskDataRowCol(props.taskDataRowCol);\r\n if (typeof value === \"string\") {\r\n if (Base.isNullOrEmpty(value)) {\r\n newValue.valueNbr = typeCol.required ? 0 : null;\r\n } else {\r\n newValue.valueNbr = value.toUtcDate().getTime();\r\n }\r\n } else {\r\n newValue.valueNbr = newValue.valueStr.toUtcDate().getTime();\r\n }\r\n newValue.valueStr = TaskDataRowCol.getTaskDataRowColUiValue(typeCol, newValue.valueStr, newValue.valueNbr);\r\n props.onChange(newValue);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const typeCol = props.taskTypeCol;\r\n const dataCol = props.taskDataRowCol;\r\n return (\r\n \r\n {props.isReadOnly &&\r\n {dataCol?.valueStr}\r\n }\r\n {!props.isReadOnly &&\r\n }\r\n disabled={props.colIsReadOnly}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\n//TaskDynamicFormTime\r\n//***************************************************************\r\nexport interface ITaskDynamicFormTimeProp {\r\n isReadOnly: boolean;\r\n colIsReadOnly: boolean;\r\n showFieldName: boolean;\r\n showFieldNameColor: string;\r\n taskTypeCol: ITaskTypeCol;\r\n taskDataRowCol: ITaskDataRowCol;\r\n onChange: (dataCol: ITaskDataRowCol) => void;\r\n}\r\n\r\nexport class TaskDynamicFormTime extends React.Component {\r\n handleChange = (value: moment.Moment | string) => {\r\n const props = this.props;\r\n const typeCol = props.taskTypeCol;\r\n const newValue = new TaskDataRowCol(props.taskDataRowCol);\r\n if (typeof value === \"string\") {\r\n if (Base.isNullOrEmpty(value)) {\r\n newValue.valueNbr = typeCol.required ? 0 : null;\r\n } else {\r\n newValue.valueNbr = value.toUtcTime().getTime();\r\n }\r\n } else {\r\n newValue.valueNbr = Base.timeToTimeStr(value).toUtcTime().getTime();\r\n }\r\n newValue.valueStr = TaskDataRowCol.getTaskDataRowColUiValue(typeCol, newValue.valueStr, newValue.valueNbr);\r\n props.onChange(newValue);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const typeCol = props.taskTypeCol;\r\n const dataCol = props.taskDataRowCol;\r\n return (\r\n \r\n {props.isReadOnly &&\r\n {dataCol?.valueStr}\r\n }\r\n {!props.isReadOnly &&\r\n }\r\n disabled={props.colIsReadOnly}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\n//TaskDynamicFormTimeSpan\r\n//***************************************************************\r\nexport interface ITaskDynamicFormTimeSpanProp {\r\n isReadOnly: boolean;\r\n colIsReadOnly: boolean;\r\n taskTypeCol: ITaskTypeCol;\r\n taskDataRowCol: ITaskDataRowCol;\r\n onChange: (dataCol: ITaskDataRowCol) => void;\r\n}\r\n\r\nexport class TaskDynamicFormTimeSpan extends React.Component {\r\n handleChange = (event) => {\r\n const props = this.props;\r\n const typeCol = props.taskTypeCol;\r\n const target = event.target;\r\n const value: string = target.value;\r\n const newValue = new TaskDataRowCol(props.taskDataRowCol);\r\n if (!typeCol.required && Base.isNullOrEmpty(value)) {\r\n newValue.valueStr = \"\";\r\n newValue.valueNbr = null;\r\n } else {\r\n newValue.valueStr = value;\r\n newValue.valueNbr = value.toTimeSpan();\r\n }\r\n props.onChange(newValue);\r\n };\r\n\r\n handleBlur = (event) => {\r\n const props = this.props;\r\n const typeCol = props.taskTypeCol;\r\n const target = event.target;\r\n const value: string = target.value;\r\n const newValue = new TaskDataRowCol(props.taskDataRowCol);\r\n if (!typeCol.required && Base.isNullOrEmpty(value)) {\r\n newValue.valueNbr = null;\r\n } else {\r\n newValue.valueNbr = value.toTimeSpan();\r\n }\r\n newValue.valueStr = TaskDataRowCol.getTaskDataRowColUiValue(typeCol, newValue.valueStr, newValue.valueNbr);\r\n props.onChange(newValue);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const typeCol = props.taskTypeCol;\r\n const dataCol = props.taskDataRowCol;\r\n return (\r\n \r\n {props.isReadOnly &&\r\n {dataCol?.valueStr}\r\n }\r\n {!props.isReadOnly &&\r\n }\r\n disabled={props.colIsReadOnly}\r\n />\r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\n//TaskDynamicFormBoolean\r\n//***************************************************************\r\nexport interface ITaskDynamicFormBooleanProp {\r\n isReadOnly: boolean;\r\n colIsReadOnly: boolean;\r\n taskTypeCol: ITaskTypeCol;\r\n taskDataRowCol: ITaskDataRowCol;\r\n onChange: (dataCol: ITaskDataRowCol) => void;\r\n}\r\n\r\nexport class TaskDynamicFormBoolean extends React.Component {\r\n handleCheckboxClickBoolean = (checked: boolean) => {\r\n const newValue = new TaskDataRowCol(this.props.taskDataRowCol);\r\n newValue.valueNbr = checked ? 1 : 0;\r\n newValue.valueStr = checked ? \"1\" : \"0\";\r\n this.props.onChange(newValue);\r\n };\r\n\r\n getCheckBoxSizeSx = (): any => {\r\n const props = this.props;\r\n let classnames = props.taskTypeCol.class ?? \"\";\r\n if (!classnames) return null;\r\n classnames = \" \" + classnames + \" \";\r\n if (classnames.indexOf(\" \" + TaskTypeClassTextSize.Small + \" \") > -1) return { \"& .MuiSvgIcon-root\": { fontSize: 16 } };\r\n if (classnames.indexOf(\" \" + TaskTypeClassTextSize.Medium + \" \") > -1) return { \"& .MuiSvgIcon-root\": { fontSize: 20 } };\r\n if (classnames.indexOf(\" \" + TaskTypeClassTextSize.Large + \" \") > -1) return { \"& .MuiSvgIcon-root\": { fontSize: 30 } };\r\n if (classnames.indexOf(\" \" + TaskTypeClassTextSize.Extra + \" \") > -1) return { \"& .MuiSvgIcon-root\": { fontSize: 36 } };\r\n return null;\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const typeCol = props.taskTypeCol;\r\n const dataCol = props.taskDataRowCol;\r\n return (\r\n \r\n {props.isReadOnly &&\r\n {Base.strToBool(dataCol?.valueStr) ? \"X\" : \"_\"}\r\n }\r\n {!props.isReadOnly &&\r\n this.handleCheckboxClickBoolean(checked)}\r\n />\r\n }\r\n label={typeCol.title}\r\n className=\"checkbox\"\r\n />\r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\n//TaskDynamicFormLineBreak\r\n//***************************************************************\r\nexport interface ITaskDynamicFormLineBreakProp {\r\n taskTypeCol: ITaskTypeCol;\r\n}\r\n\r\nexport class TaskDynamicFormLineBreak extends React.Component {\r\n render() {\r\n return (\r\n
    \r\n );\r\n }\r\n}\r\n\r\n//TaskDynamicFormCol\r\n//***************************************************************\r\nexport interface ITaskDynamicFormColProp {\r\n isReadOnly: boolean;\r\n colIsReadOnly: boolean;\r\n showFieldName?: boolean;\r\n showFieldNameColor?: string;\r\n taskTypeCol: ITaskTypeCol;\r\n taskDataRowCol: ITaskDataRowCol;\r\n ignoreClass?: boolean;\r\n onChange: (dataCol: ITaskDataRowCol) => void;\r\n}\r\n\r\nexport class TaskDynamicFormCol extends React.Component {\r\n render() {\r\n const props = this.props;\r\n const col = props.taskTypeCol;\r\n let element = null;\r\n if (EnumHelper.isEqual(col.dataType, TaskDataRowDataType.Label)) {\r\n element =\r\n ;\r\n } else if (EnumHelper.isEqual(col.dataType, TaskDataRowDataType.String)) {\r\n element =\r\n ;\r\n } else if (EnumHelper.isEqual(col.dataType, TaskDataRowDataType.Number)) {\r\n element =\r\n ;\r\n } else if (EnumHelper.isEqual(col.dataType, TaskDataRowDataType.Integer)) {\r\n element =\r\n ;\r\n } else if (EnumHelper.isEqual(col.dataType, TaskDataRowDataType.Date)) {\r\n element =\r\n ;\r\n } else if (EnumHelper.isEqual(col.dataType, TaskDataRowDataType.Time)) {\r\n element =\r\n ;\r\n } else if (EnumHelper.isEqual(col.dataType, TaskDataRowDataType.TimeSpan)) {\r\n element =\r\n ;\r\n } else if (EnumHelper.isEqual(col.dataType, TaskDataRowDataType.Boolean)) {\r\n element =\r\n ;\r\n } else if (EnumHelper.isEqual(col.dataType, TaskDataRowDataType.StringArray)) {\r\n element =\r\n ;\r\n } else if (EnumHelper.isEqual(col.dataType, TaskDataRowDataType.TreeStringArray)) {\r\n element =\r\n ;\r\n } else if (EnumHelper.isEqual(col.dataType, TaskDataRowDataType.LineBreak)) {\r\n element =\r\n ;\r\n }\r\n return (\r\n !props.ignoreClass\r\n ?
    \r\n {element}\r\n
    \r\n : element\r\n );\r\n }\r\n}\r\n\r\n//Expression Functions\r\n//***************************************************************\r\nconst globalPointer = window as any;\r\n\r\nglobalPointer.minutesToDateStr = (minutes: number) => Base.minutesToDateStr(minutes);\r\n\r\nglobalPointer.utcDateAndTimeDiffInMinutes = (date1: Date, time1: Date, date2: Date, time2: Date) => Base.utcDateAndTimeDiffInMinutes(date1, time1, date2, time2);\r\n\r\nglobalPointer.utcDateAndTimeDiffInTimeSpan = (date1: Date, time1: Date, date2: Date, time2: Date) => Base.utcDateAndTimeDiffInTimeSpan(date1, time1, date2, time2);\r\n\r\n//TaskDynamicForm\r\n//***************************************************************\r\nexport interface ITaskDynamicFormProp {\r\n isReadOnly?: boolean;\r\n mobile?: boolean;\r\n preview?: boolean;\r\n taskTypeCols: ITaskTypeCol[];\r\n taskDataRowCols: ITaskDataRowCol[];\r\n selectedField?: string;\r\n onRefreshCols: (taskDataRowCols: ITaskDataRowCol[]) => void;\r\n onComponentClick?: (field: string) => void;\r\n}\r\n\r\nexport interface ITaskDynamicFormState {\r\n readOnlyColfields: string[];\r\n}\r\n\r\nexport class TaskDynamicForm extends React.Component {\r\n //#region Expression Evaluation\r\n evaluateColsExpression = (expression: string, typeCols: ITaskTypeCol[], taskDataRowCols: ITaskDataRowCol[], errorCallback: (error) => void): any => {\r\n if (!expression) return null;\r\n for (let i = 0; i < taskDataRowCols.length; i++) {\r\n const dataCol = taskDataRowCols[i];\r\n const index = expression.indexOf(dataCol.field);\r\n if (index < 0) continue;\r\n const typeCol = typeCols.find(j => j.field === dataCol.field);\r\n if (Base.isNullOrUndefined(typeCol)) continue;\r\n let valueStr: string = \"\";\r\n if (typeCol.dataType === TaskDataRowDataType.String) {\r\n valueStr = !Base.isNullOrEmpty(dataCol?.valueStr) ? dataCol?.valueStr : \"\";\r\n } else if (typeCol.dataType === TaskDataRowDataType.Integer || typeCol.dataType === TaskDataRowDataType.Number || typeCol.dataType === TaskDataRowDataType.Boolean || typeCol.dataType === TaskDataRowDataType.TimeSpan) {\r\n valueStr = !Base.isNullOrUndefined(dataCol.valueNbr) ? dataCol.valueNbr.toString(10) : \"0\";\r\n } else if (typeCol.dataType === TaskDataRowDataType.Time) {\r\n valueStr = TaskDataRowCol.getTimeEvalValue(dataCol.valueNbr);\r\n } else if (typeCol.dataType === TaskDataRowDataType.Date) {\r\n valueStr = TaskDataRowCol.getDateEvalValue(dataCol.valueNbr);\r\n }\r\n expression = expression.replace(new RegExp(dataCol.field, \"g\"), valueStr);\r\n } try {\r\n /* eslint-disable no-eval */\r\n return eval(expression);\r\n /* eslint-enable no-eval */\r\n } catch (error) {\r\n errorCallback(error);\r\n return null;\r\n }\r\n };\r\n \r\n evaluateColsExpressions = (taskDataRowCols: ITaskDataRowCol[], typeCols: ITaskTypeCol[], errorCallback: (error) => void) => {\r\n if (taskDataRowCols.length < 1) return;\r\n const relevantTypeCols: ITaskTypeCol[] = typeCols.filter(i => !Base.isNullOrEmpty(i.expression));\r\n if (relevantTypeCols.length < 1) return;\r\n TaskTypeCol.sortExpressionTaskTypeCols(relevantTypeCols);\r\n const expressionTaskDataRowCols = TaskDataRowCol.getExpressionFieldTaskDataRowCols(taskDataRowCols);\r\n for (let i = 0; i < relevantTypeCols.length; i++) {\r\n const typeCol = relevantTypeCols[i];\r\n const dataCol = expressionTaskDataRowCols.find(j => j.field === typeCol.field);\r\n if (Base.isNullOrUndefined(dataCol)) continue;\r\n const value = this.evaluateColsExpression(typeCol.expression, typeCols, expressionTaskDataRowCols, errorCallback);\r\n if (Base.isNullOrUndefined(value)) continue;\r\n if (typeCol.dataType === TaskDataRowDataType.String) {\r\n dataCol.valueStr = value;\r\n } else {\r\n dataCol.valueNbr = value;\r\n dataCol.valueStr = TaskDataRowCol.getTaskDataRowColUiValue(typeCols.find(j => j.field === dataCol.field), dataCol?.valueStr, dataCol.valueNbr);\r\n }\r\n }\r\n };\r\n\r\n logEvaluateColsExpressionsError = (error) => {\r\n console.log(\"evaluateColsExpressions\", error);\r\n };\r\n //#endregion Expression Evaluation\r\n \r\n //#region ReadOnly Expression Evaluation\r\n evaluateColsReadOnlyExpressions = (taskDataRowCols: ITaskDataRowCol[], typeCols: ITaskTypeCol[], errorCallback: (error) => void): string[] => {\r\n const result: string[] = [];\r\n if (!taskDataRowCols || !typeCols || taskDataRowCols.length < 1 || typeCols.length < 1) return result;\r\n const relevantTypeCols: ITaskTypeCol[] = typeCols.filter(i => !Base.isNullOrEmpty(i.readOnlyExpression));\r\n if (relevantTypeCols.length < 1) return result;\r\n TaskTypeCol.sortExpressionTaskTypeCols(relevantTypeCols);\r\n const expressionTaskDataRowCols = TaskDataRowCol.getExpressionFieldTaskDataRowCols(taskDataRowCols);\r\n for (let i = 0; i < relevantTypeCols.length; i++) {\r\n const typeCol = relevantTypeCols[i];\r\n const dataCol = expressionTaskDataRowCols.find(j => j.field === typeCol.field);\r\n if (!dataCol) continue;\r\n const value = this.evaluateColsExpression(typeCol.readOnlyExpression, typeCols, expressionTaskDataRowCols, errorCallback);\r\n if (!value) continue;\r\n result.push(typeCol.field);\r\n }\r\n result.sort();\r\n return result;\r\n };\r\n\r\n logEvaluateColsReadOnlyExpressionsError = (error) => {\r\n console.log(\"evaluateColsReadOnlyExpressions\", error);\r\n };\r\n //#endregion ReadOnly Expression Evaluation\r\n\r\n constructor(props: ITaskDynamicFormProp) {\r\n super(props);\r\n this.state = {\r\n readOnlyColfields: this.evaluateColsReadOnlyExpressions(props.taskDataRowCols, props.taskTypeCols, this.logEvaluateColsReadOnlyExpressionsError)\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps: ITaskDynamicFormProp, prevState: ITaskDynamicFormState) {\r\n const props = this.props;\r\n if (JSON.stringify(prevProps.taskDataRowCols) === JSON.stringify(props.taskDataRowCols)) return;\r\n const readOnlyColfields = this.evaluateColsReadOnlyExpressions(props.taskDataRowCols, props.taskTypeCols, this.logEvaluateColsReadOnlyExpressionsError);\r\n if (JSON.stringify(prevState.readOnlyColfields) === JSON.stringify(readOnlyColfields)) return;\r\n this.setState({\r\n readOnlyColfields\r\n });\r\n }\r\n\r\n handleValueChange = (dataCol: ITaskDataRowCol) => {\r\n if (Base.isNullOrUndefined(dataCol)) return;\r\n const props = this.props;\r\n const taskDataRowCols = props.taskDataRowCols.slice(0);\r\n const taskDataRowCol = taskDataRowCols.find(i => i.field === dataCol.field);\r\n taskDataRowCol.valueStr = dataCol?.valueStr || \"\";\r\n taskDataRowCol.valueNbr = dataCol.valueNbr;\r\n this.evaluateColsExpressions(taskDataRowCols, props.taskTypeCols, this.logEvaluateColsExpressionsError);\r\n this.setState({\r\n readOnlyColfields: this.evaluateColsReadOnlyExpressions(props.taskDataRowCols, props.taskTypeCols, this.logEvaluateColsReadOnlyExpressionsError)\r\n });\r\n props.onRefreshCols(taskDataRowCols);\r\n };\r\n\r\n render() {\r\n const props = this.props;\r\n const taskTypeCols = props.taskTypeCols;\r\n if (!taskTypeCols) return null;\r\n return (\r\n
    \r\n
    \r\n {taskTypeCols.map((taskTypeCol) => {\r\n const showInPreview = props.preview && !!props.onComponentClick;\r\n const showSelectionInPreview = showInPreview && props.selectedField === taskTypeCol.field;\r\n const colComponent = -1}\r\n taskTypeCol={taskTypeCol}\r\n taskDataRowCol={props.taskDataRowCols.find(i => i.field === taskTypeCol.field)}\r\n ignoreClass={showInPreview}\r\n onChange={this.handleValueChange}\r\n />;\r\n return !showInPreview\r\n ? colComponent\r\n : props.onComponentClick(taskTypeCol.field)}\r\n >\r\n {(showSelectionInPreview\r\n ? props.onComponentClick(taskTypeCol.field)}\r\n >\r\n {colComponent}\r\n \r\n : colComponent\r\n )}\r\n ;\r\n })}\r\n
    \r\n
    \r\n );\r\n }\r\n}","import * as store from \"./customStore\";\r\nimport * as storeActions from \"../models/store/storeActions\";\r\nimport * as baseService from \"../models/services/baseService\";\r\nimport { ConfirmationDialogType } from \"../models/store/storeTypes\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ConfirmationDialogResult } from \"ui/Scripts/source/models/enums\";\r\nimport { IApiResponse } from \"ui/Scripts/source/models/common/apiResponse\";\r\nimport { FileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\nimport { IInstantMessageListItem } from \"ui/Scripts/source/models/instantMessage/instantMessageListItem\";\r\n\r\n//AppUtils\r\nexport class AppUtils {\r\n static showSuccessMessage(message: string) {\r\n store.customStore.dispatch(storeActions.showSuccessMessage(message));\r\n }\r\n\r\n static showErrorMessage(message: string) {\r\n store.customStore.dispatch(storeActions.showErrorMessage(message));\r\n }\r\n\r\n static showApiErrorMessage(e) {\r\n AppUtils.showErrorMessage(baseService.getErrorMessageFromError(e));\r\n }\r\n\r\n static isString(data: any): data is string {\r\n return typeof data === \"string\";\r\n }\r\n\r\n static isIApiResponse(data: any): data is IApiResponse {\r\n if (AppUtils.isString(data)) return false;\r\n return data && \"message\" in data;\r\n }\r\n\r\n static async callService(serviceCall: () => Promise, showSuccessMessage: boolean = true, disableLoadIndicator: boolean = false, onFinally: (result?: T) => void = null): Promise {\r\n if (!disableLoadIndicator) {\r\n store.customStore.dispatch(storeActions.fetchStart());\r\n }\r\n let result: T = null;\r\n try {\r\n result = await serviceCall();\r\n if (showSuccessMessage) {\r\n if (AppUtils.isIApiResponse(result) && result.message) {\r\n AppUtils.showSuccessMessage(result.message);\r\n } else if (AppUtils.isString(result) && result) {\r\n AppUtils.showSuccessMessage(result);\r\n }\r\n }\r\n return result;\r\n } catch (e) {\r\n result = null;\r\n AppUtils.showApiErrorMessage(e);\r\n return Base.getPromiseResult(null);\r\n } finally {\r\n if (!disableLoadIndicator) {\r\n store.customStore.dispatch(storeActions.fetchEnd());\r\n }\r\n if (onFinally) {\r\n onFinally(result);\r\n }\r\n }\r\n }\r\n\r\n static showConfirmationDialog(message: string, showCancelButton: boolean = false, yesConfirmationText: string = null): Promise {\r\n return new Promise((resolve) => {\r\n store.customStore.dispatch(storeActions.setConfirmation(ConfirmationDialogType.Warning, Translations.Warning, message,\r\n () => {\r\n store.customStore.dispatch(storeActions.clearConfirmation());\r\n resolve(ConfirmationDialogResult.Yes);\r\n },\r\n () => {\r\n store.customStore.dispatch(storeActions.clearConfirmation());\r\n resolve(ConfirmationDialogResult.No);\r\n },\r\n showCancelButton\r\n ? () => {\r\n store.customStore.dispatch(storeActions.clearConfirmation());\r\n resolve(ConfirmationDialogResult.Cancel);\r\n }\r\n : null\r\n , yesConfirmationText\r\n ));\r\n });\r\n }\r\n\r\n static async validate(checkErrors: () => Promise, getWarnings: () => Promise, confirmationMessage: string = null): Promise {\r\n if (!await checkErrors()) return false;\r\n const warnings = await getWarnings();\r\n if (!warnings) {\r\n return true;\r\n }\r\n return await AppUtils.showConfirmationDialog(warnings + Base.lf + (confirmationMessage || Translations.DoYouReallyWantToSave)) === ConfirmationDialogResult.Yes;\r\n }\r\n\r\n static async cancel(newStateHash: string, orgStateHash: string, confirmationMessage: string = null): Promise {\r\n if (newStateHash !== orgStateHash) {\r\n return await AppUtils.showConfirmationDialog(confirmationMessage ?? Translations.YouHaveNotSavedChangesDoYouWantToSaveChanges, true);\r\n } else {\r\n return Base.getPromiseResult(ConfirmationDialogResult.No);\r\n }\r\n }\r\n\r\n static async cancelEditDialog(checkChanges: boolean, newStateHash: string, orgStateHash: string, handleSave: () => void, handleCancel: () => void, confirmationMessage: string = null): Promise {\r\n if (checkChanges) {\r\n const cancelResult = await AppUtils.cancel(newStateHash, orgStateHash, confirmationMessage);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n handleSave();\r\n } else if (handleCancel) {\r\n handleCancel();\r\n }\r\n } else if (handleCancel) {\r\n handleCancel();\r\n }\r\n }\r\n\r\n static async canMoveOut(newStateHash: string, orgStateHash: string, saveToDb: () => Promise, onRefreshList: () => Promise): Promise {\r\n const cancelResult = await AppUtils.cancel(newStateHash, orgStateHash, null);\r\n if (cancelResult === ConfirmationDialogResult.Cancel) return false;\r\n if (cancelResult === ConfirmationDialogResult.Yes) {\r\n if (!await saveToDb()) return false;\r\n if (onRefreshList) {\r\n await onRefreshList();\r\n }\r\n }\r\n return true;\r\n };\r\n\r\n static validateFileUploadSize(fileSizeKb: number, errorMessage: string = null, maxUploadSize: number = null): boolean {\r\n const maxFileUploadSize = maxUploadSize ?? appConfig.maxFileUploadSize;\r\n if (fileSizeKb > maxFileUploadSize) {\r\n AppUtils.showErrorMessage(String.format(errorMessage ?? Translations.MaximumSizeOfFilesThatCanBeAddedInBatchIsParameterMB, (maxFileUploadSize / 1024).toLocaleFixed(0)));\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n static validateFileAttachment(fileAttachment: FileAttachment, errorMessage: string = null, maxUploadSize: number = null): boolean {\r\n if (!fileAttachment) return false;\r\n return AppUtils.validateFileUploadSize(fileAttachment.size / 1024, errorMessage, maxUploadSize);\r\n }\r\n \r\n static validateFileAttachments(fileAttachments: FileAttachment[], errorMessage: string = null, maxUploadSize: number = null): boolean {\r\n if (!fileAttachments || fileAttachments.length < 1) return true;\r\n let fileSizeKb = 0;\r\n for (const fileAttachment of fileAttachments) {\r\n if (!fileAttachment) continue;\r\n fileSizeKb = fileSizeKb + fileAttachment.size / 1024;\r\n }\r\n return AppUtils.validateFileUploadSize(fileSizeKb, errorMessage, maxUploadSize);\r\n }\r\n\r\n //App session\r\n static setNewInstantMessages(newInstantMessages: IInstantMessageListItem[]) {\r\n store.customStore.dispatch(storeActions.setNewInstantMessages(newInstantMessages));\r\n }\r\n}","import * as storeTypes from \"./storeTypes\";\r\nimport { combineReducers } from \"redux\";\r\nimport IUserState = storeTypes.IUserState;\r\nimport IAppSessionState = storeTypes.IAppSessionState;\r\nimport { SessionState } from \"../session/sessionState\";\r\nimport { FrontPage } from \"../front/frontPage\";\r\n\r\nexport const initialState: storeTypes.IApplicationState = {\r\n // Fetch\r\n fetchCount: 0,\r\n // Alert\r\n alert: {\r\n message: null,\r\n info: null,\r\n error: null\r\n },\r\n // Confirmation\r\n confirmation: {\r\n type: storeTypes.ConfirmationDialogType.Warning,\r\n title: null,\r\n text: null,\r\n show: false,\r\n yesConfirmationText: null,\r\n onYes: null,\r\n onNo: null,\r\n onCancel: null\r\n },\r\n // AutoLogout\r\n autoLogout: {\r\n show: false\r\n },\r\n // Session\r\n session: {\r\n state: SessionState.initialize(),\r\n newInstantMessages: []\r\n },\r\n // Token\r\n user: {\r\n authenticated: false,\r\n },\r\n // Front\r\n front: {\r\n dataId: 0,\r\n frontPage: null,\r\n event: {\r\n chartOptions: null\r\n }\r\n },\r\n // Documents\r\n documents: {\r\n dataId: 0,\r\n documentPage: null\r\n },\r\n // Events\r\n events: {\r\n dataId: 0,\r\n eventPage: null\r\n },\r\n // Records\r\n records: {\r\n dataId: 0,\r\n recordPage: null\r\n },\r\n // Companies\r\n companies: {\r\n dataId: 0,\r\n companyPage: null\r\n },\r\n // CompanyCroups\r\n companyGroups: {\r\n dataId: 0,\r\n companyGroupPage: null\r\n },\r\n // Users\r\n users: {\r\n dataId: 0,\r\n usersPage: null\r\n },\r\n // UserGroups\r\n userGroups: {\r\n dataId: 0,\r\n userGroupPage: null\r\n },\r\n // Messages\r\n messages: {\r\n dataId: 0,\r\n messagePage: null\r\n },\r\n // Tasks\r\n tasks: {\r\n dataId: 0,\r\n taskPage: null\r\n },\r\n // Log\r\n log: {\r\n dataId: 0,\r\n logPage: null\r\n },\r\n // Instant Message\r\n instantMessage: {\r\n dataId: 0,\r\n instantMessagePage: null\r\n },\r\n // WhistleBlow\r\n whistleBlow: {\r\n dataId: 0,\r\n whistleBlowPage: null\r\n },\r\n // CalendarTasks\r\n calendarTasks: {\r\n dataId: 0,\r\n calendarTaskPage: null\r\n }\r\n};\r\n\r\n/* eslint-disable no-case-declarations */\r\n// Fetch\r\nfunction fetchCount(state: number = 0, action: storeTypes.FetchAction) {\r\n switch (action.type) {\r\n case storeTypes.FETCH_START:\r\n return state + 1;\r\n case storeTypes.FETCH_END:\r\n return state - 1;\r\n }\r\n return state;\r\n}\r\n\r\n// Alert\r\nfunction alert(state: storeTypes.IAlertState = { message: \"\", info: \"\", error: \"\" }, action: storeTypes.AlertAction) {\r\n switch (action.type) {\r\n case storeTypes.ALERT_SUCCESS:\r\n return { ...state, message: (action as storeTypes.IAlertSuccess).message };\r\n case storeTypes.ALERT_INFO:\r\n return { ...state, info: (action as storeTypes.IAlertInfo).message };\r\n case storeTypes.ALERT_ERROR:\r\n return { ...state, error: (action as storeTypes.IAlertError).message };\r\n case storeTypes.ALERT_CLEAR:\r\n return { message: null, info: null, error: null };\r\n case storeTypes.ALERT_SUCCESS_CLEAR:\r\n return { ...state, message: null };\r\n case storeTypes.ALERT_INFO_CLEAR:\r\n return { ...state, info: null };\r\n }\r\n return state;\r\n}\r\n\r\n// Confirmation\r\nfunction confirmation(state: storeTypes.IConfirmationState = { type: storeTypes.ConfirmationDialogType.Warning, title: \"\", text: \"\", show: false, onYes: null, onNo: null, onCancel: null, yesConfirmationText: null }, action: storeTypes.ConfirmationAction) {\r\n switch (action.type) {\r\n case storeTypes.CONFIRMATION_SET:\r\n const confirmation = (action as storeTypes.IConfirmationSet);\r\n return {\r\n ...state,\r\n type: confirmation.dialogType,\r\n title: confirmation.title,\r\n text: confirmation.text,\r\n show: confirmation.show,\r\n onYes: confirmation.onYes,\r\n onNo: confirmation.onNo,\r\n onCancel: confirmation.onCancel,\r\n yesConfirmationText: confirmation.yesConfirmationText\r\n };\r\n case storeTypes.CONFIRMATION_CLEAR:\r\n return { ...state, show: false };\r\n }\r\n return state;\r\n}\r\n\r\n// AutoLogout\r\nfunction autoLogout(state: storeTypes.IAutoLogoutState = { show: false }, action: storeTypes.AutoLogoutAction) {\r\n switch (action.type) {\r\n case storeTypes.AUTOLOGOUT_SET:\r\n return { ...state, show: true };\r\n case storeTypes.AUTOLOGOUT_CLEAR:\r\n return { ...state, show: false };\r\n }\r\n return state;\r\n}\r\n\r\n// Session\r\nfunction session(state: IAppSessionState = null, action: storeTypes.SessionAction) {\r\n switch (action.type) {\r\n case storeTypes.SESSION_SET_STATE:\r\n const setSessionState = (action as storeTypes.ISetSessionState);\r\n return { ...state, state: setSessionState.sessionState };\r\n case storeTypes.NEW_INSTANT_MESSAGES_SET:\r\n const setNewInstantMessages = (action as storeTypes.ISetNewInstantMessages);\r\n return { ...state, newInstantMessages: setNewInstantMessages.newInstantMessages };\r\n }\r\n return state;\r\n}\r\n\r\n// User\r\nfunction user(state: IUserState = null, action: storeTypes.UserAction) {\r\n switch (action.type) {\r\n case storeTypes.USER_LOGIN_SUCCESS:\r\n return { ...state, authenticated: true };\r\n case storeTypes.USER_LOGIN_FAILURE:\r\n return state;\r\n case storeTypes.USER_LOGOUT_SUCCESS:\r\n return { ...state, authenticated: false };\r\n }\r\n return state;\r\n}\r\n\r\n// Front\r\nfunction front(state: storeTypes.IFrontState = null, action: storeTypes.FrontAction) {\r\n switch (action.type) {\r\n case storeTypes.FRONT_SUCCESS:\r\n const frontSuccess = action as storeTypes.IFrontSuccess;\r\n return {\r\n ...state,\r\n dataId: state.dataId + 1,\r\n frontPage: frontSuccess.frontPage\r\n };\r\n case storeTypes.FRONT_FAILURE:\r\n return { ...state };\r\n case storeTypes.FRONT_IMAGES: {\r\n const frontImages = action as storeTypes.IFrontImages;\r\n const frontPage = new FrontPage(state.frontPage);\r\n frontPage.images = frontImages.images;\r\n return {\r\n ...state,\r\n frontPage\r\n };\r\n }\r\n case storeTypes.FRONT_BANNER_INTERVAL: {\r\n const frontInterval = action as storeTypes.IFrontBannerInterval;\r\n const frontPage = new FrontPage(state.frontPage);\r\n frontPage.banner.imageChangeInterval = frontInterval.interval;\r\n return {\r\n ...state,\r\n frontPage\r\n };\r\n }\r\n case storeTypes.FRONT_RECORDS_USER: {\r\n const recordsUser = action as storeTypes.IFrontRecordsUser;\r\n const frontPage = new FrontPage(state.frontPage);\r\n frontPage.records.userRecordCount = recordsUser.recordCount;\r\n frontPage.records.userDateRange = recordsUser.dateRange;\r\n return {\r\n ...state,\r\n frontPage\r\n };\r\n }\r\n case storeTypes.FRONT_RECORDS_COMPANY: {\r\n const recordsCompany = action as storeTypes.IFrontRecordsCompany;\r\n const frontPage = new FrontPage(state.frontPage);\r\n frontPage.records.companyRecordCount = recordsCompany.recordCount;\r\n frontPage.records.companyDateRange = recordsCompany.dateRange;\r\n return {\r\n ...state,\r\n frontPage\r\n };\r\n }\r\n case storeTypes.FRONT_EVENTS:\r\n const frontEvents = action as storeTypes.IFrontEvents;\r\n return {\r\n ...state,\r\n event: frontEvents.event\r\n };\r\n case storeTypes.FRONT_MESSAGES: {\r\n const messages = action as storeTypes.IFrontMessages;\r\n const frontPage = new FrontPage(state.frontPage);\r\n frontPage.messages.dateRange = messages.dateRange;\r\n return {\r\n ...state,\r\n frontPage\r\n };\r\n }\r\n }\r\n return state;\r\n}\r\n\r\n// CalendarTasks\r\nfunction calendarTasks(state: storeTypes.ICalendarTasksState = null, action: storeTypes.CalendarTasksAction) {\r\n switch (action.type) {\r\n case storeTypes.CALENDARTASKS_SUCCESS:\r\n const calendarTasksSuccess = action as storeTypes.ICalendarTasksSuccess;\r\n return {\r\n ...state,\r\n dataId: state.dataId + 1,\r\n calendarTaskPage: calendarTasksSuccess.calendarTaskPage\r\n };\r\n case storeTypes.CALENDARTASKS_FAILURE:\r\n return { ...state };\r\n }\r\n return state;\r\n}\r\n\r\n// Documents\r\nfunction documents(state: storeTypes.IDocumentsState = null, action: storeTypes.DocumentsAction) {\r\n switch (action.type) {\r\n case storeTypes.DOCUMENTS_SUCCESS:\r\n const documentsSuccess = action as storeTypes.IDocumentsSuccess;\r\n return {\r\n ...state,\r\n dataId: state.dataId + 1,\r\n documentPage: documentsSuccess.documentPage\r\n };\r\n case storeTypes.DOCUMENTS_FAILURE:\r\n return { ...state };\r\n }\r\n return state;\r\n}\r\n\r\n// Events\r\nfunction events(state: storeTypes.IEventsState = null, action: storeTypes.EventsAction) {\r\n switch (action.type) {\r\n case storeTypes.EVENTS_SUCCESS:\r\n const eventsSuccess = action as storeTypes.IEventsSuccess;\r\n return {\r\n ...state,\r\n dataId: state.dataId + 1,\r\n eventPage: eventsSuccess.eventPage\r\n };\r\n case storeTypes.EVENTS_FAILURE:\r\n return { ...state };\r\n }\r\n return state;\r\n}\r\n\r\n// Records\r\nfunction records(state: storeTypes.IRecordsState = null, action: storeTypes.RecordsAction) {\r\n switch (action.type) {\r\n case storeTypes.RECORDS_SUCCESS:\r\n const recordsSuccess = action as storeTypes.IRecordsSuccess;\r\n return {\r\n ...state,\r\n dataId: state.dataId + 1,\r\n recordPage: recordsSuccess.recordPage\r\n };\r\n case storeTypes.RECORDS_FAILURE:\r\n return { ...state };\r\n }\r\n return state;\r\n}\r\n\r\n// Companies\r\nfunction companies(state: storeTypes.ICompaniesState = null, action: storeTypes.CompaniesAction) {\r\n switch (action.type) {\r\n case storeTypes.COMPANIES_SUCCESS:\r\n const companiesSuccess = action as storeTypes.ICompaniesSuccess;\r\n return {\r\n ...state,\r\n dataId: state.dataId + 1,\r\n companyPage: companiesSuccess.companyPage\r\n };\r\n case storeTypes.COMPANIES_FAILURE:\r\n return { ...state };\r\n }\r\n return state;\r\n}\r\n\r\n// CompanyGroups\r\nfunction companyGroups(state: storeTypes.ICompanyGroupsState = null, action: storeTypes.CompanyGroupsAction) {\r\n switch (action.type) {\r\n case storeTypes.COMPANYGROUP_SUCCESS:\r\n const companyGroupsSuccess = action as storeTypes.ICompanyGroupsSuccess;\r\n return {\r\n ...state,\r\n dataId: state.dataId + 1,\r\n companyGroupPage: companyGroupsSuccess.companyGroupPage\r\n };\r\n case storeTypes.COMPANYGROUP_FAILURE:\r\n return { ...state };\r\n }\r\n return state;\r\n}\r\n\r\n// Messages\r\nfunction messages(state: storeTypes.IMessagesState = null, action: storeTypes.MessagesAction) {\r\n switch (action.type) {\r\n case storeTypes.MESSAGES_SUCCESS:\r\n const messagesSuccess = action as storeTypes.IMessagesSuccess;\r\n return {\r\n ...state,\r\n dataId: state.dataId + 1,\r\n messagePage: messagesSuccess.messagePage\r\n };\r\n case storeTypes.MESSAGES_FAILURE:\r\n return { ...state };\r\n }\r\n return state;\r\n}\r\n\r\n// Tasks\r\nfunction tasks(state: storeTypes.ITasksState = null, action: storeTypes.TasksAction) {\r\n switch (action.type) {\r\n case storeTypes.TASKS_SUCCESS:\r\n const tasksSuccess = action as storeTypes.ITasksSuccess;\r\n return {\r\n ...state,\r\n dataId: state.dataId + 1,\r\n taskPage: tasksSuccess.taskPage\r\n };\r\n case storeTypes.TASKS_FAILURE:\r\n return { ...state };\r\n }\r\n return state;\r\n}\r\n\r\n// Users\r\nfunction users(state: storeTypes.IUsersState = null, action: storeTypes.UsersAction) {\r\n switch (action.type) {\r\n case storeTypes.USERS_SUCCESS:\r\n const usersSuccess = action as storeTypes.IUsersSuccess;\r\n return {\r\n ...state,\r\n dataId: state.dataId + 1,\r\n usersPage: usersSuccess.usersPage\r\n };\r\n case storeTypes.USERS_FAILURE:\r\n return { ...state };\r\n }\r\n return state;\r\n}\r\n\r\n// UserGroups\r\nfunction userGroups(state: storeTypes.IUserGroupsState = null, action: storeTypes.UserGroupsAction) {\r\n switch (action.type) {\r\n case storeTypes.USERGROUP_SUCCESS:\r\n const userGroupsSuccess = action as storeTypes.IUserGroupsSuccess;\r\n return {\r\n ...state,\r\n dataId: state.dataId + 1,\r\n userGroupPage: userGroupsSuccess.userGroupPage\r\n };\r\n case storeTypes.USERGROUP_FAILURE:\r\n return { ...state };\r\n }\r\n return state;\r\n}\r\n\r\n// Log\r\nfunction log(state: storeTypes.ILogState = null, action: storeTypes.LogAction) {\r\n switch (action.type) {\r\n case storeTypes.LOG_SUCCESS:\r\n const logSuccess = action as storeTypes.ILogSuccess;\r\n return {\r\n ...state,\r\n dataId: state.dataId + 1,\r\n logPage: logSuccess.logPage\r\n };\r\n case storeTypes.LOG_FAILURE:\r\n return { ...state };\r\n }\r\n return state;\r\n}\r\n\r\n// Instant Message\r\nfunction instantMessage(state: storeTypes.IInstantMessageState = null, action: storeTypes.InstantMessageAction) {\r\n switch (action.type) {\r\n case storeTypes.INSTANT_MESSAGE_SUCCESS:\r\n const instantMessageSuccess = action as storeTypes.IInstantMessageSuccess;\r\n return {\r\n ...state,\r\n dataId: state.dataId + 1,\r\n instantMessagePage: instantMessageSuccess.instantMessagePage\r\n };\r\n case storeTypes.INSTANT_MESSAGE_FAILURE:\r\n return { ...state };\r\n }\r\n return state;\r\n}\r\n\r\n// WhistleBlow\r\nfunction whistleBlow(state: storeTypes.IWhistleBlowState = null, action: storeTypes.WhistleBlowAction) {\r\n switch (action.type) {\r\n case storeTypes.WHISTLE_BLOW_SUCCESS:\r\n const whistleBlowSuccess = action as storeTypes.IWhistleBlowSuccess;\r\n return {\r\n ...state,\r\n dataId: state.dataId + 1,\r\n whistleBlowPage: whistleBlowSuccess.whistleBlowPage\r\n };\r\n case storeTypes.WHISTLE_BLOW_FAILURE:\r\n return { ...state };\r\n }\r\n return state;\r\n}\r\n/* eslint-enable no-case-declarations */\r\n\r\n// Root reducer\r\nexport const reducer = combineReducers({\r\n fetchCount,\r\n alert,\r\n confirmation,\r\n autoLogout,\r\n session,\r\n user,\r\n front,\r\n documents,\r\n events,\r\n records,\r\n companies,\r\n companyGroups,\r\n messages,\r\n tasks,\r\n users,\r\n userGroups,\r\n log,\r\n instantMessage,\r\n whistleBlow,\r\n calendarTasks\r\n});\r\n\r\nexport default reducer;","import { reducer, initialState } from \"../models/store/storeReducers\";\r\nimport { applyMiddleware, createStore } from \"redux\";\r\nimport thunk from \"redux-thunk\";\r\n\r\nexport const customStore = createStore(reducer, initialState, applyMiddleware(thunk));","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { EnumHelper, FrontPagePanelSize } from \"ui/Scripts/source/models/enums\";\r\nimport React, { ReactNode } from \"react\";\r\nimport { AppSettingsIcon } from \"source/components/framework/Icon/AppSettingsIcon\";\r\n\r\nexport interface IPagePanel {\r\n panelType: number;\r\n size: number;\r\n position: number;\r\n visible: boolean;\r\n\r\n getIconClass(): string;\r\n getIcon(): ReactNode;\r\n getTitle(): string;\r\n getId(): string;\r\n getDisabled(): boolean;\r\n}\r\n\r\nexport class PagePanel implements IPagePanel {\r\n panelType: number;\r\n size: number;\r\n position: number;\r\n visible: boolean;\r\n\r\n constructor();\r\n constructor(obj: IPagePanel);\r\n constructor(obj?: any) {\r\n this.panelType = obj && obj.panelType || 0;\r\n this.size = obj && obj.size || 0;\r\n this.position = obj && obj.position || 0;\r\n this.visible = obj && obj.visible || false;\r\n }\r\n\r\n getIconClass(): string {\r\n return \"properties\";\r\n }\r\n\r\n getIcon(): ReactNode {\r\n return React.createElement(AppSettingsIcon);\r\n }\r\n\r\n getTitle(): string {\r\n return this.panelType.toString(10);\r\n }\r\n\r\n getId(): string {\r\n return this.panelType.toString(10);\r\n }\r\n\r\n getDisabled(): boolean {\r\n return false;\r\n }\r\n\r\n static swapPagePanels(list: IPagePanel[], startIndex, endIndex) {\r\n const result = list.slice(0);\r\n const [removed] = result.splice(startIndex, 1);\r\n result.splice(endIndex, 0, removed);\r\n return result;\r\n };\r\n \r\n static getPanelSizeClass(panelSize: number): string {\r\n return \"panelContainer \" +\r\n (EnumHelper.isEqual(panelSize, FrontPagePanelSize.OneXTwo) || EnumHelper.isEqual(panelSize, FrontPagePanelSize.TwoXTwo) ? \"hp100\" : \"hp50\") + \" \" +\r\n (EnumHelper.isEqual(panelSize, FrontPagePanelSize.TwoXOne) || EnumHelper.isEqual(panelSize, FrontPagePanelSize.TwoXTwo) ? \"col-xl-8\" : \"col-xl-4\");\r\n };\r\n \r\n static sortPagePanels(items: IPagePanel[]): IPagePanel[] {\r\n if (!items && items.length < 2) return items;\r\n return items.sort((a: IPagePanel, b: IPagePanel) => {\r\n if (!a || !b) return 0;\r\n return Base.numCompare(a.position, b.position);\r\n });\r\n }\r\n}","import { OptionDataType } from \"ui/Scripts/source/models/enums\";\r\n\r\nexport interface ITypedOption {\r\n code: string;\r\n dataType: OptionDataType;\r\n value: string;\r\n}\r\n\r\nexport class TypedOption implements ITypedOption {\r\n code: string;\r\n dataType: OptionDataType;\r\n value: string;\r\n\r\n constructor();\r\n constructor(obj: ITypedOption);\r\n constructor(obj?: any) {\r\n this.code = obj && obj.code || \"\";\r\n this.dataType = obj && obj.dataType || OptionDataType.String;\r\n this.value = obj && obj.value || \"\";\r\n }\r\n\r\n static getHash(options: ITypedOption[]): string {\r\n if (!options || options.length < 1) return \"\";\r\n return options.map(i => i.code + \"#\" + i.value).join(\"$\");\r\n }\r\n\r\n static getStrValue(options: ITypedOption[], code: string, defaultValue: string = \"\"): string {\r\n if (!options || options.length < 1) return defaultValue;\r\n const option = options.find(i => i.code === code.toLowerCase());\r\n if (!option) return defaultValue;\r\n return option.value;\r\n }\r\n\r\n static getBooleanValue(options: ITypedOption[], code: string, defaultValue: boolean = false): boolean {\r\n if (!options || options.length < 1) return defaultValue;\r\n const option = options.find(i => i.code.toLowerCase() === code.toLowerCase());\r\n if (!option) return defaultValue;\r\n return option.value === \"1\";\r\n }\r\n\r\n static getIntValue(options: ITypedOption[], code: string, defaultValue: number = 0): number {\r\n if (!options || options.length < 1) return defaultValue;\r\n const option = options.find(i => i.code.toLowerCase() === code.toLowerCase());\r\n if (!option) return defaultValue;\r\n return parseInt(option.value);\r\n }\r\n\r\n static createTypedOption(code: string, dataType: OptionDataType, value: string): ITypedOption {\r\n const result = new TypedOption();\r\n result.code = code.toLowerCase();\r\n result.dataType = dataType;\r\n result.value = value;\r\n return result;\r\n }\r\n}\r\n\r\nexport class TypedOptionSave {\r\n code: string;\r\n value: string;\r\n\r\n constructor();\r\n constructor(obj: ITypedOption);\r\n constructor(obj?: any) {\r\n this.code = obj && obj.code || \"\";\r\n this.value = obj && obj.value || \"\";\r\n }\r\n}","export interface IFrontPageBannerImage {\r\n id: string;\r\n link: string;\r\n image: string;\r\n}\r\n\r\nexport class FrontPageBannerImage implements IFrontPageBannerImage {\r\n id: string;\r\n link: string;\r\n image: string;\r\n\r\n constructor();\r\n constructor(obj: IFrontPageBannerImage);\r\n constructor(obj?: any) {\r\n this.id = obj && obj.id || \"\";\r\n this.link = obj && obj.link || \"\";\r\n this.image = obj && obj.image || \"\";\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { FrontPageBannerImage, IFrontPageBannerImage } from \"./frontPageBannerImage\";\r\n\r\nexport interface IFrontPageBanner {\r\n images: IFrontPageBannerImage[];\r\n imageChangeInterval: number;\r\n}\r\n\r\nexport class FrontPageBanner implements IFrontPageBanner {\r\n images: FrontPageBannerImage[];\r\n imageChangeInterval: number;\r\n\r\n constructor();\r\n constructor(obj: IFrontPageBanner);\r\n constructor(obj?: any) {\r\n this.imageChangeInterval = obj && obj.imageChangeInterval || 0;\r\n this.images = Base.getTypedArray(obj ? obj.images : null, FrontPageBannerImage);\r\n }\r\n}","import { FrontPagePanelType } from \"ui/Scripts/source/models/enums\";\r\nimport { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { IPagePanel, PagePanel } from \"../common/pagePanel\";\r\n\r\nexport class FrontPagePanel extends PagePanel implements IPagePanel {\r\n getTitle(): string {\r\n switch (this.panelType) {\r\n case FrontPagePanelType.Banner:\r\n return Translations.Banner;\r\n case FrontPagePanelType.Message:\r\n return Translations.CurrentTopics;\r\n case FrontPagePanelType.Event:\r\n return Translations.Events;\r\n case FrontPagePanelType.Image:\r\n return Translations.Images;\r\n case FrontPagePanelType.UserModifiedRecords:\r\n return Translations.MyLastModifications;\r\n case FrontPagePanelType.OtherModifiedRecords:\r\n return Translations.OthersLastModifications;\r\n case FrontPagePanelType.ToDo:\r\n return Translations.ToDo;\r\n default:\r\n return \"\";\r\n }\r\n }\r\n}","export interface IFrontPageRecords {\r\n userRecordCount: number;\r\n userDateRange: number;\r\n companyRecordCount: number;\r\n companyDateRange: number;\r\n}\r\n\r\nexport class FrontPageRecords implements IFrontPageRecords {\r\n userRecordCount: number;\r\n userDateRange: number;\r\n companyRecordCount: number;\r\n companyDateRange: number;\r\n\r\n constructor();\r\n constructor(obj: IFrontPageRecords);\r\n constructor(obj?: any) {\r\n this.userRecordCount = obj && obj.userRecordCount || 0;\r\n this.userDateRange = obj && obj.userDateRange || 0;\r\n this.companyRecordCount = obj && obj.companyRecordCount || 0;\r\n this.companyDateRange = obj && obj.companyDateRange || 0;\r\n }\r\n}","export interface IFrontPageMessages {\r\n dateRange: number;\r\n}\r\n\r\nexport class FrontPageMessages implements IFrontPageMessages {\r\n dateRange: number;\r\n\r\n constructor();\r\n constructor(obj: IFrontPageMessages);\r\n constructor(obj?: any) {\r\n this.dateRange = obj && obj.dateRange || 0;\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { IPagePanel } from \"../common/pagePanel\";\r\nimport { FrontPageBanner, IFrontPageBanner } from \"./frontPageBanner\";\r\nimport { FrontPageImages, IFrontPageImages } from \"./frontPageImages\";\r\nimport { FrontPagePanel } from \"./frontPagePanel\";\r\nimport { FrontPageRecords, IFrontPageRecords } from \"./frontPageRecords\";\r\nimport { FrontPageMessages, IFrontPageMessages } from \"./frontPageMessages\";\r\n\r\nexport interface IFrontPage {\r\n panels: IPagePanel[];\r\n banner: IFrontPageBanner;\r\n images: IFrontPageImages;\r\n records: IFrontPageRecords;\r\n messages: IFrontPageMessages;\r\n}\r\n\r\nexport class FrontPage implements IFrontPage {\r\n panels: FrontPagePanel[];\r\n banner: FrontPageBanner;\r\n images: FrontPageImages;\r\n records: FrontPageRecords;\r\n messages: FrontPageMessages;\r\n\r\n constructor();\r\n constructor(obj: IFrontPage);\r\n constructor(obj?: any) {\r\n this.panels = Base.getTypedArray(obj ? obj.panels : null, FrontPagePanel);\r\n this.banner = new FrontPageBanner(obj && obj.banner || null);\r\n this.images = new FrontPageImages(obj && obj.images || null);\r\n this.records = new FrontPageRecords(obj && obj.records || null);\r\n this.messages = new FrontPageMessages(obj && obj.messages || null);\r\n }\r\n}","import { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { FileAttachment, IFileAttachment } from \"ui/Scripts/source/models/common/fileAttachment\";\r\n\r\nexport interface IFrontPageImages {\r\n defaultImage: string;\r\n images: IFileAttachment[];\r\n imageChangeInterval: number;\r\n}\r\n\r\nexport class FrontPageImages implements IFrontPageImages {\r\n defaultImage: string;\r\n images: FileAttachment[];\r\n imageChangeInterval: number;\r\n\r\n constructor();\r\n constructor(obj: IFrontPageImages);\r\n constructor(obj?: any) {\r\n this.defaultImage = obj && obj.defaultImage || \"\";\r\n this.imageChangeInterval = obj && obj.imageChangeInterval || 0;\r\n this.images = Base.getTypedArray(obj ? obj.images : null, FileAttachment);\r\n }\r\n}","export interface IApiError {\r\n status: number;\r\n message: string;\r\n}\r\n\r\nexport class ApiError implements IApiError {\r\n status: number;\r\n message: string;\r\n\r\n constructor();\r\n constructor(obj: IApiError);\r\n constructor(obj?: any) {\r\n this.status = obj && obj.status || 200;\r\n this.message = obj && obj.message || \"\";\r\n }\r\n}","/* global HeadersInit, RequestInit */\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ApiError, IApiError } from \"ui/Scripts/source/models/common/apiError\";\r\nimport * as store from \"../../framework/customStore\";\r\nimport * as storeActions from \"../store/storeActions\";\r\nimport downloadjs from \"downloadjs\";\r\n\r\nexport function isInstanceOfIApiError(object: any): object is IApiError {\r\n return object && !(typeof(object) === \"string\") && \"status\" in object && \"message\" in object && typeof(object?.status) === \"number\" && typeof(object?.message) === \"string\";\r\n}\r\n\r\nexport function getErrorMessageFromError(error: any): string {\r\n if (isInstanceOfIApiError(error)) {\r\n return error.message;\r\n } else {\r\n return error;\r\n }\r\n}\r\n\r\nfunction getErrorMessageFromBody(text: string): string {\r\n if (Base.isJsonString(text)) {\r\n const obj = JSON.parse(text);\r\n const message = !Base.isNullOrEmpty(obj?.message) ? obj?.message : (!Base.isNullOrEmpty(obj?.Message) ? obj?.Message : text);\r\n return message;\r\n } else {\r\n return text;\r\n }\r\n}\r\n\r\nfunction getJsonHeaders(body: string): HeadersInit {\r\n return {\r\n \"Accept\": \"application/json\",\r\n \"Content-Type\": \"application/json;charset=utf-8\",\r\n \"Content-Length\": (body ? body.length : 0).toString(10),\r\n };\r\n}\r\n\r\nfunction getFormDataHeaders(): HeadersInit {\r\n return {\r\n \"Accept\": \"application/json\",\r\n };\r\n}\r\n\r\nexport function getJsonRequestInit(signal: AbortSignal = null, method: string = \"GET\", body: string = null): RequestInit {\r\n return body\r\n ? {\r\n credentials: \"include\",\r\n headers: getJsonHeaders(body),\r\n body,\r\n method,\r\n signal\r\n }\r\n : {\r\n credentials: \"include\",\r\n headers: getJsonHeaders(null),\r\n method,\r\n signal\r\n };\r\n}\r\n\r\nexport function getFormDataRequestInit(signal: AbortSignal = null, method: string = \"GET\", body: FormData = null): RequestInit {\r\n return {\r\n credentials: \"include\",\r\n headers: getFormDataHeaders(),\r\n body,\r\n method,\r\n signal\r\n };\r\n}\r\n\r\nexport const portalSessionExtendInterval = 60; //60 s\r\nlet portalSessionExtendTime = 0;\r\n\r\nexport const extendPortalSession = async (): Promise => {\r\n const nowTime = new Date().getTime();\r\n if (appConfig.sessionExtendUrl || (portalSessionExtendTime && portalSessionExtendTime + portalSessionExtendInterval * 1000 >= nowTime)) {\r\n return new Promise((resolve) => { resolve(); });\r\n }\r\n try {\r\n await handleResponse(await fetch(appConfig.sessionExtendUrl, getJsonRequestInit()), false);\r\n portalSessionExtendTime = new Date().getTime();\r\n return 0;\r\n } catch (e) {\r\n return handleError(e);\r\n }\r\n};\r\n\r\nlet autoLogoutTimer = 0;\r\nexport const autoLogoutDialogDuration = 30; //30 s\r\n\r\nfunction clearAutoLogoutTimer() {\r\n if (!autoLogoutTimer) return;\r\n clearTimeout(autoLogoutTimer);\r\n autoLogoutTimer = 0;\r\n}\r\n\r\nconst verifyAutoLogout = async (): Promise => {\r\n if (!appConfig.verifyAutoLogoutUrl) return true;\r\n try {\r\n const json = await handleResponse(await fetch(appConfig.verifyAutoLogoutUrl, getJsonRequestInit()), false);\r\n return !!json.isSuccess;\r\n } catch (e) {\r\n return handleError(e);\r\n }\r\n};\r\n\r\nexport function resetAutoLogoutTimer() {\r\n const timeout = appConfig.authenticationTimeout * 60 * 1000 - (2 * autoLogoutDialogDuration * 1000) - (2 * portalSessionExtendInterval * 1000);\r\n clearAutoLogoutTimer();\r\n store.customStore.dispatch(storeActions.autoLogoutClear());\r\n if (timeout >= 0) {\r\n autoLogoutTimer = window.setTimeout(async () => {\r\n if (await verifyAutoLogout()) {\r\n store.customStore.dispatch(storeActions.autoLogoutSet());\r\n } else {\r\n resetAutoLogoutTimer();\r\n }\r\n }, timeout);\r\n }\r\n extendPortalSession();\r\n}\r\n\r\nexport function handleResponse(response: Response, resetAutoLogout: boolean = true): any {\r\n console.log(response);\r\n return new Promise((resolve, reject) => {\r\n if (response.ok) {\r\n // redirect to login if necessary\r\n if (response.redirected && response.url.includes(\"/Account/Login\")) {\r\n window.location.href = appConfig.rootUrl + \"Front\";\r\n //window.location.href = appConfig.loginUrl;\r\n resolve();\r\n } else {\r\n if (resetAutoLogout) {\r\n resetAutoLogoutTimer();\r\n }\r\n // return json if it was returned in the response\r\n const contentType = response.headers.get(\"content-type\");\r\n if (contentType && contentType.includes(\"application/json\")) {\r\n response.json().then(json => resolve(json));\r\n } else {\r\n resolve();\r\n }\r\n }\r\n } else {\r\n // return error message\r\n const error = new ApiError();\r\n error.status = response.status;\r\n response.text().then(text => {\r\n error.message = getErrorMessageFromBody(text);\r\n reject(error);\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport function handleFileBlobResponse(response: Response): Promise {\r\n console.log(response);\r\n return new Promise((resolve, reject) => {\r\n if (response.ok) {\r\n resetAutoLogoutTimer();\r\n return resolve(response.blob());\r\n } else {\r\n // return error message\r\n const error = new ApiError();\r\n error.status = response.status;\r\n response.text().then(text => {\r\n error.message = getErrorMessageFromBody(text);\r\n reject(error);\r\n });\r\n return null;\r\n }\r\n });\r\n}\r\n\r\nexport function handleFileResponse(response: Response): any {\r\n console.log(response);\r\n let filename: string;\r\n return new Promise((resolve, reject) => {\r\n if (response.ok) {\r\n resetAutoLogoutTimer();\r\n filename = response.headers.get(\"content-disposition\");\r\n console.log(filename);\r\n if (filename && filename.indexOf(\"attachment\") !== -1) {\r\n const filenameRegex = /filename\\*[^;=\\n]*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/ig;\r\n const matches = filenameRegex.exec(filename);\r\n if (matches != null && matches.length > 3 && matches[3]) {\r\n filename = matches[3].replace(/['\"]/g, \"\");\r\n filename = decodeURIComponent(filename);\r\n }\r\n }\r\n return resolve(response.blob());\r\n } else {\r\n // return error message\r\n const error = new ApiError();\r\n error.status = response.status;\r\n response.text().then(text => {\r\n error.message = getErrorMessageFromBody(text);\r\n reject(error);\r\n });\r\n return null;\r\n }\r\n }).then(body => {\r\n downloadjs(body as Blob, filename, \"application/octet-stream\");\r\n return new Promise((resolve) => {\r\n return resolve(filename);\r\n });\r\n });\r\n}\r\n\r\nexport function appIsUpdated(error): boolean {\r\n if (!error) return false;\r\n const message: string = Base.isString(error)\r\n ? error\r\n : (Base.isString(error.message)\r\n ? error.message\r\n : \"\");\r\n if (message && message.indexOf('data-update-page=\"app_offline.htm\"') > -1) {\r\n location.reload();\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function handleError(error) {\r\n console.log(error);\r\n const isAborted = error && error.name === \"AbortError\";\r\n if (appIsUpdated(error)) {\r\n return;\r\n }\r\n return Promise.reject(isAborted ? null : error && error.message);\r\n}","export interface ICodeNameUrl {\r\n code: string;\r\n name: string;\r\n url: string;\r\n}\r\n\r\nexport class CodeNameUrl implements ICodeNameUrl {\r\n code: string;\r\n name: string;\r\n url: string;\r\n\r\n constructor();\r\n constructor(obj: ICodeNameUrl);\r\n constructor(obj?: any) {\r\n this.code = obj && obj.code || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.url = obj && obj.url || \"\";\r\n }\r\n}","import { Translations } from \"ui/Scripts/source/models/translations\";\r\nimport { ICodeNameUrl, CodeNameUrl } from \"../common/codeNameUrl\";\r\nimport { Base } from \"ui/Scripts/source/framework/base\";\r\nimport { ITypedOption, TypedOption } from \"../common/typedOption\";\r\nimport { userParameterShowPageNavigation } from \"ui/Scripts/source/models/consts\";\r\nimport { OptionDataType } from \"ui/Scripts/source/models/enums\";\r\nimport { CompanyMenuItem, ICompanyMenuItem } from \"ui/Scripts/source/models/company/companyMenuItem\";\r\n\r\nexport interface ISessionState {\r\n refreshTime: number;\r\n id: string;\r\n code: string;\r\n name: string;\r\n image: string;\r\n companyId: string;\r\n companyName: string;\r\n companyLogo: string;\r\n companyLogoSquare: string;\r\n culture: string;\r\n isCompanyAdmin: boolean;\r\n isCompanyWhistleBlowAdmin: boolean;\r\n isSuperAdmin: boolean;\r\n canUseMessages: boolean;\r\n canUseDocuments: boolean;\r\n canUseEvents: boolean;\r\n canUseTasks: boolean;\r\n canUseRecords: boolean;\r\n canUseOwnRecord: boolean;\r\n canUseCompanyGroups: boolean;\r\n canUseCompanies: boolean;\r\n canUseUserGroups: boolean;\r\n canUseUsers: boolean;\r\n canUseLogs: boolean;\r\n canUseInstantMessages: boolean;\r\n canManageInstantMessagePermissions: boolean;\r\n canUseWhistleBlow: boolean;\r\n canUseCalendarTasks: boolean;\r\n allowedCompanies: ICompanyMenuItem[];\r\n intraModules: ICodeNameUrl[];\r\n intraRestModules: ICodeNameUrl[];\r\n externalSystems: ICodeNameUrl[];\r\n userParameters: ITypedOption[];\r\n\r\n canUseSystem(): boolean;\r\n canExternalSystems(): boolean;\r\n isExpired(): boolean;\r\n getShowPageNavigation(): boolean;\r\n}\r\n\r\nexport class SessionState implements ISessionState {\r\n refreshTime: number;\r\n id: string;\r\n code: string;\r\n name: string;\r\n image: string;\r\n companyId: string;\r\n companyName: string;\r\n companyLogo: string;\r\n companyLogoSquare: string;\r\n culture: string;\r\n isCompanyAdmin: boolean;\r\n isCompanyWhistleBlowAdmin: boolean;\r\n isSuperAdmin: boolean;\r\n canUseMessages: boolean;\r\n canUseDocuments: boolean;\r\n canUseEvents: boolean;\r\n canUseTasks: boolean;\r\n canUseRecords: boolean;\r\n canUseOwnRecord: boolean;\r\n canUseCompanyGroups: boolean;\r\n canUseCompanies: boolean;\r\n canUseUserGroups: boolean;\r\n canUseUsers: boolean;\r\n canUseLogs: boolean;\r\n canUseInstantMessages: boolean;\r\n canManageInstantMessagePermissions: boolean;\r\n canUseWhistleBlow: boolean;\r\n canUseCalendarTasks: boolean;\r\n allowedCompanies: CompanyMenuItem[];\r\n intraModules: CodeNameUrl[];\r\n intraRestModules: CodeNameUrl[];\r\n externalSystems: CodeNameUrl[];\r\n userParameters: TypedOption[];\r\n\r\n constructor();\r\n constructor(obj: ISessionState);\r\n constructor(obj?: any) {\r\n this.refreshTime = obj && obj.refreshTime || 0;\r\n this.id = obj && obj.id || \"\";\r\n this.code = obj && obj.code || \"\";\r\n this.name = obj && obj.name || \"\";\r\n this.image = obj && obj.image || \"\";\r\n this.companyId = obj && obj.companyId || \"\";\r\n this.companyName = obj && obj.companyName || \"\";\r\n this.companyLogo = obj && obj.companyLogo || \"\";\r\n this.companyLogoSquare = obj && obj.companyLogoSquare || \"\";\r\n this.culture = obj && obj.culture || \"\";\r\n this.isCompanyAdmin = obj && obj.isCompanyAdmin || false;\r\n this.isCompanyWhistleBlowAdmin = obj && obj.isCompanyWhistleBlowAdmin || false;\r\n this.isSuperAdmin = obj && obj.isSuperAdmin || false;\r\n this.canUseMessages = obj && obj.canUseMessages || false;\r\n this.canUseDocuments = obj && obj.canUseDocuments || false;\r\n this.canUseEvents = obj && obj.canUseEvents || false;\r\n this.canUseTasks = obj && obj.canUseTasks || false;\r\n this.canUseRecords = obj && obj.canUseRecords || false;\r\n this.canUseOwnRecord = obj && obj.canUseOwnRecord || false;\r\n this.canUseCompanyGroups = obj && obj.canUseCompanyGroups || false;\r\n this.canUseCompanies = obj && obj.canUseCompanies || false;\r\n this.canUseUserGroups = obj && obj.canUseUserGroups || false;\r\n this.canUseUsers = obj && obj.canUseUsers || false;\r\n this.canUseLogs = obj && obj.canUseLogs || false;\r\n this.canUseInstantMessages = obj && obj.canUseInstantMessages || false;\r\n this.canManageInstantMessagePermissions = obj && obj.canManageInstantMessagePermissions || false;\r\n this.canUseWhistleBlow = obj && obj.canUseWhistleBlow || false;\r\n this.canUseCalendarTasks = obj && obj.canUseCalendarTasks || false;\r\n this.allowedCompanies = Base.getTypedArray(obj ? obj.allowedCompanies : null, CompanyMenuItem);\r\n this.intraModules = Base.getTypedArray(obj ? obj.intraModules : null, CodeNameUrl);\r\n this.intraRestModules = Base.getTypedArray(obj ? obj.intraRestModules : null, CodeNameUrl);\r\n this.externalSystems = Base.getTypedArray(obj ? obj.externalSystems : null, CodeNameUrl);\r\n this.userParameters = Base.getTypedArray(obj ? obj.userParameters : null, TypedOption);\r\n }\r\n \r\n canUseSystem(): boolean {\r\n return this.canUseMessages ||\r\n this.canUseDocuments ||\r\n this.canUseEvents ||\r\n this.canUseTasks ||\r\n this.canUseRecords ||\r\n this.canUseOwnRecord ||\r\n this.canUseCompanyGroups ||\r\n this.canUseCompanies ||\r\n this.canUseUserGroups ||\r\n this.canUseUsers ||\r\n this.canUseLogs ||\r\n this.canUseInstantMessages ||\r\n this.canUseWhistleBlow ||\r\n this.canUseCalendarTasks;\r\n }\r\n \r\n canExternalSystems(): boolean {\r\n return this.intraModules.length > 0 || this.intraRestModules.length > 0 || this.externalSystems.length > 0;\r\n }\r\n\r\n isExpired(): boolean {\r\n const currentTime = (new Date()).getTime();\r\n return currentTime >= new Date(this.refreshTime).addMinutes(appConfig.authenticationTimeout).getTime();\r\n }\r\n\r\n setUserParameters(newUserParameters: TypedOption[]) {\r\n const userParameters = this.userParameters.slice(0);\r\n for (const newParameter of newUserParameters) {\r\n const oldParameter = userParameters.find(i => i.code.toLowerCase() === newParameter.code.toLowerCase());\r\n if (oldParameter) {\r\n oldParameter.value = newParameter.value;\r\n } else {\r\n userParameters.push(newParameter);\r\n }\r\n }\r\n this.userParameters = userParameters;\r\n }\r\n\r\n getShowPageNavigation(): boolean {\r\n return TypedOption.getBooleanValue(this.userParameters, userParameterShowPageNavigation, false);\r\n }\r\n\r\n static setShowPageNavigation(value: boolean, onSaveUserParameters: (parameters: ITypedOption[]) => void) {\r\n onSaveUserParameters([TypedOption.createTypedOption(userParameterShowPageNavigation, OptionDataType.Boolean, value ? \"1\" : \"0\")]);\r\n }\r\n\r\n static initialize(): ISessionState {\r\n if (appConfig.sessionState) {\r\n const result = new SessionState(JSON.parse(appConfig.sessionState));\r\n result.refreshTime = (new Date()).getTime();\r\n result.culture = appConfig.culture;\r\n Translations.setCulture(appConfig.culture);\r\n return result;\r\n }\r\n return null;\r\n }\r\n}","import * as storeTypes from \"./storeTypes\";\r\nimport { ISessionState } from \"../session/sessionState\";\r\nimport { IFrontPage } from \"../front/frontPage\";\r\nimport { ILogPage } from \"../log/logPage\";\r\nimport { IFrontPageImages } from \"../front/frontPageImages\";\r\nimport { IFrontEventState } from \"./storeTypes\";\r\nimport { IUsersPage } from \"../user/usersPage\";\r\nimport { IUserGroupPage } from \"../userGroup/userGroupPage\";\r\nimport { ICompanyPage } from \"../company/companyPage\";\r\nimport { IRecordPage } from \"../record/recordPage\";\r\nimport { IInstantMessagePage } from \"../instantMessage/instantMessagePage\";\r\nimport { IWhistleBlowPage } from \"../whistleBlow/whistleBlowPage\";\r\nimport { IInstantMessageListItem } from \"ui/Scripts/source/models/instantMessage/instantMessageListItem\";\r\nimport { IEventPage } from \"../event/eventPage\";\r\nimport { ITaskPage } from \"../task\";\r\nimport { IMessagePage } from \"../message/messagePage\";\r\nimport { IDocumentPage } from \"../document/documentPage\";\r\nimport { ICompanyGroupPage } from \"../companyGroup/companyGroupPage\";\r\nimport { ICalendarTaskPage } from \"../calendarTask/calendarTaskPage\";\r\n\r\n// Action creators\r\n\r\n// Fetch\r\nexport const fetchStart = (): storeTypes.IFetchStart => ({\r\n type: storeTypes.FETCH_START\r\n});\r\n\r\nexport const fetchEnd = (): storeTypes.IFetchEnd => ({\r\n type: storeTypes.FETCH_END\r\n});\r\n\r\n// Alert\r\nexport const showSuccessMessage = (message: string): storeTypes.IAlertSuccess => ({\r\n type: storeTypes.ALERT_SUCCESS,\r\n message\r\n});\r\n\r\nexport const showInfoMessage = (message: string): storeTypes.IAlertInfo => ({\r\n type: storeTypes.ALERT_INFO,\r\n message\r\n});\r\n\r\nexport const showErrorMessage = (message: string): storeTypes.IAlertError => ({\r\n type: storeTypes.ALERT_ERROR,\r\n message\r\n});\r\n\r\nexport const clearMessages = (): storeTypes.IAlertClear => ({\r\n type: storeTypes.ALERT_CLEAR\r\n});\r\n\r\nexport const clearSuccessMessage = (): storeTypes.IAlertSuccessClear => ({\r\n type: storeTypes.ALERT_SUCCESS_CLEAR\r\n});\r\n\r\nexport const clearInfoMessage = (): storeTypes.IAlertInfoClear => ({\r\n type: storeTypes.ALERT_INFO_CLEAR\r\n});\r\n\r\n// Confirmation\r\nexport const setConfirmation = (type: storeTypes.ConfirmationDialogType, title: string, text: string, onYes: storeTypes.IConfirmationCallback, onNo: storeTypes.IConfirmationCallback, onCancel: storeTypes.IConfirmationCallback = null, yesConfirmationText: string = null): storeTypes.IConfirmationSet => ({\r\n type: storeTypes.CONFIRMATION_SET,\r\n dialogType: type,\r\n title,\r\n text,\r\n show: true,\r\n yesConfirmationText,\r\n onYes,\r\n onNo,\r\n onCancel\r\n});\r\n\r\nexport const clearConfirmation = (): storeTypes.IConfirmationClear => ({\r\n type: storeTypes.CONFIRMATION_CLEAR\r\n});\r\n\r\n// AutoLogout\r\nexport const autoLogoutSet = (): storeTypes.IAutoLogoutSet => ({\r\n type: storeTypes.AUTOLOGOUT_SET\r\n});\r\n\r\nexport const autoLogoutClear = (): storeTypes.IAutoLogoutClear => ({\r\n type: storeTypes.AUTOLOGOUT_CLEAR\r\n});\r\n\r\n// Session\r\nexport const setSessionsState = (sessionState: ISessionState): storeTypes.ISetSessionState => ({\r\n type: storeTypes.SESSION_SET_STATE,\r\n sessionState\r\n});\r\n\r\nexport const setNewInstantMessages = (newInstantMessages: IInstantMessageListItem[]): storeTypes.ISetNewInstantMessages => ({\r\n type: storeTypes.NEW_INSTANT_MESSAGES_SET,\r\n newInstantMessages\r\n});\r\n\r\n// User\r\nexport const loginSuccess = (): storeTypes.IUserLoginSuccess => ({\r\n type: storeTypes.USER_LOGIN_SUCCESS\r\n});\r\n\r\nexport const loginFailure = (): storeTypes.IUserLoginFailure => ({\r\n type: storeTypes.USER_LOGIN_FAILURE\r\n});\r\n\r\nexport const logoutSuccess = (): storeTypes.IUserLogoutSuccess => ({\r\n type: storeTypes.USER_LOGOUT_SUCCESS\r\n});\r\n\r\n// Front\r\nexport const frontSuccess = (frontPage: IFrontPage): storeTypes.IFrontSuccess => ({\r\n type: storeTypes.FRONT_SUCCESS,\r\n frontPage\r\n});\r\n\r\nexport const frontFailure = (): storeTypes.IFrontFailure => ({\r\n type: storeTypes.FRONT_FAILURE\r\n});\r\n\r\nexport const frontSetImages = (images: IFrontPageImages): storeTypes.IFrontImages => ({\r\n type: storeTypes.FRONT_IMAGES,\r\n images\r\n});\r\n\r\nexport const frontSetBannerImageChangeInterval = (interval: number): storeTypes.IFrontBannerInterval => ({\r\n type: storeTypes.FRONT_BANNER_INTERVAL,\r\n interval\r\n});\r\n\r\nexport const frontSetRecordsUser = (recordCount: number, dateRange: number): storeTypes.IFrontRecordsUser => ({\r\n type: storeTypes.FRONT_RECORDS_USER,\r\n recordCount,\r\n dateRange\r\n});\r\n\r\nexport const frontSetRecordsCompany = (recordCount: number, dateRange: number): storeTypes.IFrontRecordsCompany => ({\r\n type: storeTypes.FRONT_RECORDS_COMPANY,\r\n recordCount,\r\n dateRange\r\n});\r\n\r\nexport const frontSetEvents = (event: IFrontEventState): storeTypes.IFrontEvents => ({\r\n type: storeTypes.FRONT_EVENTS,\r\n event\r\n});\r\n\r\nexport const frontSetMessages = (dateRange: number): storeTypes.IFrontMessages => ({\r\n type: storeTypes.FRONT_MESSAGES,\r\n dateRange\r\n});\r\n\r\n// Documents\r\nexport const documentsSuccess = (documentPage: IDocumentPage): storeTypes.IDocumentsSuccess => ({\r\n type: storeTypes.DOCUMENTS_SUCCESS,\r\n documentPage\r\n});\r\n\r\nexport const documentsFailure = (): storeTypes.IDocumentsFailure => ({\r\n type: storeTypes.DOCUMENTS_FAILURE\r\n});\r\n\r\n// Events\r\nexport const eventsSuccess = (eventPage: IEventPage): storeTypes.IEventsSuccess => ({\r\n type: storeTypes.EVENTS_SUCCESS,\r\n eventPage\r\n});\r\n\r\nexport const eventsFailure = (): storeTypes.IEventsFailure => ({\r\n type: storeTypes.EVENTS_FAILURE\r\n});\r\n\r\n// Records\r\nexport const recordsSuccess = (recordPage: IRecordPage): storeTypes.IRecordsSuccess => ({\r\n type: storeTypes.RECORDS_SUCCESS,\r\n recordPage\r\n});\r\n\r\nexport const recordsFailure = (): storeTypes.IRecordsFailure => ({\r\n type: storeTypes.RECORDS_FAILURE\r\n});\r\n\r\n// Companies\r\nexport const companiesSuccess = (companyPage: ICompanyPage): storeTypes.ICompaniesSuccess => ({\r\n type: storeTypes.COMPANIES_SUCCESS,\r\n companyPage\r\n});\r\n\r\nexport const companiesFailure = (): storeTypes.ICompaniesFailure => ({\r\n type: storeTypes.COMPANIES_FAILURE\r\n});\r\n\r\n// CompanyGroups\r\nexport const companyGroupsSuccess = (companyGroupPage: ICompanyGroupPage): storeTypes.ICompanyGroupsSuccess => ({\r\n type: storeTypes.COMPANYGROUP_SUCCESS,\r\n companyGroupPage\r\n});\r\n\r\nexport const companyGroupsFailure = (): storeTypes.ICompanyGroupsFailure => ({\r\n type: storeTypes.COMPANYGROUP_FAILURE\r\n});\r\n\r\n// Messages\r\nexport const messagesSuccess = (messagePage: IMessagePage): storeTypes.IMessagesSuccess => ({\r\n type: storeTypes.MESSAGES_SUCCESS,\r\n messagePage\r\n});\r\n\r\nexport const messagesFailure = (): storeTypes.IMessagesFailure => ({\r\n type: storeTypes.MESSAGES_FAILURE\r\n});\r\n\r\n// Tasks\r\nexport const tasksSuccess = (taskPage: ITaskPage): storeTypes.ITasksSuccess => ({\r\n type: storeTypes.TASKS_SUCCESS,\r\n taskPage\r\n});\r\n\r\nexport const tasksFailure = (): storeTypes.ITasksFailure => ({\r\n type: storeTypes.TASKS_FAILURE\r\n});\r\n\r\n// Users\r\nexport const usersSuccess = (usersPage: IUsersPage): storeTypes.IUsersSuccess => ({\r\n type: storeTypes.USERS_SUCCESS,\r\n usersPage\r\n});\r\n\r\nexport const usersFailure = (): storeTypes.IUsersFailure => ({\r\n type: storeTypes.USERS_FAILURE\r\n});\r\n\r\n// UserGroups\r\nexport const userGroupsSuccess = (userGroupPage: IUserGroupPage): storeTypes.IUserGroupsSuccess => ({\r\n type: storeTypes.USERGROUP_SUCCESS,\r\n userGroupPage\r\n});\r\n\r\nexport const userGroupsFailure = (): storeTypes.IUserGroupsFailure => ({\r\n type: storeTypes.USERGROUP_FAILURE\r\n});\r\n\r\n// Log\r\nexport const logSuccess = (logPage: ILogPage): storeTypes.ILogSuccess => ({\r\n type: storeTypes.LOG_SUCCESS,\r\n logPage\r\n});\r\n\r\nexport const logFailure = (): storeTypes.ILogFailure => ({\r\n type: storeTypes.LOG_FAILURE\r\n});\r\n\r\n// Instant Message\r\nexport const instantMessageSuccess = (instantMessagePage: IInstantMessagePage): storeTypes.IInstantMessageSuccess => ({\r\n type: storeTypes.INSTANT_MESSAGE_SUCCESS,\r\n instantMessagePage\r\n});\r\n\r\nexport const instantMessageFailure = (): storeTypes.IInstantMessageFailure => ({\r\n type: storeTypes.INSTANT_MESSAGE_FAILURE\r\n});\r\n\r\n// WhistleBlow\r\nexport const whistleBlowSuccess = (whistleBlowPage: IWhistleBlowPage): storeTypes.IWhistleBlowSuccess => ({\r\n type: storeTypes.WHISTLE_BLOW_SUCCESS,\r\n whistleBlowPage\r\n});\r\n\r\nexport const whistleBlowFailure = (): storeTypes.IWhistleBlowFailure => ({\r\n type: storeTypes.WHISTLE_BLOW_FAILURE\r\n});\r\n\r\n// CalendarTasks\r\nexport const calendarTasksSuccess = (calendarTaskPage: ICalendarTaskPage): storeTypes.ICalendarTasksSuccess => ({\r\n type: storeTypes.CALENDARTASKS_SUCCESS,\r\n calendarTaskPage\r\n});\r\n\r\nexport const calendarTasksFailure = (): storeTypes.ICalendarTasksFailure => ({\r\n type: storeTypes.CALENDARTASKS_FAILURE\r\n});","import { Action } from \"redux\";\r\nimport { ISessionState } from \"../session/sessionState\";\r\nimport { IFrontPage } from \"../front/frontPage\";\r\nimport { ILogPage } from \"../log/logPage\";\r\nimport { IFrontPageImages } from \"../front/frontPageImages\";\r\nimport { IEventChartOptions } from \"../event/eventChartOptions\";\r\nimport { IUsersPage } from \"../user/usersPage\";\r\nimport { IUserGroupPage } from \"../userGroup/userGroupPage\";\r\nimport { ICompanyPage } from \"../company/companyPage\";\r\nimport { IRecordPage } from \"../record/recordPage\";\r\nimport { IInstantMessagePage } from \"../instantMessage/instantMessagePage\";\r\nimport { IWhistleBlowPage } from \"../whistleBlow/whistleBlowPage\";\r\nimport { IInstantMessageListItem } from \"ui/Scripts/source/models/instantMessage/instantMessageListItem\";\r\nimport { IEventPage } from \"../event/eventPage\";\r\nimport { ITaskPage } from \"../task\";\r\nimport { IMessagePage } from \"../message/messagePage\";\r\nimport { IDocumentPage } from \"../document/documentPage\";\r\nimport { ICompanyGroupPage } from \"../companyGroup/companyGroupPage\";\r\nimport { ICalendarTaskPage } from \"../calendarTask/calendarTaskPage\";\r\n\r\nexport interface IUser {\r\n authenticated: boolean;\r\n}\r\n\r\nexport interface ILoadingState {\r\n users: boolean;\r\n}\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport enum ConfirmationDialogType {\r\n Warning,\r\n Information\r\n}\r\n/* eslint-enable no-unused-vars */\r\n\r\nexport interface IConfirmationCallback {\r\n (): void;\r\n}\r\n\r\nexport interface IAlertState {\r\n message: string;\r\n info: string;\r\n error: string;\r\n}\r\n\r\nexport interface IConfirmationState {\r\n type: ConfirmationDialogType;\r\n title: string;\r\n text: string;\r\n show: boolean;\r\n yesConfirmationText: string;\r\n onYes: IConfirmationCallback;\r\n onNo: IConfirmationCallback;\r\n onCancel: IConfirmationCallback;\r\n}\r\n\r\nexport interface IAutoLogoutState {\r\n show: boolean;\r\n}\r\n\r\nexport interface IUserState {\r\n authenticated: boolean;\r\n}\r\n\r\nexport interface IAppSessionState {\r\n state: ISessionState;\r\n newInstantMessages: IInstantMessageListItem[];\r\n //parameters: IEmployeeParameters;\r\n}\r\n\r\nexport interface IFrontEventState {\r\n chartOptions: IEventChartOptions;\r\n}\r\n\r\nexport interface IFrontState {\r\n dataId: number;\r\n frontPage: IFrontPage;\r\n event: IFrontEventState;\r\n}\r\n\r\nexport interface IRecordsState {\r\n dataId: number;\r\n recordPage: IRecordPage;\r\n}\r\n\r\nexport interface ICompaniesState {\r\n dataId: number;\r\n companyPage: ICompanyPage;\r\n}\r\n\r\nexport interface IUsersState {\r\n dataId: number;\r\n usersPage: IUsersPage;\r\n}\r\n\r\nexport interface IUserGroupsState {\r\n dataId: number;\r\n userGroupPage: IUserGroupPage;\r\n}\r\n\r\nexport interface ILogState {\r\n dataId: number;\r\n logPage: ILogPage;\r\n}\r\n\r\nexport interface IEventsState {\r\n dataId: number;\r\n eventPage: IEventPage;\r\n}\r\n\r\nexport interface IInstantMessageState {\r\n dataId: number;\r\n instantMessagePage: IInstantMessagePage;\r\n}\r\n\r\nexport interface IWhistleBlowState {\r\n dataId: number;\r\n whistleBlowPage: IWhistleBlowPage;\r\n}\r\n\r\nexport interface ITasksState {\r\n dataId: number;\r\n taskPage: ITaskPage;\r\n}\r\n\r\nexport interface IMessagesState {\r\n dataId: number;\r\n messagePage: IMessagePage;\r\n}\r\n\r\nexport interface IDocumentsState {\r\n dataId: number;\r\n documentPage: IDocumentPage;\r\n}\r\n\r\nexport interface ICompanyGroupsState {\r\n dataId: number;\r\n companyGroupPage: ICompanyGroupPage;\r\n}\r\n\r\nexport interface ICalendarTasksState {\r\n dataId: number;\r\n calendarTaskPage: ICalendarTaskPage;\r\n}\r\n\r\nexport interface IApplicationState {\r\n // Fetch\r\n fetchCount: number;\r\n // Alert\r\n alert: IAlertState;\r\n // Confirmation\r\n confirmation: IConfirmationState;\r\n // AutoLogout\r\n autoLogout: IAutoLogoutState;\r\n // Session\r\n session: IAppSessionState;\r\n // User\r\n user: IUserState;\r\n // Front\r\n front: IFrontState;\r\n // Documents\r\n documents: IDocumentsState;\r\n // Event\r\n events: IEventsState;\r\n // Records\r\n records: IRecordsState;\r\n // Companies\r\n companies: ICompaniesState;\r\n // CompanyCroups\r\n companyGroups: ICompanyGroupsState;\r\n // Messages\r\n messages: IMessagesState;\r\n // Tasks\r\n tasks: ITasksState;\r\n // Users\r\n users: IUsersState;\r\n // UserGroups\r\n userGroups: IUserGroupsState;\r\n // Log\r\n log: ILogState;\r\n // Instant Message\r\n instantMessage: IInstantMessageState;\r\n // WhistleBlow\r\n whistleBlow: IWhistleBlowState\r\n // CalendarTask\r\n calendarTasks: ICalendarTasksState;\r\n}\r\n\r\n// Action type constants\r\n// ***********************************************************************\r\n\r\n// Alert\r\nexport const ALERT_SUCCESS = \"ALERT_SUCCESS\";\r\nexport const ALERT_INFO = \"ALERT_INFO\";\r\nexport const ALERT_ERROR = \"ALERT_ERROR\";\r\nexport const ALERT_CLEAR = \"ALERT_CLEAR\";\r\nexport const ALERT_SUCCESS_CLEAR = \"ALERT_SUCCESS_CLEAR\";\r\nexport const ALERT_INFO_CLEAR = \"ALERT_INFO_CLEAR\";\r\n\r\ntype T_ALERT_SUCCESS = typeof ALERT_SUCCESS;\r\ntype T_ALERT_INFO = typeof ALERT_INFO;\r\ntype T_ALERT_ERROR = typeof ALERT_ERROR;\r\ntype T_ALERT_CLEAR = typeof ALERT_CLEAR;\r\ntype T_ALERT_SUCCESS_CLEAR = typeof ALERT_SUCCESS_CLEAR;\r\ntype T_ALERT_INFO_CLEAR = typeof ALERT_INFO_CLEAR;\r\n\r\n// Confirmation\r\nexport const CONFIRMATION_SET = \"CONFIRMATION_SET\";\r\nexport const CONFIRMATION_CLEAR = \"CONFIRMATION_CLEAR\";\r\n\r\ntype T_CONFIRMATION_SET = typeof CONFIRMATION_SET;\r\ntype T_CONFIRMATION_CLEAR = typeof CONFIRMATION_CLEAR;\r\n\r\n// AutoLogout\r\nexport const AUTOLOGOUT_SET = \"AUTOLOGOUT_SET\";\r\nexport const AUTOLOGOUT_CLEAR = \"AUTOLOGOUT_CLEAR\";\r\n\r\ntype T_AUTOLOGOUT_SET = typeof AUTOLOGOUT_SET;\r\ntype T_AUTOLOGOUT_CLEAR = typeof AUTOLOGOUT_CLEAR;\r\n\r\n// Fetch\r\nexport const FETCH_START = \"FETCH_START\";\r\nexport const FETCH_END = \"FETCH_END\";\r\n\r\ntype T_FETCH_START = typeof FETCH_START;\r\ntype T_FETCH_END = typeof FETCH_END;\r\n\r\n// User\r\nexport const USER_LOGIN_SUCCESS = \"USER_LOGIN_SUCCESS\";\r\nexport const USER_LOGIN_FAILURE = \"USER_LOGIN_FAILURE\";\r\nexport const USER_LOGOUT_SUCCESS = \"USER_LOGOUT_SUCCESS\";\r\n\r\ntype T_USER_LOGIN_SUCCESS = typeof USER_LOGIN_SUCCESS;\r\ntype T_USER_LOGIN_FAILURE = typeof USER_LOGIN_FAILURE;\r\ntype T_USER_LOGOUT_SUCCESS = typeof USER_LOGOUT_SUCCESS;\r\n\r\n// Session\r\nexport const SESSION_SET_STATE = \"SESSION_SET_STATE\";\r\nexport const NEW_INSTANT_MESSAGES_SET = \"NEW_INSTANT_MESSAGES_SET\";\r\n\r\ntype T_SESSION_SET_STATE = typeof SESSION_SET_STATE;\r\ntype T_NEW_INSTANT_MESSAGES_SET = typeof NEW_INSTANT_MESSAGES_SET;\r\n\r\n// Front\r\nexport const FRONT_SUCCESS = \"FRONT_SUCCESS\";\r\nexport const FRONT_FAILURE = \"FRONT_FAILURE\";\r\nexport const FRONT_IMAGES = \"FRONT_IMAGES\";\r\nexport const FRONT_EVENTS = \"FRONT_EVENTS\";\r\nexport const FRONT_MESSAGES = \"FRONT_MESSAGES\";\r\nexport const FRONT_BANNER_INTERVAL = \"FRONT_BANNER_INTERVAL\";\r\nexport const FRONT_RECORDS_USER = \"FRONT_RECORDS_USER\";\r\nexport const FRONT_RECORDS_COMPANY = \"FRONT_RECORDS_COMPANY\";\r\n\r\ntype T_FRONT_SUCCESS = typeof FRONT_SUCCESS;\r\ntype T_FRONT_FAILURE = typeof FRONT_FAILURE;\r\ntype T_FRONT_IMAGES = typeof FRONT_IMAGES;\r\ntype T_FRONT_EVENTS = typeof FRONT_EVENTS;\r\ntype T_FRONT_MESSAGES = typeof FRONT_MESSAGES;\r\ntype T_FRONT_BANNER_INTERVAL = typeof FRONT_BANNER_INTERVAL;\r\ntype T_FRONT_RECORDS_USER = typeof FRONT_RECORDS_USER;\r\ntype T_FRONT_RECORDS_COMPANY = typeof FRONT_RECORDS_COMPANY;\r\n\r\n// CalendarTasks\r\nexport const CALENDARTASKS_SUCCESS = \"CALENDARTASKS_SUCCESS\";\r\nexport const CALENDARTASKS_FAILURE = \"CALENDARTASKS_FAILURE\";\r\n\r\ntype T_CALENDARTASKS_SUCCESS = typeof CALENDARTASKS_SUCCESS;\r\ntype T_CALENDARTASKS_FAILURE = typeof CALENDARTASKS_FAILURE;\r\n\r\n// Documents\r\nexport const DOCUMENTS_SUCCESS = \"DOCUMENTS_SUCCESS\";\r\nexport const DOCUMENTS_FAILURE = \"DOCUMENTS_FAILURE\";\r\n\r\ntype T_DOCUMENTS_SUCCESS = typeof DOCUMENTS_SUCCESS;\r\ntype T_DOCUMENTS_FAILURE = typeof DOCUMENTS_FAILURE;\r\n\r\n// Events\r\nexport const EVENTS_SUCCESS = \"EVENTS_SUCCESS\";\r\nexport const EVENTS_FAILURE = \"EVENTS_FAILURE\";\r\n\r\ntype T_EVENTS_SUCCESS = typeof EVENTS_SUCCESS;\r\ntype T_EVENTS_FAILURE = typeof EVENTS_FAILURE;\r\n\r\n// Records\r\nexport const RECORDS_SUCCESS = \"RECORDS_SUCCESS\";\r\nexport const RECORDS_FAILURE = \"RECORDS_FAILURE\";\r\n\r\ntype T_RECORDS_SUCCESS = typeof RECORDS_SUCCESS;\r\ntype T_RECORDS_FAILURE = typeof RECORDS_FAILURE;\r\n\r\n// Companies\r\nexport const COMPANIES_SUCCESS = \"COMPANIES_SUCCESS\";\r\nexport const COMPANIES_FAILURE = \"COMPANIES_FAILURE\";\r\n\r\ntype T_COMPANIES_SUCCESS = typeof COMPANIES_SUCCESS;\r\ntype T_COMPANIES_FAILURE = typeof COMPANIES_FAILURE;\r\n\r\n// CompanyGroups\r\nexport const COMPANYGROUP_SUCCESS = \"COMPANYGROUP_SUCCESS\";\r\nexport const COMPANYGROUP_FAILURE = \"COMPANYGROUP_FAILURE\";\r\n\r\ntype T_COMPANYGROUP_SUCCESS = typeof COMPANYGROUP_SUCCESS;\r\ntype T_COMPANYGROUP_FAILURE = typeof COMPANYGROUP_FAILURE;\r\n\r\n// Messages\r\nexport const MESSAGES_SUCCESS = \"MESSAGES_SUCCESS\";\r\nexport const MESSAGES_FAILURE = \"MESSAGES_FAILURE\";\r\n\r\ntype T_MESSAGES_SUCCESS = typeof MESSAGES_SUCCESS;\r\ntype T_MESSAGES_FAILURE = typeof MESSAGES_FAILURE;\r\n\r\n// Tasks\r\nexport const TASKS_SUCCESS = \"TASKS_SUCCESS\";\r\nexport const TASKS_FAILURE = \"TASKS_FAILURE\";\r\n\r\ntype T_TASKS_SUCCESS = typeof TASKS_SUCCESS;\r\ntype T_TASKS_FAILURE = typeof TASKS_FAILURE;\r\n\r\n// Users\r\nexport const USERS_SUCCESS = \"USERS_SUCCESS\";\r\nexport const USERS_FAILURE = \"USERS_FAILURE\";\r\n\r\ntype T_USERS_SUCCESS = typeof USERS_SUCCESS;\r\ntype T_USERS_FAILURE = typeof USERS_FAILURE;\r\n\r\n// UserGroup\r\nexport const USERGROUP_SUCCESS = \"USERGROUP_SUCCESS\";\r\nexport const USERGROUP_FAILURE = \"USERGROUP_FAILURE\";\r\n\r\ntype T_USERGROUP_SUCCESS = typeof USERGROUP_SUCCESS;\r\ntype T_USERGROUP_FAILURE = typeof USERGROUP_FAILURE;\r\n\r\n// Log\r\nexport const LOG_SUCCESS = \"LOG_SUCCESS\";\r\nexport const LOG_FAILURE = \"LOG_FAILURE\";\r\n\r\ntype T_LOG_SUCCESS = typeof LOG_SUCCESS;\r\ntype T_LOG_FAILURE = typeof LOG_FAILURE;\r\n\r\n// Instant Message\r\nexport const INSTANT_MESSAGE_SUCCESS = \"INSTANT_MESSAGE_SUCCESS\";\r\nexport const INSTANT_MESSAGE_FAILURE = \"INSTANT_MESSAGE_FAILURE\";\r\n\r\ntype T_INSTANT_MESSAGE_SUCCESS = typeof INSTANT_MESSAGE_SUCCESS;\r\ntype T_INSTANT_MESSAGE_FAILURE = typeof INSTANT_MESSAGE_FAILURE;\r\n\r\n// WhistleBlow\r\nexport const WHISTLE_BLOW_SUCCESS = \"WHISTLE_BLOW_SUCCESS\";\r\nexport const WHISTLE_BLOW_FAILURE = \"WHISTLE_BLOW_FAILURE\";\r\n\r\ntype T_WHISTLE_BLOW_SUCCESS = typeof WHISTLE_BLOW_SUCCESS;\r\ntype T_WHISTLE_BLOW_FAILURE = typeof WHISTLE_BLOW_FAILURE;\r\n\r\n// Action types\r\n// ***********************************************************************\r\n\r\n// Alert\r\nexport interface IAlertSuccess extends Action {\r\n type: T_ALERT_SUCCESS;\r\n message: string;\r\n}\r\n\r\nexport interface IAlertInfo extends Action {\r\n type: T_ALERT_INFO;\r\n message: string;\r\n}\r\n\r\nexport interface IAlertError extends Action {\r\n type: T_ALERT_ERROR;\r\n message: string;\r\n}\r\n\r\nexport interface IAlertClear extends Action {\r\n type: T_ALERT_CLEAR;\r\n}\r\n\r\nexport interface IAlertSuccessClear extends Action {\r\n type: T_ALERT_SUCCESS_CLEAR;\r\n}\r\n\r\nexport interface IAlertInfoClear extends Action {\r\n type: T_ALERT_INFO_CLEAR;\r\n}\r\n\r\nexport type AlertAction =\r\n | IAlertSuccess\r\n | IAlertInfo\r\n | IAlertError\r\n | IAlertClear\r\n | IAlertSuccessClear\r\n | IAlertInfoClear;\r\n\r\n// Confirmation\r\nexport interface IConfirmationSet extends Action {\r\n type: T_CONFIRMATION_SET;\r\n dialogType: ConfirmationDialogType;\r\n title: string;\r\n text: string;\r\n show: boolean;\r\n yesConfirmationText: string;\r\n onYes: IConfirmationCallback;\r\n onNo: IConfirmationCallback;\r\n onCancel: IConfirmationCallback;\r\n}\r\n\r\nexport interface IConfirmationClear extends Action {\r\n type: T_CONFIRMATION_CLEAR;\r\n}\r\n\r\nexport type ConfirmationAction =\r\n | IConfirmationSet\r\n | IConfirmationClear;\r\n\r\n// AutoLogout\r\nexport interface IAutoLogoutSet extends Action {\r\n type: T_AUTOLOGOUT_SET;\r\n}\r\n\r\nexport interface IAutoLogoutClear extends Action {\r\n type: T_AUTOLOGOUT_CLEAR;\r\n}\r\n\r\nexport type AutoLogoutAction =\r\n | IAutoLogoutSet\r\n | IAutoLogoutClear;\r\n\r\n// Fetch\r\nexport interface IFetchStart extends Action {\r\n type: T_FETCH_START;\r\n}\r\n\r\nexport interface IFetchEnd extends Action {\r\n type: T_FETCH_END;\r\n}\r\n\r\nexport type FetchAction =\r\n | IFetchStart\r\n | IFetchEnd;\r\n\r\n// Session\r\nexport interface ISetSessionState extends Action {\r\n type: T_SESSION_SET_STATE;\r\n sessionState: ISessionState;\r\n}\r\n\r\nexport interface ISetNewInstantMessages extends Action {\r\n type: T_NEW_INSTANT_MESSAGES_SET;\r\n newInstantMessages: IInstantMessageListItem[];\r\n}\r\n\r\nexport type SessionAction =\r\n | ISetSessionState\r\n | ISetNewInstantMessages;\r\n\r\n// User\r\nexport interface IUserLoginSuccess extends Action {\r\n type: T_USER_LOGIN_SUCCESS;\r\n}\r\n\r\nexport interface IUserLoginFailure extends Action {\r\n type: T_USER_LOGIN_FAILURE;\r\n}\r\n\r\nexport interface IUserLogoutSuccess extends Action {\r\n type: T_USER_LOGOUT_SUCCESS;\r\n}\r\n\r\nexport type UserAction =\r\n | IUserLoginSuccess\r\n | IUserLoginFailure\r\n | IUserLogoutSuccess;\r\n\r\n// Front\r\nexport interface IFrontSuccess extends Action {\r\n type: T_FRONT_SUCCESS;\r\n frontPage: IFrontPage;\r\n}\r\n\r\nexport interface IFrontFailure extends Action {\r\n type: T_FRONT_FAILURE;\r\n}\r\n\r\nexport interface IFrontImages extends Action {\r\n type: T_FRONT_IMAGES;\r\n images: IFrontPageImages;\r\n}\r\n\r\nexport interface IFrontBannerInterval extends Action {\r\n type: T_FRONT_BANNER_INTERVAL;\r\n interval: number;\r\n}\r\n\r\nexport interface IFrontRecordsUser extends Action {\r\n type: T_FRONT_RECORDS_USER;\r\n recordCount: number;\r\n dateRange: number;\r\n}\r\n\r\nexport interface IFrontRecordsCompany extends Action {\r\n type: T_FRONT_RECORDS_COMPANY;\r\n recordCount: number;\r\n dateRange: number;\r\n}\r\n\r\nexport interface IFrontEvents extends Action {\r\n type: T_FRONT_EVENTS;\r\n event: IFrontEventState;\r\n}\r\n\r\nexport interface IFrontMessages extends Action {\r\n type: T_FRONT_MESSAGES;\r\n dateRange: number;\r\n}\r\n\r\nexport type FrontAction =\r\n | IFrontSuccess\r\n | IFrontFailure\r\n | IFrontImages\r\n | IFrontBannerInterval\r\n | IFrontRecordsUser\r\n | IFrontRecordsCompany\r\n | IFrontEvents\r\n | IFrontMessages;\r\n\r\n// CalendarTasks\r\nexport interface ICalendarTasksSuccess extends Action {\r\n type: T_CALENDARTASKS_SUCCESS;\r\n calendarTaskPage: ICalendarTaskPage;\r\n}\r\n\r\nexport interface ICalendarTasksFailure extends Action {\r\n type: T_CALENDARTASKS_FAILURE;\r\n}\r\n\r\nexport type CalendarTasksAction =\r\n | ICalendarTasksSuccess\r\n | ICalendarTasksFailure;\r\n\r\n// Documents\r\nexport interface IDocumentsSuccess extends Action {\r\n type: T_DOCUMENTS_SUCCESS;\r\n documentPage: IDocumentPage;\r\n}\r\n\r\nexport interface IDocumentsFailure extends Action {\r\n type: T_DOCUMENTS_FAILURE;\r\n}\r\n\r\nexport type DocumentsAction =\r\n | IDocumentsSuccess\r\n | IDocumentsFailure;\r\n\r\n// Events\r\nexport interface IEventsSuccess extends Action {\r\n type: T_EVENTS_SUCCESS;\r\n eventPage: IEventPage;\r\n}\r\n\r\nexport interface IEventsFailure extends Action {\r\n type: T_EVENTS_FAILURE;\r\n}\r\n\r\nexport type EventsAction =\r\n | IEventsSuccess\r\n | IEventsFailure;\r\n\r\n// Records\r\nexport interface IRecordsSuccess extends Action {\r\n type: T_RECORDS_SUCCESS;\r\n recordPage: IRecordPage;\r\n}\r\n\r\nexport interface IRecordsFailure extends Action {\r\n type: T_RECORDS_FAILURE;\r\n}\r\n\r\nexport type RecordsAction =\r\n | IRecordsSuccess\r\n | IRecordsFailure;\r\n\r\n// Companies\r\nexport interface ICompaniesSuccess extends Action {\r\n type: T_COMPANIES_SUCCESS;\r\n companyPage: ICompanyPage;\r\n}\r\n\r\nexport interface ICompaniesFailure extends Action {\r\n type: T_COMPANIES_FAILURE;\r\n}\r\n\r\nexport type CompaniesAction =\r\n | ICompaniesSuccess\r\n | ICompaniesFailure;\r\n\r\n// CompanyGroups\r\nexport interface ICompanyGroupsSuccess extends Action {\r\n type: T_COMPANYGROUP_SUCCESS;\r\n companyGroupPage: ICompanyGroupPage;\r\n}\r\n\r\nexport interface ICompanyGroupsFailure extends Action {\r\n type: T_COMPANYGROUP_FAILURE;\r\n}\r\n\r\nexport type CompanyGroupsAction =\r\n | ICompanyGroupsSuccess\r\n | ICompanyGroupsFailure;\r\n\r\n// Messages\r\nexport interface IMessagesSuccess extends Action {\r\n type: T_MESSAGES_SUCCESS;\r\n messagePage: IMessagePage;\r\n}\r\n\r\nexport interface IMessagesFailure extends Action {\r\n type: T_MESSAGES_FAILURE;\r\n}\r\n\r\nexport type MessagesAction =\r\n | IMessagesSuccess\r\n | IMessagesFailure;\r\n\r\n// Tasks\r\nexport interface ITasksSuccess extends Action {\r\n type: T_TASKS_SUCCESS;\r\n taskPage: ITaskPage;\r\n}\r\n\r\nexport interface ITasksFailure extends Action {\r\n type: T_TASKS_FAILURE;\r\n}\r\n\r\nexport type TasksAction =\r\n | ITasksSuccess\r\n | ITasksFailure;\r\n\r\n// Users\r\nexport interface IUsersSuccess extends Action {\r\n type: T_USERS_SUCCESS;\r\n usersPage: IUsersPage;\r\n}\r\n\r\nexport interface IUsersFailure extends Action {\r\n type: T_USERS_FAILURE;\r\n}\r\n\r\nexport type UsersAction =\r\n | IUsersSuccess\r\n | IUsersFailure;\r\n\r\n// UserGroup\r\nexport interface IUserGroupsSuccess extends Action {\r\n type: T_USERGROUP_SUCCESS;\r\n userGroupPage: IUserGroupPage;\r\n}\r\n\r\nexport interface IUserGroupsFailure extends Action {\r\n type: T_USERGROUP_FAILURE;\r\n}\r\n\r\nexport type UserGroupsAction =\r\n | IUserGroupsSuccess\r\n | IUserGroupsFailure;\r\n\r\n// Log\r\nexport interface ILogSuccess extends Action {\r\n type: T_LOG_SUCCESS;\r\n logPage: ILogPage;\r\n}\r\n\r\nexport interface ILogFailure extends Action {\r\n type: T_LOG_FAILURE;\r\n}\r\n\r\nexport type LogAction =\r\n | ILogSuccess\r\n | ILogFailure;\r\n\r\n// Instant Message\r\nexport interface IInstantMessageSuccess extends Action {\r\n type: T_INSTANT_MESSAGE_SUCCESS;\r\n instantMessagePage: IInstantMessagePage;\r\n}\r\n\r\nexport interface IInstantMessageFailure extends Action {\r\n type: T_INSTANT_MESSAGE_FAILURE;\r\n}\r\n\r\nexport type InstantMessageAction =\r\n | IInstantMessageSuccess\r\n | IInstantMessageFailure;\r\n\r\n// WhistleBlow\r\nexport interface IWhistleBlowSuccess extends Action {\r\n type: T_WHISTLE_BLOW_SUCCESS;\r\n whistleBlowPage: IWhistleBlowPage;\r\n}\r\n\r\nexport interface IWhistleBlowFailure extends Action {\r\n type: T_WHISTLE_BLOW_FAILURE;\r\n}\r\n\r\nexport type WhistleBlowAction =\r\n | IWhistleBlowSuccess\r\n | IWhistleBlowFailure;\r\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-ps\": 20315,\n\t\"./ar-ps.js\": 20315,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku-kmr\": 90563,\n\t\"./ku-kmr.js\": 90563,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t296: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkqteamsystems_qteamintra_web\"] = self[\"webpackChunkqteamsystems_qteamintra_web\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\n__webpack_require__.O(undefined, [736], () => (__webpack_require__(4523)))\n__webpack_require__.O(undefined, [736], () => (__webpack_require__(59549)))\n__webpack_require__.O(undefined, [736], () => (__webpack_require__(652)))\nvar __webpack_exports__ = __webpack_require__.O(undefined, [736], () => (__webpack_require__(25222)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["window","Array","prototype","find","Object","defineProperty","value","predicate","this","TypeError","o","len","length","thisArg","arguments","k","kValue","call","configurable","writable","findIndex","includes","searchElement","fromIndex","x","y","n","Math","max","abs","isNaN","union","array","concat","filter","elem","index","indexOf","difference","i","Date","now","getTime","$date_type","__typeName","__class","$date_prototype","addYears","years","result","valueOf","setFullYear","getFullYear","addMonths","months","setMonth","getMonth","addDays","days","setDate","getDate","addHours","hours","setHours","getHours","addMinutes","minutes","setMinutes","getMinutes","firstDayOfWeek","dayOfWeek","getDay","self","fetch","support","Symbol","Blob","e","viewClasses","isDataView","obj","DataView","isPrototypeOf","isArrayBufferView","ArrayBuffer","isView","toString","Headers","append","name","normalizeName","normalizeValue","oldValue","map","get","has","hasOwnProperty","set","forEach","callback","keys","items","push","iteratorFor","values","entries","iterator","methods","Request","clone","body","_bodyInit","Body","Response","status","statusText","headers","url","error","response","type","redirectStatuses","redirect","RangeError","location","input","init","Promise","resolve","reject","request","xhr","XMLHttpRequest","onload","rawHeaders","options","getAllResponseHeaders","split","line","parts","key","shift","trim","join","responseURL","responseText","onerror","ontimeout","open","method","credentials","withCredentials","responseType","setRequestHeader","send","polyfill","String","test","toLowerCase","next","done","undefined","isArray","header","getOwnPropertyNames","consumed","bodyUsed","fileReaderReady","reader","readBlobAsArrayBuffer","blob","FileReader","promise","readAsArrayBuffer","bufferClone","buf","slice","view","Uint8Array","byteLength","buffer","_initBody","_bodyText","_bodyBlob","FormData","_bodyFormData","URLSearchParams","_bodyArrayBuffer","Error","rejected","arrayBuffer","then","text","readAsText","chars","fromCharCode","readArrayBufferAsText","formData","decode","json","JSON","parse","upcased","mode","toUpperCase","referrer","form","bytes","replace","decodeURIComponent","bodyInit","ok","$number_type","Number","$number_prototype","toLocaleFixed","decimals","languageTag","toLocaleString","minimumFractionDigits","maximumFractionDigits","roundToDecimals","divider","pow","round","isInteger","isFinite","floor","$String_type","__numbers","$String_prototype","endsWith","suffix","substr","startsWith","prefix","trimEnd","trimStart","repeat","numberString","allowNegative","chr","wasNumber","charAt","toInteger","minValue","temp","parseInt","toDecimal","removeSpaces","multiplier","integer","decimal","integerStr","decimalStr","j","parseDateParts","defaultDate","d","year","month","day","yearStr","monthStr","dayStr","wasIncreased","min","toDate","toUtcDate","newDate","UTC","getUTCFullYear","getUTCMonth","getUTCDate","parseTimeParts","maxHour","hourMaxLength","hour","minute","hourStr","minuteStr","toTime","toUtcTime","getUTCHours","getUTCMinutes","toTimeSpan","equalIgnoreCase","str","format","args","_toFormattedString","useLocale","close","brace","substring","colonIndex","argNumber","argFormat","arg","toFormattedString","localeFormat","search","start","CheckboxDropdown","constructor","props","super","event","target","toggleAllId","notSetId","toggleNotSetId","toggleAll","item","onChange","disabled","dropdownId","getGuid","render","className","Select","multiple","autoFocus","selectedIds","handleChange","renderValue","selected","id","getTitle","size","fullWidth","MenuItem","Checkbox","checked","ListItemText","primary","TreeCheckBoxDropdownChild","hasChildren","active","singleSelect","ListItemButton","sx","paddingLeft","level","maxHeight","onClick","stopPropagation","preventDefault","onToggleItem","title","showComment","height","minHeight","TreeCheckboxDropdownValueWithComment","children","childItem","isActive","TreeCheckBoxDropdownItems","allId","emptyGuid","activeItemIds","parent","getById","childIds","getActiveChildIds","onToggleDropdown","handleToggleItem","handleSetSingleItem","Typography","comment","variant","color","display","textWrap","wordBreak","maxWidth","TreeCheckboxDropdown","getByIds","hideParentsInSelection","selectedNodes","showCommentInSelection","selectedValueStr","setState","state","getSelectedNodes","getSelectedValueStr","selectedValue","getSelectedValue","componentDidUpdate","prevProps","prevState","onClose","handleClose","onOpen","handleOpen","showCommentInDropdown","handleToggleDropdown","logTest","console","log","isNullOrUndefined","isNullOrEmpty","nullToEmpty","isString","data","getRandomIntInteger","maxValue","random","dec","sign","EPSILON","intToFileSizeStr","addBrackets","mb","kb","toFixed","upperCaseFirst","toLocaleUpperCase","hasNumber","match","c","r","guidToArray","v","guidToNumber","a","strToHashNumber","charCodeAt","padZeros","zeros","limitStrLength","maxLength","addEllipsis","joinSuffix","arr","separator","sep","strToInteger","strToNumber","strToBool","timeHasValue","time","timeToMoment","m","timeToDateStr","timeToTimeStr","timeToDateTimeStr","includeSeconds","timeToWeekdayStr","timeToYearStr","timeToMonthStr","timeToDayStr","timeToHourStr","timeToMinStr","utcTimeToDateStr","date","utcTimeToTimeStr","isZeroTime","isZeroTimeStr","timeStr","getNowDateTicks","getNowTicks","dateToDatePart","dateToUtcDate","getNowUtcDate","getNowUtcTime","h","getNowUtcDateTime","roundDateMinutes","minRound","rounded","setSeconds","roundTimeMinutes","getTimeSpanStr","timeParts","timeSpanToString","timeSpan","isPositive","absTimeSpan","utcDateAndTimeDiffInMinutes","date1","time1","date2","time2","mDate1","M","s","getUTCSeconds","ms","getUTCMilliseconds","diff","utcDateAndTimeDiffInTimeSpan","minutesToDateStr","timeToFromNow","fromNow","getDateTime","dateStr","startTime","getTimeStamp","includeMs","getSeconds","z","getMilliseconds","getValidDateParts","aDay","aMonth","aYear","dayNumberToName","locale","monthNumberToName","getFirstDayOfWeek","isFormattedText","lf","getFormattedText","strCompare","b","localeCompare","numCompare","boolCompare","aInt","bInt","equalInt","right","l","numLeftPad","strLeftPad","getGetFileNameSortValue","code","numberStart","nonNumberStart","end","fileNameCompare","collator","compare","getFileType","fileExtensions","lastIndexOf","ext","wordExtensions","excelExtensions","powerPointExtensions","pdfExtensions","imageExtensions","archiveExtensions","textExtensions","htmlExtensions","isImageFile","file","getTypedArray","getPromiseResult","moveToFirst","indexA","splice","unshift","swapArrayItems","indexB","getUniqueItems","from","Set","getUniqueStringItems","getUniqueNumberItems","getStringWithSeparators","maxValueCount","maxCount","equalArrays","arr1","arr2","a1","a2","equalStrArrays","maxVal","defaultValue","getToggledMultiSelectIds","toggleId","keepAvailableSelectedIds","allValue","unitIds","isValidUserCode","isValidPassword","password","minPasswordLength","PasswordIsTooShort","PasswordMustContainDigitOrSpecialCharacter","PasswordMustContainLowercaseChar","PasswordMustContainUppercaseChar","getEmailAddresses","addresses","isValidEmailAddressSingle","address","firstAtIndex","lastAtIndex","dotIndex","isValidEmailAddress","emailAddresses","isValidFinnishBicCode","replaceSepaCharacters","codes","getModulo97","bigNumber","oldModulo","smallNumber","isValidIbanNumber","iban","formatIbanNumber","getCultureSimple","culture","setCkEditorStyles","container","documentMode","documentLandscapeOrientation","iframes","getElementsByClassName","iframe","contentDocument","html","documentElement","style","backgroundColor","fontFamily","fontSize","padding","width","margin","getCameraIds","navigator","mediaDevices","deviceInfos","enumerateDevices","kind","deviceId","getDataUriSize","dataUri","atob","base64ToBlob","base64","contentType","byteString","ab","ia","dataUriToBlob","blobToFile","fileName","lastModified","blobToBase64","readAsDataURL","blobToBase64WithoutHeader","pop","getLocation","googleApiKey","geolocation","getCurrentPosition","position","latitude","coords","longitude","googleGeocoder","google","maps","Geocoder","geocode","LatLng","results","GeocoderStatus","OK","formatted_address","enableHighAccuracy","timeout","maximumAge","getLocationAsync","locationName","positionErrorCode","openLocationInMaps","getListItems","stateItems","stateSelectedId","stateCheckedIds","dbItems","resetItems","refreshList","oldIds","selectedId","checkedIds","getSelectedIds","isJsonString","b64EncodeUnicode","btoa","encodeURIComponent","p1","base64UrlEncode","base64UrlDecode","debounce","func","wait","timeoutId","clearTimeout","setTimeout","apply","urlBase64ToUint8Array","base64Str","rawData","sanitizeHtml","txt","document","createElement","textContent","innerHTML","linkifyText","temps","links","replacement","arrayBufferToBase64","binary","base64ToArrayBuffer","binaryString","encryptString","base64key","base64iv","algorithm","iv","importedKey","crypto","subtle","importKey","TextEncoder","encode","encrypted","encrypt","decryptString","base64str","decrypted","decrypt","TextDecoder","hexToRgb","hex","g","invertColor","bw","black","rgb","white","isWhite","isNegative","numberStr","number","hasDecimalPoint","intPart","decPart","endTime","includeTime","startDayStr","startMonthStr","startYearStr","startHourStr","startMinStr","endDayStr","endMonthStr","endYearStr","endHourStr","endMinStr","Base","numbersPast","numbersFuture","translate","withoutSuffix","isFuture","verbalNumber","monthsShort","weekdays","weekdaysShort","weekdaysMin","longDateFormat","LT","LTS","L","LL","LLL","LLLL","ll","lll","llll","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","ss","mm","hh","dd","MM","yy","dayOfMonthOrdinalParse","ordinal","week","dow","doy","EditItem","rowId","isNew","getHash","setItemIdsFromIds","ids","FileAttachment","subOwnerId","Unknown","category","modifyDate","thumbnail","File","fileToFileAttachment","attachment","Image","base64Picture","blobToFileAttachment","photoToFileAttachment","dataUrl","getFirstFileAttachmentFromFileList","fileList","addFileListToFileAttachments","attachments","promises","newAttachments","all","newAttachment","sortFileAttachments","sort","IdTitle","createIdTitle","createIdTitleSimple","equal","getTitleById","sortIdTitles","asc","Dictionary","add","remove","clear","IdTitleNode","attributes","createIdTitleNode","getAttributeValue","child","getFirstActiveNode","getChildIds","containsAllChildrenIds","containsSomeChildrenIds","setHierarchialTitle","sortUIdTitleNodes","setHierarchialTitles","removeIds","newChild","newItem","getAsList","list","nodes","node","equalIdsInArrays","equalIds","CompanyMenuItem","logo","allPartnersCompanyGroupCode","removeConfirmationWord","downloadMimeType","whistleBlowSystemUserCode","minimumPasswordLength","maximumPasswordLength","userParameterShowPageNavigation","optionCodeTaskTypeExpressionInfoDocument","infiniteListPageSize","DialogButtonType","DialogButtonSize","AttachmentImageSize","FileType","DocumentVersionType","Permission","MessageTypeClass","TaskRepetitionType","TaskVisibility","TaskDataRowDataType","TaskTypeClassWidthPrefix","TaskTypeClassHidden","TaskTypeClassTextAreaSize","TaskTypeClassTextSize","TaskTypeClassRightAlign","TaskTypeClassNoTitle","TaskTypeClassFontWeight","TaskTypeClassPreWrap","TaskStateEditabilityType","ApplicationPermissionType","DatabaseRecordType","FrontPagePanelType","ContentPagePanelType","FrontPagePanelSize","CultureCode","GroupType","GroupPermissionLevel","UserGroupAuthorizationLevel","CompanyGroupType","UserGroupType","RecordEmailNotificationType","UserType","OptionDataType","CompanyActiveState","ConfirmationDialogResult","RecordEmployeeType","RecordEducationScopeUnit","RecordUserLogEntryType","RecordUserAttachmentCategory","UserRemoveType","RecordUserRemoveType","ReportType","InstantMessageReadState","InstantMessageChannelArchivingType","InstantMessageChannelUserType","InstantMessageChannelUserActiveState","InstantMessageChannelMessageExpirationTime","InstantMessageUserInvitationAcceptType","SignalRModuleType","SignalRRecordType","EventState","EventUserState","EventStateFilter","EventObserverActionUseType","EventLocationUseType","WhistleBlowState","WhistleBlowArchiveState","WhistleBlowStateFilter","WhistleBlowSeverity","WhistleBlowResolution","WhistleBlowSource","WhistleBlowAnonymity","WhistleBlowChannelResourceType","WhistleBlowArchivingType","DefaultHandlerType","EventTypeUsageType","EventTypeCategory","UserFurtherEducationState","ReportSharingType","CalendarTaskState","CalendarTaskRepetitionType","CalendarTaskPrivacyFilter","EnumHelper","isEqual","isLessThan","isGreaterThan","isLessOrEqualThan","isGreaterOrEqualThan","UserGroupAuthorizationLevelToStr","authorizationLevel","AuthorizationLevelSystemAdmin","AuthorizationLevelAdmin","AuthorizationLevelSuperUser","AuthorizationLevelUser","AuthorizationLevelNone","ApplicationPermissionTypeToStr","applicationPermissionType","CurrentTopics","Documents","CompanyGroups","Companies","UserGroups","Users","UserRecords","Events","Tasks","Log","InstantMessagesMenuTitle","WhistleBlow","Calendar","DatabaseRecordTypeToStr","databaseRecordType","Message","Document","CompanyGroup","Company","UserGroup","User","RecordUser","Event","Task","InstantMessage","CalendarTask","ApplicationPermissionTypeToImageClass","RecordEmployeeTypeToStr","recordEmployeeType","Intern","Employee","AgencyWorker","Entrepreneur","SeasonalWorker","Other","RecordEmployeeTypeFromStr","recordEmployeeTypeStr","RecordEducationScopeUnitToStr","recordEducationScopeUnit","Hour","Day","CourseCredit","StudyWeek","Course","RecordEducationScopeUnitToStrPlural","Hours","Days","CourseCredits","StudyWeeks","Courses","RecordUserLogEntryTypeToStr","recordUserLogEntryType","RecordUserLogEntryTypeCreate","RecordUserLogEntryTypeOpen","RecordUserLogEntryTypePrint","RecordUserLogEntryTypeReport","RecordUserLogEntryTypeSave","InstantMessageUserInvitationAcceptTypeToStr","instantMessageUserInvitationAcceptType","InstantMessageUserInvitationAcceptTypeCannotInvite","InstantMessageUserInvitationAcceptTypeCanInvite","InstantMessageUserInvitationAcceptTypeAutoAcceptInvitation","EventStateToStr","Draft","NotAssigned","StateOpen","Closed","EventStateToPluralStr","Drafts","StateOpenPlural","ClosedPlural","WhistleBlowStateToStr","whistleBlowState","WhistleBlowStateNew","WhistleBlowStateReceived","WhistleBlowStateInProgress","WhistleBlowStateResolved","WhistleBlowStateArchived","WhistleBlowResolutionToStr","whistleBlowResolution","WhistleBlowResolutionUnspecified","WhistleBlowResolutionResolved","WhistleBlowResolutionRejected","WhistleBlowResolutionCanceled","WhistleBlowResolutionJunk","WhistleBlowResolutionOther","WhistleBlowSeverityToStr","WhistleBlowSeverityUnspecified","WhistleBlowSeverityVeryLow","WhistleBlowSeverityLow","WhistleBlowSeverityNormal","WhistleBlowSeverityHigh","WhistleBlowSeverityCritical","field","valueStr","valueNbr","crateTaskDataRowCol","getExpressionFieldTaskDataRowCols","getExpressionFieldTaskTypeCols","getExpressionsFieldNames","typeCols","expression","cols","col","compareTaskDataRowCols","typeCol","dataType","evaluateStrExpressionFormat","expressionFormat","evalValue","defVal","eval","getDefaultValueTaskDataRowCol","optionValues","idOptions","defaultStr","placeholder","Integer","defaultNbr","required","Time","hasMinus","hasPlus","offset","TimeSpan","Boolean","StringArray","TreeStringArray","idNodeOptions","defaultValues","defaultOptionsValues","stringify","getTaskDataRowColUiValue","getTimeEvalValue","getDateEvalValue","getTaskDataRowColDbValue","toISOString","setTaskDataRowColValueFromDbValue","getTaskDataRowColListUiValue","modifyUserName","dataCol","Yes","No","idOption","matchesToFilter","lowFilter","initializeValuesByType","dataCols","newDataCol","hasDefaultValues","defaultDataCol","getToBeSavedTaskDataRowCols","formCols","savedFormCols","isSaveDataType","isSavedTaskDataField","setTime","TaskDataRowCol","SaveTaskDataRowCol","modifyUserNameField","modifyDateField","TaskTypeCol","defaultExpression","unitTitle","readOnly","readOnlyExpression","useInFilter","minimum","maximum","class","expressionIndex","defaultSortField","defaultSortOrderAsc","sortExpressionTaskTypeCols","Label","LineBreak","colCanBeUsedInFilter","taskTypeCol","canBeFiltered","isCalculatedField","validateInputOfRequiredTaskTypeCols","rowCols","successCallback","errorCallback","rowCol","getTaskTypeColTitle","Translations_en_US","Translations_sv_FI","Translations_fi","setCulture1","DoYouReallyWantToRemoveTaskPriorityParameter","RemoveTransferredProperty","JobResultParameterNotFound","Identifier","PrintParameterDownloaded","FormSizeLarge","NotificationsQueuedSuccessfully","TrainingStartDateStart","Unpublish","EmptyingTaskTrashBinWasSuccessful","Font","DoYouReallyWantToRemoveEventParameter","DeletingAttachmentsWasNotSuccessfulErrorParameter","ObserverAction","DatabaseCheckingStarted","SavingEventDefaultHandlerParameterWasNotSuccessfulErrorParameter","DoYouReallyWantToRemoveRemainderParameter","View","ArchivingWhistleBlowsParameterWasNotSuccessfulErrorParameter","SavingMessageSendEmailParameterWasNotSuccessfulConcurrencyError","AddCompanyToCompanyGroup","DeletingRecordUserTransferredPropertyParameterWasNotSuccessfulConcurrencyError","VoucherPrefix","SavingRecordUserParameterWasSuccessful","InternalAttachments","AllCalendarTaskUsers","MaximumSizeOfSingleAttachment","ShortName","DeletingRecordUserParameterWasNotSuccessfulErrorParameter","Sorting","AddingCalendarTaskHandlerWasNotSuccessfulErrorParameter","GroupByFamiliarization","DoYouReallyWantToRestoreThisInstantMessage","DeletingKeywordsParameterWasNotSuccessfulConcurrencyError","AddFurtherEducations","AddNew","SelectSubject","AccessRightNone","AddChildEventType","FormColumnTitle","ExternalSystemUserCodeMustBeDefined","SavingRecordUserTransferredPropertyParameterWasNotSuccessfulConcurrencyError","AddChildDefaultEventType","DeletingCompaniesParameterWasNotSuccessfulErrorParameter","PropertyTransferred","DeletingCalendarTaskParameterWasNotSuccessfulErrorParameter","NewRecordUserMustBeSavedBeforeEmploymentsCanBeAdded","DoYouReallyWantToRemoveInstantMessageChannelParameter","Familiarizations","Row","RemovePicture","DeletingRecordFurtherEducationGroupParameterWasNotSuccessfulErrorParameter","FormCheckbox","NewCompanyMustBeSavedBeforePartnersCanBeAdded","RemoveRecordUserAndUserSetExpired","InstantMessageChannelAdministrator","AddEventPartner","Employment","SavingUserGroupParameterWasNotSuccessfulErrorParameter","DeletingRecordQualificationsParameterWasNotSuccessfulErrorParameter","SavingEventTypeCParameterWasSuccessful","IncludeArchivedRecordUsers","CopyDefaultHandlersToAllSameLevelUnits","WhistleBlowInformantHint","DeletingEventTypeParameterWasNotSuccessfulErrorParameter","DeletingRecordUserTransferredPropertiesParameterWasSuccessful","InvitationPasswordReset","Handlers","DeletingRecordUserTransferredPropertyParameterWasNotSuccessfulErrorParameter","MobileAppInUse","CompanyThatIsRelatedToEventsCannotBeDeleted","AddEventHandler","RecordUserExcelFurtherEducation","EditAttachment","SavingCompanyParameterWasSuccessful","AddingRecordUserSalaryRowsWasNotSuccessfulErrorParameter","EmailNotificationOfChangedPublishStatus","SavingCompanyGroupParameterWasSuccessful","ParameterIsNotValidAccountIBANNumber","YouDeletedThisMessage","WhistleBlowChannelSettings","DefaultTaskPriorities","DeletingKeywordParameterWasSuccessful","InstantMessageChannelRemoveFromYourselfFromAdministratorsConfirmation","Unkown","SavingEventSettingsWasNotSuccessfulConcurrencyError","SavingRecordUserTransferredPropertyParameterWasSuccessful","WhistleBlowInformantDescription","DoYouReallyWantToRemoveCalendarTaskParameter","SavingRecordUserQualificationParameterWasSuccessful","SendInvitationEmailToImportedUsers","ActiveUserRightsCannotBeCopiedToDirectoryItemFolderParameter","SavingJobParameterWasSuccessful","Favorites","SentEmails","WhistleBlowReportIHaveSavedThePassword","SearchDocuments","DoYouReallyWantToUnlockEvent","Invoicing","ChartType","Sender","DefaultStyle","ReadImp","AddUserParameterWasSuccessful","ExternalSystemCompanyTokenParameterIsAlreadyInUse","RecurringCalendarTaskCannotHaveMoreThanParameterOccurences","UsersOfThisCompany","EmploymentEndDate","JobDataIsEmpty","SavingCalendarTaskParameterWasSuccessful","UpdateUserGroupParameterExternalSystemsWasNotSuccessfulConcurrencyError","ExpiredFurtherEducations","SavingUnitsWasNotSuccessfulErrorParameter","WhistleBlowAnonymityAnonymous","TaskDataRowFieldParameterNotFoundInDataSchema","CalendarTaskEditOccurrence","DoYouReallyWantToRemoveEventUrgencyClassParameter","UserFilterActive","CompanyNameMustBeDefined","SavingEventParameterWasSuccessful","LockingEventParameterWasNotSuccessful","AdditionalInformation","SetUnitPermissions","PrintRow","TimeSpanHalfYear","ExpiresInParameterDays","SavingEventTypeCParameterWasNotSuccessfulConcurrencyError","EditableDocumentCodeMustBeDefined","EditFurtherEducation","EventTypeCodeMustBeDefined","RemoveEvent","ChooseHowYouWantToReport","ChangedObserverAction","FormCodeIsAlreadyInUse","RecordUserReport","RecordUserActiveStateChangePermissionDeniedInUnitParameter","DoYouReallyWantToRemoveRecordUserParameter","Go","FormRowPrint","TimeSpanMonth","RemoveDefaultTaskType","SavingRecordFurtherEducationGroupParameterWasNotSuccessfulErrorParameter","ReadReceiptMessage","DeletingDocumentTemplateParameterWasSuccessful","DeletingUserGroupUsersOfCompanyParameterWasNotSuccessfulConcurrencyError","DeletingEventTypeParameterWasSuccessful","FamiliarizationsMustBeDefinedBeforeAddingRecordUserFamiliarizations","AddFolder","Locked","UserProfile","InstantMessageChannelArchivingTypeRemoveChannelAtDateParameter","SelectOperatorOrFunction","ExternalSystemDatabaseInterfaceError","PublishVoucherInOutReportToFileSystem","DeletingMessageTypeParameterWasNotSuccessfulUsedInParameterMessages","LockedEventParameterCannotBeDeleted","TaskStateCodeIsAlreadyInUse","ClearSubUnitPermissions","DaysAgo30","SavingImagesWasSuccessful","SavingDocumentTemplateParameterWasNotSuccessfulConcurrencyError","JobTypePushNotification","AddTaskState","SavingTaskStateParameterWasNotSuccessfulConcurrencyError","DoYouReallyWantToRemoveFolderParameter","CopyContentToDocumentContent","LanguageNonLocalSwedish","LanguageSwedish","SavePrintAs","EventTypesMustBeDefinedBeforeAddingEvents","AType","KeywordParameterNotFound","AdditionalPermissionAWhistleBlow","Characters","ReadReceiptGiven","WhistleBlowGuide","DeletingWhistleBlowCategoryParameterWasNotSuccessfulConcurrencyError","UserGroupParameterIsInUseInParameterUsersAndCannotBeDeleted","FormExpression","FieldParameterMaxLengthIsParameter","AddingCalendarTaskHandlersWasSuccessful","DeletingEditableDocumentParameterWasNotSuccessfulErrorParameter","InstantMessageChannelInformation","RecordBasicEducationCodeMustBeDefined","MyFilters","SavingImagesNotSuccessfulErrorParameter","DeletingTaskDataRowWasNotSuccessfulConcurrencyError","DeletingUserParameterWasNotSuccessfulConcurrencyError","RemoveUnit","TheUserDoesNotHavePermissionsForThisSystem","EditableDocument","NewCompanyGroupMustBeSavedBeforeUsersCanBeAdded","DeletingCalendarTaskCategoriesParameterWasSuccessful","RemoveEventHandler","SavingTaskTypeParameterWasNotSuccessfulErrorParameter","List","ErrorUserChangeWouldLeadToInvalidDefaultEventHandlers","SavingInstantMessageChannelParameterWasNotSuccessfulConcurrencyError","ExpiredFamiliarizations","AddPhoto","AllDocumentTypes","DeletingDocumentTemplatesParameterWasNotSuccessfulErrorParameter","FormTitle4","ValidityEndDate","InstantMessages","WhistleBlowRecords","LockedTaskParameterCannotBeSaved","SelectTaskPriority","SavingCompanyGroupParameterWasNotSuccessfulErrorParameter","FormTextAreaSize","AccessRightWriteInstantMessages","SSRSParameterReportsFetched","Hidden","ReadReceiptRequired","DeletingUserGroupParameterWasNotSuccessfulErrorParameter","CompanyTaskTypesInstruction","DeletingUserGroupParameterWasNotSuccessfulConcurrencyError","SavingMessageSendEmailParameterWasSuccessful","SavingRecordFamiliarizationParameterWasNotSuccessfulErrorParameter","DeletingRecordQualificationParameterWasNotSuccessfulConcurrencyError","LockedToUser","OperationNotAllowedForRootFolderParameter","FormExpressionFormatMinutesToHoursAndMinutes","MessageModuleProperties","FormWidthMobile","AddFamiliarization","EventType","Parameters","FolderPath","TaskParameterNotFound","ActivePlural","ReadingDatabaseParameter","SearchEndDate","BankBICCode","JobTitleMustBeDefined","RecordFurtherEducationGroupCodeIsAlreadyInUse","WebPageStyle","SavingMessageTypeParameterWasSuccessful","DeletingWhistleBlowCategoryParameterWasNotSuccessfulErrorParameter","SelectTaskInListToSeeThePreview","DoYouReallyWantToRemoveUserGroupParameter","ReminderHoursBefore","Handling","EventHandlerParameterNotFound","UnitIsRelatedToEventPartner","ValidPlural","Camera","CalendarTaskRepetitionRepeatIntervalPrefix","DefaultEventSettings","UserRecordStatisticsUserAccountConnectedCards","UserIsActiveInWeb","FormDatesAndTimes","DeletingEventUrgencyClassesParameterWasNotSuccessfulErrorParameter","AdditionalPermissionAMessage","SavingEventMessageWasNotSuccessfulErrorParameter","Change","FormTitle1","NoFilters","TaskHandlers","SavingInstantMessageWasSuccessful","AllLogisticVoucherCustomers","SavingTaskPriorityParameterWasSuccessful","GroupByHalfYear","PermissionToCreateEvents","ModifiedActions","CalendarTaskHandlers","DoYouReallyWantToSave","SavingRecordUserQualificationParameterWasNotSuccessfulConcurrencyError","Public","DoYouReallyWantToRemoveRecordQualificationParameter","WorkShift","SelectUser","Trigonometry","ThisMessageWasDeleted","SavingEventTypeCParameterWasNotSuccessfulErrorParameter","AddingRecordUserFamiliarizationsWasSuccessful","EditDefaultBasicEducation","MessageType","YouHaveNotSavedChangesDoYouWantToSaveChanges","InstantMessageChannelUserParameterIsNotAllowedToUseChannelParameter","FileChangesCheckingAndEmailingFinishedInParameterSeconds","AddUserGroupParameterWasNotSuccessfulErrorParameter","DefaultBasicEducations","WhistleBlowArchivingTypeChangeStateAndRemoveAllData","SelectCompanyGroupOrCompany","WhistleBlowInformant","DesignArea","EditableDocumentSaveBeforeApproveConfirmation","EmptyDocument","FormPrint","DeletingOneTimePasswordWasNotSuccessfulConcurrencyError","Color","RecordUserExcelFamiliarization","Wage","SavingDirectoryItemDocumentParameterWasNotSuccessfulErrorParameter","Salary","RemoveNotifiedPerson","PrivateAndPublic","LockedCalendarTaskParameterCannotBeDeleted","DeletingCalendarTaskCategoryParameterWasSuccessful","InstantMessageChannelUsersNotUsable","AddTaskHandler","FormTitle2","EventTypeBParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted","Target","WhistleBlowResolutionTypeMustBeDefined","CopyDefaultHandlers","InvitationParameterHasBeenExpired","SavingCalendarTaskCategoryParameterWasNotSuccessfulConcurrencyError","CompanyGroupCodeIsAlreadyInUse","Interval","LogEventType","DeletingTaskPrioritiesParameterWasNotSuccessfulConcurrencyError","DeletingTaskDataRowWasSuccessful","DeletingRecordFamiliarizationsParameterWasNotSuccessfulErrorParameter","UpdatingDatabase","PreviewPanel","MessageTypes","NewRow","LanguageFinnish","Copy","CopyDocumentsFromCompany","RemoveDefaultTaskState","PushNotificationInUse","FormulaMin","FolderCannotBeMovedToItsSubFolder","And","AddPartners","FormDecimals","SaveCalendarTaskConfirmation","FormNormalText","EditFileFilter","SavingMessageSendEmailParameterWasNotSuccessfulErrorParameter","CalendarTaskRepetitionCountSuffix","UserCodeMustBeDefined","DefaultEventUrgencyClassParameterCannotBeDeleted","SavingSettingsWasSuccessful","WhistleBlowInternalMessageConfirmation","EventTypeBCodeMustBeDefined","PreventiveAction","DownloadDocument","CalendarTaskRepetitionRepeatIntervalDayMonthSeparator","SelectRecordUserTypeToBeCreated","UserParameterNotFound","DeletingRecordUserTransferredPropertiesParameterWasNotSuccessfulErrorParameter","ReminderHourBefore","PageName","TrainingTime","InvalidReCAPTCHA","WhistleBlowApplicationName","RemoveLogisticVoucherCustomerPaymentSetting","DeletingCompaniesParameterWasSuccessful","City","SavingEventTypeBParameterWasNotSuccessfulErrorParameter","AddTransferredPropertyToMultipleUserRecords","LogoSquare","RemoveTaskPriority","TaskTypeParameterIsInUseInParameterTasksAndCannotBeDeleted","NoToDos","AddFamiliarizations","Payer","ApproveEventHandlerConfirmation","RowAmountIncludedInPrint","DeletingRecordBasicEducationsParameterWasSuccessful","NewRecordUserMustBeSavedBeforeFurtherEducationsCanBeAdded","SavingTaskDataRowWasNotSuccessfulErrorParameter","UserIsWhistleBlowChannelAdminAndCannotBeDeleted","SelectTaskState","DoYouReallyWantToRemoveTaskHandlerParameter","WhistleBlowSourceOral","TransportCompany","Header","Payee","DeletingDocumentTemplateParameterWasNotSuccessfulErrorParameter","TaskModuleProperties","EventReceiverIsPartnerCompany","DeletingInstantMessageUserParameterWasNotSuccessfulErrorParameter","ChangeLanguage","AddWhistleBlowChannelAdminsParameterWasSuccessful","AddWhistleBlowChannelAdminParameterWasSuccessful","Familiarization","HandlersMustBeDefined","AccountNumberTkbInCredit","SavingDefaultHandlersWasNotSuccessfulErrorParameter","AddRow","NoInstantMessageChannelsToShow","EditLogisticVoucherCompanyPaymentSetting","NoEvents","DeletingTaskDataRowWasNotSuccessfulErrorParameter","ExcelFile","DeletingRecordUserEmploymentsParameterWasSuccessful","InstantMessageChannelMustHaveAtLeastOneAdministrator","EmailMessage","GroupByMonth","SavingEditableDocumentParameterApprovalWasSuccessful","OtherSettings","DocumentRootPath","FormBoldFont","ChartGenerationFailed","RemovingTaskHandlerWasNotSuccessfulErrorParameter","SetPermissions","AddCompaniesParameterWasSuccessful","FormCalculated","RemoveRemainder","FormTimeSpan","AddingAddRecordUserQualificationsWasNotSuccessfulErrorParameter","End","ThisMessageWasDeletedByInstantMessageChannelAdministrator","DeletingRecordBasicEducationParameterWasNotSuccessfulConcurrencyError","ReadMode","DeletingEventPartnerParameterWasNotSuccessfulConcurrencyError","EmailingMessageWasNotSuccessfulErrorParameter","RecordUserQualificationParameterNotFound","AddFamiliarizationToMultipleUserRecords","Subject","SharedReportAllCompanies","DoYouReallyWantToRemoveSelectedFileFilters","Loading","MessageTypeParameterNotFound","FileFilters","AddInstantMessageChannel","FileFilterCodeMustBeDefined","UpdateUserParameterExternalSystemsWasSuccessful","DocumentRootPathIsNotEmpty","TaskStateCodeMustBeDefined","DraftCannotBeApprovedDoYouWantToSaveDraftAnyway","RecordParameterUnlockingFailedRecordIsWriteLockedToUserParameter","ShowPublishVersion","FormUsableInSearchFilter","TrainingEndDate","RecordUserEmploymentParameterNotFound","ApplicationTempPathParameterNotFound","LogisticVoucherCustomer","Download","MaxSearchResultCount","NewUserMustBeSavedBeforeUserGroupsCanBeAdded","CustomStyleClass","RecordFurtherEducationCodeMustBeDefined","RemoveUserFromUserGroup","DoYouReallyWantToRemoveSelectedUsers","InTesting","DeletingEventParameterWasNotSuccessfulErrorParameter","VoucherInOutReportSavePath","SavingUnitPermissionsWasSuccessful","SelectEventReceiver","MovingFilesAndDocumentsToFolderParameterWasNotSuccessfulConcurrencyError","RemoveRow","RecordUserExcelTabName","SavingJobParameterWasNotSuccessfulErrorParameter","Banner","Portrait","DoYouReallyWantToRemoveSelectedHandlers","TaskMustBeSavedBeforeAttachmentsCanBeAdded","RememberMe","SavingTaskPriorityParameterWasNotSuccessfulErrorParameter","BannerPath","ShowArchived","AddQualification","RemovingTaskHandlersWasSuccessful","DoYouReallyWantToSaveData","Months","WhistleBlowInformantHasReadMessage","DocumentTemplateCodeIsAlreadyInUse","EventSenderIsPartnerCompany","SelectInstantMessageChannelUser","FamiliarizationStartDateStart","AddFile","DeletingEventUrgencyClassParameterWasNotSuccessfulErrorParameter","FormRequired","UserModuleProperties","SearchProperties","ReminderDayBefore","NoDataToShow","CalendarTaskStartDateMustBeDefined","EditDocumentTemplate","InstantMessageChannelOneUser","Errors","FormShowInRow","ExpireTime","DeletingCompanyGroupParameterWasNotSuccessfulErrorParameter","TaskStatesMustBeDefinedBeforeAddingTasks","Folder","RemoveInstantMessageChannelUser","DoYouReallyWantToRemoveRecordFamiliarizationParameter","Resolution","ReportDialogInfoText","FirstNameMustBeDefined","CalendarTaskRemoveOccurrence","SaveToTemplate","ImmediateAction","MoveDown","PaymentSettings","Folders","Max","CostCentreNumber","SendingNotificationsWasNotSuccessfulErrorParameter","ShowUsers","FormulaMultiplication","NewRecordUserMustBeSavedBeforeQualificationsCanBeAdded","SavingEventUrgencyClassParameterWasNotSuccessfulConcurrencyError","ProcessingTimeDays","AddRows","NotInUse","AutomaticLogoutDone","UserRecordStatisticsExpiredFurtherEducations","DeletingUsersParameterWasSuccessful","EmailAddress","DoYouReallyWantToRemoveEventTypeParameter","AddPartnersParameterWasNotSuccessfulConcurrencyError","Others","LogSizeInDays","EditTask","AddUserParameterWasNotSuccessfulErrorParameter","NormalMessage","PositionErrorPermissionDenied","PermissionsToCreateEventsToEventPartner","AddMessage","FormMaximumValue","VoucherSavePath","DoYouReallyWantToRemoveChartPanelParameter","DeletingFileFiltersParameterWasNotSuccessfulConcurrencyError","SavingOptionParameterWasNotSuccessfulErrorParameter","DirectoryItemFolderParameterNotFound","Picture","TrainingStartDateEnd","NoModifications","ReportGenerationAborted","SelectComponentInFormToSeeComponentProperties","PaymentSetting","FormulaSqrt","LogEventTime","Remainder","PrivacyPolicy","AddingTaskHandlersWasSuccessful","DoYouReallyWantToRemoveTaskDataRow","LockingTaskDataRowWasNotSuccessful","EditEditableDocument","FolderParameterAlreadyExistsInTargetFolder","ValidityEndDateEnd","NotSelected","Filter","Description","DeletingMessageParameterWasNotSuccessfulConcurrencyError","Code","DeletingTaskTypesParameterWasNotSuccessfulConcurrencyError","MessageEndDate","ReadImpPlur","SharedReports","SavingEventTypeBsWasSuccessful","SavingAttachmentsWasNotSuccessfulErrorParameter","DeletingRecordQualificationParameterWasSuccessful","AddingAddRecordUserFurtherEducationsWasNotSuccessfulErrorParameter","WhistleBlowStatisticsReceivedRecords","Summary","ThisPartOfApplicationIsNotInUse","DeletingEditableDocumentParameterWasNotSuccessfulConcurrencyError","JobTypeEventNotification","EditEventPartner","CalendarTaskEndDateMustBeAfterStartDate","PasteDefaultHandlers","IndirectCosts","SavingDirectoryItemDocumentParameterWasSuccessful","DeletingWhistleBlowChannelAdminsParameterWasSuccessful","AllInstantMessageUsersHaveReadMessage","DeletingWhistleBlowChannelAdminParameterWasNotSuccessfulConcurrencyError","InstantMessageChannelUserParameterNotFound","DoYouReallyWantToRemoveRecordBasicEducationParameter","SavingMessageSendPushParameterWasNotSuccessfulConcurrencyError","Move","Employments","UserIsActiveInMobile","AddComment","AddAtleastOneInstantMessageChannelUsersToInstantMessageChannel","DoYouReallyWantToRemoveFilterParameter","ReportsStandard","Warning","GeneralAttachments","FormTitle3","FormSortAscending","FirstListRow","DeletingFileFiltersParameterWasNotSuccessfulErrorParameter","WhistleBlowChannelWasNotFound","LoggedInCompanyCannotBeDeleted","RemoveQualification","FileParameterDownloaded","PermissionsForSections","AddingAttachmentParameterWasNotSuccessfulErrorParameter","TiedostoturvaUseType","FormulaAddition","CompanyGroupParameterNotFound","RowInformation","AddCompaniesParameterWasNotSuccessfulErrorParameter","UnlockingEditableDocumentParameterWasNotSuccessful","TheSystemDoesNotSupportYourWebBrowserUpdateToLatestBrowserVersion","DoYouReallyWantToRemoveAttachmentParameter","TimeSpanTwoYears","AdditionalFunctions","DirectoryItemDocumentParameterNotFound","WhistleBlowSendReport","ValidityEndDateStart","RemoveRecordUserAndKeepUser","InternalMessages","WhistleBlowNewReport","ImportingUsersParameterWasSuccessful","FamiliarizationStartDate","SavingEventMessageWasSuccessful","AddUsersParameterWasNotSuccessfulConcurrencyError","UnreadMessagesParameter","AddPartnerParameterWasNotSuccessfulErrorParameter","DeletingCalendarTaskCategoriesParameterWasNotSuccessfulErrorParameter","ValidityDate","CalendarTaskRepetitionCountPrefix","WhistleBlowEventTypeHandlersAdded","AllJobTitles","AddSharedDocumentTemplate","DocumentTypes","AddUserGroupParameterWasNotSuccessfulConcurrencyError","RemoveTask","DeletingPartnerParameterWasSuccessful","ApplicationTempPathIsNotSpecified","RemoveUserGroupExternalSystemsWasNotSuccessfulConcurrencyError","SavingDefaultHandlersWasSuccessful","EventUrgencyClassParameterNotFound","FormDisabled","AddPartnersParameterWasSuccessful","UserFilterExpired","DeletingUserGroupsParameterWasNotSuccessfulConcurrencyError","PublishVoucherToFileSystem","ReplyToInstantMessage","FolderNameConstainsIllegalCharacters","RemoveFile","NewMenu","PushEndpoint","SavingApplicationPermissionsWasNotSuccessfulConcurrencyError","Add","DeletingRecordUserEmploymentParameterWasNotSuccessfulConcurrencyError","AccessRightReadInstantMessages","ExitingInstantMessageChannelWasSuccessful","EventParameterUnitChangedFromParameterToParameter","DoYouReallyWantToUnlockEditableDocument","UserAccountNotConnected","All","FieldParameterValueCanOnlyContainNumbers","PrintRecordUser","RemoveDocumentTemplate","IncludeOnlyActiveUsers","AddFileOrTakePicture","DaysAgo90","SavingRecordEmploymentParameterWasNotSuccessfulConcurrencyError","DoYouReallyWantToClearLog","OldPassword","RemoveForm","ProcessingFolderParameter","WhistleBlowCategoryParameterNotFound","ShowUserGroups","TaskTypeParameterNotFound","ClearSubFolderPermissions","AddDefaultFurtherEducationGroup","NewInstantMessageChannel","FamiliarizationEndDate","ReminderWeeksBefore","RecordFamiliarizationParameterNotFound","WebPushError","DocumentTemplateCodeMustBeDefined","SaveUserFurtherEducationConfirmation","OpenWhistleBlowInstruction","FurtherEductionGroupParameterContainsFurtherEducationsAndCannotBeDeleted","NoAddedEventTypes","SavingEventParameterWasNotSuccessfulErrorParameter","DoYouReallyWantToExitInstantMessageChannel","DoCleanLog","RecordFurtherEducationCodeIsAlreadyInUse","EventCreator","PermissionsForSystems","ReadError","FolderParameterAlreadyExistsInFileSystem","SaveDraft","FormNumbers","DeletingInstantMessageWasSuccessful","FormulaFloor","EditMessageType","EditTaskPriority","UsedQuota","Panels","LockedTaskParameterCannotBeMovedToTrashBin","FolderTreePermissions","FormShowModifyDate","WhistleBlowNotFound","ShowInheritedPermissions","SaveInstantMessageChannelConfirmation","AllEventHandlersHaveReadMessage","AdditionalPermissionBEventsDialog","DefaultEventHandlers","SavingWhistleBlowCategoryParameterWasNotSuccessfulErrorParameter","AddFileFilter","IncludeArchivedFamiliarizations","TaskDataRow","LockedTaskParameterCannotBeRestored","Preview","ExternalSystemCompanyCodeClaimNotFound","SavingCalendarTaskParameterWasNotSuccessfulErrorParameter","DocumentsNotFound","ComparingFileSystemToDatabase","RequestPasswordChangeTitle","DeletingDocumentTemplateParameterWasNotSuccessfulConcurrencyError","TaxNumber","AddingRecordUserFamiliarizationsWasNotSuccessfulErrorParameter","Archived","RemoveInvalidDefaultEventHandlersConfirmation","FormModifyDate","InstantMessageChannelContainsParameterInstantMessageUsersAndCannotBeDeleted","NewRecordUserMustBeSavedBeforeFamiliarizationsCanBeAdded","DocumentsSelected","ScopeCanBeChanged","WhistleBlowReceiver","DefaultEventUrgencyClassMustBeDefinedBeforeAddingEvents","WhistleBlowInformantMustBeNotifiedLatestAtParameter","SearchCalendarTasks","EventTypesGeneric","DeletingEditableDocumentParameterWasSuccessful","FormInitializeFromSavedRow","RootCause","CostCentreName","ReadReceiptNotGiven","SavingOneTimePasswordWasNotSuccessfulConcurrencyError","AddLogisticVoucherCompanyPaymentSetting","LoggedInUser","UserCodeMustBeValid","PreviewRowPrint","SavingCalendarTaskParameterWasNotSuccessfulConcurrencyError","TargetsMyCompany","FieldParameterContainsInvalidCodeCharacters","LogisticVoucher","AccessRightWriteTasks","NewInstantMessageChannelMustBeSavedBeforeUsersCanBeAdded","RecordUserParameterNotFound","EventTypes","NormalSize","TypeMustBeDefined","ConfirmPassword","Logo","DoYouReallyWantToRemoveKeywordParameterItIsUsedByParameterDocuments","ChangeToEditMode","FormCalculatedDecimalNumber","SharedDocumentTemplates","SavingEventMessageWasNotSuccessfulConcurrencyError","DeletingAttachmentsParameterWasNotSuccessfulErrorParameter","ProjectName","DoYouReallyWantToRemoveSelectedRecordFurtherEducations","DocumentVersionParameterNotFound","SelectRemovingMethod","Partners","ExpiringIn120Days","DeletingRecordFurtherEducationParameterWasNotSuccessfulConcurrencyError","Publish","SavingRecordBasicEducationParameterWasSuccessful","Report","SelectCompany","MessageTypeCodeIsAlreadyInUse","Weekly","PageNameMustBeDefined","LockedCalendarTaskParameterCannotBeSaved","LogLine","SendEmailInvitationConfirmation","SSRSRefreshStarted","Version","RemoveUser","AddPermission","DeletingOneTimePasswordWasNotSuccessfulErrorParameter","TaskMustBeSavedBeforeCalendarTasksCanBeAdded","ParameterPercentOfFileStorageQuotaUsed","PasswordChangeRequestParameterNotFound","EducationsAndCompetencies","Priority","AddCompanyGroup","DeletingUserParameterWasNotSuccessfulErrorParameter","AddUsersParameterWasSuccessful","FormulaSin","EmployeeTypeMustBeDefined","CompanyTaskTypes","SavingUserParametersWasSuccessful","SendingEmailToParameter","RemoveLogisticVoucherCustomer","SavingRecordEmploymentParameterWasSuccessful","Properties","FormMaxTextLength","RemoveFamiliarization","CompanyModuleProperties","UserTypeClaimNotFound","ArchiveExpiredFamiliarizations","EditableDocumentVersionMustBeDefined","UserCannotRecieveEmailNotifications","Starts","DeletingDirectoryItemDocumentParameterWasNotSuccessfulErrorParameter","EventTypeCCodeIsAlreadyInUse","AddPartnerParameterWasSuccessful","RenamingFileParameterWasNotSuccessfulErrorParameter","WhistleBlowEventTypeAttachmentsAdded","SavingReportWasNotSuccessfulErrorParameter","ArchiveExpiredFurtherEducations","DetectingLocation","SavingFilterWasNotSuccessfulConcurrencyError","Phone","FormExpressionEditor","FiltersStandard","SelectFurtherEducation","DocumentsParameterOverwriteConfirmation","FormDefaultValue","NotificationSettings","JobParameterNotFound","Month","ModifiedDescription","EditableDocumentCodeIsAlreadyInUse","LastListRow","DocumentParameterAlreadyExists","SelectEventPartner","NewInstantMessageChannelGroupInternal","WhistleBlowEventTypeHandlersRemoved","SendinEmailNotificationsWasNotSuccessfulErrorParameter","DoYouReallyWantToRemoveSelectedEventUrgencyClasses","DoYouReallyWantToRemoveTaskParameterPermanenty","CompanyRole","AddToHomeScreen","RecordUsersFound","NewRecordUserMustBeSavedBeforeAttachmentsCanBeAdded","SavingEditableDocumentParameterPublishWasNotSuccessfulErrorParameter","SendingEmails","EditWhistleBlow","DeletingTaskStateParameterWasNotSuccessfulErrorParameter","AddDefaultBasicEducation","Yesterday","AddEventUrgencyClass","FileNameConstainsIllegalCharacters","NoImagesToShow","DoYouReallyWantToRemoveSelectedTaskPriorities","EditDefaultEventType","RemoveAttachment","FirstName","CalendarTaskStateNotStarted","EventHandler","OpenTrashBin","TaskPriorities","WhistleBlowInformantInstuctions","NewUserGroupMustBeSavedBeforeUsersCanBeAdded","BrowseFiles","EditRemainder","DeletingRecordQualificationParameterWasNotSuccessfulErrorParameter","RecordFurtherEducationParameterIsInUseInParameterRecordUsersQualificationsAndCannotBeDeleted","Start","ModifyDateEndDate","UserParameterPermissionDeniedForUnitParameter","DeletingTaskParameterWasSuccessful","LastNameMustBeDefined","RequiredValidQualificationCount","Qualifications","MaximumPasswordLengthCanParameterCharacters","EditLogisticVoucherPaymentSetting","DocumentNameIsTooLong","SavingEditableDocumentParameterWasSuccessful","ExternalsSystemParameterNotFound","DefaultCalendarTaskCategories","EditPayerSettings","EditDefaultTaskPriority","Menu","RecordFurtherEducationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted","Descending","NotSet","DeletingEventUrgencyClassParameterWasNotSuccessfulConcurrencyError","AddUserGroupsParameterWasNotSuccessfulErrorParameter","ResultGrouping","SelectReceiver","setCulture2","Continue","FurtherEducationsMustBeDefinedBeforeAddingRecordUsers","MoveTaskToTrashBin","DoYouReallyWantToRemoveMessageTypeParameter","RemoveEventPartner","DeletingTaskParameterWasNotSuccessfulErrorParameter","ThisChannelHasBeenArchived","Admin","EventsExcel","SavingEventDefaultHandlerParameterWasSuccessful","SavingInstantMessageChannelUserUserWasSuccessful","Password","EventParameterNotFound","AddCompanyGroupParameterWasNotSuccessfulConcurrencyError","RemoveDefaultTaskPriority","WholeHistory","PrintParameterNotFound","NextOfKin","DeletingCompanyParameterWasSuccessful","FieldParameterConstainsIllegalCharactersForFileName","FileNameMustBeDefined","Recurrence","ChangeSystemLanguageToFinnish","DocumentApproved","Print","ProcessedFolderParameterErrorCountParameter","LoggedInUserAccountIsNotActive","CalendarTaskCategoryParameterNotFound","AccessRightFull","DeletingUserGroupUsersOfCompanyParameterWasNotSuccessfulErrorParameter","AutoSaveVersionHistorySize","FilterIsActive","WorkTimeType","InstantMessageChannel","WhistleBlowDateAndTimeCannotBeInFuture","PrintFileName","LogCleaning","OpenCalendarTasks","Edit","KeywordCodeIsAlreadyInUse","ContentFiltering","Groups","FormRemoveFieldConfirmation","TargetsOtherCompanies","CalendarTaskRepetitionRepeatIntervalWeeklySuffix","DeletingTaskParameterWasNotSuccessfulConcurrencyError","CalendarTaskFilterByState","PrintEvent","MovedToTrashBin","UsedFileStorageQuota","ClassParameterHasNotBeenInitialized","CalendarTaskStateFinished","OptionCodeIsAlreadyInUse","CopyingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulErrorParameter","UserFilterNoUserGroup","DoYouReallyWantToRemoveEventTypeBParameter","Archive","SavingWhistleBlowWasSuccessful","Validity","DeletingFolderParameterWasNotSuccessfulErrorParameter","AddUnit","FurtherEducations","SaveEventHandlerConfirmation","RemoveParameterDocuments","ExternalIntraSystemCompanyTokenMustBeDefined","DeletingPartnersParameterWasSuccessful","Group","EventTypeBTitle","DeletingTaskTypeParameterWasNotSuccessfulConcurrencyError","RemoveUserAndRecordUser","FormWidthPrint","UpdateUserGroupParameterExternalSystemsWasNotSuccessfulErrorParameter","AddDefaultFurtherEducation","UserParameterCodeIsAlreadyInUse","PasswordHasBeenSetSuccessfully","AddUserGroupsParameterWasNotSuccessfulConcurrencyError","RemoveReport","AddCompany","DoYouReallyWantToRemovePartnersParameter","State","CompanyCodeMustBeDefined","SavingApplicationPermissionsWasNotSuccessfulErrorParameter","LastWeek","TheUserNameOrPasswordIsIncorrect","SelectUnit","AddDefaultEventHandler","SelectedDocumentTypes","FormulaDivision","RemoveCompanyTaskType","DeletingRecordQualificationsParameterWasNotSuccessfulConcurrencyError","RecordEmailNotificationShowExpired","AllSelected","RemoveDocument","SavingCompanyParameterWasNotSuccessfulConcurrencyError","UserPublicPasswordChangeMessage","JobTitle","EditMessage","DeletingEventTypeCParameterWasSuccessful","DoYouReallyWantToRemoveThisInstantMessage","AllWhistleBlowHandlersHaveReadMessage","PermissionToIdentificateEvents","SavingDirectoryItemPermissionsNotSuccessfulErrorParameter","Removed","WhistleBlowWasNotFoundExplanation","ActiveUserRights","MyFiltersAndReports","SavingReportWasSuccessful","ArchivingWhistleBlowsParameterWasSuccessful","EmptyingTaskTrashBinWasSuccessfulErrorParameter","FormIntegerNumber","DeletingEventTypeBParameterWasNotSuccessfulConcurrencyError","FiscalNumber","CompanyGroupAll","SavingUserParameterParameterWasNotSuccessfulConcurrencyError","SavingEventPartnerParameterWasSuccessful","OneTimeForm","CalendarTaskCategoryCodeIsAlreadyInUse","CompanyThatIsInUseCannotBeDeleted","Line","NotifiedPersonsShort","WhistleBlowMustBeReceivedLatestAtParameter","MessageMustBeDefined","InheritedUserRight","WhistleBlowArchivingTypeChangeStateAndRemoveInformantData","AddPrint","FileParameterIsNotImage","SaveInstantMessageChannel","FilterCondition","UpdateCompanyExternalSystemsWasSuccessful","NoEmailsToSend","Approve","NoAddedEventTypeCs","NoAddedEventTypeBs","SavingCompanyParameterWasNotSuccessfulErrorParameter","FormColumnWidthMobile","DeletingTaskPriorityParameterWasNotSuccessfulErrorParameter","Missing","WhistleBlowFrontPage","WhistleBlowDateAndTime","AddChildEventTypeB","NewMessage","SavingEventSettingsWasNotSuccessfulErrorParameter","Last7Days","ReadingFolderParameter","RemoveUserGroupExternalSystemsWasNotSuccessfulErrorParameter","NewEmploymentMustBeSavedBeforeAttachmentsCanBeAdded","DocumentParameterDownloaded","EditTransferredProperty","SavingChartWasNotSuccessfulErrorParameter","Severity","Reminders","SelectEventInListToSeeThePreview","RemoveFromFavorites","UserPasswordMustBeDefined","CalendarTaskRepetitionEndDatePrefix","SavingUnitsWasNotSuccessfulConcurrencyError","DefaultFurtherEducationGroup","SelectEventType","WhistleBlowReportHasBeenSaved","SelectEventHandler","CompanyTaskTypeTemplates","EmailHasBeenAlreadySentForThisMessage","WhistleBlowUrl","CopyingFolderParameterWasNotSuccessfulErrorParameter","ValueAddedTaxPercent","Success","SaveEvent","UserGroupNameIsAlreadyInUse","SelectableWhenCreatingAnEvent","LogIn","Form","UpdateUserParameterExternalSystemsWasNotSuccessfulErrorParameter","RemoveLogisticVoucherCompanyPaymentSetting","EventApprovalWasNotSuccessfulErrorParameter","PageFooterText","ExternalSystemCode","SavingMessageTypeParameterWasNotSuccessfulErrorParameter","CurrentWorkPlaceNotAdded","BasicEducations","DeletingWhistleBlowChannelAdminsParameterWasNotSuccessfulConcurrencyError","SuccessAudit","FormTextInputs","RemovePayer","NoName","DeletingRecordUserEmploymentsParameterWasNotSuccessfulConcurrencyError","ImageChangeInterval","EditableDocumentPublishUnapprovedConfirmation","UnitProperties","AddingAddRecordUserFurtherEducationsWasSuccessful","SavingMessageParameterWasSuccessful","AddCompanyParameterWasSuccessful","RequestPasswordChangeMessage3","InvitationParameterNotFound","FormExpressionFormat","DeletingEventTypeParameterWasNotSuccessfulConcurrencyError","FormulaHypot","EventTypeCParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted","DoYouReallyWantToRemoveUserParameter","OtherInformation","FormAddDropdownOption","InstantMessageChannelUser","RemoveRowConfirmation","CkickToChangeTheIcon","CurrentCalendarWeek","ExternalSystemCompanyCodeMustBeDefined","SelectEventTypeB","AddImageFromClipboard","ErrorUserGroupChangeWouldLeadToInvalidDefaultEventHandlers","CopyGroupPermissions","SavingEventTypesWasSuccessful","EditTaskState","Value","Images","FieldParameterContainsInvalidCompanyCodeCharacters","ReadingFileParameterWasNotSuccessfulFileNotFound","MaximumSizeOfInstantMessageAttachmentIsParameterMB","UserRecordStatisticsActiveCards","UserFirstNameMustBeDefined","PaymentVoucherCounter","Visibility","EmployeeTypeIsNotSupported","DoYouReallyWantToRemoveKeywordParameter","RequestPasswordChangeLinkHasBeenSent","AddInstantMessageUserParameterWasNotSuccessfulErrorParameter","RemoveDefaultEventType","Valid","UserCodeIsAlreadyInUse","DeletingCompanyGroupParameterWasNotSuccessfulConcurrencyError","DeletingEventUrgencyClassParameterWasSuccessful","Files","MessageVisibilityPeriodNotActive","DeletingRecordQualificationsParameterWasSuccessful","Observer","EventTypeParameterChildrenAreInUseInParameterEventsAndCannotBeDeleted","Usage","RowForm","FormComponents","CompanyParameterNotFound","DoYouReallyWantToReplaceDocumentTemplateParameter","AddUserToUserGroup","Aprint","InstantMessageChannelOnlyAdministratorCannotExitInstantMessageChannel","ReminderDaysBefore","TitleIsAlreadyInUse","DoYouWantToAddThisApplicationToHomeScreen","DocumentCreated","TasksExcelByTaskRows","AddingAttachmentsParameterWasNotSuccessfulErrorParameter","FrontPage","Cancel","FileFilter","DoYouReallyWantToRemovePrintParameter","AddingAddRecordUserQualificationsWasSuccessful","MessagePreservationTime","ClearSubUnitDefaultHandlers","NotificationsSentSuccessfully","InstantMessageSettings","SavingReadReceiptWasNotSuccessfulErrorParameter","TaskDataRowParameterNotFound","Path","Competency","MovingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulErrorParameter","CalendarTaskRemoveSeries","DeletingRecordBasicEducationsParameterWasNotSuccessfulErrorParameter","AddWhistleBlowChannelAdminParameterWasNotSuccessfulErrorParameter","DownloadPdf","Import","WhistleBlowNonAnonymousReport","EmploymentType","FileSynchronizationToDatabaseFinishedInParameterSeconds","RemoveEventType","DeletingRecordUserTransferredPropertyParameterWasSuccessful","AllDay","Resources","AddTransferredProperty","DocumentTemplates","UserSessionHasBeenExpired","SavingRecordFurtherEducationGroupParameterWasSuccessful","AddDefaultTaskState","JobTypeMessageNotification","SavingKeywordParameterWasSuccessful","AccessRightReadCalendarTask","DoYouReallyWantToRemoveFileFilterParameter","AddEventMessageConfirmation","LockedDocumentsParameterCannotBeMoved","RemoveTaskState","Conversions","Created","CalendarTaskRepetitionEnd","DeletingRecordFamiliarizationParameterWasNotSuccessfulErrorParameter","UserHasUsedMobile","RemoveBasicEducation","VersionInformation","CkickToChangeThePicture","PostalCode","NameMustBeDefined","ExternalSystemUserTokenParameterIsAlreadyInUse","Theme","SaveFilterAs","AttachmentIsEmpty","SaveTask","FormModifyUser","FormHeight","RemovePermission","DeletingInstantMessageChannelWasNotSuccessfulErrorParameter","UserGroupsMustBeDefined","PrintGenerationFailed","LogDocumentPreview","DeletingOneTimePasswordWasSuccessful","FormulaTrunc","SendPasswordChangeEmailConfirmation","DeletingTaskStateParameterWasNotSuccessfulConcurrencyError","Years","SavingEventTypeCsWasNotSuccessfulErrorParameter","DeletingDefaultEventHandlerParameterWasNotSuccessfulErrorParameter","SavingMessageParameterWasNotSuccessfulConcurrencyError","RecordUserTrangerredPropertyParameterNotFound","PreviewWeb","RemoveComment","TimeSpanYear","OpenCalendarTask","FormulaExponent","Voluntary","SavingRecordFurtherEducationParameterWasNotSuccessfulErrorParameter","WhistleBlowChannelParameterNotFound","SelectMonth","CalendarTaskStateStarted","DeletingRecordBasicEducationsParameterWasNotSuccessfulConcurrencyError","TaskStateParameterIsInUseInParameterTasksAndCannotBeDeleted","WhistleBlowAnonymousReport","DeletingEventTypeCParameterWasNotSuccessfulErrorParameter","Operators","CreatingFileParameterWasNotSuccessfulErrorParameter","SourceFolderAndTargetFolderAreSame","DeletingRecordFurtherEducationParameterWasSuccessful","SavingDocumentTemplateParameterWasNotSuccessfulErrorParameter","AddDocumentTemplate","AddTask","PublicationOfEditableDocumentCannotBeRemoved","AddQualifications","SavingUnitPermissionsWasNotSuccessfulConcurrencyError","RemoveDefaultHandler","ChartGenerationAborted","SystemAdminMessage","AddTarget","TargetDoesNotHaveFoldersWithWritePermissions","UpdateCompanyExternalSystemsWasNotSuccessfulErrorParameter","DeletingMessageTypeParameterWasSuccessful","LockedTaskDataRowCannotBeSaved","RemoveLogisticVoucherPaymentSetting","WhistleBlowSourceEmail","DeletingKeywordsParameterWasSuccessful","SavingRecordFamiliarizationParameterWasNotSuccessfulConcurrencyError","SavingPrintWasNotSuccessfulErrorParameter","DeletingCalendarTaskParameterWasSuccessful","SavingRecordBasicEducationParameterWasNotSuccessfulConcurrencyError","DeletingMessageTypeParameterWasNotSuccessfulErrorParameter","EventClosed","DeletingAttachmentsParameterWasSuccessful","SendReadReceipt","SaveTaskConfirmation","TaskStates","ActionIsNotAuthorized","SavingInstantMessageChannelUserWasNotSuccessfulErrorParameter","Communication","WhistleBlowSourceSystem","NotValid","DocumentModuleProperties","LoginTitle","Unit","FormEmptyArea","DoYouReallyWantToUnlockMessage","PublishEvent","AddKeyword","RemoveEventUrgencyClass","Competencies","DeletingInstantMessageChannelWasNotSuccessfulConcurrencyError","Saved","UserCodeUpdateWasNotSuccessfulErrorParameter","AddCompanyGroupsParameterWasSuccessful","ReferenceNumberPrefix","DocumentProperties","TaskCreated","Close","Messages","FieldsToBePrinted","WhistleBlowSourceOther","AddRecordUser","EditPermission","UserGroupNameMustBeDefined","WhistleBlowStatisticsRecordCount","WelcomeToUseEsalkkuSystem","DoYouReallyWantToRemoveSelectedMessageTypes","TaskPriorityCodeIsAlreadyInUse","IdentificationDetails","CurrentTopicsAbbr","SavingRecordEmploymentParameterWasNotSuccessfulErrorParameter","LockedDocumentParameterCannotBeDeleted","Empty","UserRecordStatisticsSavedCards","DependencyResolvingFailedForInterfaceParameter","AddingWhistleBlowHandlersWasSuccessful","ProcessingTime","SavingMessageParameterWasNotSuccessfulErrorParameter","EmptyForm","SpecifedTimeFrame","AddDefaultTaskType","AddCalendarTask","AddPartnersByClickingPlusButton","DeletingEventTypeBParameterWasNotSuccessfulErrorParameter","RemovingCalendarTaskHandlersWasSuccessful","SavingRecordUserQualificationParameterWasNotSuccessfulErrorParameter","StartDate","NewWhistleBlowMustBeSavedBeforeHandlersCanBeAdded","EditEventTypeB","CustomerNumber","Reports","DaysAgo60","UnkownErrorHasBeenOccured","Schema","UserGroupAll","Admins","CompanyGroupModuleProperties","SendEmailInvitation","SendReadReceiptInfo","SavingRecordUserTransferredPropertyParameterWasNotSuccessfulErrorParameter","EmailAddressMustBeValid","AddEventTypeCsToEvent","DoYouReallyWantToRemoveSelectedCalendarTaskHandlers","Uploaded","UnreadInstantMessages","SendingEmail","TaskTypeNameMustBeDefined","ExpiringIn180Days","CompanyGroupCodeMustBeDefined","Modified","EmailNotificationInUse","FormColumnWidthPrint","Unlimited","FolderParameterAlreadyExists","EditRecordUser","EventReport","DocumentContentsSearch","ZipFileParameterNotFound","MyLastModifications","ExternalSystemUserCodeClaimNotFound","AllUserGroups","DocumentApproval","IgnoreFolderPatterns","DeletingCompanyGroupsParameterWasNotSuccessfulConcurrencyError","LoginAddress","AddCompanyGroupsParameterWasNotSuccessfulErrorParameter","SavingUserParameterWasNotSuccessfulConcurrencyError","InvalidValueParameter","SavingInstantMessageChannelParameterWasSuccessful","FormSizeMedium","WhistleBlowStatisticsUnreadMessages","MessageTypeCodeMustBeDefined","DocumentParameterOverwriteConfirmation","DeletingRecordFamiliarizationsParameterWasNotSuccessfulConcurrencyError","CheckingExistanceOfFolderParameterWasNotSuccessfulErrorParameter","DeletingAttachmentParameterWasSuccessful","UserIdClaimNotFound","SaveUserFurtherEducation","ProjectNumber","DefaultDeductionWithoutTax","FormTextInput","EditDefaultHandlers","Last120Days","DeletingWhistleBlowCategoriesParameterWasNotSuccessfulErrorParameter","FormDropdownOptionsDialog","MarkMessageAsRead","FileStorageQuotaGB","EmptyingTaskTrashBinWasNotSuccessfulConcurrencyError","SendMessage","RestoringTaskParameterFromTrashBinWasNotSuccessfulConcurrencyError","SavingChartWasSuccessful","CalendarTaskCategories","PasswordHasBeenCopiedToClipboard","DeletingInstantMessageChannelWasSuccessful","TimeMustBeDefined","DoYouReallyWantToRemoveFileParameter","UserNotAllowedToViewNotifier","SaveComment","AdditionalSettings","ImageProperties","UploadDocument","Contents","PermissionsOtherCompanies","FormTextPreWrap","SavingReportWasNotSuccessfulConcurrencyError","LanguageNonLocalEnglish","RecordUserModuleProperties","EditEventType","WhistleBlowStatisticsResolvedRecords","DeletingWhistleBlowParameterWasSuccessful","SelectImageFile","DeletingFileFilterParameterWasNotSuccessfulUsedInParameterFolders","TogglePreviewPanel","MovingTaskParameterToTrashBinWasNotSuccessfulErrorParameter","FolderProperties","DeletingDirectoryItemFolderParameterWasNotSuccessfulConcurrencyError","NewCompanyInformation","ShowOnMap","DeletingTaskPrioritiesParameterWasSuccessful","TaskMustBeSavedBeforeNewDataRowsCanBeAdded","DeletingCompanyParameterWasNotSuccessfulErrorParameter","CommentMustNotBeEmpty","EventsToApprove","DeletingTaskTypesParameterWasNotSuccessfulErrorParameter","FileFilterCodeIsAlreadyInUse","RemoveFurtherEducation","MessageStartDateMustBeDefined","DefaultEventHandlersAndNotifiedPersons","DeletingPartnersParameterWasNotSuccessfulConcurrencyError","EventTypeMustBeDefined","WhistleBlowCategory","FileParameterAlreadyExistsInFileSystem","DeletingTaskStatesParameterWasSuccessful","ModifyExistingDocumentTemplate","CalendarTaskSeries","TitleMustBeDefined","AddUserParameterWasNotSuccessfulConcurrencyError","WhistleBlowChannelWasNotFoundExplanation","FormInitializeFromSavedRowDialog","RemoveUserAndKeepRecordUser","Keywords","SelectRecordUsers","AddCompanyParameterWasNotSuccessfulErrorParameter","UserRecordStatisticsExpiredQualifications","DaysAgo120","AddCompanyGroupParameterWasSuccessful","ZipFileCreationFailed","EmailsSentSuccessfully","AccessRightReadTasks","DeletingCompaniesParameterWasNotSuccessfulConcurrencyError","AddMessageType","AddBasicEducation","SaveAndSend","RemoveTaskPermanently","EditUnit","FormColumnWidth","ServiceFeePercent","ImportingUsersParameterWasNotSuccessfulErrorParameter","ApprovedEvent","RecordFurtherEducationParameterNotFound","PasswordChangeRequestHasBeenExpired","RecordUserFamiliarizationParameterNotFound","MessageDateMustBeDefined","InUse","CurrentWorkPlace","AllUnits","Remainders","InstantMessageChannelParameterNotFound","Orientation","YouHaveUnapprovedChangesDoYouWantApproveChanges","SavingUserParameterParameterWasNotSuccessfulErrorParameter","UseInheritedContentFiltering","PreviousCalendarYear","ToggleArchivedFurtherEducations","DecreasingVersionHistorySizeRemovesCurrentlySavedVersionHistoryRecords","PublishVersionHistorySize","Keyword","DeletingRecordUserEmploymentParameterWasSuccessful","RecordFamiliarizationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted","SelectUrgencyClass","Restore","MaximumTotalSizeOfAttachmentsIsParameterMB","ResolutionDescription","EmptyTaskTrashBinConfirmation","DeletingDocumentTemplatesParameterWasNotSuccessfulConcurrencyError","LanguageNonLocalFinnish","VersionHistory","Min","EditEventTypeC","Choose","QualificationIsValid","ChangingPasswordWasNotSuccessfulConcurrencyError","DeletingEventUrgencyClassesParameterWasSuccessful","RecordUserExcelSalary","RestoreTaskFromTrashBin","RemovingEventHandlersWasSuccessful","Anonymity","FormFalse","SearchCondition","Category","DeletingEventParameterWasNotSuccessfulConcurrencyError","SharedFilter","AddRemainder","TrashBin","SelectCategory","UsedInParameterTasks","SearchEvents","ClosedEvent","NoCalendarTasksToShow","PreviewPrint","SavingEventTypesWasNotSuccessfulErrorParameter","WhistleBlowArchivingTypeChangeState","AddCompanyGroups","FolderName","DeletingCalendarTaskCategoryParameterWasNotSuccessfulErrorParameter","DeletingTaskTypeParameterWasSuccessful","InstantMessageChannelInternal","AdministratorUserCodeMustBeDefined","CreatingCompressedFileWasNotSuccessfulErrorParameter","DoYouReallyWantToRemoveSharedDocumentTemplateParameter","DeletingUserParametersWasNotSuccessfulConcurrencyError","DeletingAttachmentParameterWasNotSuccessfulErrorParameter","DeletingDocumentTemplatesParameterWasSuccessful","PanelName","UserCodeParameterMustBeValid","RemovePartner","SourceDescription","CopyingFileParameterWasNotSuccessfulErrorParameter","DeletingPartnerParameterWasNotSuccessfulConcurrencyError","FormulaDateAndTimeDiffInTimeSpan","AccessRightWriteRecords","AdditionalPermissionARecords","SavingTaskDataRowWasNotSuccessfulConcurrencyError","UserName","ReadingFileParameterWasNotSuccessfulErrorParameter","DeletingCalendarTaskParameterWasNotSuccessfulConcurrencyError","Approval","ExternalIntraSystemUserTokenMustBeDefined","Repeated","WhistleBlowChannelMustHaveAtLeastOneAdministrator","Internet","Remove","EmailSendDate","IpAddress","DeletingCompanyGroupsParameterWasNotSuccessfulErrorParameter","Text","RecordBasicEducationCodeIsAlreadyInUse","InstantMessageChannelGroupExternal","Yearly","AddForm","Test","DeletingEventPartnerParameterWasSuccessful","CompanyNumber","CalendarTaskParameterNotFound","FormSizeExtraLarge","PublishVersion","UserCanBeSelectedAsEventHandler","RemoveTaskHandler","ClearSubUnitDefaultHandlersAndNotifiedPersons","DoYouReallyWantToRemoveSelectedForms","SavingWhistleBlowCategoryParameterWasNotSuccessfulConcurrencyError","SavingTaskStateParameterWasNotSuccessfulErrorParameter","FileParameterNotFound","ByName","PrintTask","AddPartnerCompanies","AddUser","DeletingUsersParameterWasNotSuccessfulErrorParameter","GeneralInfo","Published","SaveFilter","AddPayer","SavePasswordAndMoveToLoginPage","SaveAsFavorite","DraftCannotBeApproved","DownloadAttachment","InstantMessageChannelGroupInternal","Publisher","WageGroup","RemoveCompany","OnlyImageAndPdfAttachmentsAreAllowedInvalidAttachmentParamater","SavingInstantMessageChannelUserWasNotSuccessfulConcurrencyError","AddEventTypesToEvent","UserRecordStatisticsExpiringInSixMonthsFamiliarizations","FileChangesCheckingAndEmailingStarted","DeletingWhistleBlowChannelAdminParameterWasNotSuccessfulErrorParameter","DocumentPublished","Unread","ImportUserDialogInstruction","AddingEventHandlerWasNotSuccessfulErrorParameter","DoYouReallyWantToCreateRemainderInPast","Today","SavingWhistleBlowChannelParameterWasSuccessful","DocumentModulePropertiesSaveWasSuccessful","TasksFound","UserReports","EditableDocumentApproveConfirmation","ChartProperties","DeletingUserGroupsParameterWasSuccessful","CalendarTaskEditSeries","ExpiresInYear","Week","MaximumSizeOfFilesThatCanBeAddedInBatchIsParameterMB","Instructions","ArchivingRecordUserFamiliarizationsWasNotSuccessfulErrorParameter","SavingEventPartnerParameterWasNotSuccessfulErrorParameter","EInvoiceAddress","SavingApplicationPermissionsWasSuccessful","ExitingInstantMessageChannelWasNotSuccessfulConcurrencyError","Search","SavingOneTimePasswordParameterWasSuccessful","DeletingRecordFurtherEducationsParameterWasSuccessful","FormDropdownOption","DoYouReallyWantToRemoveTaskStateParameter","CalendarTaskHandlerFilter","EventApprovalWasNotSuccessfulConcurrencyError","AddWhistleBlowChannelAdminsParameterWasNotSuccessfulErrorParameter","AddCompaniesParameterWasNotSuccessfulConcurrencyError","UserIsSystemAdminClaimNotFound","WhistleBlowAnonymousReportInfo","DeletingWhistleBlowCategoriesParameterWasSuccessful","MaximumSizeOfAttachmentThatCanBeAddedInBatchIsParameterMB","SavingUserGroupParameterWasNotSuccessfulConcurrencyError","EmployeeType","EventTypeC","EventTypeBCodeIsAlreadyInUse","TimeSpanQuarter","OpenWhistleBlow","DeletingDirectoryItemDocumentParameterWasNotSuccessfulConcurrencyError","UseObserverAction","LogisticVoucherCustomers","PermissionToCreateEventsToPartners","AmountOfComments","DeletingOptionParameterWasNotSuccessfulErrorParameter","NewCompanyMustBeSavedBeforeCompanyGroupsCanBeAdded","UnitMustBeSelected","AddEventHandlersToEvent","ObserverActionMustBeDefined","AddLogisticVoucherCustomerPaymentSetting","DescriptionMustBeDefined","AddUsersParameterWasNotSuccessfulErrorParameter","DocumentIsEmpty","SavingEventTypeBParameterWasNotSuccessfulConcurrencyError","AddCompanyParameterWasNotSuccessfulConcurrencyError","RequestValidationErrorOnFieldParameterWithValueParameter","FormCalculatedIntegerNumber","EventUrgencyClassParameterIsInUseInParameterEventsAndCannotBeDeleted","PrintTextPublished","SavingRecordBasicEducationParameterWasNotSuccessfulErrorParameter","AddUsers","DefaultEventTypes","DeletingMetadataFromFileParameterFailed","UnitHandlingIncomingEvents","CalendarTaskOpenSeries","RemoveFilter","ReminderMinutesBefore","RecordParameterLockingFailedRecordIsWriteLockedToUserParameter","Units","ReportsModified","SavingTaskParameterWasNotSuccessfulConcurrencyError","DoYouReallyWantToUnlockTaskDataRow","Year","EventHandlers","DataTransferError","SendPasswordChangeEmail","AddLogisticVoucherPaymentSetting","WhistleBlowCategoryParameterIsInUseInParameterWhistleBlowsAndCannotBeDeleted","ModifyExistingSharedDocumentTemplate","WhistleBlowFollowReport","DeletingCompanyParameterWasNotSuccessfulConcurrencyError","SavingTaskStateParameterWasSuccessful","MovingFilesAndDocumentsToFolderParameterWasNotSuccessfulErrorParameter","CopyPermissionToAllSameLevelUnits","Default","Relation","FormCompactStyle","ArchivingRecordUserFurtherEducationsWasNotSuccessfulConcurrencyError","SavingKeywordParameterWasNotSuccessfulErrorParameter","Open","DeletingFileFilterParameterWasSuccessful","CompanyGroupNameMustBeDefined","RecordUserExcelQualification","SavingEventParameterWasNotSuccessfulConcurrencyError","AddingAddRecordUserTransferredPropertiesWasNotSuccessfulErrorParameter","Save","UserAccountMustBeSelected","SavingRecordUserParameterWasNotSuccessfulErrorParameter","NoReports","IncludeArchivedFurtherEducations","DoYouReallyWantToRemoveWhistleBlowCategoryParameter","SavingOptionParameterWasSuccessful","MessageParameterNotFound","UserIsInstantMessageChannelOnlyAdministratorInParameterInstantMessageChannels","AddWhistleBlow","Location","DoYouWantToPublishEvent","EditableDocumentParameterNotFound","MessageTypesMustBeDefinedBeforeAddingMessages","RemoveCalendarTaskCategory","DeletingInstantMessageChannelParameterWasNotSuccessfulConcurrencyError","AdminMustBeDefined","FormBuilder","AddCompanyGroupParameterWasNotSuccessfulErrorParameter","EventIsApprovedByUser","ThisWeek","AccessRightReadWhistleBlow","ExpiresInParameterMonths","KeywordsAndCondition","AddingAddRecordUserTransferredPropertiesWasSuccessful","Permissions","InheritedContentFilter","UserFilterInActive","UserRecordStatisticsMissingQualifications","FormulaAbs","DirectoryItemDocumentsNotFound","Attachments","DeletingInstantMessageUserParameterWasSuccessful","ReminderNone","RemoveMessage","ContentVersion","PayeeUsersCanLogInToTheSystem","FormExpressionMustBeDefined","AddingEventHandlersWasSuccessful","AccountIBANNumber","PersonalIdentityCode","DoYouReallyWantToRemoveSelectedRecordFamiliarizations","DoYouReallyWantToRemoveEventTypeCParameter","SavingCompanyGroupParameterWasNotSuccessfulConcurrencyError","DeletingRecordFamiliarizationParameterWasNotSuccessfulConcurrencyError","FormSizeDefault","UserRecordStatisticsExpiredFamiliarizations","Expand","UserRecordStatisticsExpiringInSixMonthsFurtherEducations","ChangedEventUnit","ReadReceiptGivenPlur","DateMustBeDefined","EventTypeParameterNotFound","DeletingRecordFurtherEducationGroupParameterWasNotSuccessfulConcurrencyError","SavingMessageSendPushParameterWasSuccessful","DoYouReallyWantToRemoveSelectedCalendarTaskCategories","LoadMore","DeletingDefaultEventHandlerParameterWasSuccessful","AccessRightReadEvents","RecordUserWithSameFirstNameMiddleNameAndLastNameAlreadyExists","PrivacyPolicyUrlMustBeDefined","ForwardMessage","EventTypeBParameterNotFound","GroupByEducation","DeletingUserGroupParameterWasSuccessful","SelectEventTypeC","RefreshList","NewPrint","DeletingTaskPriorityParameterWasNotSuccessfulConcurrencyError","NewInstantMessageChannelGroup","ChangedUrgencyClass","SavingOptionParameterWasNotSuccessfulConcurrencyError","Next","DeletingUserGroupUsersOfCompanyParameterWasSuccessful","AllUsersOfTheUnit","ClickToChangeTheLogo","DeletingTaskStatesParameterWasNotSuccessfulConcurrencyError","TargetCompany","SavingRecordUserParameterWasNotSuccessfulConcurrencyError","FamiliarizationTime","AddPartner","CopyingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulConcurrencyError","EditWhistleBlowChannel","DocumentNameIsIllegal","ByDate","FolderMustBeEmptyBeforeItCanBeRemoved","UserLastNameMustBeDefined","setCulture3","SavingOneTimePasswordWasNotSuccessfulErrorParameter","FullNameClaimNotFound","RenewPersonalizationWithUser","SavingUserParameterWasNotSuccessfulErrorParameter","AddSalaryRowToMultipleUserRecords","AddingTaskHandlerWasNotSuccessfulErrorParameter","RestoringTaskParameterFromTrashBinWasNotSuccessfulErrorParameter","MovingFolderDirectoryItemParameterToFolderParameterWasSuccessful","VersionProperties","LastName","DoYouReallyWantToRemoveRecordFurtherEducationGroupParameter","FormLineBreak","FormTrue","AttachmentParameterNotFound","UnlockingEventParameterWasNotSuccessful","AddUserGroupsParameterWasSuccessful","EditInstantMessageChannel","UserCodeClaimNotFound","MessageMustBeSavedBeforeAttachmentsCanBeAdded","ApproveEventHandlerConfirmation2","SavingDirectoryItemPermissionsWasSuccessful","WhistleBlowStatisticsInProgressRecords","SearchFurtherEducations","MiddleName","DeletingPartnerParameterWasNotSuccessfulErrorParameter","SavingRecordFurtherEducationParameterWasNotSuccessfulConcurrencyError","DoYouReallyWantToUnlockCalendarTask","MoneyOut","SavingUnitPermissionsWasNotSuccessfulErrorParameter","MovingTaskParameterToTrashBinWasSuccessful","Paste","SavingTaskDataRowWasSuccessful","WhistleBlowSourceUnspecified","GetPhoto","CreatingNotifications","SavingUserGroupParameterWasSuccessful","WhistleBlowDashboard","FormDropdowns","ChangePassword","EventPartnerParameterNotFound","SelectDocumentTemplate","DoYouReallyWantToRemoveSelectedKeywords","PrintOrientation","AddRecordUserAndUserAccount","Source","LoggedInUserCannotBeDeleted","DeletingPartnersParameterWasNotSuccessfulErrorParameter","RemoveSharedDocumentTemplate","AddHandlers","WhistleBlowInformantButtonHint","UnpublishingEditableDocumentParameterWasSuccessful","DoYouReallyWantToRemovePartnerParameter","DeletingFileFiltersParameterWasSuccessful","DeletingUsersParameterWasNotSuccessfulConcurrencyError","AddAttachementsToEvent","UserGroupCodeMustBeDefined","AddDefaultEventType","Last30Days","DoYouReallyWantToRemoveSelectedTaskStates","ArchivingRecordUserFamiliarizationsWasSuccessful","UnitParameterNotFound","AdvancePaymentReportPath","CalendarTaskRepetitionRepeatIntervalMonthlySuffix","AddTransferredProperties","DeletingEventUrgencyClassesParameterWasNotSuccessfulConcurrencyError","ChangingPasswordWasNotSuccessfulErrorParameter","WhistleBlowChannelPageNameCodeIsAlreadyInUse","PasswordConfirmationDoesNotMatchPassword","DeletingUserParametersWasNotSuccessfulErrorParameter","DeletingInstantMessageWasNotSuccessfulConcurrencyError","AddedComment","ParameterResults","UpdatingApplication","EventPartners","Ends","CopyOrMoveFilesDocuments","PortalInUse","PaymentTermInDays","CopyOrMoveFolder","BasicEducation","SelectDocumentInListToSeeThePreview","DefaultLanguage","EditDefaultTaskType","DeletingCompanyGroupsParameterWasSuccessful","SavingTaskParameterWasSuccessful","SelectCustomer","SavingWhistleBlowChannelParameterWasNotSuccessfulConcurrencyError","NotRepeated","DeletingUserParametersWasSuccessful","EditDefaultEventHandlersAndNotifiedPersons","TaskHandlerParameterNotFound","SavingUserParameterParameterWasSuccessful","FilesParameterAreEmpty","FolderNameIsTooLong","FileUploadWasSuccessful","WaitingToBeApproved","EditDefaultTaskState","AddChildEventTypeC","SelectReminder","CanShareContentToCompanies","VersionParameterPublishedAsPdfFile","UserGroupModuleProperties","DeletingMessageParameterWasNotSuccessfulErrorParameter","RemoveRecordUserAndUser","CloseSystem","OldestMessage","PositionErrorUnavailable","AddNotifiedPerson","DeletingUserGroupsParameterWasNotSuccessfulErrorParameter","ExportToExcel","EmailSent","MaximumSizeOfDocumentThatCanBeAddedInBatchIsParameterMB","SavingReadReceiptWasSuccessful","DeletingRecordFurtherEducationParameterWasNotSuccessfulErrorParameter","InstantMessageChannelArchivingTypeKeepMessages","WhistleBlowStatisticsNewRecords","FurtherEducationParameterNotFound","FileRemovalWasSuccessful","ApprovalComment","ChangeSystemLanguageToSwedish","MinimumPasswordLengthMustBeAtLeastParameterCharacters","EventTypeCodeIsAlreadyInUse","SavingWhistleBlowWasNotSuccessfulErrorParameter","WhistleBlowReportHasBeenSavedBottomText","AdministratorPasswordMustBeDefined","Returned","AccessRightWriteWhistleBlow","PublishDate","FormRowColumn","Functions","WhistleBlowInformantMessageConfirmation","WhistleBlowUrlInfo","DocumentNameConstainsIllegalCharacters","RemoveDefaultBasicEducation","EventTypeParameterIsInUseInParameterEventsAndCannotBeDeleted","FormMinimumValue","IdCard","SavingEventUrgencyClassParameterWasNotSuccessfulErrorParameter","SavingDefaultHandlersWasNotSuccessfulConcurrencyError","AdditionalPermissionAInstantMessages","AddEmployments","DeletingRecordUserParameterWasSuccessful","AddRecordUserWithoutUserAccount","AddInstantMessageUserParameterWasSuccessful","AddTaskPriority","RemovingCalendarTaskHandlerWasNotSuccessfulErrorParameter","Total","DefaultEventHandlerParameterNotFound","AddEventType","DeletingFileParameterWasNotSuccessfulErrorParameter","CompanyCodeContainsIllegalCharacters","SavingWhistleBlowChannelParameterWasNotSuccessfulErrorParameter","ScopeUnit","EditEvent","DoYouReallyWantToRemoveUnitParameter","UserRecordStatisticsExpiringInSixMonthsQualifications","CalendarTaskChangeSelectedDateToSeeTheTasks","Addition","AccessRightReadRecords","AddingAttachmentsParameterWasSuccessful","Sending","EventTypeBs","UserEventsNotApproved","DeletingRecordUserEmploymentParameterWasNotSuccessfulErrorParameter","DoYouReallyWantToUnlockTask","FormFontSize","NewTransferredPropertyMustBeSavedBeforeAttachmentsCanBeAdded","Name","CreateReport","FormWidth","WhistleBlowMessageHasNotBeenSentCloseConfirmation","CopyUnitDefaultHandlersAndNotifiedPersonsToAllSameLevelUnits","TaskStateParameterNotFound","DirectCosts","DeletingRecordFurtherEducationGroupParameterWasSuccessful","ANew","DeletingKeywordsParameterWasNotSuccessfulErrorParameter","EmailAddressDoesNotExist","CurrentCalendarYear","EditLogisticVoucherTransportCompany","Approved","SSRSRefreshFinishedInParameterSeconds","RecordFurtherEducationGroupParameterNotFound","ActiveTasks","DraftVersion","FormTextArea","RequireReadReceipt","PreviewIsNotSupportedForThisFileType","TransferToChannel","DoYouReallyWantToRemoveRecordUserTransferredPropertyParameter","GroupByQuarter","CompanyLogo","WhistleBlowCategoryCodeIsAlreadyInUse","InvalidInvitationParameter","FileFilterParameterNotFound","PanelSize4","DoYouReallyWantToRemoveDefaultEventHandlerParameter","RestoringInstantMessageWasNotSuccessfulErrorParameter","LogOut","WorkShiftType","SavingUserParametersWasNotSuccessfulConcurrencyError","ChangesMaxAmount","ValidPasswordMustBeDefined","AllPartners","EditEventTypes","ValidityEndDateExpirationTime","DeletingTaskStatesParameterWasNotSuccessfulErrorParameter","Settings","TaskTypesMustBeDefinedBeforeAddingTasks","DeletingCalendarTaskCategoryParameterWasNotSuccessfulConcurrencyError","SavingInstantMessageChannelParameterWasNotSuccessfulErrorParameter","ValidityStartDate","AllCompanies","Scope","RenamingFolderParameterWasNotSuccessfulErrorParameter","DoYouReallyWantToRemoveEditableDocumentParameter","DeletingWhistleBlowParameterWasNotSuccessfulErrorParameter","DoYouReallyWantToRemoveReportParameter","SaveReport","RecordBasicEducationParameterIsInUseInParameterRecordUsersAndCannotBeDeleted","Rejected","AddFurtherEducationToMultipleUserRecords","PrintTextPrinted","FurtherEducationGroup","WhistleBlowPasswordConfirmed","NewPassword","DocumentTemplate","ToDo","DoYouReallyWantToRemoveSelectedDocumentTemplates","FormSortField","DeletingInstantMessageUserParameterWasNotSuccessfulConcurrencyError","EditLogisticVoucherCustomerPaymentSetting","FormMobile","PermissionDeniedForOperation","NotApproved","RequestPasswordChangeMessage2","NoPublishedMessages","FormulaMax","SavingEventSettingsWasSuccessful","DeletingDirectoryItemDocumentParameterWasSuccessful","DisableExternalIntraSystemConfirmation","GroupByYear","ChangingPasswordWasSuccessful","OldestModification","DeletingRecordFurtherEducationsParameterWasNotSuccessfulConcurrencyError","FormulaSubtraction","MinimumPasswordLength","DeletingCalendarTaskCategoriesParameterWasNotSuccessfulConcurrencyError","AddQualificationToMultipleUserRecords","FormRemoveColumnFromRowConfirmation","AddFurtherEducationGroup","ContactPerson","FormDropdown","SelectForm","ExpiringIn90Days","WhistleBlowParameterNotFound","DeletingAttachmentsParameterWasNotSuccessfulConcurrencyError","CheckingExistanceOfFileParameterWasNotSuccessfulErrorParameter","UnitCodeIsAlreadyInUse","DeletingInstantMessageWasNotSuccessfulErrorParameter","FormSizeSmall","WhistleBlowChannel","UpdateUserGroupParameterExternalSystemsWasSuccessful","WhistleBlowEventTypeMessageAdded","Modification","CreatingUserTokenWasNotSuccessfulErrorParameter","AddWhistleBlowCategory","LanguageEnglish","SavingFileFilterParameterWasSuccessful","Invited","NoneSelected","GroupByUnit","RemoveTaskType","DownloadFileTemplate","AddPartnerParameterWasNotSuccessfulConcurrencyError","EditCompanyTaskType","ReportGenerationFailed","RemoveFileFilter","BrowserInfo","DeletingMessageTypeParameterWasNotSuccessfulConcurrencyError","DoYouReallyWantToRemoveEventHandlerParameter","BusinessIdentityCode","FormRelativeDefinition","Education","EditLogisticVoucherCustomer","DriversLicenseType","CalendarTaskRepetitionRepeatIntervalMonthPrefix","ModifyDate","LastYear","EditableDocumentPublishConfirmation","BirthDate","EditUser","EventMessageConfirmation","CompanyInstantMessageChannels","OthersLastModifications","SavingTaskTypeParameterWasNotSuccessfulConcurrencyError","ChangeToReadMode","AddToFavorites","EventTypeTitle","AddUserGroup","Ascending","AddEventMessage","DeletingRecordUserParameterWasNotSuccessfulConcurrencyError","DeletingMessageTypesParameterWasNotSuccessfulErrorParameter","JobLineParameterNotFound","SavingUserParameterWasSuccessful","SelectUserGroupOrUser","MessageTitleMustBeDefined","Collapse","NewRecordUserMustBeSavedBeforeRowsCanBeAdded","RecordUserFurtherEducationParameterNotFound","AnyTime","DeletingTaskStateParameterWasSuccessful","MoveUp","InvalidValueInArgumentParameter","UpdateCompanyExternalSystemsWasNotSuccessfulConcurrencyError","Filters","CopyingFilesAndDocumentsToFolderParameterWasSuccessful","SavingEventUrgencyClassParameterWasSuccessful","AccessRightRead","PostalAddress","OtherCompanies","TrainingEndDateCannotPrecedeTrainingStartDate","WhistleBlowEventTypeCreated","RemoveDefaultEventHandler","EventTypeCs","NewPasswordMustBeDefined","LockedTaskParameterCannotBeDeleted","ApplicationName","SavingEditableDocumentParameterWasNotSuccessfulConcurrencyError","ImportUsers","LockedEventParameterCannotBeSaved","DoYouReallyWantToRemoveRecordFurtherEducationParameter","DeletingWhistleBlowChannelAdminParameterWasSuccessful","DeletingFileFilterParameterWasNotSuccessfulErrorParameter","Previous","DeletingInstantMessageUsersParameterWasNotSuccessfulErrorParameter","ModifyDateStartDate","SavingCalendarTaskCategoryParameterWasSuccessful","EmailAddressParameterIsInvalid","EditKeyword","DeletingEventTypeCParameterWasNotSuccessfulConcurrencyError","SavingWhistleBlowCategoryParameterWasSuccessful","Required","SavingMessageSendPushParameterWasNotSuccessfulErrorParameter","RemoveUserGroup","DeletingWhistleBlowCategoriesParameterWasNotSuccessfulConcurrencyError","CalendarTaskRepetitionEndDateSuffix","JobLineDataIsEmpty","MessageUnit","SharedReportCompany","FurtherEducation","SendingPusNotificationsWasNotSuccessfulErrorParameter","CreatingPrint","MessageVisibilityPeriodNotStarted","WhistleBlowReport","CopyingFilesAndDocumentsToFolderParameterWasNotSuccessfulConcurrencyError","Administrator","RemoveUserAndRecordUserArchive","InstantMessagePartners","TaskPriority","AddingRecordUserSalaryRowsWasSuccessful","ChangeSystemLanguageToEnglish","RemovingEventHandlerWasNotSuccessfulErrorParameter","Partner","DoYouReallyWantToRemoveMessageParameter","RemoveTarget","AddCommentsToEvent","FormTextAlignmentRight","PanelSize3","SaveAndPublish","CalendarTasks","DeletingRecordFamiliarizationsParameterWasSuccessful","HoursPerTrainingDay","PasswordMustBeDefined","RemoveEventTypeC","ExitingInstantMessageChannelWasNotSuccessfulErrorParameter","ExitInstantMessageChannel","SavePrint","AddLogisticVoucherTransportCompany","DefineRecordUserFurtherEducation","EventPartnerIsAlreadyInDefined","BasicEducationsMustBeDefinedBeforeAddingRecordUsers","FormulaRemainder","SavingEventTypeBParameterWasSuccessful","EventsDashboard","UserAccountConnected","DeletingDirectoryItemFolderParameterWasSuccessful","Card","SavingRecordFamiliarizationParameterWasSuccessful","SelectState","Qualification","GroupByPerson","DeletingWhistleBlowCategoryParameterWasSuccessful","AddFurtherEducation","UnitNameMustBeDefined","NewFurtherEducationMustBeSavedBeforeAttachmentsCanBeAdded","EventHandlersExcelTitle","ActiveState","UpdateUserParameterExternalSystemsWasNotSuccessfulConcurrencyError","AddEditableDocument","SharedReport","NewRecordUserMustBeSavedBeforeTransferredPropertiesCanBeAdded","SavingDirectoryItemFolderParameterWasNotSuccessfulConcurrencyError","AccessRightWriteEvents","PageBreakBetweenGroups","SavingRecordFurtherEducationParameterWasSuccessful","DeletingMessageTypesParameterWasNotSuccessfulConcurrencyError","DocumentModified","FamiliarizationTrainer","CompanyCodeClaimNotFound","RecordFamiliarizationCodeIsAlreadyInUse","AddLogisticVoucherCustomer","RecordBasicEducationParameterNotFound","DefaultSettings","InvalidRequest","CompanyToken","InstantMessageParameterNotFound","SomeInstantMessageUsersHaveReadMessage","CompanyCodeIsAlreadyInUse","DeletingEventPartnerParameterWasNotSuccessfulErrorParameter","ShowSchema","SharedDocumentTemplate","CalendarTaskOpenOccurrence","NameIsAlreadyInUse","SavingEditableDocumentParameterWasNotSuccessfulErrorParameter","PreviousCalendarWeek","DocumentEndDate","EnableExternalIntraSystemConfirmation","DocumentNameParameterConstainsIllegalCharacters","Unlock","ActiveUserTasks","CalendarTaskRepetitionRepeatIntervalMonthSuffix","WhistleBlowStatisticsNonAnonymousRecords","DefaultFamiliarizations","FolderNameMustBeDefined","WhistleBlowEventTypeAttachmentsRemoved","RemovingWhistleBlowHandlerWasNotSuccessfulErrorParameter","PermissionsForSection","AdditionalPermissionAEvents","FormProperties","SavingEventTypeBsWasNotSuccessfulErrorParameter","NewComment","ExternalIntraSystems","SelectUserGroup","TaskDataRows","PathMustBeDefined","RenewPersonalization","AttachmentParameterDownloaded","AddDefaultHandler","VerifyUserName","CalendarTaskCategory","FormulaCbrt","EditBasicEducation","EmploymentStartDate","SavingEventDefaultHandlerParameterWasNotSuccessfulConcurrencyError","EventTypeB","EditCalendarTask","TaskPrioritiesMustBeDefinedBeforeAddingTasks","FailureAudit","DeletingTaskTypesParameterWasSuccessful","Expired","ParameterIsNotValidBankBICCode","DefaultTaskTypes","AddCalendarTaskCategory","DefaultFurtherEducation","NoMessagesToShow","AddEventTypeBsToEvent","Selected","SavingCalendarTaskCategoryParameterWasNotSuccessfulErrorParameter","AddingAttachmentParameterWasSuccessful","EditAll","RequestParameterNotFound","EventTypeCParameterIsInUseInParameterEventsAndCannotBeDeleted","LastParameterYears","FileParameterIsEmpty","SelectTaskRepetitionType","SavingEventTypeCsWasSuccessful","TrainingStartDate","MovingFilesAndDocumentsToFolderParameterWasSuccessful","ImageOrPdfUpToParameterMb","StandardFiltersAndReports","CopyPermissionToAllSameLevelFolders","PanelSize","ExpiredPlural","DocumentRootPathMustBeDefined","DefaultFurtherEducations","TaskState","AddCompanyTaskType","DeletingMessageTypesParameterWasSuccessful","CalendarTaskRepetitionRepeatIntervalYearlySuffix","FieldParameterValueMustBeDefined","SavingChartWasNotSuccessfulConcurrencyError","FormField","AddInstantMessageUsersParameterWasSuccessful","SavingTaskPriorityParameterWasNotSuccessfulConcurrencyError","DoYouReallyWantToRemoveDocumentsParameter","CopyingFilesAndDocumentsToFolderParameterWasNotSuccessfulErrorParameter","MoneyIn","Info","RemoveCompanyFromCompanyGroup","SharedFilters","Monthly","RecordParameterLockingFailed","FormDecimalNumber","SavingRecordFurtherEducationGroupParameterWasNotSuccessfulConcurrencyError","UserRecordCards","RemoveDefaultFurtherEducation","DeletingCompanyGroupParameterWasSuccessful","ModifiedBy","DeletingRecordUserTransferredPropertiesParameterWasNotSuccessfulConcurrencyError","SendReadReceiptConfirmation","AccountNumberTkbInDebit","EventsFound","DefaultLanguageHasBeenChanged","UserEndDate","SaveMessage","KeywordCodeMustBeDefined","CurrentCalendarMonth","OldPasswordIsIncorrect","SendingPushNotificationsToParameter","SavingEventTypeParameterWasNotSuccessfulConcurrencyError","ClickToCancelAutomaticLogout","FormTitles","TransportCompanies","RecurringCalendarTaskMustHaveAtLeastOneOccurence","DoYouReallyWantToRemoveFormParameter","WriteBelowFieldWordParameterToConfirmTheOperation","AddPartnersParameterWasNotSuccessfulErrorParameter","SortOrder","NewFamiliarizationMustBeSavedBeforeAttachmentsCanBeAdded","LockedDocumentParameterCannotBeMoved","AccountNumberTkbOutDebit","ForLastParameterDays","DeletingMessageParameterWasSuccessful","DeletingRecordBasicEducationParameterWasNotSuccessfulErrorParameter","RemoveLogisticTransportCompany","WhistleBlowInformantDateAndTime","RemoveRecordUser","RemoveEventTypeB","PanelVisible","KeywordsOrCondition","FormulaDateAndTimeDiffInMinutes","TaskStateLocked","LockingEditableDocumentParameterWasNotSuccessful","AdditionalPermissionBEvents","ArgumentParameterIsNULL","QualificationIsInvalid","WhistleBlowInformantMessages","FolderParameterNotFound","SavingDirectoryItemFolderParameterWasSuccessful","MoveToTrashBin","ArchivingRecordUserFurtherEducationsWasNotSuccessfulErrorParameter","IHaveForgotMyPassword","SavingWhistleBlowMessageWasSuccessful","UserGroupParameterNotFound","Actions","UserGroupCodeIsAlreadyInUse","NoFilesToAdd","EventTypeCTitle","Title","Send","TransferredPropertyType","OperationAborted","InvalidPasswordChangeRequestParameter","DeletingRecordBasicEducationParameterWasSuccessful","AddRecordUserToUserAccount","Landscape","Comment","UsersToBeImported","UserInformation","AdditionalPermissionBWhistleBlow","TakePicture","AddCompanies","Language","LogModuleProperties","RemoveCalendarTask","SavingEventPartnerParameterWasNotSuccessfulConcurrencyError","PasteGroupPermissions","WhistleBlowSourceMail","DoYouReallyWantToRemoveCompanyGroupParameter","SelectDate","DeletingEventTypeBParameterWasSuccessful","WhistleBlowWasNotFound","DeletingRecordFurtherEducationsParameterWasNotSuccessfulErrorParameter","EventTypeCParameterNotFound","IndefinitelyNoLocalization","TaskHandler","Reject","EventModuleProperties","DefaultEventUrgencyClasses","ACopy","EditDefaultFurtherEducation","EditEventTypeCs","BasicInformation","SavingFileFilterParameterWasNotSuccessfulErrorParameter","Clear","FormPlaceholder","FollowUp","RequestPasswordChangeMessage1","ResetDocumentVersion","EventTypeBParameterIsInUseInParameterEventsAndCannotBeDeleted","UserRecordStatisticsArchivedCards","ReadReceipts","FormulaTan","DeletingKeywordParameterWasNotSuccessfulErrorParameter","AdminMustBeDefinedForSectionParameter","SavingFileFilterParameterWasNotSuccessfulConcurrencyError","Amount","FamiliarizationStartDateDateEnd","Order","LargeSize","ActionsAndRootCause","Browse","EInvoiceOperator","AddInstantMessageUsersParameterWasNotSuccessfulErrorParameter","CopyingFolderDirectoryItemParameterToFolderParameterWasSuccessful","TransferredProperties","TaskDataRowMustBeSavedBeforeAttachmentsCanBeAdded","WhistleBlowCreateTime","Last180Days","AddDefaultTaskPriority","DocumentNameParameterIsIllegal","PrintIsEmpty","Custom","AddEventTypeC","AddEventTypeB","SavingDirectoryItemDocumentParameterWasNotSuccessfulConcurrencyError","DoYouReallyWantToRemoveRecordUserEmploymentParameter","AddEvent","HasAttachments","ArchiveWhistleBlows","LanguageParameterIsNotSupported","AuthorizationLevel","DoYouReallyWantToRemoveSelectedRecordBasicEducations","DeletingFileFilterParameterWasNotSuccessfulConcurrencyError","WhistleBlowNonAnonymousReportInfo","Minutes","LockingTaskParameterWasNotSuccessful","DeletingDefaultEventHandlerParameterWasNotSuccessfulConcurrencyError","HandlersAndAttachments","TaskTypeSchemaMustBeDefined","DeletingAttachmentParameterWasNotSuccessfulConcurrencyError","GetMore","CompanyIdClaimNotFound","PositionErrorTimeout","RestoringInstantMessageWasSuccessful","EditCompanyGroup","FormulaCeil","CompanyWithSysAdminAuthorizationLevelNotFound","RemovingWhistleBlowHandlersWasSuccessful","MovingTaskParameterToTrashBinWasNotSuccessfulConcurrencyError","FormulaCos","AccountNumberTkbOutCredit","Receiver","PreviewMobile","ArchivingRecordUserFurtherEducationsWasSuccessful","RemoveKeyword","RemoveFolder","WhistleBlowActiveReports","DoYouReallyWantToEmailMessageParameter","RemoveWhistleBlowCategory","Update","CopyActiveUserRightsToAllSameLevelFolders","FormShowModifyUser","EditEmployment","UpdatingGroupCodeWasNotSuccessfulErrorParameter","FileFilterNameMustBeDefined","SenderOrReceiver","DeletingRecordFamiliarizationParameterWasSuccessful","SavingKeywordParameterWasNotSuccessfulConcurrencyError","Action","DoYouReallyWantToRemoveDocumentParameter","SavingFilterWasSuccessful","SavingTaskParameterWasNotSuccessfulErrorParameter","DoYouReallyWantToRemoveWhistleBlowParameter","InstantMessageAttachmentFolderIsNotSpecified","YouHaveNotSavedChangesSaveChangesBeforePublishingTaskType","NoFurtherEducationsToShow","SavingMessageTypeParameterWasNotSuccessfulConcurrencyError","UserToken","CalendarTaskOccurrence","CopyOrMoveFolderParameter","AddEmployment","MissingPlural","SomeWhistleBlowHandlersHaveReadMessage","TaskRemainderCheckingAndNotificationFinishedInParameterSeconds","RecordUserExcelUserList","DeletingUserParameterWasSuccessful","TemplateForms","InstantMessageAttachmentFolderParameterNotFound","DeletingTaskPrioritiesParameterWasNotSuccessfulErrorParameter","ChangeCompany","SearchCurrentTopics","DoYouReallyWantToMoveTaskParameterToTrashBin","EditMode","EmploymentEndDateCannotPrecedeEmploymentStartDate","EventApprovalWasSuccessful","UserClaimsNotFound","UserRecordsDashboard","PublishTaskType","RemoveEditableDocument","PanelSize1","SearchStartDate","DeletingTaskPriorityParameterWasSuccessful","TasksExcelByTasks","InheritedUserRights","SomeEventHandlersHaveReadMessage","EventTypeCCodeMustBeDefined","EventSettings","MovingFolderDirectoryItemParameterToFolderParameterWasNotSuccessfulConcurrencyError","DocumentZipFileName","SavingWhistleBlowWasNotSuccessfulConcurrencyError","NotifiedPersons","RemoveCompanyGroup","NoEventsToShow","SavingInstantMessageWasNotSuccessfulErrorParameter","RemoveMessageType","WhistleBlowDoesNotContainAnyMessage","ShowReportRowAmountInFrontPage","SavingDocumentTemplateParameterWasSuccessful","DeletingKeywordParameterWasNotSuccessfulConcurrencyError","SelectCompanyGroup","DeletingDirectoryItemFolderParameterWasNotSuccessfulErrorParameter","WhistleBlowAnonymityNonAnonymous","DoYouReallyWantToRemoveCompanyParameter","SavingTaskTypeParameterWasSuccessful","Identification","AddFormFromTemplate","FormBooleans","AddCompanyGroupsParameterWasNotSuccessfulConcurrencyError","ShowDraftVersion","SavingWhistleBlowMessageWasNotSuccessfulErrorParameter","Operation","WhistleBlowDescription","AddPanel","TaskPriorityParameterIsInUseInParameterTasksAndCannotBeDeleted","NoTasksToShow","EventUrgencyClass","PreviousCalendarMonth","EventIsNotApprovedByUser","FormTime","SavingEventTypeParameterWasSuccessful","DeletingWhistleBlowParameterWasNotSuccessfulConcurrencyError","DeletingRecordUserEmploymentsParameterWasNotSuccessfulErrorParameter","WhistleBlowSourcePhone","DeletingInstantMessageUsersParameterWasNotSuccessfulConcurrencyError","RestoringInstantMessageWasNotSuccessfulConcurrencyError","DoYouReallyWantToRemoveEventPartnerParameter","DoYouReallyWantToRemoveDocumentTemplateParameter","UserParameterHasInvitedYouToJoinInstantMessageChannelParameter","Entry","UserReport","PicturesAreVisibleForAllCompanyUsers","ArchivingRecordUserFamiliarizationsWasNotSuccessfulConcurrencyError","SelectArchivingMethod","DeletingWhistleBlowChannelAdminsParameterWasNotSuccessfulErrorParameter","SavingEditableDocumentParameterPublishWasSuccessful","SaveAndEmail","EmptyTaskTrashBin","MovingFolderParameterWasNotSuccessfulErrorParameter","Channels","SelectInstantMessageChannelUsers","ApproveEvent","JobTypeEmail","Effectiveness","ReminderWeekBefore","Private","RemoveEmployment","AddAttachment","SavingEventTypeParameterWasNotSuccessfulErrorParameter","SavingDirectoryItemPermissionsWasNotSuccessfulConcurrencyError","AddPhotosAndAttachementsToEvent","WhistleBlowReportHasBeenSavedTopText","SavingUserParametersWasNotSuccessfulErrorParameter","WhistleBlowStatisticsAnonymousRecords","FormWeb","WhistleBlowEventTypeModified","RecentlyUpdated","ExternalSystems","DoYouReallyWantToRemoveCalendarTaskCategoryParameter","Comments","OptionParameterNotFound","NoPermission","SelectCalendarTaskHandlers","AllCompanyGroups","SavingPrintWasNotSuccessfulConcurrencyError","FormCodeMustBeDefined","ApproveEventResolution","TaskPriorityParameterNotFound","SelectInstantMessageChannelType","Rows","FormulaRound","DeletingInstantMessageUsersParameterWasSuccessful","RestoringTaskParameterFromTrashBinWasSuccessful","WriteMessage","UnlockingTaskDataRowWasNotSuccessful","CreatingFolderParameterWasNotSuccessfulErrorParameter","AdminMessage","SendTime","EventSettingsParameterNotFound","RemoveUserGroupExternalSystemsWasSuccessful","WhistleBlowCategories","AddingWhistleBlowHandlerWasNotSuccessfulErrorParameter","AdditionalPermissions","SavingDirectoryItemFolderParameterWasNotSuccessfulErrorParameter","SavingEditableDocumentParameterApprovalWasNotSuccessfulErrorParameter","AccessRightWrite","CalendarTaskCategoryParameterIsInUseInParameterCalendarTasksAndCannotBeDeleted","SavingUnitsWasSuccessful","UnitChangedFromParameterToParameter","FileParameterIsNotOpenXmlWorkbook","NewVersionAvailable","ViewLogLine","WhistleBlowInformantTitle","IgnoreFilePatterns","TaskReport","EventUrgencyClasses","EditUserGroup","MyReports","NewPanel","SavingPrintWasSuccessful","DefaultHandlers","EditCompany","UserPasswordMustBeValid","CompetencyGroup","LockedTaskDataRowCannotBeDeleted","PanelSize2","DeletingTaskTypeParameterWasNotSuccessfulErrorParameter","DocumentTemplateParameterNotFound","NoNotificationsToSend","CompanyName","EditRow","InviteInstantMessageChannelUser","FormOptions","PrivacyPolicyUrl","FileSynchronizationToDatabaseStarted","FormulaPI","ShowOnlyUnitsThatAreInUse","EditableDocumentUnpublishConfirmation","SavingFilterWasNotSuccessfulErrorParameter","UnlockingTaskParameterWasNotSuccessful","ExternalSystemCodeClaimNotFound","SearchTasks","FormDate","TaskDashboard","SaveReportAs","EditFamiliarization","AddUserGroups","AddUserGroupParameterWasSuccessful","WhistleBlowInformation","UserIsCompanyAdminClaimNotFound","EditEventTypeBs","AddTaskType","DefaultTaskStates","TaskPriorityCodeMustBeDefined","TaskRemainderCheckingAndNotificationStarted","Reminder","InstantMessageChannelUsers","EditSharedDocumentTemplate","SharedFiltersAndReports","DeletingEventParameterWasSuccessful","NoFavoritesToShow","RelatedToDatabaseRecordType","RemovePrint","setCulture","Translations","muiTheme","createTheme","breakpoints","xs","sm","md","lg","xl","xxl","typography","palette","main","secondary","action","selectedOpacity","background","default","contrastText","success","info","warning","components","MuiCssBaseline","styleOverrides","theme","boxSizing","lineHeight","paddingTop","MuiTypography","defaultProps","MuiCard","root","borderRadius","MuiCardHeader","hover","borderBottom","borderColor","MuiDialogTitle","getContrastText","fontWeight","MuiDialogContent","MuiDialogActions","MuiFormControlLabel","marginBottom","slotProps","MuiAccordionSummary","border","content","MuiTab","outline","MuiButton","outlined","paper","textTransform","sizeMedium","MuiToggleButton","MuiOutlinedInput","MuiInputBase","MuiSelect","displayEmpty","MenuProps","MuiMenuItem","MuiIconButton","MuiListItemButton","disableRipple","MuiLink","textAlign","button","MuiCircularProgress","ModifyUser","picture","userType","Normal","isRemoved","createModifyUser","sortModifyUsers","column","currentUserCode","InstantMessageListItem","channelId","readState","NotRead","modifyUser","deleteUser","replyToInstantMessage","isTitle","isDeleted","isNotRead","isSomeRead","SomeRead","isAllRead","AllRead","isUserRead","UserRead","getText","userCode","sortInstantMessageListItems","createTitleItem","InstantMessageChannelInvitation","sender","InstantMessageChannelItem","userIsAdmin","userIsOnlyAdmin","isGroup","otherUserCode","hasUnreadMessages","latestMessage","invitation","getPicture","getPictureClass","getLatestMessageDate","SignalrNotification","module","subject","recordId","recordType","SignalRConnectionManager","rootUrl","operations","signalRToken","openingConnection","connection","qs","hub","createHubProxy","onUpdateInstantMessageListLine","off","on","onRemoveInstantMessageChannel","instantMessageChannelId","onUpdateInstantMessageChannel","channel","onShowNotification","fail","stop","LockedRecord","companyId","isLockedToUser","lockedUser","createLockedRecord","isEmptyArray","openDb","indexedDB","appConfig","clientDatabaseName","onsuccess","onupgradeneeded","db","oldVersion","createObjectStore","sessionStore","pushSubscriptionStore","createIndex","transaction","oncomplete","getAllKeysFromIndex","storeName","indexName","indexValue","objectStore","keyRange","IDBKeyRange","only","openCursor","cursor","primaryKey","continue","tx","put","delete","storeSessionState","sessionState","sessionKey","getSessionState","storePushSubscription","pushSubscriptionId","getPushSubscriptionIds","removePushSubscriptionsFromDbByIds","subscriptionIds","store","subscriptionId","removePushSubscriptions","removeUserPushSubscriptions","addLockedRecords","dbLockedRecords","lockedRecordsKey","addIds","lockedRecords","removeLockedRecords","getLockedRecords","IndexedDbManager","getSessionKey","setIndexedDbAvailable","indexedDbAvailable","getIndexedDbAvailable","getLocalStorageAvailable","localStorageAvailable","localStorage","setSessionState","refreshTime","setItem","getItem","Session","AbortItem","controller","AbortController","abortManager","abort","abortAll","clean","AbortDictionary","abortIds","abortId","navigateTo","href","setAbortItem","signal","postFileApiCall","message","errorMessage","userParameterCodeShowDocumentPreview","ModifiedRecordListItem","userName","userPicture","fileType","getRecordTypeImageClass","getIntraUrlByRecordType","getRecordTypeIntraUrl","getTitleByRecordType","getRecordTypeTitle","getPluralTitleByRecordType","isFile","ModifiedRecordListItems","hasMore","page","pageSize","sortColumn","sortOrderIsAsc","FrontToDoItem","amount","important","FrontToDoItemGroup","FrontToDoItemGroups","groups","OtpSuccess","otp","frontAborts","ListItems","create","InstantMessageListItems","maxInstantMessageAttachmentSize","NumberTitle","createNumberTitle","getTitleByNumber","num","InstantMessagePage","companies","authorizationLevels","channels","validAdditionalPermissions","CompanyListItem","activeState","fileStorageQuota","usedStoragePercent","usedFileStorageQuota","companyGroups","activeStateStr","getActiveStateToStr","companyGroupsStr","sortCompanyListItems","CompanyListItems","EffectiveUnitNodeCompanyIds","companyIds","isExplicitPermission","UnitNodePermission","levelA","levelB","levelC","groupType","getTotalPermission","getLevelTotal","UnitNodePermissionCompanyGroupPermission","permission","None","additionalPermissionA","additionalPermissionB","additionalPermissionC","companyGroupPermission","companyGroupAdditionalPermissionA","companyGroupAdditionalPermissionB","companyGroupAdditionalPermissionC","setUserGroupPermissions","setUserGroupPermissionsFromUnitNodePermission","unitNodePermission","setCompanyGroupPermissions","getTotalUserGroupPermission","UnitNodeGetChildPermissionsResult","permissions","UnitNodeSavePermission","UnitNodeSave","getSortedJsonUnitNodeSaves","src","UnitNode","systemPermissionLevel","maxPermissionLevel","maxPermissionLevelA","maxPermissionLevelB","maxPermissionLevelC","explicitPermissions","partnerCompanyIds","getIsRoot","getRoot","getSiblings","getPathNodes","getTotalMaxPermission","getIsDisabled","totalMaxPermission","totalPermission","hasSiblings","getUnitNodeById","childResult","removeGroupPermission","groupCode","removeGroupPermissions","setGroupPermission","companyGroup","userGroup","clearSubFolders","groupSubType","Write","currentPermission","setGroupPermissions","getPermissionsBase","getPermissions","allPermissions","allPermission","parentPermissions","parentPermission","explicitPermission","getEffectivePermissionBase","allCompanyGroupPermission","allPartnersCompanyGroupPermission","oneCompanyGroupPermission","relevantCompanyGroupPermissions","companyGroupCodes","groupCodes","companyGroupCode","Fixed","resultTotal","userGroupPermission","allUserGroupPermission","oneUserGroupPermission","relevantUserGroupPermissions","userGroupCodes","userGroupCode","getEffectivePermission","hasExplicitPermission","getEffectiveNonExplicitPermission","getChildPermissions","getExplicitUnitNodePermission","getExplicitPermission","setEffectivePermissions","preCalculatedPermission","permissionsOfChildren","getJsonUnitNodeSaves","saveUnitNode","savePermission","getNodePermissions","getAllExplicitUserGroupCodesInUnitNodes","unitNodes","unitNode","setEffectivePermissionsToPathNodes","pathNodes","pathNode","getMinPermissionUserGroups","userGroups","minPermission","minAdditionalPermissionA","minAdditionalPermissionB","minAdditionalPermissionC","expandFixed","minPermissionTotal","getMinPermissionUserGroupCodes","unitId","resultUnitNode","getMinPermissionUserGroupCodesInTree","cloneUnitNode","getTreeHasPartnerCompanies","addPartnerCompanyToUnit","partnerCompanyId","removePartnerCompanyFromTree","index2","getPartnerCompanyIdsFromTree","setGroupPermissionCompanyIds","getEffectiveUnitNodeCompanyIds","UnitPermissionUserGroup","groupNames","UnitNodePermissions","partnerCompanies","InstantMessagePermission","hasPartners","unitNodePermissions","getInstantMessageCompanyListItems","companyGroupIds","activityState","ignoreCompanyGroupId","ignoreCompanyIds","sortOrder","SavedListFilter","generalFilter","CalendarTaskItem","parentId","startDate","endDate","allDay","NotStarted","isPrivate","locationText","description","categoryId","categoryCode","categoryColor","createUser","CalendarTaskItems","prevItem","nextItem","CalendarTaskCategoryListItem","isRemovable","CodeTitle","createCodeTitle","getTitleByCode","sortCodeTitles","CalendarTaskPageData","categories","handlers","creators","CalendarTaskPage","companyFilters","userFilters","showDocumentPreview","CalendarTaskCategoryListItems","CalendarTaskCategoryEditItem","CalendarTaskCategoryEdit","CalendarTaskEditItem","isRead","remainder","repetitionIntervalType","repetitionInterval","repetitionIntervalSub","repetitionEndRepeatCount","repetitionEndDate","isLockedToOtherUser","canSaveCalendarTask","canRemoveCalendarTask","canShareCalendarTasks","userIsIsSystemAdmin","SaveSuccessItems","rowIds","UserGroupListItemUser","UserGroupListItem","companyCode","levelStr","users","sortUserGroupListItems","UserGroupListItems","totalItemCount","CalendarTaskAmount","CalendarTaskPermissions","removeCalendarTask","calendarTaskId","getUserGroupListItems","ignoreUserGroupCodes","requireUserGroupCodes","ApplicationPermission","ApplicationPermissionSave","CompanyGroupListItemCompany","CompanyGroupListItem","sortCompanyGroupListItems","UserExternalSystem","externalCode","inUse","UserSaveExternalSystem","FileFilterListItem","CompanyIntraModule","usesExternalCode","CompanySaveIntraModule","MessageTypeListItem","typeClass","image","UnitModuleNodeUsage","enabled","visible","getImageClass","isSuperAdmin","canUseRecords","Record","UnitModuleNode","hidden","collapsed","usages","getHasChildren","getParentIsRoot","getAncesterIsCollapsed","getIsHidden","getUnitModuleNodeById","getSiblingNames","lowerCase","getDescendantIdsForRemoveSub","getDescendantIdsForRemove","setCollapsed","setUsagesSub","usageSet","newUsage","usage","setUsages","addUnitModuleNode","removeUnitModuleNodeById","unitModuleNode","setApplicationPermissionTypeVisible","setNotInUseNodesHidden","CompanyEditItem","postalAddress","postalCode","city","phone","email","internet","pageFooterText","businessIdentityCode","contactPerson","logoSquare","styleClass","customStyleClass","loginUrl","tiedostoturvaUseType","documentRootPath","bannerPath","documentPreviewLogType","eInvoiceAddress","eInvoiceOperator","CompanyEdit","company","defaultLogo","defaultLogoInUse","companyGroupsEnabled","partnerCompaniesEnabled","allPartnersCompanyGroupId","canEditWhistleBlowSettings","customStyles","applicationPermissions","externalSystems","intraModules","fileFilters","messageTypes","CompanyPageList","CompanyPage","edit","CompanyEditSaveAdminSuccess","refreshSessionState","styleChanged","CompanyEditSaveSuccess","getCompanyListItems","getCompanyEdit","CompanyGroupForPermissionListItem","createCompanyGroupForPermissionListItem","CompanyGroupForPermissionListItems","CompanyGroupListItems","CompanyGroupPage","CompanyGroupEditItem","CompanyGroupEdit","getCompanyGroupListItems","ignoreCompanyGroupIds","LogListItem","typeStr","version","callerIp","operation","parameters","browserInfo","LogListItems","LogPage","LogProperties","logSizeInDays","DocumentContentPreview","DocumentFilePreview","path","FolderTreeNode","expanded","removeReadOnlyBranches","getFullPath","expandToRoot","DocumentFolders","folderTree","DocumentListItem","locked","publishedId","publishedFileType","publishedImage","publishedApproved","documentVersionId","sortDocumentListItems","Intl","Collator","DocumentListItems","DocumentPageData","canEditDocuments","canEditProperties","canEditRootFolderProperties","keywords","DocumentPage","DocumentVersionPreview","directoryItemId","DocumentFileEditItem","keywordIds","DocumentFileEdit","KeywordListItem","KeywordListItems","KeywordEditItem","KeywordEdit","DocumentTemplateListItem","DocumentTemplateListItems","DocumentTemplateEditItem","DocumentTemplateEdit","FileFilterListItems","FileFilterEditItem","FileFilterEdit","DocumentSettings","ignoreFolderPatterns","ignoreFilePatterns","documentVersionAutoSaveHistorySize","documentVersionPublishHistorySize","DocumentSettingsSave","refreshFolders","UserListItemUserGroup","companyName","UserListItem","firstName","lastName","defaultPictureInUse","defaultCulture","pushNotificationType","emailNotificationType","recordEmailNotificationType","recordEmailNotificationShowExpired","hasRecordUser","mobileInUse","mobileActive","webActive","userGroupsStr","getName","sortUserListItems","UserListItems","companyCanUseInstantMessages","FolderNodePermission","FolderNodeSavePermission","FolderNodeSave","getSortedJsonFolderNodeSaves","FolderNode","tempChild","getFolderNodeById","companyGroupPermissionsFound","userGroupPermissionsFound","maxPermission","getExplicitFolderNodePermission","getJsonFolderNodeSaves","saveFolderNode","DocumentFolderEditItem","inheritedFileFilterIds","fileFilterIds","DocumentFolderEdit","canUseAllCompanyGroup","maxFolderNameLength","folderNode","DocumentDocumentEditItem","contentVersion","publishVersion","landscapeOrientation","approveUser","publishUser","DocumentDcoumentEdit","DocumentPublishResult","DocumentVersionListItem","AutoSave","DocumentVersionListItems","DocumentVersionEditItem","DocumentVersionEdit","DocumentDocumentNew","DocumentDocumentTemplateContent","UploadFilesCheckResult","fileNamesInUse","removeFolder","downloadFile","removeDocuments","saveDocumentTemplateEdit","EventUrgencyClassListItem","defaultUrgencyClass","EventUrgencyClassListItems","EventUrgencyClassEditItem","EventUrgencyClassEdit","EventChartOptions","selectedEventTypeIds","selectedGroupingType","selectedTimeSpan","EventChartPropertiesDialogData","chartOptions","eventTypes","groupingTypes","timeSpans","EventSettingSimple","attachmentImageSize","Large","observerActionUseType","locationUseType","observerActionIsInUse","observerActionIsRequired","locationIsInUse","EventDefaultEventHandlers","unitCode","createCompanyUnitId","createCompanyUnitCode","canHandleEvent","canEditIdentificationData","eventSetting","EventTypeNode","eventTypeUsageType","isSelectableForNew","SelectForNew","getEventTypeNodeById","removeEventTypeNodeById","getAsIdTitleNode","getAsIdTitleNodes","EventEditItemMessage","myMessage","allRead","uiType","sortEventEditItemMessages","EventEditItem","createCompanyId","urgencyClassId","observer","observerAction","immediateAction","preventiveAction","rootCause","identificationDetails","directCosts","indirectCosts","messages","eventTypeIds","eventTypeBIds","eventTypeCIds","approveHandlers","getFirstAndLastApproveHandler","stateStr","lastApprove","isPublished","isLocked","firstApprove","allApproved","handler","getProcessingTimeStr","lastApproveUser","processingTime","IdColorTitle","createIdColorTitle","EventEdit","canRemoveEvent","createCompany","units","urgencyClasses","eventTypeNodes","eventTypeBNodes","eventTypeCNodes","EventEditNew","EventListItem","urgencyClassCode","urgencyClassColor","observerActionInUse","userState","NotHandler","imported","exported","removable","published","messageCount","getModifyDate","EventListItems","ReportParameterValue","createReportParameterValue","SavedReport","reportId","reportFilter","showInFrontPage","SavedChartPanel","chartId","reportTitle","panelType","getIconClass","getIcon","getId","getDisabled","getReportParameterValues","chartItem","taskDataRow","taskType","GetReportFilter","defaultCol","CreateSavedChartPanel","reportName","reportDescription","chartNames","Chart","OneXOne","getDashBoardPanels","panels","savedChartPanels","chartItems","chartPanels","newChartPanels","chartPanel","sortPagePanels","RecordPagePanel","Statistics","SavedPrint","defaultPrint","fields","spacer","createSpacer","sortSavedPrints","EventPageData","canEditModuleProperties","canEditAllModuleProperties","hasExplicitEventPartners","states","partners","observers","eventTypeBs","eventTypeCs","userPrints","printableFields","EventPagePanel","EventPage","EventPartnerEditItem","partnerCompanyCode","partnerCompanyName","partnerCompanyLogo","EventPartnerEdit","eventPartner","EventPartnerListItem","unit","EventPartnerListItems","defaultUnitId","EventTypeEditItem","EventTypeEdit","eventType","EventTypeNodes","FrontToDoItems","ReportChartDataSet","label","createReportChartDataSet","ReportChartData","dataId","chartType","labels","dataSets","EditItemLockable","lockedDate","lockedUserCode","lockedUserName","lockedUserPicture","modifyUserCode","modifyUserPicture","hasAttachments","initializeCols","initializeToTaskType","lineCols","lineCol","formIndex","dataIndex","sortTaskDataRows","rows","modifyUserNameIndex","modifyUserNameTaskTypeCol","modifyDateIndex","modifyDateTaskTypeCol","dataColIndexes","formColIndex","sortTaskDataRowsByColumn","createTaskDataRow","getDynamicDataRowsFromJsonTaskDataRows","row","resultRow","SaveTaskDataRow","createSaveTaskDataRow","savedCols","TaskValidationRowCol","errors","TaskValidationRow","TaskTypePage","headerClass","formHeight","showAttachments","attachmentsHeight","enableDialogButtons","taskRepetitionType","visibility","lineMultiselect","headerCols","pages","hasFilterColumns","isVisible","createTaskTypeCol","colIndex","getTaskTypeCol","isLineSchema","enum","idEnum","getJsonTaskTypeColsToList","schema","prop","getTaskTypeFromDataSchema","dataSchema","taskTypes","isPublic","dataSchemaParseError","headerDataRow","formDataRow","lineDataRow","filteredTaskTypes","getTaskTypesByVisibility","notRepeatedTaskTypes","repeatedTaskTypes","TaskEditTypeItem","ReportGeneratedTableData","dataRows","validationRows","dataRow","ReportGenerated2","downloadId","mediaType","listWidth","tables","ChartItem","sortChartItems","ReportItem","Html","orgTaskDataRow","orgReportFilter","isUserReport","reportSharingType","NotShared","getIsUserLevel","getIsShared","getTypeImageClass","Excel","Pdf","getTypeTitle","copyReportParameterValuesFromSavedValues","copyReportParameterValues","report","sourceTypeCol","sourceCol","resetTaskDataRowToOrg","createReportItem","createReportItemFromSavedReport","savedReport","sortReportItems","sortReportItemsSharedAndStandard","getSharedAndStandardReports","standardReports","savedReports","getItemsHash","getTaskTypeAndTaskDataRow","reports","getActiveReport","activeReportId","activeSavedReportId","getStateChangeAfterSetReportSortData","getReportFilterIsSet","reportFilterIsSet","userReports","companyReports","systemReports","staticReports","serviceCall","onBegin","onAfter","reportItems","callService","userReport","companyReport","systemReport","activeReport","ReportItems","ModuleUnits","UnitDefaultHandlersNodeUser","Handler","sortUnitDefaultHandlersNodeUsers","UnitDefaultHandlersNodeSave","userCodes","notifyUserCodes","getSortedUnitDefaultHandlersNodeSaves","UnitDefaultHandlersNode","explicitUsers","hasExplicitUsers","removeUser","removeUsers","processSubUnits","clearSubUnits","setUser","clearDescendants","currentUser","getUsers","getSubTreeUserCodes","getUnitDefaultHandlersNodeSaves","user","getDefaultUsersText","UnitNodeDefaultHandlers","EventSetting","IdRowId","UnitModuleSaveResult","commonAborts","reportAborts","chartAborts","getEventEdit","lockEvent","sendEventReadReceipt","getDefaultEventHandlersForUnit","isNewEvent","getEventPrint","printId","approveEvent","eventId","eventEditSaveEventTypes","getEventPageReportItems","operationId","finally","getEventToDoItems","saveUnitNodeDefaultHandlers","saveEventPartnerEdit","getSelectPartnerCompaniesListItems","RecordEducationListItem","RecordEditItemEmployment","jobTitle","getUiTitle","sortRecordEditItemEmployments","RecordEditItemEmploymentSave","RecordFurtherEducationNode","groupId","scopeUnit","scope","validity","parentIsCollapsed","requiredQualificationCount","getRecordFurtherEducationById","getRecordFurtherEducationGroupNodeById","getItemById","getFirstRecordFurtherEducationById","getRecordFurtherEducationCount","furtherEducationGroups","RecordFurtherEducationGroupNode","RecordEditItemFurtherEducation","furtherEducationId","furtherEducationCode","scopeUnitStr","validityEndDate","isQualification","qualificationValid","getIsArchived","setFurtherEducationCode","furtherEducations","furtherEducation","setFurtherEducationCode2","setScopeUnitStr","setFurtherEducationCodes","setQaulificationValidity","recordQualifications","furtherEducationQualifications","furtherEducationQualification","recordQualification","userFurtherEducations","valid","setQaulificationsValidity","sortRecordEditItemFurtherEducations","RecordEditItemFurtherEducationSave","transferDate","returnDate","sortRecordEditItemTransferredProperties","RecordEditItemTransferredProperty","RecordEditItemTransferredPropertySave","RecordEditItemFamiliarization","familiarizationId","familiarizationCode","trainer","setFamiliarizationCode","familiarizations","familiarization","setFamiliarizationCodes","createNewRecordEditItemFamiliarization","sortRecordEditItemFamiliarizations","RecordEditItemFamiliarizationSave","RecordQualificationUserFurtherEducation","Create","sortRecordQualificationUserFurtherEducation","RecordListItemUserQualification","furtherEducationGroupId","validUserFurtherEducations","getFurtherEducationCodeAndValidityData","recordUserFurtherEducationId","furtherEducationValid","furtherEducationValidityEndDate","relevantUserFurtherEducations","MAX_VALUE","recordUserFurtherEducation","getFurtherEducationCodeAndValidityDatas","furtherEducationIds","setCodeAndValidity","qualification","furtherEducationGroup","validityEndDates","setFurtherEducationCodesAndValidity","qualifications","getValidQualificationNumberStr","getQualificationState","RecordEditItemQualification","RecordEditItemQualificationSave","RecordEditItem","basicEducationId","userId","middleName","birthDate","employeeType","ibanNumber","bicCode","taxNumber","driversLicenseType","workShiftName","personalIdentityCode","identifier","nextOfKinFirstName","nextOfKinLastName","nextOfKinPostalAddress","nextOfKinPostalCode","nextOfKinCity","nextOfKinPhone","nextOfKinEmail","employments","transferredProperties","sheetDataRows","initializeSheetDataRowsRows","RecordFamiliarizationListItem","RecordEdit","record","canReadUsers","canEditUsers","canClearUnit","canArchiveAndRemove","jobTitles","basicEducations","transferredPropertyTypes","familiarizationTrainers","workShiftNames","RecordEditItemLogListItem","entryType","entryTypeStr","RecordEditItemLogListItems","RecordEditNew","RecordExpiredFurtherEducationListItem","recordUserCode","recordFirstName","recordLastName","recordPicture","recordBirthDate","recordArchived","sortRecordExpiredFurtherEducationListItemsByColumn","RecordExpiredFurtherEducationListItems","RecordListItemUserFurtherEducation","archived","sortRecordListItemUserFurtherEducations","RecordListItemUserFamiliarization","RecordListItem","employeeTypeStr","basicEducationName","userEndDate","userDisabled","hasQualifications","allQualificationsOk","getQualificationsForUi","RecordListItems","initializeQualifications","RecordPageEdit","hasSheet","RecordPageList","sheetTaskType","RecordPage","RecordPageUnitsAndJobTitles","RecordEducationEditItem","RecordEducationEdit","education","RecordEducationListItems","RecordFamiliarizationEditItem","RecordFamiliarizationEdit","RecordFamiliarizationListItems","RecordExpiredFamiliarizationListItem","sortRecordExpiredFamiliarizationListItemsByColumn","RecordExpiredFamiliarizationListItems","RecordFurtherEducationEditItem","RecordFurtherEducationEdit","RecordFurtherEducationGroupEditItem","RecordFurtherEducationGroupEdit","educationGroup","RecordFurtherEducationGroupNodes","getRecordPageUnitsAndJobTitles","getRecordListItems","employeeTypes","getRecordPageReportItems","parameterValues","printRows","getRecordEdit","getRecordPrint","recordEditSaveSheetData","recordEditRemoveAttachments","MessageShortListItem","typeImage","requiresReceipt","getStateNumber","getStateStr","getStateNumberListSection","getStateStrListSection","MessageShortListItems","MessagePageData","canEditOtherCompanyPermissions","canEditMessages","filterCompanies","modifyUsers","MessageListItem","modifyUserCompanyName","typeName","expired","notVisibleYet","MessageListItems","MessagePage","MessageTypeListItems","MessageTypeEditItem","defaultImage","messageTypeClass","MessageTypeEdit","GroupPermission","sortGroupPermissions","CompanyGroupPermissions","basePermission","hasNormalCompanyGroups","hasFixedCompanyGroups","inheritedPermissions","MessageEditItemTargetUnit","MessageEditItemTargetUnitSave","MessageEditItemTargetCompanyGroup","MessageEditItemTargetCompanyGroupSave","MessageEditItem","messageTypeId","systemAdminMessage","targetUnits","targetCompanyGroups","MessageEdit","canSaveAndSendEmail","senderUnits","ReadReceiptListItem","userCompanyName","userCompanyLogo","ReadReceiptListItems","MessageSendEnmailListItem","MessageSendEnmailListItems","getMessageReadReceiptListItems","messageId","TaskListItem","stateId","stateCode","stateColor","priorityCode","prioritySortOrder","typeCode","userIsHandler","calendarTaskCount","TaskListItems","TaskPageData","canCreateTasks","priorities","TaskPagePanel","TaskPage","TaskStateEditItem","editabilityType","Editable","TaskStateEdit","TaskStateListItem","TaskStateListItems","TaskPriorityListItem","TaskPriorityListItems","TaskPriorityEditItem","TaskPriorityEdit","TaskTypeListItem","usageAmount","TaskTypeListItems","TaskTypeEditItem","printOrientationLandscape","TaskTypeEdit","TaskEditItem","taskTypeId","taskStateId","taskPriorityId","taskHeaderDataCols","taskDataRows","initializeDataRowsRows","TaskEditItemTaskState","TaskEditItemTaskPriority","TaskEdit","canHandleTask","canRemoveTask","canChangeTaskState","taskStates","taskPriorities","TaskDataRowEdit","TaskDataRowListItems","TaskTypeNew","systemTaskTypes","companyTaskTypes","TaskTypePrintHtml","TaskDataRowDefaultValues","getTaskPageReportItems","saveTaskChartPanels","getTaskToDoItems","getTaskTypePreviewPrintHtml","getTaskTypePreviewPrint","getTaskTypeRowPreviewPrintHtml","getTaskTypeRowPreviewPrint","getTaskEdit","taskId","lockTask","sendTaskReadReceipt","taskEditRemoveAttachments","taskEditAddAttachments","UserIntraModule","UserSaveIntraModule","UserEditItem","portalUseType","recordUserId","UserTokenData","isInvitation","expireTime","UserEdit","tokenData","UserEditSaveSuccess","UserProfileEditItem","UserProfileEdit","userProfile","UsersPage","UsersPageUserGroups","UserPasswordEmailResult","checkUserCode","ignoreUserIds","ignoreUserCodes","ignoreRecordUserConnected","doNotIgnoreRecordUserConnectedUserCode","saveUserParameter","UserGroupIntraModule","UserGroupSaveIntraModule","UserGroupEditItem","UserGroupEdit","UserGroupUserSaveSuccess","UserGroupPage","UserGroupPageAuthorizationLevels","getUserGroupListItemsForPermissions","messageTargetMode","ModifyUserItems","WhistleBlowCategoryListItem","WhistleBlowEditItemMessage","isInternal","informantMessage","sortWhistleBlowEditItemMessages","WhistleBlowEditItem","New","archiveState","NotArchived","severity","Unspecified","resolution","resolutionComment","source","sourceComment","anonymous","informantName","informantEmail","informantPhone","informantPasswordConfirmed","createDate","resolvedDate","toBeReceivedDate","toBeReceivedDateUrgency","toBeRespondedDate","toBeRespondedDateUrgency","createdByInformant","WhistleBlowEdit","canReadInformantData","canEditInformantData","whistleBlow","WhistleBlowChannelEditItem","pageName","privacyPolicyUrl","adminUsers","IndexCache","initialize","indexes","cultures","WhistleBlowChannelEditResourceItem","resourceType","cultureCode","sortWhistleBlowChannelEditResourceItems","WhistleBlowChannelEditResourceItemSave","WhistleBlowChannelEdit","whistleBlowApplicationUrl","whistleBlowChannel","resources","WhistleBlowListItem","unreadMessageCount","severityStr","sortWhistleBlowListItems","WhistleBlowListItems","WhistleBlowCategoryEditItem","WhistleBlowCategoryEdit","WhistleBlowCategoryListItems","WhistleBlowEventLogListItem","eventTypeStr","WhistleBlowEventLogListItems","WhistleBlowPageData","WhistleBlowPagePanel","WhistleBlowPage","canEditPermssions","maxAttachmentsTotalSize","ReportGenerated","getWhistleBlowListItems","categoryIds","handlerUserCodes","anonymity","dynamicTime","getWhistleBlowEdit","getDefaultWhistleBlowHandlersForUnit","whistleBlowId","getWhistleBlowPageReportItems","saveWhistleBlowChartPanels","getWhistleBlowToDoItems","customHistory","basename","handleApiError","dispatch","storeActions","getState","write","logoutUrl","applicationState","session","reload","setUserParameters","newSessionState","ListFilterItem","isShared","isUserFilter","createListFilterItem","createListFilterItemFromSavedListFilter","savedListFilter","sortListFilterItems","getListFilterItemSortColumn","listItemFilter","getListFilterItemSortOrderIsAsc","getFilterProps","defaultSortColumn","defaultSortOrderIsAsc","getStateFilterPropsFromGeneralFilter","filterSortColumn","getListFilterItems","companySavedFilters","userSavedFilters","companyFilter","userFilter","avatarColors","AvatarImage","icon","editable","fileInputName","showName","tooltip","removeTooltip","longPressMs","marginRight","marginLeft","onClear","onLongPress","onError","pressTimer","useRef","useTheme","inputRef","useState","backgroundNumber","clearPressTimer","current","handleLinePress","ev","handleLineRelease","old","displayName","names","avatarColor","grey","avatarElement","Avatar","click","onTouchStart","onTouchEnd","onMouseDown","onMouseUp","onMouseLeave","objectFit","Box","minWidth","Tooltip","top","IconButton","ref","files","CompanyItem","DropdownMenu","selectMode","dropdownMenuDiv","elements","offsetTop","scrollTo","left","behavior","onToggleDropodown","componentDidMount","scrollToActiveMenuItem","actions","Divider","handleActionClick","textDecoration","Dropdown","_isMounted","closest","firstMatchBeforeSelected","firstMatchAfterSelected","selectedFound","textTitle","firstMatch","ClickAwayListener","onClickAway","handleDropdownClose","startAdornment","startIcon","selectedTitle","onKeyPress","handleKeyPress","menuRight","PageNavMenuCompanyItem","selectedCompany","activeCompanyId","autoHeight","onChangeActiveCompany","blink","NewMessageIcon","Circle","animation","SectionType","SectionIcon","GridViewOutlined","MessageOutlined","InsertDriveFileOutlined","ErrorOutline","Checklist","ImportContactsOutlined","BusinessOutlined","PeopleAltOutlined","PersonOutlineOutlined","ListAltOutlined","MeetingRoom","Quickreply","VisibilityOutlined","CalendarMonthOutlined","styled","HeaderMenuItem","HeaderItem","classes","handleClick","ListItemIcon","primaryTypographyProps","eventsExist","ExternalSystemDropdown","intraRestModules","anchorEl","setAnchorEl","editMode","useEffect","getItems","handleOtpLogin","intraModule","component","rel","currentTarget","NavigationMenu","activeMenuItem","newInstantMessages","appState","setNewInstantMessages","onNavigateOutCheck","canNavigateOut","showUserProfileDialog","signalRConnectionManager","openConnection","updateInstantMessageListLine","componentWillUnmount","closeConnection","showExternalSystems","Paper","elevation","flexDirection","justifyContent","alignItems","paddingBottom","alt","handleGoToFrontPage","MenuList","Front","canUseMessages","handleGoToMessagePage","canUseCalendarTasks","handleGoToCalendarTaskPage","canUseInstantMessages","handleGoToInstantMessagePage","canUseDocuments","handleGoToDocumentPage","canUseEvents","handleGoToEventPage","canUseTasks","handleGoToTaskPage","canUseOwnRecord","handleGoToRecordPage","canUseCompanyGroups","handleGoToCompanyGroupPage","canUseCompanies","handleGoToCompaniesPage","canUseUserGroups","handleGoToUserGroupsPage","canUseUsers","handleGoToUsersPage","canUseLogs","handleGoToLogPage","canUseWhistleBlow","handleGoToWhistleBlowPage","Button","callOnClick","activeElement","blur","buttonClasses","buttonType","Danger","Primary","buttonSize","Small","CheckBox","onClickBoolean","chkBox","indeterminate","inline","noPadding","labelClasses","el","addEventListener","dropdownClickEvent","removeEventListener","dropdownClasses","ToolButton","hasTitle","removeDefaultClasses","backgroupdNumber","imageClass","backgroundImage","handleFileChange","handleClear","SaveAttachmentBase64","fieldName","fromFileAttachment","fileAttachment","fromFileAttachments","fileAttachments","SaveDataObj","hash","hashValues","updateHashValue","hashValue","AppButton","forwardRef","clickTimer","enableDoubleClickForOnClick","ConfirmationButton","CheckCircleOutlined","DangerButton","DraggablePaper","centerOnResize","widgetContainerRef","widgetState","setWidgetState","bounds","bottom","resizeObserver","ResizeObserver","_entries","observe","unobserve","disconnect","handle","cancel","nodeRef","onStart","_event","uiData","clientWidth","clientHeight","targetRect","getBoundingClientRect","onStop","overflowX","AppBaseDialog","Dialog","reason","buttons","dialogTabs","overflowY","disableEnforceFocus","getPaper","useCallback","PaperComponent","DialogTitle","DialogContent","flexGrow","DialogActions","mr","CkEditorDialog","GridRow","Grid","spacing","AvatarName","overflow","textOverflow","suffixElement","ModifyUserInfo","UserChangePasswordDialog","oldPassword","newPassword","newPasswordConfirmation","showErrorMessage","validate","checkErrors","getWarningMessage","saveData","getSaveDataFromState","onOk","saveToDb","cancelResult","orgStateHash","onCancel","TextField","inputProps","handleCancel","handleSave","ChangePasswordButton","Lock","UserProfileDialog","isLoading","resetPicture","validateFileAttachment","showChangePasswordDialog","onRefreshSessionState","loadUserProfile","handleSetPicture","handleRemovePicture","marginTop","FormControlLabel","control","_e","CannotInvite","CanInvite","AutoAcceptInvitation","handleOnChangePassword","handleUserChangePasswordDialogOk","handleUserChangePasswordDialogCancel","SvgFlagEn","viewBox","fill","xmlns","clipPath","stroke","SvgFlagFi","SvgReport","fillRule","clipRule","strokeWidth","strokeLinecap","strokeLinejoin","SvgReportSmall","transform","ToolButtonDropdownMenu","menuOpen","handleCloseMenu","transformOrigin","horizontal","vertical","anchorOrigin","getActions","handleToggleClick","element","endIcon","ExpandLess","ExpandMore","flex","UserMenu","setShowUserProfileDialog","Stack","direction","SvgIcon","onSetCulture","Fi","canUseSystem","En","allowedCompanies","companyLogoSquare","changeCompany","_a","Person","onLogout","Logout","PageContainer","PageContent","PageTopBar","justiftContent","zIndex","TabLabel","FilterTabs","standardFilters","selectedSavedId","onSetActiveItem","onSetActiveStandardItem","scrollButtons","TabScrollButtonProps","Tab","PageNavMenuItem","onToggleMenuItem","subElement","PageNavMenuItems","activeId","PanelTitle","DialogSettingsCard","cardContent","showCard","CardContent","Alert","ListStateIcon","Icon","noMargin","ListStateIconTool","Build","hasVisibleChildren","isRoot","permissionText","accessRightWriteTitle","Read","accessRightReadTitle","accessRightNoneTitle","getAdditionalPermissionInUse","additionalPermissionTitle","handleUnitNodeClick","onDoubleClick","handleUnitNodeDoubleClick","isFirstNode","Home","childUnitNode","UnitPermissionTree","ActionContainer","leftItems","rightItems","AppToolButton","buttonElement","CopyToolButton","ContentCopy","EditToolButton","openButton","OpenInNew","PasteToolButton","ContentPaste","ListIconButtonsPermission","editTooltip","copyTooltip","pasteTooltip","editDisabled","copyDisabled","pasteDisabled","onEdit","onCopy","onPaste","EllipsisTypography","whiteSpace","ListCardRow","onCheckboxChange","stringContent","handleCheckboxChange","contentClasses","ClipTypography","ListHeaderColumn","spanClass","alignSelf","defaultChecked","ArrowDownward","ArrowUpward","ListValueColumn","onValueClick","hasErrors","bgcolor","handleValueClick","CardContainer","hoverOpacity","ListHeaderLine","columns","ListValueLine","targetTouches","clientY","startY","lastY","changedTouches","clientX","yDiff","unselectable","clearClickTimer","hovered","hoverElement","notNullColumns","onMouseEnter","details","visibleColumns","ListCard","subTitle","validRows","CircularLoading","CircularProgress","disableShrink","animationDuration","circularProgressClasses","circle","LocalLoading","listDiv","offsetHeight","containerDiv","scrollTop","onSearchLines","handleScrollSub","onColumnClick","lines","aSelectedId","aCheckedIds","getIdsOnColumnCheckboxChange","onSetSelectedIds","lineDetailsVisible","getIdsOnLineCheckboxChange","handleScroll","globalLoadingInUse","intialized","handleChangeSortColumn","multiSelect","handleChangeColumnCheckbox","noDataMessage","noDataMessageThreshold","cards","lineDetails","handleChangeLineCheckbox","handleLineClick","doubleClickDisabled","onOpenLine","card","customLines","showEditDialog","editDialogId","editDialogHasPrevious","editDialogHasNext","detailsItem","searchItems","setEditDialogItemByIndex","ListSearchFilter","searchFilter","onSearchClick","InputProps","endAdornment","appendElements","SelectCompanyDialog","onGetCompanyListItems","nextPage","records","waitingPreloadedData","prevIgnoreCompanyGroupId","hide","changeFilter","handleSetSelectedIds","handleSearchLines","handleOk","FormSectionTitle","DownloadToolButton","RemoveToolButton","PrintToolButton","AddToolButton","ListIconButtonsItem","prefixElement","addTooltip","downloadTooltip","printTooltip","addDisabled","removeDisabled","downloadDisabled","printDisabled","addActions","onAdd","onRemove","onDownload","onPrint","UnitGroupPermissionDialogPartnerCompanyList","filteredList","onRemoved","showSelectCompanyDialog","availableCompanies","onAdded","isReadOnly","handleAdd","handleRemove","handleSelectCompanyDialogOk","handleSelectCompanyDialogCancel","handleGetCompanyListItems","UnitGroupPermissionDialog","newCompanies","additionalPermissionIndex","additionalPermission","clearSubUnitPermissions","copyPermissionToAllSameLevelUnits","save","nonExplicitGroupPermission","effectiveUnitNodeCompanyIds","unitPartnerCompanies","nonExplicitPermission","additionalPermissionAInUse","additionalPermissionBInUse","additionalPermissionCInUse","Radio","handleSetPermission","handleSetAdditionalPermission","partnerCompaniesTitle","handleCompaniesRemoved","handleCompaniesAdded","handleSetClearSubUnitPermissions","handleSetCopyPermissionToAllSameLevelUnits","fixedGroups","group","task","runLongTask","getUpdatedUnitNode","displayUnitNode","getUserGroups","allUsersGroup","userGroupType","editUnitNode","showUnitGroupPermissionDialog","unitGroupPermissionDialogUserGroup","selectedUnitId","editPermission","siblings","additionalPermissionInUse","getAdditionalPermissionIsDisabled","partnerIds","updateUnitNode","copyPermissionToSiblings","onChangeSaveUnitNode","copiedPermissions","permissionsCopied","setFixedGroupNames","hideAllUsers","hideUserGroups","cardView","handleChangeUserGroupTypeAll","handleChangeUserGroupType","userGroupChange","handleEditPermission","handleCopyPermissions","handlePastePermissions","handleUnitGroupPermissionDialogOk","handleUnitGroupPermissionDialogRemove","handleUnitGroupPermissionDialogCancel","UnitApplicationPermissions","UnitSummaryUserGroup","UnitSummaryNode","permissionUserGroup","permissionUnitNode","UnitPermissionSummaryTable","filterLow","showInheritedPermissions","showUserGroups","showUsers","parentName","additionalPermissionsInUse","additionalPermissionText","UnitPermissionSummaryDialog","getBaseUnitSummaryNode","userGroupUnitNode","summaryNode","getUnitSummaryNode","paddingRight","UnitPermissionSettings","accessRightWriteHidden","additionalPermissionATitle","additionalPermissionBTitle","additionalPermissionCTitle","showPermissionsSummary","closeDialog","onSave","getStateFromProps","prevCompanyId","prevUnitNodeId","unitNodeId","newState","handleChangeSaveUnitNode","handleHidePermissions","handleShowPermissions","ListStateIconSuccess","CheckCircle","ListLinkValue","Link","inactive","TaskStateListChip","Chip","UnlockToolButton","LockOpen","DialogItemsNav","hasPrevious","hasNext","onUnlockAndLockToMe","onPrevious","onNext","DoubleArrowOutlined","AccountCircle","FormCheckBox","ColorPickerDiv","div","ColorBoxDiv","PickerContainer","ColorPicker","colors","defaultColors","requiredColors","openAlignRight","onChangeComplete","DialogButtons","prefixNode","saveDisabled","cancelTitle","removeTitle","saveTitle","CalendarTaskCategoryDialog","showConfirmationDialog","canMoveOut","onRefreshList","loadData","databaseRecordTypeSpecified","multiline","handlePrevious","handleNext","CalendarTaskCategoryList","moveNext","setEditDialogData","selectedItem","canRemove","getCanRemove","getShowEditDialogStateChange","getRemoveSaveData","selectedItems","getEditDialogItemByIndexStateChange","handleOpenLine","handleEditDialogOk","handleEditDialogCancel","moveToPrevious","moveToNext","CalendarTaskSettingsDialogMenuItem","CalendarTaskSettingsDialog","permissionsRef","loadPermissions","_closeDialog","menuItem","onUnitPermissionSettingsCancel","settingsActions","handleToggleActiveMenuItem","handleSubViewOk","handleUnitPermissionSettingsSave","AppToggleButton","ToggleButton","PreviewToggleButton","PreviewOutlined","AddButtonMenuItem","onAddFilesClick","accept","fileInputAccept","handleFileActionChange","AddButton","SettingsButton","getLanguageLocale","CalendarDatePicker","setOpen","anchorRef","contains","Popper","placement","LocalizationProvider","dateAdapter","AdapterMoment","adapterLocale","DateCalendar","referenceDate","selectionState","MultirowEllipsisTypography","maxRows","WebkitLineClamp","WebkitBoxOrient","CalendarItemDetailPopup","stopImmediatePropagation","formatedDate","onRemoveItem","onOpenDialog","ListStateIconPrivate","VisibilityOffOutlined","calendarRef","getEvents","onGetEvents","handleDateChange","calendarApi","getApi","gotoDate","activeStart","activeEnd","handlePrev","prev","useImperativeHandle","moveToDate","moveToPrev","viewType","detailsVisible","isDblClick","today","ArrowBackIosNew","ArrowForwardIos","ToggleButtonGroup","exclusive","changeView","select","handleChangeView","borderBottomLeftRadius","borderTopLeftRadius","borderBottomRightRadius","borderTopRightRadius","locales","fi","plugins","interaction","initialView","weekNumbers","firstDay","headerToolbar","selectable","eventContent","extendedProps","private","timeText","eventClick","detailsEvent","events","detailsAnchor","dateClick","onDateClick","eventDrop","onSetEventStartDate","eventDidMount","onEventClick","handleEventDoubleClick","onEventRemove","FilterButton","FilterAltOutlined","iconcolor","PrintButton","RefreshButton","CachedOutlined","ListActionButtons","filterIsSet","filterDisabled","refreshDisabled","onFilter","onRefresh","ListContainer","ListSearchContainer","PageTitle","DialogTabs","activeTabId","tabs","onChangeTab","Tabs","newValue","tab","badgeContent","Badge","getAttachment","PopupMenu","Container","Word","PowerPoint","getBannerColor","AttachmentIcon","strokeColor","UploadButton","AttachmentImage","imageSize","lateThreshold","ignoreAspectRatio","isLate","setHovered","AttachmentListLine","flexWrap","AttachmentList","canShowCamera","hideThumbnails","onAddAttachments","onDownloadAttachment","onRemoveAttachment","onAddPhoto","fileUploadRef","onDrop","acceptedFiles","getRootProps","getInputProps","noClick","handleDownload","imageAttachments","PhotoCameraOutlined","useFlexGap","my","DialogSectionCard","headerTitle","contentPadding","CardHeader","titleTypographyProps","ToolTitle","AddUserToolButton","PersonAdd","RemoveUserToolButton","PersonRemove","DialogListContainer","SelectUserGroupDialogList","onSetSelected","onGetUserGroupListItems","onSetIntialized","setSelected","defaultUserGroupType","prevIgnoreUserGroupCodes","prevRequireUserGroupCodes","prevMessageTargetMode","listModeChangeDisabled","hanleChangeUserGroupType","SelectUserGroupDialog","handleSetInitialized","UserGroupBlockItem","selectedCodes","avatar","UserGroupBlocks","selectedCode","showSelectUserDialog","newUserGroups","newUser","onAddUserGroups","removeUsersConfirmation","onRemoveUserGroups","titleIsString","parentIsNew","parentIsNewMessage","noUsersMessage","handleBlockClick","handleSelectUserGroupDialogOk","handleSelectUserGroupDialogCancel","onGetUserGroupSelectListItems","CalendarTaskBasicInformation","isRelatedToRecord","DatePicker","startDateStr","TimePicker","startTimeStr","endDateStr","minDate","endTimeStr","minTime","minRows","Started","Finished","attachmentIds","getRemoveAttachmentsSaveData","onChangeAttachments","showSuccessMessage","getAddAttachmentsSaveData","onChangeHandlers","removeHandlers","CalendarTaskRepetitionSettings","getDefaultRepetitionIntervalCount","handleRepetitionWeekDayChange","repetitionIntervalWeek","repetitionEndType","RadioGroup","repetitionEnabledFirstTime","weekRepetitionEnabled","monthRepetitionEnabled","yearRepetitionEnabled","orgStartDate","getDefaultRepetitionIntervalWeek","getDefaultRepetitionIntervaMonth","getDefaultRepetitionIntervalYear","Switch","repetitionIntervalMonth","repetitionIntervalYear","repetitionEndDateStr","maxDate","UnlockResultItem","UnlockResult","recordLockManager","addUnlockCallBack","unlockCallBack","unlockCallBacks","removeUnlockCallBack","addLockCallBack","lockCallBack","lockCallBacks","removeLockCallBack","addLock","lockedRecord","unlockDb","lockToCurrentUser","unlock","successItems","successItem","newRecords","resultItem","unlockAll","ignoreRecordType","lock","StoreUtils","getNowModifyUser","CalendarTaskEditDialog","calendarTask","getRepetitionIntervalWeek","repetitionStartDate","_b","getRepetitionIntervalYear","nowDate","saveState","getRepetitionIntervalSub","startDateTime","endDateTime","onRefreshCalendar","handleUnlockAndLockToMe","stateChange","getRecurrenceTypeString","toLocaleLowerCase","tabId","ownerRecordTitle","DrawerHeader","ListDetailsPanel","ClearOutlined","ListStateIconStarted","ChangeCircle","ListStateIconNotStarted","HourglassTop","CalendarTaskListItem","dayNumber","dayLabel","dateLabel","StateIcon","startsEarlierDate","endsLaterDate","getTimeStr","getEventsByDate","lastWeekNumber","mStartDate","getEventsByDay","firstItem","mDate","startOf","mEndDate","isSame","startDateIsSameAsEndDate","CalendarTaskList","eventsByDate","setEventsByDate","stateFilter","setStateFitler","eventsByDay","onItemClick","CalendarTaskCategoryNotSetId","getCalendarTaskPageGeneralFilterFromState","selectedCategoryIds","selectedStateIds","handlerUserGroupCodes","selectedHandlerUserGroupCodes","createUserCodes","selectedCreateUserCodes","privacy","selectedPrivacy","getCalendarTaskPageFilterStateFromGeneralFilter","getFromattedDate","getCalendarItems","moment","utc","CalendarTaskView","generalFilterValues","initialized","editDialogStartDate","calendarItems","initialItems","prevPrediodLastItem","initialPrevItem","nextPrediodFirstItem","initialNextItem","handleRefreshCalendar","handleAddCalendarTask","handleOpenCalendarItem","flexBasis","settingsVisible","onToggleSettingsDialog","onChangeShowDocumentPreview","reportTabs","viewFilterIsSet","onOpenFilterDrawer","DrawerContent","FilterButtons","chartPanelPropertiesMode","FilterSearchField","canRemoveSharedFilters","isReport","onSaveFilter","onRemoveFilter","SaveAs","PanelLink","ArrowIcon","TrendingFlatOutlined","PageDrawer","Drawer","anchor","PaperProps","parentTitle","hideBackButton","PageFilterConditionDrawer","InputButtonGroup","showButtons","handleFileClick","ButtonGroup","fileInput","IdTitleDropdown","selectRef","buttonsRef","SelectProps","offsetWidth","CalendarTaskFilterDrawer","getHashFromState","getSaveFilterState","checkChanges","cancelEditDialog","saveAs","filterState","saveFilter","shared","beforeSave","onGetGeneralFilter","getSavedListFilter","getSaveData","getSavedListFilterFromState","reservedNames","listFilter","isCompanyAdmin","orgListFilterId","savedListFilters","filterId","ListFilterSaveDialog","calendarTaskPage","filterLists","Categories","DefaultCategories","showNavPanel","pageData","getCategories","getHandlers","getCreators","getSettingsActions","listFilterIsSet","getListFilterIsSet","handleRefreshPageData","activeFilterId","filters","filterProps","getFilterPropsWithState","activeSavedFilterId","getStateChangeAfterChangeActiveFilter","savedFilter","savedFilters","getStateChangeAfterChangeActiveSavedFilter","savedFilterId","removeListFilterFromDb","newfilter","showCalendarTaskFilterDrawer","orgFilterId","showListFilterSaveDialog","calendarTaskFilterDrawerFilter","getActiveFilter","listFilterSaveDialogFilter","listFilterSaveDialogReservedNames","listFilterSaveDialogGeneralFilter","listFilterSaveDialogOnGetGeneralFilter","saveListFilterToDb","updateFiltersAfterSave","newFilterState","showSettingsDialog","getFilters","getShowPageNavigation","getStates","getPrivacy","getSavedFilters","onGetCalendarTasksPage","prevCompanyIds","categoriesData","equalCategories","handlersData","equalHandlers","creatorsData","equalCreators","handleChangeActiveCompanyId","handleChangeActiveSavedFilter","handleChangeActiveFilter","handleOpenSettingsDialog","handleOpenCalendarTaskFilterDrawer","handleShowDetailsPanel","handleSettingsDialogOk","handleSaveListFilter","handleRemoveSavedFilter","handleCalendarTaskFilterDrawerOk","handleCalendarTaskFilterDrawerCancel","handleSaveListFilterDialogOk","handleSaveListFilterDialogCancel","ownProps","front","calendarTasks","onSaveUserParameters","UnitPermissionDialog","CompanyFilterDrawer","selectedActivityFilterId","selectedCompanyGroupIds","activityFilters","handleSaveFilter","activityFilter","handleChangeCompanyGroupIds","ListCardField","keepLineBreaks","ListDetailsButton","openReadOnly","ListToggleButtons","FormatListBulletedOutlined","WindowOutlined","ProgressBar","val","range","percent","textColor","light","LinearProgress","UnitModuleNodeUsageSave","UnitModuleNodeSave","CompanyUnitDialog","siblingNames","lowName","usageIsDisabled","handleChangeUsage","TextFieldWithButtonLabel","CompanyEditBasicInformation","int","adminMode","onBlur","handleIntBlur","onChangeLogo","resetLogo","onRemoveLogo","SelectCompanyGroupDialog","CompanyEditCompanyGroupList","showSelectCompanyGroupDialog","getAddSaveData","onSelectCompanyGroupDialogOk","onSelectCompanyGroupDialogCancel","ListExternalSystemLine","onCheckChange","onInputChange","CompanyEditExternalSystems","onChangeExternalSystemExternalCode","externalSystem","onToggeExternalSystemInUse","handleChangeExternalSystemExternalCode","CompanyEditIntraModules","onChangeIntraModuleExternalCode","onToggeIntraModuleInUse","handleChangeIntraModuleExternalCode","TextFieldWithButtonGroup","CompanyEditNewCompanyFileFilterList","onSetCheckedIds","CompanyEditNewCompanyMessageTypeList","CompanyEditNewCompany","administratorCode","autoComplete","administratorPassword","administratorFirstName","administratorLastName","copyDocumentsFromCompanyCode","handleSelectCompany","handleClearCompany","messageTypeIds","onSetMessageTypeIds","onSetFileFilterIds","onSelectCompanyDialogOk","onSelectCompanyDialogCancel","CompanyEditPartnerCompanyList","companyNames","getSectionType","sectionType","PermissionIcon","titleAccess","CompanyEditPermissions","applicationPermission","onSetValue","ListStateIconExpanded","ChevronRight","ListStateIconHome","UnitModuleTreeNode","oneModuleUnitsMode","onSetUsage","UnitModuleTree","unitModuleNodes","onSetCollapsed","CompanyEditUnits","onUnitAdd","onUnitEdit","onUnitRemove","onUnitClick","CompanyEditViewMode","oldState","companyEdit","selectedUnitModuleNode","resetLogoSquare","getUsedStoragePercent","editUnitModuleNode","saveUnitNodeIds","removeUnitNodeIds","unitDialogIsReadOnly","getStateFromCompanyEdit","onCompanyLoaded","companyDataWasModified","logoFile","logoSquareFile","whistleBlowUsage","showUnitDialog","showUnitDialogForNew","modifiedUnitIds","canRemoveUnitNode","newRemoveUnitNodeIds","setUnitApplicationPermissionTypeVisible","newCompanyGroups","newPartnerCompanies","modified","reduce","onDialog","loadCompany","onAfterSave","newSaveData","saveToDbAdmin","saveToDbUser","viewMode","handleChangeLogo","handleRemoveLogo","handleEditUnitNode","handleAddUnitNode","handleRemoveUnitNode","handleSetUsage","handleSetCollapsed","handleSetMessageTypeIds","handleSetFileFilterIds","handleSetApplicationPermission","handleCompanyGroupsRemoved","handleCompanyGroupsAdded","handlePartnerCompaniesRemoved","handlePartnerCompaniesAdded","handleToggeExternalSystemInUse","handleToggeIntraModuleInUse","handleCompanyUnitDialogOk","handleCompanyUnitDialogCancel","CompanyEditDialog","companyEditViewMode","companyEditViewRef","getCompanyGroupsEnabled","getPartnerCompaniesEnabled","getExternalSystemsExists","getExternalIntraSystemsExists","getCompanyDataWasModified","defaultMenuItem","General","prevDefaultMenuItem","NewCompany","IntraModules","handleAfterSave","handleCompanyLoaded","CompanyList","setCompanyDialogData","disableGlobalLoading","editDialogDefaultMenuItem","onSetSortData","setDialogData","listModeIsLine","listRefreshNeeded","newCompanyId","preloaded","prevDataId","prevCompanyGroupIds","prevActivityState","prevSortColumn","prevSortOrderIsAsc","onOpenFiltersDialog","handleListModeToggle","handleUserDialogOk","handleUserDialogCancel","onNewSaved","handleUserDialogNewSaved","pageList","activityFilterId","userPageMenuItem","companyGroupId","companyFilterIsSet","getCompanyFilterIsSet","showCompanyFilterDialog","companyFilterDialogFilter","getGeneralFilterFromState","showUnitNodePermissionsDialog","getCompanyGroups","getActivityFilters","onGetCompaniesPage","handleFilterSortData","handleOpenCompanyFilterDialog","handleOpenPermissions","handlePermissionsDialogOk","handlePermissionsDialogCancel","onCompanyFilterDialogOk","onCompanyFilterDialogCancel","PageTabs","changeTab","span","CompanyPageEdit","settingsActive","CardActions","paddingX","companyPage","CompanyGroupEditDialogCompanyList","CompanyGroupDialogMenuItem","CompanyGroupEditDialog","companyGroupDialogMenuItem","companyGroupDataWasModified","loadCompanyGroup","handleUsersRemoved","handleUsersAdded","CompanyGroupList","setCompanyGroupDialogData","userDataWasModified","newCompanyGroupId","handleCompanyGroupDialogOk","handleCompanyGroupDialogCancel","handleCompanyGroupDialogNewSaved","companyGroupPage","companyGroupFilterIsSet","getCompanyGroupFilterIsSet","showCompanyGroupFilterDialog","companyGroupFilterDialogFilter","onGetCompanyGroupsPage","FormRadio","selectedStartDate","selectedEndDate","startEndDateDisabled","selectedDynamicTimeFilterId","dynamicTimeFilters","documentEndDateStartDateStr","selectedDocumentEndDateStartDate","documentEndDateEndDateStr","selectedDocumentEndDateEndDate","documentEndDateStartEndDateDisabled","selectedDynamicDocumentEndDateFilterId","documentEndDateDynamicTimeFilters","selectedKeywordIds","_props","selectedKeywordOperatorId","selectedDocumentApprovalId","selectedDocumentContentSearchId","selectedMaxResultsCount","getClearedParametersState","filterChanged","opened","handleChangeDynamicTimeFilterId","handleStartDateChange","handleEndDateChange","handleChangeDynamicDocumentEndDateFilterId","handleDocumentEndDateStartDateChange","handleDocumentEndDateEndDateChange","handleChangeKeywordIds","DocumentFilterDrawer","DocumentTreeFolderNode","canEditOwnCompanyFolder","canEditSharedFolder","canEditFolder","canDeleteFolder","popupMenuHasItems","onDelete","FolderTwoTone","ListDetailsPanelAccordion","Accordion","defaultExpanded","AccordionSummary","expandIcon","borderLeft","AccordionDetails","DocumentListDetailsPanelDocumentContent","userColumnWidth","dangerouslySetInnerHTML","__html","DocumentListDetailsPanelFileContent","documentFilePreview","ChangeToolButton","DocumentListDetailsPanel","setIsLoading","documentVersionPreview","setDocumentVersionPreview","documentContentPreview","setDocumentContentPreview","setDocumentFilePreview","loadDocumentVersion","documentsLoading","editDialogVisible","documentId","documentFileType","showPublishedVersion","hasContent","downloadDirectoryItemId","canChangeVisibleVersion","onChangeShowPublishedVersion","onDownloadDocument","ListStateIconBall","DocumentRemoveItem","DocumentFolderPath","DocumentFileEditDialog","folderId","resetImage","removeItem","handleSetImage","handleRemoveImage","keyword","CompanyDropdown","onSetCompany","handleCompanyChange","SelectUserDialogList","getUserSelectListItems","onGetUserSelectListItems","SelectUserDialog","SelectUserDialogWithCompanySelect","showUserGroupsCompanyId","DocumentCopyMoveDialog","targetCompanyId","targetFolderTreeNodes","targetFolderTreeNode","targetFullPath","resetDocumentVersion","selectedUser","move","isDocumentCopy","sourceFolderTreeNode","sourceFullPath","copyFolders","moveDisabled","handleChangeRenewPersonalizationWithUser","handleChangeTargetCompany","handleTargetFolderClick","folderPermission","handleMove","handleCopy","onSelectUserDialogOk","onSelectUserDialogCancel","handleGetUserSelectListItems","LockedUserInfo","FormFieldLockedToUser","AppCkEditor","ckEditorContainerDiv","htmlMode","config","extraPlugins","removePlugins","language","toolbar","font_defaultLabel","fontSize_defaultLabel","resize_enabled","initData","onInstanceReady","editorUrl","DocumentVersionDialog","ckEditorDataId","editor","setData","resetDirty","destroy","setCkEditorContent","destroyCkEditor","handleCkEditorInstanceReady","DocumentVersionList","prevFolderId","prevDocumentId","handleOpenDocumentVersion","handleCloseDocumentVersion","DocumentTemplateDialog","contentDirty","checkDirty","getData","DocumentTemplateList","setEducationDialogData","DocumentSaveAsTemplateDialog","selectionWasShared","selectionType","selectionWasNew","newPageIsStart","isLastPage","handleChangeStartPageSelectionType","handleSelectDocumentTemplate","handleMoveToPreviousPage","handleMoveToNextPage","ApproveButton","PublishButton","DocumentDocumentEditDialog","ckEditorSettingData","ckEditorInstanceIsReady","nowApproved","nowPublished","getBaseSaveDataFromState","getPrintDataFromState","confirmationTex","newHash","confirmationResult","saveExcuteOperationAndLoad","confirmSaveBeforeOperation","approveDocument","publishDocument","unPublishDocument","saveAsDocumentTemplateDialogContent","showSaveAsDocumentTemplateDialog","handleChangeEndDate","handleCkEditorChange","handleApproveDocument","handlePublishDocument","handleRemovePublishedDocument","handleCloseSaveAsDocumentTemplateDialog","handleSaveToTemplate","handlePrint","DocumentDocumentNewDialog","selectedItemContent","dropdownItems","normalItems","loadDocumentTemplateContent","handleChangeDocumentTemplate","EditToggleButtonHeader","PageListActionContainer","DashboardCardTitle","DashboardCardProgress","ChartColors","handleLegendHover","evt","legendItem","chart","datasetIndex","datasets","chartArea","setActiveElements","update","getTitleOptions","align","font","family","htmlLegendPlugin","afterUpdate","ul","legendContainer","getElementById","listContainer","querySelector","appendChild","getOrCreateLegendList","containerID","firstChild","legend","generateLabels","li","onclick","toggleDataVisibility","setDatasetVisibility","isDatasetVisible","onmouseover","boxSpan","fillStyle","strokeStyle","borderWidth","lineWidth","flexShrink","textContainer","fontColor","createTextNode","BarChart","pointRadius","lineTension","register","canvas","maintainAspectRatio","boxPadding","legendContainerId","onHover","htmlLegend","scales","ticks","autoSkip","maxRotation","minRotation","getDataSetsFromProps","PieChart","DashboardChart","onShowProperties","panelId","chartData","reportFilterProps","keywordOperatorId","documentApprovalId","documentContentSearchId","maxResultsCount","dynamicTimeFilterId","dynamicDocumentEndDateFilterId","documentEndDateStartDate","documentEndDateEndDate","getStateChangeFromProps","getDocumentGeneralFilterChange","prevFilter","notChanged","getGeneralFilterNotChanged","getDocumentPageDashboardChartStateNotChanged","createChart","onShowChartPanelPropertiesDialog","DocumentPageDashboardChart","DocumentListLinePopuMenu","deleting","isSelected","onOpenSelectedDocument","canDownloadSelectedDocuments","onDownloadSelectedDocuments","canPrintSelectedDocuments","onPrintSelectedDocuments","onCopyMoveSelectedDocuments","onDeleteSelectedDocuments","DocumentListLineFirstColumn","documentStyle","newSelectedId","foldersLoading","currentSelectedId","fileItems","fileIndex","fileSelectedItem","documentItems","documentIndex","documentSelectedItem","selectedState","getSelectedState","previewCompanyId","fileEditDialogId","fileEditDialogHasPrevious","fileEditDialogHasNext","documentEditDialogId","documentEditDialogHasPrevious","documentEditDialogHasNext","dynamicDocumentEndDate","keywordOperator","documentApproval","documentContentSearch","searchDocuments","loadDocuments","forcePreviewUpdate","updateList","previewDataId","showFileEditDialog","setFileEditDialogItemByIndex","showDocumentEditDialog","documentEditDialogContent","oldDocumentEditDialogId","setDocumentEditDialogItemByIndex","showDocumentnewDialog","handleShowDocumentEditDialog","overwrite","fileNames","uploadedFileNames","getCheckAttachmentsSaveData","uploadFiles","overwriteConfirmation","handleShowFileEditDialog","handleOpenDocument","showCopyMoveDialog","copyMoveDialogItems","refreshDocuments","directoryItemIds","handleDownloadDocument","selectedDocuments","deleteItems","prevFoldersLoading","prevListFilterIsSet","filterStateChange","folderComment","onShowSettingsDialog","handleAddEditableDocument","handleUploadFiles","onChangeEditMode","onChangeFilter","onOpenFiltersPanel","opacity","handleCopyMoveSelectedDocuments","onOpenOpenDocument","handleOpenSelectedDocument","handleDownloadSelectedDocuments","handlePrintSelectedDocuments","handleDeleteSelectedDocuments","handleFileEditDialogOk","handleFileEditDialogCancel","handleFileEditDialogMoveToPrevious","handleFileEditDialogMoveToNext","handleDocumentNewDialogOk","handleDocumentNewDialogCancel","handleDocumentEditDialogOk","handleDocumentEditDialogCancel","handleDocumentEditDialogMoveToPrevious","handleDocumentEditDialogMoveToNext","showPublishedVersionOnDocumentPreview","onChangeShowPublishedVersionOnDocumentPreview","handleCopyMoveDialogOk","handleCopyMoveDialogCancel","DocumentList","DocumentFolderNewDialog","folder","FolderPermissionTree","handleFolderNodeClick","handleFolderNodeDoubleClick","FolderNodePermissionDialog","clearSubFolderPermissions","copyPermissionToAllSameLevelFolders","handleSetClearSubFolderPermissions","handleSetCopyPermissionToAllSameLevelFolders","userGroupMode","getUpdatedFolderNode","displayFolderNode","getGroups","allGroups","editFolderNode","showFolderPermissionDialog","folderPermissionDialogGroup","selectedFolderId","updateFolderNode","onChangeSaveFolderNode","FolderPermissions","DocumentFolderEditDialog","hasFullPermissions","parentPath","showInheritedFileFilterIds","Full","parentFolderPermission","userCompanyOwnsResouces","handleChangeFolderNode","fileFilter","treeState","setTreeState","folderTreeNodes","listState","setListState","setShowCopyMoveDialog","newFolderDialogState","setNewFolderDialogState","show","editFolderDialogState","setEditFolderDialogState","loadFolderNode","selectedFolderNode","handleEditFolder","handleDeleteFolder","folderTreeNode","handleCopyFolder","showCompanies","margingLeft","newFolderId","DocumentKeywordDialog","DocumentKeywordList","FileFilterDialog","FileFilterList","DocumentOtherSettings","aState","canChangePage","saveResult","DocumentSettingsDialogMenuItem","DocumentSettingsDialog","otherSettingsRef","onOtherSettingsCancel","handleOtherSettingsSave","showListFilter","listFilterFilter","getDynamicTimeFilters","getDocumentEndDateDynamicTimeFilters","documentPage","listDataPreloaded","onGetDocumentPage","equalCompanyIds","prevCanEditDocuments","prevCanEditProperties","prevCanEditRootFolderProperties","equalKeywords","handleShowSettingsDialog","handleShowPublishedVersionOnDocumentPreview","handleChangeEditMode","handleShowListFilter","handleListFilterPanelOk","handleFilterPanelCancel","documents","IdTitleClass","createIdTitleClass","PagePanelsDrawer","InsertChartOutlined","FrontPanelPropertiesDrawer","panelSize","changeVisibility","hidePanelSize","DashboardPanelList","onSavePanels","showFrontPanelPropertiesDialog","isDragging","draggableStyle","userSelect","provided","destination","swapPagePanels","onUpdatePanels","savePanels","panel","isFrontPage","onFrontPagePanelProperyClick","frontPanelPropertiesDialogPanelType","frontPanelPropertiesDialogPanelSize","frontPanelPropertiesDialogPanelVisible","frontPanelPropertiesDialogTitle","onToggleMenuPanel","onAddChart","onDragEnd","handlePanelCheckBoxDragEnd","droppableId","snapshot","droppableProps","innerRef","draggableId","handlePropertiesClick","draggableProps","dragHandleProps","getPanelOptionItemStyle","handleSavePanelSize","handleFrontPanelPropertiesDialogCancel","DashboardContainer","getPanelHeight","OneXTwo","TwoXTwo","PanelContainer","largeScreen","useMediaQuery","up","TwoXOne","float","DashboardStatistics","toDoItems","loading","ListItem","handleStatisticsClick","DashboardPanelNoReport","DashboardPanelFiltersReports","noFiltersMessage","onFilterClick","noReportsMessage","onReportClick","PageDashboard","loadingStatistics","onGetToDoItems","standardAndSharedReports","onSavedReportClick","getRecordStatistics","dashboardChart","addButton","InsertChartOutlinedRounded","onStatisticsClick","loadingReports","onSavedFilterClick","handleReportClick","PageListAndReportsContainer","PageReportsContainer","ReportSettings","filtersPadding","PageNavMenuReportItemItem","reportItem","PageNavMenuReportItemReportLine","activeItemId","handleOnClick","secondaryAction","Check","ListItemAvatar","PageNavMenuReportList","showingSavedReports","canRemoveSharedReports","activeStandardItemId","saveReport","getReportFilter","onGetReportSaveFilters","getSavedReport","getSavedReportFromState","changeSharingType","getReportFilterFromTaskType","orgReportId","newReport","showReportSaveDialog","reportPanelFilterReport","SaveReportDialog","EventTypeNotSetId","selectedUnitIds","urgencyClassIds","selectedUrgencyClassIds","selectedEventTypeBIds","selectedEventTypeCIds","selectedPartnerCompanyIds","selectedHandlerUserCodes","selectedObservers","setLoading","getEventGeneralFilterChange","prevValues","prevChartId","prevReportId","prevStartDate","prevEndDate","prevStates","prevDynamicTimeFilterId","prevParameterValues","EventPageDashboardChart","EventFilterDrawer","cloneEventPageFilterState","dynamicTimeFilter","EventListStateCol","reverse","role","oneHourInMs","PrintOptionsDialog","print","fieldId","onPrintSaved","onPrintRemoved","MapMarker","TreeNode","getTreeNodeById","getTreeNodes","treeNode","ListStateIconCanceled","DoNotDisturb","UiTreeNode","handleNodeClick","handleNodeDoubleClick","hideDisabledIcon","UiTree","SelectUnitTree","treeNodes","firstColumnTitle","SelectUnitDialog","LongText","expand","orgRect","mainDiv","contentDiv","expandable","titleClasses","FullscreenExit","Fullscreen","handleExpand","UserBlockItem","onApprove","handleApproveClick","UserBlocks","newUsers","onAddUsers","onRemoveUsers","MessageContainer","MessageListContainer","NewMessageAttachmentImage","ImageListItem","NewMessageAttachmentItem","MessageBox","MessageTipLeft","MessageTipRight","MessageListLine","setHover","handleAttachmentClick","showAvatar","ImageList","replyText","replySender","fontStyle","senderTooltip","senderDisabled","someRead","readTooltip","DoneAllOutlined","DoneOutlined","NewReleases","onReply","onRestore","Reply","MessageListEvent","EventEditDialogMessageListLine","lineDiv","registerToObserver","prevObserverExists","observerExists","unregisterFromObserver","sendButtonTooltip","replyDate","sendDisabled","onSend","onAddAttachment","onRemoveReply","HighlightOff","clipboardData","AttachFile","EventEditDialogMessageListNew","sending","newMessage","onEventMessageSaved","getSendingDisabled","updateSavedMessageToList","saveEventMessage","EventEditDialogMessageList","entry","isIntersecting","intersectionRatio","getAttribute","readReceiptProcessingIds","readReceiptProcessedIds","onEventMessageRead","IntersectionObserver","intersectionCallback","messagesContainerDiv","rootMargin","threshold","scrollHeight","scrollToBottom","getMessages","closed","lastApprovedHandler","createObserver","removeObserver","prevMessages","handleMessageClick","hideNewMessageInput","handleEventMessageSaved","EventEditDialogAction","activeCompanyIsReceivingCompany","isClosed","unitSelectIsReadOnly","valueClasses","onSelectUnit","handleGetHandlersSelectListItems","processingTimeStr","EventEditUrgencyClassStateText","backColor","urgencyClass","bordered","wide","EventEditUrgencyClassField","FormControl","uc","EventEditDialogBasicInformation","hasBeenApproved","userIsCreator","senderCompanyIsReceivingCompany","urgencyClassIsEditable","receiverCompany","onUnlock","firstApproveUser","SelectIdTitleNodesDialog","EventEditDialogIdentificationEventTypeList","showSelectEventTypesDialog","eventTypeCategory","A","B","newEventTypeIds","screenHeight","numRegex","EventEditDialogIdentification","handleBlur","hasEventTypeBs","hasEventTypeCs","eventTypeColWidth","onChangeEventTypeIds","onChangeEventTypeBIds","C","onChangeEventTypeCIds","directCostsStr","indirectCostsStr","amountStr","EventEditDialog","innerHeight","firstAndLastApproved","getScreenHeight","userDialogMenuItem","showSelectUnitDialog","activeCompanyIsSendingCompany","oldHandlerCodes","addHandlers","updateHandlers","newHandlers","removeHandlerCodes","publish","defaultPrintId","loadEvent","updateHeight","identificationDataIsVisible","locationIsVisible","handleSelectUnit","handleAttachmentRemove","handleAttachmentDownload","handleAttachmentsAdd","handleAddHandlers","handleRemoveHandlers","handleApprove","handleMessageAdded","handleMessageRead","handleChangeEventTypeIds","handleChangeEventTypeBIds","handleChangeEventTypeCIds","bootstrapURLKeys","center","lat","lng","zoom","streetViewControl","mapTypeControl","mapTypeControlOptions","mapTypeIds","handleSelectUnitDialogOk","handleSelectUnitDialogCancel","SaveOutlined","EventEditNewEventDialog","nowTicks","pageIsLastPage","eventEditNew","oldPage","eventTypesExist","eventTypeBsExist","eventTypeCsExist","EventListDetailsPanel","changeState","recordUnLocked","recordLockedToMe","getEventTypesString","EventListDetailsHandlersField","isUserNotApprovedRow","customPrints","addItem","sendReadReceipts","genralFilter","sortHandlers","setReadReceipt","cloneGeneralFilter","onLoadPageData","showNewEventDialog","showEventPrintDialog","eventPrintDialogPrint","eventPrintDialogReservedNames","eventPrintDialogPrintableFields","customPrintId","newPrint","onUserPrintsModified","getUserPrints","addRecord","handleShowPrintProperties","handleAddPrint","getTimeSuffix","handleEditNewRecordDialogOk","handleEditNewRecordDialogCancel","handleEventDialogOk","handleEventDialogCancel","handlePrintDialogSaved","handlePrintDialogRemoved","hanlePrintDialogCancel","EventList","EventReportFilterSettings","selectedReportId","getReportByChartItem","panelVisible","selectedChartId","charts","extraParameters","taskDataRowCols","reservedChartNames","onSaveReport","onChartPanelSaved","onChartPanelRemoved","saveChartPanel","onRemoveReport","handleSaveReport","TaskDynamicForm","taskTypeCols","onRefreshCols","handleRefreshParameters","handleRemoveChartPanel","DownloadButton","ExcelReportDataContainer","ReportExcelReportTableRowData","validationRow","tableRow","isChecked","validationCol","TableCell","some","handleCheck","ReportExcelReportTables","hasMultipleTables","reportData","getValidSortColumn","tableRows","useMemo","table","VirtuosoTableComponents","Scroller","TableContainer","Table","borderCollapse","tableLayout","TableHead","TableRow","rowProps","TableBody","allChecked","checkBox","checkableIds","fixedHeaderContent","selectedColumn","sortingDisabled","TableSortLabel","handleChangeSort","visuallyHidden","itemContent","ReportExcelReport","ReportPdfReport","reportDataUri","ReportContainer","PageReport","hidePageTitle","reportGenerated","htmlReport","EventReportList","reportBlob","createReport","prevReportIds","reportIds","UnitDefaultHandlersEditDialog","clearSubUnitHandlers","copyHandlersToAllSameLevelUnits","defaultHandlerType","selectedUserCodes","selectedUserCodeHandler","checkedUserCodeHandlers","selectedUserCodeNotified","checkedUserCodeNotifieds","selectUserDialogHandlerType","selectedUsers","showHandlerTypes","notified","Notfied","handleSetSelectedHandlerIds","handleSetSelectedNotifiedIds","handleSetClearSubUnitHandlers","handleSetCopyHandlersToAllSameLevelUnits","handleSelectUserDialogOk","handleSelectUserDialogCancel","defaultHandlersText","defaultNotifiedText","UnitDefaultHandlersTree","UnitDefaultHandlers","showUnitDefaultHandlersEditDialog","selectedUnitNode","editDefaultHandlers","sibling","copyDefaultHandlersToSiblings","modifyUnitNode","copiedDefaultHandlers","handleCopyDefaultHandlers","handlePasteDefaultHandlers","handleUnitDefaultHandlersEditDialogOk","handleUnitDefaultHandlersEditDialogRemove","handleUnitDefaultHandlersEditDialogCancel","UnitDefaultHandlersSettings","UnitModuleSettings","unitModuleNodeId","showOnlyUnitsThatAreInUse","idRowId","setShowOnlyUnitsThatAreInUse","EventPartnerEditDialog","eventPartnerId","loadEventPartner","userIsSuperAdmin","EventPartnersDialogCompanyList","eventPartnerListItems","getEventPartnerListItems","getStateFromEventPartnerListItems","partner","EventPartnersSettings","loadEventSettings","EventUrgencyClassDialog","eventUrgencyClassId","loadWhistleBlowCategory","EventUrgencyClassList","EventTypeEditDialog","eventTypeId","canBeRemoved","loadEventType","ListStateIconAdd","AddCircle","EventTypeTreeNode","EventTypeTree","selectedCanBeRemoved","editDialogParentId","getEventTypes","getStateFromEventTypeNodes","refreshTree","confirmationText","eventTypeParentId","handleShowEditDialog","PlaylistAdd","handleAddSub","handleMoveToPrevious","handleMoveToNext","EventTypesSettings","EventsSettingsDialogMenuItem","EventSettingsDialog","unitsRef","defaultHandlersRef","unitDefaultHandlersNode","loadDefaultHandlers","settingsRef","onUnitModuleSettingsCancel","onUnitDefaultHandlersSettingsCancel","onEventSettingsCancel","loadUnits","refreshViewOnClose","unitsPageAllowed","handleUnitModuleSettingsSave","handleWhistleDefaultHandlersSelectListItems","eventPage","params","getReportsState","getHtlmlReportItems","setGeneralFilterToDefaultReports","dashBoardPanels","getEventReports","eventFilterIsSet","getEventFilterIsSet","eventReportFilterIsSet","getEventReportFilterIsSet","showEventFilterDialog","eventFilterDialogFilter","updatedState","recordReportFilterDialogReport","getStateChangeAfterChangeActiveReport","getStateChangeAfterChangeActiveSavedReport","removeReportFromDb","itemId","listAddRecord","activeViewType","setActiveViewType","defaultSettings","settingsDialogCompanyId","refreshView","eventPageData","getIdTitleNodeFilters","getFiltersFromNumberTitle","stateIds","getEventTypeFilters","getIdTitleFilters","getFiltersFromCodeTitle","creatorUserCodes","observersNames","eventSettingsActions","getEventSettingsActions","_","reportSaveDialogReport","reportSaveDialogReservedNames","reportSaveDialogGeneralFilter","reportSaveDialogOnGetReportSaveFilters","saveReportToDb","updateReportsAfterSave","showDashBoardNavPanel","pagePanels","getSavedChartPanels","getDashboardActiveFilterMenuItem","handleChangeActiveSavedReport","getDashboardActiveReportMenuItem","handleChangeActiveReport","showDashBoardChartPanelDialog","dashBoardChartPanelDialogFilter","dashBoardChartPanelDialogVisible","dashBoardChartPanelDialogPanelSize","dashBoardChartPanelDialogChartItems","dashBoardChartPanelDialogChartPanel","dashBoardChartPanelDialogReservedChartNames","chartPanelId","getDefaultEventPageViewType","viewTypes","getViewTypes","getFiltersFromIdColorTitle","eventFilterActions","onGetEventPage","prevCanEditModuleProperties","prevCanEditAllModuleProperties","unitsData","equalUnits","prevStatesHash","statesData","statesHash","urgencyClassData","equalUrgencyClasses","eventTypesData","equalEventTypes","eventTypeBsData","equalEventTypeBs","eventTypeCsData","equalEventTypeCs","prevPartnersHash","partnersData","partnersHash","prevCreatorsHash","creatorsHash","prevHandlersHash","handlersHash","prevObserversHash","observersData","observersHash","dashboardViewIsActive","eventsViewIsActive","reportsViewIsActive","handleSetActiveViewType","handleUserPrintsModified","handleOpenEventFilterDialog","handleSetSortData","titleSuffix","handleOpenReportFilterDialog","handleSaveAsReportsModifiedReport","handleRemoveSavedReport","onRecordReportFilterDialogOk","handleUpdateDashBoardPanels","handleSaveDashBoardPanels","handleToggleShowDashboardNavPanel","handleShowChartPanelPropertiesDialog","handleAddChartPanel","handleAddEvent","handleDashboardSavedFilterClick","handleDashboardFilterClick","handleDashboardSavedReportClick","handleDashboardReportClick","handleOpenSettings","onEventFilterDialogOk","onEventFilterDialogCancel","onChartPanelReportFilterDialogCancel","handleChartPanelSaved","handleChartPanelRemoved","handleReportSaveDialogOk","handleReportSaveDialogCancel","GenericChart","titlePrefix","defaultTitle","onPropertiesClick","EventChartPropertiesDialog","groupingType","onSavePanelSize","getDialogData","changePanelVisibility","handleEventTypesChange","EventChart","showChartOptionsDialog","getChartData","prevChartOptionsHash","chartOptionsHash","prevChartDataHash","chartDataHash","panelPosition","showPropertiesButton","handleChartOptionsDialogClose","MessageContentContainer","MessageListAttachments","ForwardToolButton","Forward","ListStateIconLocked","LockPersonOutlined","MessageListHeader","onForwardMessage","onOpenMessage","MessageReadReceiptDialog","handleSendReadReceipt","MessageShortList","dateRange","frontPageMessages","readReceiptMessages","shownReceiptMessageIds","getTitleSuffix","transition","unmountOnExit","mountOnEnter","handleMessageReadReceiptDialogClose","FrontPanelPropertiesDialog","handleClickLine","ModifiedRecordList","userModified","editItem","prevRecordCount","userRecordCount","companyRecordCount","recordCount","prevDateRange","userDateRange","companyDateRange","getRecordTypeIcon","hasCardMode","handleDownloadFile","FrontBannerPropertiesDialog","imageChangeInterval","FrontBanner","refreshTimer","clearRefreshTimer","banner","images","imageIndex","setRefreshTimer","FrontImagePropertiesDialog","removedImageIds","frontPageImages","FrontImages","showImagePropertiesDialog","isSaving","handleShowProperties","handleFrontImagePropertiesDialogClose","ModifiedRecordPropertiesDialog","FrontPanelMessagePropertiesDialog","logPageMenuItem","isDraggingOver","frontPagePropertiesDialogType","saveFrontPanels","UserModifiedRecords","OtherModifiedRecords","frontPage","loadFront","prevPanels","handleToggleShowNavPanel","InstantMessageChannelEditItem","messageExpirationTime","internalChannel","archivingType","archivingRemoveDate","InstantMessageChannelNew","instantMessageChannel","existingTwoPersonChannelPartnerUserCodes","InstantMessageChannelEditUserItem","getIsInvited","getIsActive","Active","getIsRejected","sortInstantMessageChannelEditUserItems","InstantMessageChannelEdit","userIsInstantMessageChannelAdmin","InstantMessageChannelAddedUser","createInstantMessageChannelAddedUser","InstantMessageChannelAddUsersSuccess","addedUsers","InstantMessageChannelItems","instantMessageChannelGetSelectUserListItems","channelCompanyId","otherUsers","InstantMessageChannelHelper","InstantMessageChannelEditDialogUserList","getFilteredUsers","getSetUserTypeSaveData","newChannelWizard","onUserTypeUpdated","userIds","disableLoadIndicator","removeUsersFromInstantMessageChannel","addUsersToInstantMessageChannel","instantMessageChannelCompanyId","externalChannel","companyUsers","handleSetUserType","InstantMessageChannelDialogMenuItem","defaultArchivingRemoveDate","instantMessageChannelDialogMenuItem","RemoveChannel","instantMessageChannelDataWasModified","addedUser","overrideCode","saveInstantMessageChannel","fixedName","getFixedName","messageExpirationTimes","Quarter","HalfYear","loadInstantMessageChannel","refreshChannelList","hasExternalUsers","avatarImageClass","getAvatarId","KeepMessages","handleSetArchivingType","handleUserTypeUpdated","InstantMessageChannelEditDialog","SelectUserList","onSelect","InstantMessageChannelEditNewDialog","channelNew","channelType","channelUsers","newChannelUser","nextButtonMode","handleChangeChannelType","handleUserSelect","InstantMessageListLine","onReplyToInstantMessage","modifyUserIsDeleted","isMyMessage","replyUserIsDeleted","userIsChannelAdmin","channelIsReadOnly","handleDeleteClick","handleRestoreClick","handleReplyClick","ChannelInstantMessageNew","updateReplyContainerSize","replyItem","onInstantMessageSaved","rowCount","inputElement","defaultClientHeight","removeProperty","onInputRowCountChanged","updateInputRowCount","saveInstantMessage","validateFileAttachments","classList","inputHiddenElement","ceil","updateReployContainerHeight","replyContainerResizeObserver","replyContainerDiv","updateReployContainerResizeHandler","prevChannelId","handleAddAttachment","handleRemoveAttachment","ChannelInstantMessages","listItems","yesterdayDayStr","todayDayStr","currentDayStr","itemDayStr","updateHasUnreadMessagesOnList","addTitlesToList","scrollToId","handleSearchMessages","onInstantMessageChannelSetHasUnreadMessagesOnList","onInstantMessageUpdated","oldItem","readReceiptSendItems","readReceiptSendItem","onInstantMessageChannelUpdated","channelInstantMessageNewRef","handleSetAttachmentDropZone","dataTransfer","getAsFile","getFileAttachment","handleAddAttachments","replyContainerHeight","newMessageRowCount","setProperty","handleInputRowCountChanged","updateInstantMessageItemToList","onInstantMessageChannelRemoved","handleInstantMessageChannelUpdated","handleDropAttachments","onDragOver","handleDragOverAttachments","onDragEnter","handleDragEnterAttachments","onDragLeave","handleDragLeaveAttachments","handleSetSelected","handleReplyToInstantMessage","filterActive","onDropAttachments","onDragOverAttachments","onDragEnterAttachments","onDragLeaveAttachments","onReplyContainerSizeChanged","handleReplyContainerSizeChanged","handleRemoveReply","ChannelInstantMessageList","getChannelId","getChannelIsReadOnly","getUserIsChannelAdmin","prevChannelIsReadOnly","onEditChannel","onExitChannel","InstantMessagePartnersDialogCompanyList","InstantMessagePartnersSettings","instantMessagePartnersWasModified","InstantMessageSettingsDialogMenuItem","InstantMessageSettingsDialog","InstantMessageChannelMenuItem","latestMessageContent","latestMessageText","latestMessageTime","getLatestMessageTimeStr","hasNewMessage","isActiveChannel","activeChannelHasUnreadMessagesInList","onHandleInvitation","PageNavMenuItemInstantMessageChannel","onAddChannel","onChangeActiveChannel","activeChannelId","canManageInstantMessagePermissions","instantMessagePage","activeChannel","instantMessagePageMenuItem","oldActiveChannel","showInstantMessageChannelEditDialog","instantMessageChannelEditDialogChannelId","instantMessageChannelEditDialogDefaultMenuItem","newInstantMessageChannelId","showInstantMessageChannelNewDialog","instantMessageChannelUserId","instantMessageChanneld","approve","currentLatestDate","getDefaultChannelId","onGetInstantMessagePage","prevParamChanneldId","paramChanneldId","showContent","firstLine","handleAddChannel","handleSelectChannel","handleEditChannel","handleInvitation","handleExitChannel","handleInstantMessageUpdated","handleInstantMessageChannelRemoved","handleInstantMessageChannelSetHasUnreadMessagesOnList","handleInstantMessageChannelNewDialogOk","handleInstantMessageChannelNewDialogCancel","handleInstantMessageChannelDialogOk","handleInstantMessageChannelDialogCancel","handlenstantMessageChannelDialogNewSaved","instantMessage","LogFilterDialog","selectedTimeFilterId","selectedLogEventTypes","dateChange","timeFilters","handleSearch","handleChangeEventTypes","timeFilter","LongTextField","wordWrap","LogDialog","LogList","types","prevTypes","prevTimeSpan","handleLogDialogCancel","LogSettingsDialogMenuItem","LogPropertiesDialog","logSizeInDaysStr","isCompanySpecific","alert","properties","handleClean","logEventTypes","timeFilterId","logPage","logFilterIsSet","getLogFilterIsSet","showLogFilterDialog","logFilterDialogFilter","showLogPropertiesDialog","logProperties","getTimeFilters","onGetLogPage","handleOpenLogFilterDialog","handleOpenLogProperties","handleLogFilterDialogCancel","handleLogFilterDialogOk","handleLogPropertiesDialogOk","handleLogPropertiesDialogCancel","selectedCompanyIds","selectedModifyUserCodes","handleChangeCompanyIds","handleChangeUnitIds","handleChangeModifyUserCodes","MessageFilterDrawer","UnitBlockItem","UnitBlocks","onAddUnit","onRemoveUnits","unitTree","selectedUnits","noUnitsMessage","SelectCompanyGroupForPermissionsDialog","ignoreCompanyGroupCodes","changeGroupType","CompanyGroupBlockItem","MessageEditDialogCompanyGroupBlocks","addCompanyGroups","onAddMessageTargetCompanyGroups","newGroup","onRemoveMessageTargetCompanyGroups","messageTargetCompanyGroups","targetIds","messageTargetCompanyGroup","handleSelectCompanyGroupForPermissionsDialogOk","handleSelectCompanyGroupForPermissionsDialogCancel","MessageTypeDropDownLine","MessageEditDialogGeneralInformation","messageType","setMessageType","setEditor","setCkEditorDataId","initializingCkEditorContent","onChangeDate","callBack","onChangeTitle","onChangeMessageType","onChangeUnit","onChangeDateStr","onChangeStartDateStr","onChangeEndDateStr","onChangeRequiresReceipt","onChangeSystemAdminMessage","onChangeContent","messageTargetUnits","messageTargetUnit","onChangeMessageTargetUnits","missingGroups","onChangeMessageTargetCompanyGroups","messageTargetCompanyGroupIds","MessageEditDialogAttachments","ReadReceiptList","getReadReceiptListItems","prevRecordId","MessageSendEmailList","prevMessageId","MessageEditDialog","forwardMessage","messageCompanyId","sendEmail","loadMessage","handleChangeSystemAdminMessage","handleSaveAndSendEmail","getMessagePageGeneralFilterFromState","modifyUserCodes","getMessagePageFilterStateFromGeneralFilter","getMessagePageGeneralFilterNotChanged","MessageList","getReadReceiptMessages","editDialogRecordId","editDialogCompanyId","detailsDataId","forward","editDialogForwardMessage","messageListPageSize","showNewDialog","prevEditMode","getMessagePageGeneralFilterChange","onOpenSettingsDialog","handleForwardMessage","MessageTypeDialog","MessageTypeList","CompanyGroupPermissionSettings","showSelectUserGroupDialog","setShowSelectUserGroupDialog","selectedGroupState","setSelectedGroupState","selectedGroupCode","selectedGroupPermissions","permissionSummaryLines","changeSelectedGroupState","getSelectedGroupPermissions","canIncreasePermissions","getPermissionAuthorizationLevel","levels","inherited","getPermissionSummaryLines","changeCompanyGroupCode","selectedGroupPermission","oldLevel","tempPermission","handleChangeUserGroupPermission","permissionSummaryLine","newPermissions","MessageSettingsDialogMenuItem","MessageSettingsDialog","idTitles","listEditMode","getUnits","getIdTitles","getModifyUsers","messagePage","onGetMessagePage","prevCanEditMessages","prevCanEditOtherCompanyPermissions","companiesData","equalCompanies","modifyUsersData","equalModifyUsers","handleChangeListEditMode","RecordFilterDrawer","selectedEmployeeTypeIds","selectedJobTitleIds","handleChangeEmployeeTypeIds","handleChangeJobTitleIds","ListStateIconCertificate","WorkspacePremium","RecordExpiredFamiliarizationsList","initialLoad","prevJobTitles","handleDownloadAttachment","handleSearchLinesDialog","archiveRecordUserFamiliarizations","recordUserFamiliarizationsIds","RecordArchiveExpiredFamiliarizationsDialog","RecordExpiredFurtherEducationsList","archiveRecordUserFurtherEducations","recordUserFurtherEducationIds","RecordArchiveExpiredFurtherEducationsDialog","UserEditChangePasswordDialog","SelectUserGroupDialogWithCompanySelect","ignoreUserGroups","requireUserGroups","getIgnoreUserGroupCodes","getRequireUserGroupCodes","UserEditDialogUserGroupList","userGroupIds","selectUserGroupDialogCompanies","userGroupCompanyCode","_groupType","_requireUserGroupCodes","_messageTargetMode","multipleCompaniesInUse","companyUserGroups","handleGetUserGroupListItems","UserEditRemoveSelectTypeDialog","removeType","SendButton","UserEditSendEmailDialog","UserDialogMenuItem","UserEditDialog","savedEmail","recordUserPicture","recordUserFirstName","recordUserLastName","recordUserEmail","showSendEmailDialog","showRemoveTypeDialog","loadUser","openedFromRecordUser","handleOnShowEmailDialog","Expiration090","Expiration120","Expiration180","handleUserGroupsRemoved","handleUserGroupsAdded","handleUserEditRemoveSelectTypeDialogOk","handleUserEditRemoveSelectTypeDialogCancel","handleCloseSendEmailDialog","RecordEditAttachmentList","isDisabled","isDisabledMessage","RecordEditAttachmentSubList","relation","sortAttachmentLines","getFilteredList","filterOptions","filtered","inputValue","isExisting","option","selectOnFocus","clearOnBlur","handleHomeEndKeys","getOptionLabel","renderOption","freeSolo","renderInput","RecordEditBasicInformation","onChangePicture","onRemovePicture","onAddUser","onEditUser","onSelectUser","onRemoveUser","onRemoveUnit","ListStateIconAttachment","AttachmentOutlined","RecordEditListFirstCol","hasAttachment","scopeUnits","getValidScopeUnits","scopeReadOnly","getFurtherEducations","newEndDateStr","recordFurtherEducation","onCustomSave","saveDialog","handleChangeFurtherEducationId","handleValidityEndDateChange","onAttachmentsAdded","onAttachmentsRemoved","setFurtherEducationTitle","RecordUserFurtherEducationDialog","showArchived","recordFurtherEducations","resultGroup","educations","getListFurtherEducationGroups","getFurtherEducationsSortedByGroups","recordFurtherEducationIds","createNewRecordEditItemFurtherEducation","selectedItemHasPrevious","selectedItemHasNext","onSaved","changeShowArchived","flatMap","onRecordUserFurtherEducationDialogOk","onRecordUserFurtherEducationDialogCancel","RecordEditFurtherEducationList","RecordEditEducation","basicEducation","onFurherEducationRemoved","onFurherEducationSaved","RecordUserEmploymentDialog","employment","RecordEditEmploymentList","recordEmploymentIds","currentEmployments","onRecordUserEmploymentDialogOk","onRecordUserEmploymentDialogCancel","RecordEditEmployment","onEmploymentRemoved","onEmploymentSaved","RecordUserFamiliarizationDialog","recordFamiliarization","handleTrainerAutoCompleteChange","recordFamiliarizations","recordFamiliarizationIds","familiarizationsSpecified","onRecordUserFamiliarizationDialogOk","onRecordUserFamiliarizationDialogCancel","RecordEditFamiliarizationList","RecordEditLogList","logLine","RecordEditNextOfKin","SelectQualificationDialog","eductionGroupNodes","eductionNodes","RecordEditQualificationList","qualificationIds","selectQualificationDialogFurtherEducations","getFurtherEducationsForQualification","reservedNodes","reservedNode","showSelectQualificationDialog","onSelectQualificationDialogOk","onSelectQualificationDialogCancel","RecordEditSheetDataRowDialog","handleRefreshTaskDataRowsForm","onRowRemoved","createNewTaskDataRow","onRowSaved","onRecordUserSheetDataRowDialogOk","onRecordSheetDataRowDialogCancel","RecordEditSheetDataRowList","RecordUserTransferredPropertyDialog","transferDateStr","returnDateStr","handleTypeAutoCompleteChange","handleTransferDateChange","handleReturnDateChange","TransferredProperty","RecordEditTransferredPropertyList","RecordEditViewMode","recordEdit","pictureFile","orgActiveState","recordEmployments","recordTransferredProperties","getStateFromRecordEdit","updateStateHash","onRecordLoaded","recordDataWasModified","doSave","showUserDialog","userDialogUserId","userDialogDefaultMenuItem","sheetDataRow","copyPictureFromUser","loadRecord","unclassifiedAttachments","familiarizationAttachments","furtherEducationAttachments","employmentAttachments","transferredPropertyAttachments","handleChangePicture","handleAddUser","handleEditUser","handleSelectUser","handleRemoveUser","handleRemoveUnit","handleFamiliarizationRemoved","handleFamiliarizationSaved","handleAttachmentsRemoved","handleAttachmentsAdded","handleFurherEducationRemoved","handleFurherEducationSaved","handleQualificationRemoved","handleQualificationSaved","handleEmploymentRemoved","handleEmploymentSaved","handleSheetDataRowRemoved","handleSheetDataRowSaved","handleTransferredPropertyRemoved","handleTransferredPropertySaved","RecordEditRemoveSelectTypeDialog","RemoveRecordUserAndUserExpired","RecordEditDialog","recordEditViewMode","recordEditViewRef","getRecordDataWasModified","getAttahmentsCount","savedRecordId","attachmentsCount","handleRecordLoaded","RecordEditNewRecordDialog","recordEditNew","userPassword","userPasswordConfirmation","selectedUserId","selectedUserCode","selectedUserPictureFile","handleChangeRecordType","handleUserGroupsChange","handleChangePage","handleChangePageByRecordType","PageNavMenuItemCheckBox","isActiveItem","PageNavMenuItemRadio","handleSetActiveItemId","PageNavMenuItemTreeCheckBoxChild","PageNavMenuItemTreeCheckBox","onSetActiveItemIds","SelectRecordDialog","activeActivityFilterId","filtersVisible","getEmployeeTypes","RecordPageListActivityFilterId","handleToggleFiltersVisible","changeaActivityFilter","changeUnits","handleToggleEmployeeType","handleToggleJobTitle","RecordList","newRecordId","showNewRecordDialog","newRecordDialogUnitId","newRecordDialogUnitCode","newRecordDialogEmployeeType","showRecordUserFurtherEducationDialog","selectRecordDialogMode","showRecordEditSheetDataRowDialog","showRecordUserTransferredPropertyDialog","showRecordUserFamiliarizationDialog","showSelectRecordDialog","additionalFunctionRecordIds","recordUserFurtherEducationDialogItem","recordEditSheetDataRowDialogItem","recordUserTransferredPropertyDialogItem","createNewRecordEditItemTransferredProperty","recordUserFamiliarizationDialogItem","recordIds","saveItem","getAddFurtherEducationToMultipleUserRecordsSaveData","getAddSalaryRowToMultipleUserRecordsSaveData","salaryRow","transferredProperty","getAddTransferredPropertyToMultipleUserRecordsSaveData","furtherEducationOrGroupId","getAddQualificationToMultipleUserRecordsSaveData","handleRecordUserQualificationDialogSave","getAddFamiliarizationToMultipleUserRecordsSaveData","showArchiveExpiredFamiliarizationsDialog","showArchiveExpiredFurtherEducationsDialog","prevEmployeeTypes","prevUnitIds","handleArchiveExpiredFamiliarizations","handleArchiveExpiredFurtherEducations","handleAddFurtherEducationToMultipleUserRecords","handleAddTransferredPropertyToMultipleUserRecords","handleAddFamiliarizationToMultipleUserRecords","handleAddQualificationToMultipleUserRecords","handleAddSalaryRowToMultipleUserRecords","getDetailsFamiliarizations","getDetailsFurtherEducations","getDetailsQualifications","handleSelectRecordDialogOk","handleSelectRecordDialogCancel","handleRecordUserFurtherEducationDialogSave","handleRecordUserFurtherEducationDialogOk","handleRecordUserFurtherEducationDialogCancel","handleRecordEditSheetDataRowDialogSave","handleRecordEditSheetDataRowDialogDialogOk","handleRecordEditSheetDataRowDialogCancel","handleRecordUserTransferredPropertyDialogSave","handleRecordUserTransferredPropertyDialogOk","handleRecordUserTransferredPropertyDialogCancel","handleRecordUserFamiliarizationDialogSave","handleRecordUserFamiliarizationDialogOk","handleRecordUserFamiliarizationDialogCancel","handleArchiveExpiredFamiliarizationsDialogOk","handleArchiveExpiredFamiliarizationsDialogCancel","handleArchiveExpiredFurtherEducationsDialogOk","handleArchiveExpiredFurtherEducationsDialogCancel","RecordReportFilterSettings","RecordReportListHtmlReport","ArchiveOutlined","RecordReportList","excelTable","RecordEducationDialog","loadEducation","RecordEducationList","educationIds","handleEducationDialogOk","handleEducationDialogCancel","RecordFamiliarizationDialog","RecordFamiliarizationList","FormSelect","RecordFurtherEducationDialog","RecordFurtherEducationGroupDialog","RecordFurtherEducationTreeNode","Widgets","recordFurtherEducationGroupNodes","getSelectedGroupOrItem","itemCanBeRemoved","getRecordFurtherEducationGroupNodes","getStateFromRecordFurtherEducationGroupNodes","selectedGroup","removeGroup","showEditGroupDialog","handleAddGroup","RecordFurtherEducationTree","RecordFurtherEducationList","RecordSettingsDialogMenuItem","RecordSettingsDialog","employeeTypeIds","jobTitleIds","recordPageData","getIdTitleNodes","getJobTitles","recordFilterIsSet","getRecordFilterIsSet","getReportRecords","showRecordFilterDialog","updateFurtherEducationsFamiliarizationsAndJobTitles","recordFilterDialogFilter","activeViewTypeId","familiarizationsDialogCompanyId","educationsDialogCompanyId","unitModuleDialogNode","statistics","onGetRecordsPage","prevUnitsData","prevFurtherEducationGroups","equalFurtherEducationGroups","equalFamiliarizations","jobTitlesData","equalJobTitles","prevHasSheet","handleOpenRecordFilterDialog","onRecordReportFilterDialogCancel","onRecordFilterDialogOk","onRecordFilterDialogCancel","getRecordName","recordName","pageEdit","recordPage","TaskDynamicFormContainer","getSerializedFields","fieldsObj","headerParameters","formParameters","onSetHeaderParameters","onSetFormParameters","fieldSuffix","filterCols","getNewTaskTypeCol","selectedTaskTypeIds","addTaskTypeColToFilterCols","serializedFields","getNewTaskDataRowCol","selectedTaskTypeHeaderFields","selectedTaskTypeFields","getTaskDataRow","getStateChangeFromTaskType","getNewTaskType","TaskFilterDrawerTaskTypeParameters","selectedPriorityIds","getChangedStateAdterChangeTaskTypeIds","getFormParametersState","getExtraHeaderParametersState","handleChangeTaskTypeIds","handleChangeStateIds","handleChangePriorityIds","handleChangeHandlerUserCodes","handleSetHeaderParameters","handleSetFormParameters","TaskFilterDrawer","ReportFilterPanelChartProperties","onSetChartId","onSetPanelSize","onTogglePanelVisible","labelId","ReportFilterPanelExtraParameters","ReportFilterPanelShowInFrontPage","onChangeShowInFrontPage","TaskReportFilterPanel","onOkChart","handleTogglePanelVisible","ilterLists","PageChartFilterDrawer","TaskChartFilterDrawer","priorityIds","taskTypeIds","taskTypeHeaderFields","taskTypeFields","getTaskGeneralFilterChange","getTaskPageDashboardChartStateNotChanged","TaskPageDashboardChart","ListStateIconFresh","SyncOutlined","ListStateIconUnread","unread","ListStateIconNotification","NotificationsNone","TaskListStateCol","TaskListHandlersCol","otherHandlers","ToggleButtons","TaskEditDialogGeneraView","setTaskTypes","taskState","setTaskState","taskPriority","setTaskPriority","setUnit","onChangeTaskType","onChangeTaskState","onChangeTaskPriority","onChangeName","newTaskTypes","newUnit","handleChangePublic","onChangeTaskHeaderDataCols","TaskDataRowDialog","taskDataRowId","TaskDataRowList","iconsCol","showTaskDataRowDialog","detailsViewMode","taskDataRowFilterFields","filterFields","Web","createListIconButtons","handleEdit","onSetToolButtons","_checkedIds","_sortColumn","_sortOrderIsAsc","TaskEditDialogFormView","getAttachments","onChangeTaskDataRows","TaskNewDialog","getTaskTypesForUiSelect","visibilityOptions","TaskEditDialogGeneralViewReadOnly","getOpenCalendarTaskAmount","CalendarTaskListOfRecord","groupedItems","onSetOpenCalendarTaskAmount","isSeries","handleOpenCalendarTask","removeMenuAnchorEl","setRemoveMenuAnchorEl","_isSeries","handleSetSelectedId","getRemoveActions","FormAccordion","setExpanded","expanendedMargin","isExpanded","onExpandedChange","buttonsOnExpanded","detailsPadding","EditToggleButton","TaskEditDialog","openCalendarTaskAmount","showNewTaskDialog","generalViewEditMode","setOpenTaskAmount","generalViewContainerDiv","viewportHeight","listHeight","getMaxListHeight","getChangeTaskTypeStateChange","loadTask","taskDataWasModified","rowToolButtons","setObserver","handleTaskNewDialogOk","handleTaskNewDialogCancel","isRepeated","handleChangeTaskType","handleMoveToTrashBin","TrashBinButton","RestoreFromTrashBinButton","RestoreFromTrash","EmptyTrashBinButton","DeleteForever","TaskListDetailsPanel","filterTaskTypeFields","TaskPrintDialog","rowAmount","setRowAmount","TaskList","oneTaskType","thrashBin","showTaskPrintDialog","printTask","MyListContainer","onOpenTrashBinDialog","handleEmptyTrashBin","handleRestoreFromTrashBin","TaskPageReport","TaskPriorityDialog","TaskPriorityList","TaskStateDialog","TaskStateList","TaskFormDesignerComponentType","TaskFormDesignerSectionType","ListItemButtonContent","componentType","isLabel","getRenderItem","_snapshot","rubric","TaskFormDesignComponentPickerItem","renderItem","getTaskFormDesignerComponentType","isTextAreaComponent","isDropdown","isCalulatedField","baseTaskType","componentDefaultValues","title1","title2","title3","title4","title5","textInput","textArea","checkbox","dropdown","defaultValueStr","numberCalculated","integerCalculated","lineBreak","emptyArea","getComponentDefaultValueForNewIntance","pickerItems","Title1","TitleOutlined","section","Title2","Title3","Title4","NormalText","TextInput","FontDownload","TextArea","InsertInvitation","DateAndTime","AccessTime","Timelapse","FormatListBulleted","Decimal","Numbers","NumberCalculated","Calculate","Calculated","IntegerCalculated","DensityLarge","Break","EmptyArea","rotate","TaskFormDesignComponentPicker","renderItems","isDropDisabled","renderClone","TaskTypeBasicInformation","getRepetitionTypeText","getRepetitionTypeAction","onUpdateTaskRepetitionType","getVisibilityText","getVisibilityAction","onUpdateVisibility","getPrintOrientationText","getPrintOrientationAction","onUpdatePrintOrientationLandscape","onHandleChange","onUpdateActiveState","showTaskRepetitionType","calculatedFieldSelected","calculatedFieldExpressionFields","isFirst","isLast","showFieldName","showFieldNameColor","colIsReadOnly","taskDataRowCol","ignoreClass","TaskFormDesignerFormBuilder","draggableLocked","setDraggableLocked","handleMouseLeave","dropAllowedFromDraggingSource","draggingSource","pickerDroppableId","expressionFields","designerRows","designerRow","rowIndex","isDragDisabled","handleMouseEnter","containerId","draggingWidth","onRemoveComponent","onCopyComponent","getContainerForClone","fieldIndex","TaskFormDesignerRowBuilder","lineTypeCol","TaskFormDesignBuilderDroppableId","TaskFormDesignBuilder","toggleFieldInLine","onAddFieldToLine","onRemoveFieldFromLine","hasHeader","hasLine","lineHasModifyUser","lineHasModifyDate","onViewSchema","headerDesignerRows","headerTypeCol","onHeaderItemClick","onHeaderRemoveComponent","onHeaderCopyComponent","formDesignerRows","formTypeCol","onFormItemClick","onFormRemoveComponent","onFormCopyComponent","TaskFormDesignerComponentPropertiesBold","Bold","_checked","FormInteger","setValue","FormDecimal","TaskFormDesignerComponentPropertiesDefaultValue","setValueStr","relative","setRelative","_c","_d","minus","handleValueFieldChange","onTaskTypePropUpdate","handleValueStrChange","handleValueNumberChange","handleValueRelativeTimeChange","InputAdornment","edge","TaskFormDesignerComponentPropertiesFontSize","sizeOptions","sizeOption","getTextSize","class2","getGenericWidthFromClass","hiddenStyle","widthStylePrefixes","styles","Generic","widthStylePrefix","getWebWidthFromClass","Web2","getMobileWidthFromClass","Mobile","getPrintWidthFromClass","getUpdatedClassForWidthSub","removeSizePrefixes","ignoreSizePrefixes","sizePrefix","ignoredStyles","TaskFormDesignerComponentPropertiesWidth","formFieldMargin","previewMode","onUpdate","setWidth","w","Slider","onChangeCommitted","isWebPrefix","oldWidth","mobileWidth","peintWidth","getUpdatedClassForWidth","valueLabelDisplay","step","TaskFormDesignerComponentPropertiesRow","lineColumnWidths","webWidth","onChangeLineColumnWidth","printWidth","onRowLinePropUpdate","TaskFormDesignerComponentPropertiesTextAlignment","Right","TaskFormDesignerComponentPropertiesTextareaSize","areaSize","Medium","Extra","getTextAreaSize","newClasses","TaskFormDesignerComponentPropertiesNoTitleInRow","getChecked","aChecked","TaskFormOptionDialog","usedOptionTitles","ArrowUpToolButton","ArrowDownToolButton","TaskFormOptionsDialog","setIdOptions","selectionData","setSelectionData","optionDialogData","setOptionDialogData","handleOptionDialogClose","swapIdOptions","oldIndex","newIndex","newIdOptions","TaskFormDesignerComponentPropertiesMinMax","TaskFormDesignerComponentPropertiesExpression","functionList","setExpression","selectedFunctionId","setSelectedFunctionId","setFieldsToFunctionByDataType","dataTypes","functionValue","selectedFunction","f","expressionFormats","getInfoDocument","newExpression","setFieldsToFunction","TaskFormDesignerComponentPropertiesHeight","setHeight","getHeightFromClass","getUpdatedClassForHeight","TaskFormDesignerComponentPropertiesName","setDropdownItems","getFieldId","getHeaderFieldId","getFormFieldId","getDropDownTitle","designerComponentType","titleStr","getTaskFormDesignerComponentTitle","newDropdownItems","rowItems","TaskFormInitializeFromRowDialog","rowNumber","setFields","newFields","TaskFormDesignerComponentProperties","optionsDialogData","setOptionsDialogData","showInializeFromRowDialog","setShowInializeFromRowDialog","defaultExpressionText","setDefaultExpressionText","isEmptyArea","isLineBreak","getInitializeFromRowTextFromExpression","onTaskTypeHeaderPropUpdate","onTaskTypeFormPropUpdate","handleTextFieldChange","handleWidthChange","handleOptionsDialogClose","handleIntegerTextFieldChange","onHeaderTaskDataRowValueUpdate","onFormTaskDataRowValueUpdate","calculateRows","itemWidth","calculateStartIndex","calculateEndIndex","startIndex","accumulator","currIndex","TaskFormDesigner","Picker","endIndex","onHeaderSchemaAddItem","onFormSchemaAddItem","onRowSchemaReorder","onFormSchemaReorder","onHeaderSchemaReorder","dragging","onDragStart","initial","TaskFormDesignerSchemaDialog","setSchema","extensions","_viewUpdate","ReportExcelReportTable","getSortColumnFromProps","TaskDynamicFormTableContainer","mobile","TaskFormDesignerPreviewType","TaskFormDesignerPreviewWeb","headerColsExist","formColsExist","previewType","preview","selectedField","onUpdateHeaderDataRowCols","onComponentClick","onUpdateFormDataRowCols","TaskFormDesignerPreviewComponentPropertiesRow","TaskFormDesignerPreviewComponentProperties","isHeaderField","TaskFormDesignerPreviewPrint","containerClassName","observerRef","divRef","previewHtml","setPreviewHtml","headerElements","setHeaderElements","formElements","setFormElements","mutationId","setMutationId","elementIsInHeader","getElementField","clickEvent","setSelectedElement","tempHeaderElements","tempFormElements","removeClickEvents","querySelectorAll","handleMutation","MutationObserver","childList","characterData","onGetPrintHtml","onGetPrint","attachClickEvents","verticalAlign","TaskFormDesignerPreview","getTaskTypeFromSchema","TaskFormDesignerDialog","showSchemaDesignerDialog","formSelectedField","headerSelectedField","getSchemaFromTaskType","_f","_i","fromEntries","rest","getSchemaObjectFromTaskTypeCol","_g","_h","replacer","getLineColumnWidths","ignoreField","addToCompany","parseResult","addComponentToTaskTypeCols","copyTaskTypeCol","nameBase","getComponentNameForNewIntance","titles","titleBase","getComponentTitleForNewIntance","handleHeaderSchemaAddItem","dataRowCol","newTaskType","handleFormSchemaAddItem","handleHeaderItemClick","handleFormItemClick","updateTaskTypeColPropUpdate","res","hasPreWrap","updateDefaultValueToDataRowCols","ind","handleHeaderTaskTypePropUpdate","updated","handleFormTaskTypePropUpdate","updateValueToDataRowCol","decreaseLineWidthsSub","widths","widthField","nonZeroWidths","increaseLineWidthsSub","decreaseLineWidths","increaseLineWidths","updateAllWidthsToClass","handleChangeLineColumnWidth","getUpdatedTaskDataRow","removed","newWidth","newLineCol","getFirstSelectableTreeListItem","ignoreId","TreeListItem","in","disablePadding","TreeList","TaskFormDesignerNewDialog","createEmptyTaskType","getDataRows","allSystemTaskTypes","allCompanyTaskTypes","getSubTreeListItemsWithTaskRepetitionType","getSubTreeListItems","getTreeListItems","lowSearchFilter","TaskTypeGrid","ignoreTaskTypesOfCompanyId","editDialogStateChange","editDialogAddToCompany","showNewFormDialog","savedTaskTypeId","getItemCardData","notInUseItems","handleShowNewFormDialogOpen","handleAddNew","getItemCardDatas","handleShowNewFormDialogClose","TaskSettingsDialogMenuItem","TaskSettingsDialog","TaskTrashBinDialog","allItem","taskTypeData","taskPage","setStateAfterActiveReportUpdate","getTaskTypes","stateUdpate","getReportStateChangeAfterReportFilterChange","getReportStateChangeAfterReportSave","showDashBoardChartPanel","dashBoardChartPanelId","dashBoardChartPanelFilter","dashBoardChartPanelVisible","dashBoardChartPanelPanelSize","dashBoardChartPanelCharts","dashBoardChartPanelChartId","showTrashBinDialog","onGetTaskPage","getReports","prevCanCreateTasks","equalStates","prioritiesData","equalPriorities","taskTypesData","equalTaskTypes","recordsViewIsActive","handleOpenTrashBinDialog","onTaskReportFilterPanelOk","handleAddTask","onChartPanelReportFilterDialogOk","handleCloseTrashBinDialog","tasks","UserFilterDrawer","selectedUserGroupIds","handleChangeUserGroupIds","UserImportItem","userGroupName","recordUser","unitName","ImportUsersDialog","sendInvitations","importItems","importItem","UserList","setUserDialogData","newUserId","showImportUsersDialog","prevUserGroupIds","handleImportUsers","PhoneAndroid","Computer","ListAlt","DoNotDisturbOff","handleImportUsersDialogOk","handleImportUsersCancel","UserPage","usersPage","usersPageUserGroups","userFilterIsSet","getUserFilterIsSet","showUserFilterDialog","userFilterDialogFilter","onGetUsersPage","handleOpenUserFilterDialog","onUserFilterDialogOk","onUserFilterDialogCancel","UserPasswordChangePageData","companyLogo","UserInvitationPageContent","usercode","passwordConfirmation","showSuccessDialog","setShowSuccessDialog","token","closeSuccessDialog","UserInvitationPage","ReCAPTCHAContainer","UserForgotPasswordPageContent","captchaRef","setUsercode","captchaToken","setCaptchaToken","captchaInUse","googleReCAPTCHASiteKey","returnUrl","AlertTitle","sitekey","getValue","reset","UserForgotPasswordPage","UserGroupFilterDrawer","authorizationLevelId","authorizationLevelFilters","authorizationLevelFilter","selectedAuthorizationLevelId","UserGroupEditDialogUserList","userGroupId","UserGroupDialogMenuItem","UserGroupEditDialog","hideIntraModulesTab","SuperUser","userGroupDialogMenuItem","userGroupDataWasModified","loadUserGroup","handleChangeIntraModuleLevel","UserGroupList","setUserGroupDialogData","newUserGroupId","authorizationLevelIds","prevAuthorizationLevels","userGroupPage","userGroupPageAuthorizationLevels","getAuthorizationLevelFilters","userGroupFilterIsSet","getUserGroupFilterIsSet","showUserGroupFilterDialog","userGroupFilterDialogFilter","onGetUserGroupsPage","handleOpenUserGroupFilterDialog","onUserGroupFilterDialogOk","onUserGroupFilterDialogCancel","WhistleBlowArchiveSelectTypeDialog","ChangeStateAndRemoveAllData","type1Disabled","ChangeState","type2Disabled","ChangeStateAndRemoveInformantData","SearchField","buttonTitle","buttonIcon","buttonDisabled","buttonVariant","buttonVisible","onSubmit","WhistleBlowEditDialogLogList","_prevState","WhistleBlowEditDialogMessageListLine","WhistleBlowEditDialogMessageListNew","newMessageContainerDiv","attachmentsContainerDiv","attachmentsContainerRect","attachmentsContainerDivSizeHash","onSetMessagesContainerMargin","scrollIntoView","updateAttachmentsContainerSize","attachmentsContainerResizeObserver","destroyResizeObserver","updateAttachmentsContainerResizeHandler","internalMessages","onWhistleBlowMessageSaved","invalidAttachmentNames","checkAttachments","createResizeObserver","saveWhistleBlowMessage","WhistleBlowEditDialogMessageList","internalMessage","onWhistleBlowMessageRead","handleSetMessagesContainerMargin","handleWhistleBlowMessageSaved","getStateChipIcon","Received","MoveToInbox","InProgress","WatchLater","Resolved","Archived1","Archived2","Archived3","Inbox","WhistleBlowEditDialog","handleStateChane","getWhistleBlowStateOption","whistleBlowStateOptions","getWhistleBlowStateOptions","isResolved","isArchived","publicMessages","internal","loadWhistleBlow","showWhistleBlowArchiveSelectTypeDialog","WhistleBlowArchiveDialog","archiveWhistleBlows","newIsResolved","arhivedOnlyStateChange","OnlyStateChange","arhivedInformantDataRemoved","InformantDataRemoved","arhivedAllDataRemoved","AllDataRemoved","canBeSaved","canBeArchived","getArchiveStateText","whistleBlowStateOption","getAlertSeverity","Canceled","Junk","VeryLow","Low","High","Critical","System","Email","Mail","Oral","handleWhistleBlowArchiveSelectTypeDialogOk","handleWhistleBlowArchiveSelectTypeDialogCancel","handleArchive","WhistleBlowNewDialog","handleTimeChange","selectedStateFilterId","selectedSeverityFilterId","selectedResolutionFilterId","selectedSourceFilterId","selectedAnonymityFilterId","reportChartId","getWhistleBlowGeneralFilterChange","stateFilterId","severityFilterId","resolutionFilterId","sourceFilterId","anonymityFilterId","prevCategoryIds","prevHandlerUserCodes","prevAState","prevSeverity","prevResolution","prevSource","prevAnonymity","prevDynamicTime","defaultStateFilterId","WhistleBlowPageDashboardChart","getStateChipColor","WhistleBlowListStateCol","Sms","WhistleBlowListHandlersCol","WhistleBlowList","showNewWhistleBlowDialog","onArchive","handleArchiveWhistleBlows","handleWhistleBlowDialogOk","handleWhistleBlowDialogCancel","WhistleBlowArchiveWhistleBlowList","WhistleBlowFilterSettings","stateFilters","severityFilters","resolutionFilters","sourceFilters","anonymityFilters","stateIsReadOnly","severityFilter","resolutionFilter","sourceFilter","handleChangeCategoryIds","anonymityFilter","defaultStateFilterIndex","showWhistleBlowFilterDialog","whistleBlowFilterDialogFilter","whistleBlowFilterIsSet","getWhistleBlowFilterIsSet","handleOpenWhistleBlowFilterDialog","onWhistleBlowFilterDialogOk","onWhistleBlowFilterDialogCancel","whistleBlowIds","WhistleBlowCategoryDialog","whistleBlowCategoryId","WhistleBlowCategoryList","WhistleBlowChannelEditDialogUserList","whistleBlowChannelId","removableUserCodes","WhistleBlowChannelDialogMenuItem","WhistleBlowChannelEditDialog","activeResource","handlersRef","onUnitModuleDialogOpen","onDefaultHandlersOpen","onPermissionsOpen","resource","whistleBlowChannelDataWasModified","newAdminUsers","loadWhistleBlowChannel","activeResourceCulture","whistleBlowSettingsActions","handleTestPageName","handleTestPrivacyPolicyUrl","handleSetActiveWhistleBlowRespource","handleResourceActiveStateChange","onPermissionsSave","onPermissionsOk","onPermissionsCancel","onUnitModuleDialogCancel","onUnitModuleDialogOk","onUnitModuleDialogSave","onDefaultHandlersSave","onDefaultHandlersOk","onDefaultHandlersCancel","WhistleBlowReportFilterDialog","panelsDynamicTimeFilters","WhistleBlowReportList","Anonymous","NonAnonymous","allLabelText","whistleBlowPage","canChangeProperties","isCompanyWhistleBlowAdmin","Texts","Infos","handleRefreshUnitsAndCategories","whistleBlowReportFilterIsSet","getWhistleBlowReportFilterIsSet","showChannelSettingsDialog","whistleBlowPageData","handleOpenUnits","handleOpenWhistleDefaultHandlersDialog","_whistleBlowChannelDataWasModified","showArchiveWhistleBlowsDialog","dashBoardChartPanelDialogCharts","dashBoardChartPanelDialogChartId","getStateFilters","getSeverityFilters","getResolutionFilters","getSourceFilters","getAnonymityFilters","getWhistleBlowSettingsActions","onGetWhistleBlowPage","getWhistleBlowReports","prevCanEditPermssions","prevCategoriesHash","categoriesHash","userCompanyIsActiveCompany","handleOpenWhistleBlowChannelSettings","handleWhistleBlowChannelEditDialogOk","handleWhistleBlowChannelEditDialogCancel","handleUnitModuleDialogSave","handleUnitModuleDialogOk","handleUnitModuleDialogCancel","handleWhistleDefaultHandlersDialogOk","handleWhistleDefaultHandlersDialogSave","handleWhistleDefaultHandlersDialogCancel","handlePermissionsDialogSave","handleArchiveWhistleBlowsDialogOk","handleArchiveWhistleBlowsDialogCancel","AppNotification","enqueueSnackbar","onCloseClick","ConfirmationDialog","confirmation","onNo","yesConfirmationText","onYes","InstantMessageNotification","closeSnackbar","PrivateRoute","canExternalSystems","Component","to","pathname","notificationAction","App","signalRNotifications","removeSignalRNotification","signalRNotificationDuration","successTimeOut","clearSuccess","infoTimeOut","clearInfo","errorTimeOut","clearAlerts","fetchCount","autoLogout","clearInterval","autoLogoutInterval","baseService","autoLogoutIndex","setInterval","autoLogoutPercent","clearAutoLogout","afterDraw","p","ctx","textBaseline","getComputedStyle","fillText","restore","addSignalRNotification","getShowSuccessMessage","showInfoMessage","getShowInfoMessage","getShowErrorMessage","showLoadingImage","getShowLoadingImage","showAutoLogout","getShowAutoLgout","Snackbar","handleSuccessClick","handleInfoClick","handleErrorClick","signalRNotification","pointerEvents","handleAutoLogoutClick","history","exact","AppConnected","clearConfirmation","ConnectedApp","Components","autoHideDuration","ThemeProvider","CssBaseline","clearable","getLocaleDate","stringDate","textField","getLocaleTime","stringTime","titleColor","FormFieldMargin","DisabledInputClickEnabler","TaskDynamicFormLabel","TaskDynamicFormString","strValue","classnames","createSelectInput","PreWrap","getTextAreaRowCount","getSelectListStyles","TaskDynamicFormStringArray","valueIds","TaskDynamicFormTreeStringArray","TaskDynamicFormNumber","filterDecimalStr","TaskDynamicFormInteger","filterIntegerStr","TaskDynamicFormDate","TaskDynamicFormTime","TaskDynamicFormTimeSpan","TaskDynamicFormBoolean","getCheckBoxSizeSx","handleCheckboxClickBoolean","TaskDynamicFormLineBreak","TaskDynamicFormCol","globalPointer","RegExp","relevantTypeCols","expressionTaskDataRowCols","evaluateColsExpression","evaluateColsExpressions","logEvaluateColsExpressionsError","readOnlyColfields","evaluateColsReadOnlyExpressions","logEvaluateColsReadOnlyExpressionsError","showInPreview","showSelectionInPreview","colComponent","handleValueChange","AppUtils","showApiErrorMessage","isIApiResponse","onFinally","showCancelButton","getWarnings","confirmationMessage","warnings","newStateHash","validateFileUploadSize","fileSizeKb","maxUploadSize","maxFileUploadSize","initialState","storeTypes","authenticated","reducer","dialogType","frontSuccess","frontImages","frontInterval","interval","recordsUser","recordsCompany","frontEvents","documentsSuccess","eventsSuccess","recordsSuccess","companiesSuccess","companyGroupsSuccess","messagesSuccess","tasksSuccess","usersSuccess","userGroupsSuccess","logSuccess","instantMessageSuccess","whistleBlowSuccess","calendarTasksSuccess","customStore","PagePanel","getPanelSizeClass","TypedOption","getStrValue","getBooleanValue","getIntValue","createTypedOption","TypedOptionSave","FrontPageBannerImage","link","FrontPageBanner","FrontPagePanel","FrontPageRecords","FrontPageMessages","FrontPageImages","isInstanceOfIApiError","object","getErrorMessageFromError","getErrorMessageFromBody","getJsonHeaders","getJsonRequestInit","portalSessionExtendInterval","portalSessionExtendTime","extendPortalSession","nowTime","sessionExtendUrl","handleResponse","handleError","autoLogoutTimer","autoLogoutDialogDuration","verifyAutoLogout","verifyAutoLogoutUrl","isSuccess","resetAutoLogoutTimer","authenticationTimeout","resetAutoLogout","redirected","handleFileResponse","filename","matches","exec","appIsUpdated","isAborted","CodeNameUrl","SessionState","userParameters","isExpired","newUserParameters","newParameter","oldParameter","setShowPageNavigation","fetchStart","fetchEnd","clearMessages","clearSuccessMessage","clearInfoMessage","setConfirmation","autoLogoutSet","autoLogoutClear","setSessionsState","frontFailure","frontSetImages","frontSetBannerImageChangeInterval","frontSetRecordsUser","frontSetRecordsCompany","frontSetEvents","frontSetMessages","documentsFailure","eventsFailure","recordsFailure","companiesFailure","companyGroupsFailure","messagesFailure","tasksFailure","usersFailure","userGroupsFailure","logFailure","instantMessageFailure","whistleBlowFailure","calendarTasksFailure","ConfirmationDialogType","ALERT_SUCCESS","ALERT_INFO","ALERT_ERROR","ALERT_CLEAR","ALERT_SUCCESS_CLEAR","ALERT_INFO_CLEAR","CONFIRMATION_SET","CONFIRMATION_CLEAR","AUTOLOGOUT_SET","AUTOLOGOUT_CLEAR","FETCH_START","FETCH_END","USER_LOGIN_SUCCESS","USER_LOGIN_FAILURE","USER_LOGOUT_SUCCESS","SESSION_SET_STATE","NEW_INSTANT_MESSAGES_SET","FRONT_SUCCESS","FRONT_FAILURE","FRONT_IMAGES","FRONT_EVENTS","FRONT_MESSAGES","FRONT_BANNER_INTERVAL","FRONT_RECORDS_USER","FRONT_RECORDS_COMPANY","CALENDARTASKS_SUCCESS","CALENDARTASKS_FAILURE","DOCUMENTS_SUCCESS","DOCUMENTS_FAILURE","EVENTS_SUCCESS","EVENTS_FAILURE","RECORDS_SUCCESS","RECORDS_FAILURE","COMPANIES_SUCCESS","COMPANIES_FAILURE","COMPANYGROUP_SUCCESS","COMPANYGROUP_FAILURE","MESSAGES_SUCCESS","MESSAGES_FAILURE","TASKS_SUCCESS","TASKS_FAILURE","USERS_SUCCESS","USERS_FAILURE","USERGROUP_SUCCESS","USERGROUP_FAILURE","LOG_SUCCESS","LOG_FAILURE","INSTANT_MESSAGE_SUCCESS","INSTANT_MESSAGE_FAILURE","WHISTLE_BLOW_SUCCESS","WHISTLE_BLOW_FAILURE","webpackContext","req","webpackContextResolve","__webpack_require__","exports","__webpack_module_cache__","deferred","leafPrototypes","getProto","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","every","getter","__esModule","getPrototypeOf","t","ns","def","definition","enumerable","globalThis","Function","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","scripts","getElementsByTagName","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","bind","__webpack_exports__"],"sourceRoot":""}